boundlab.prop.bound_width_reasons_breakdown#

boundlab.prop.bound_width_reasons_breakdown(e)[source]#

Compute interval width breakdown by reason.

Returns a dictionary mapping each reason string to a tensor giving its contribution to the bound width at the output. The sum of all values equals bound_width() (up to floating-point error).

Two relaxation primitives are handled:

  • LpEpsilon (zonotope form): each leaf contributes \(\|u\|_q + \|l\|_q\), where (u, l) are the accumulated backward weights for the upper/lower direction. When the backward weight has not yet split, this collapses to \(2\|w\|_q\).

  • PolyBoundGate (polytope/CROWN form): each gate contributes the difference between its <= and >= biases. Because a gate’s child weight depends on the propagation direction, its child receives a split (u_w, l_w) weight that propagates downstream.

Constant biases reached in split mode (caused by a gate’s slope spread amplifying through downstream constants) are aggregated under the reserved key "polytope_slope_slack".