boundlab.zono.matmul#

Products of two zonotopes.

The product of two affine forms is quadratic in the symbols,

\[\Big(\sum_i A_i \varepsilon_i\Big)\Big(\sum_j B_j \varepsilon_j\Big) = \sum_{i} A_i B_i\, \varepsilon_i^2 + \sum_{i \ne j} A_i B_j\, \varepsilon_i \varepsilon_j ,\]

which no affine form represents exactly; an estimate maps it to a center plus interval noise. The payoff of doing this carefully is the diagonal: \(\varepsilon_i^2 \in [0, 1]\) (not \([-1, 1]\)), so its contribution has center \(\tfrac12\sum_i |A_i B_i|\) and only half the naive width, while each cross term stays a plain \([-1, 1]\) factor.

Functions

basic_estimate

Box bound: \(|x| \le ub_x,\ |y| \le ub_y \Rightarrow |xy| \le ub_x\,ub_y\) — zero center, width x.ub() @ y.ub().

precise_estimate

The DeepT-precise bound, computed in error-symbol blocks so the \(mn \cdot e^2\) pair tensor is never materialized (see boundlab.ops.deept.deept_precise_estimate()).

precise_estimate_orig

Reference DeepT-precise estimate (materializes the full pair tensor).

square_estimate

Alias of basic_estimate() (kept as a named dispatch target).

Classes

Matmul

Zonotope × zonotope matrix product: align symbol tables, run the configured estimate, return center + Noise(width, "matmul").