MobileNetV2's non-degeneracy seal, on the full-width batched net (levels 2 and 3) #
planning/full_width_seals.md §4.3. MobileNetV2FullBVJP.lean proves
mobilenetv2ForwardB_full_has_vjp_at: the whole-net VJP at any (w, x) satisfying 19 clause
bundles — the stem's relu6, one per bottleneck, and the head's — covering 35 relu6 sites, each a
two-sided window ≠ 0 ∧ ≠ 6. A conditional theorem of that shape says nothing unless its
hypotheses are jointly satisfiable at a point with a nonzero Jacobian, and until now that was
exhibited only on a per-example, two-block, 2-channel proxy, deleted when this file landed.
This file exhibits it on mobilenetv2ForwardB_full itself: the seventeen bottlenecks of the
[t,c,n,s] table, 32→1280 channels, XLA-SAME stride-2 padding, batch BatchNorm, at 224×224.
The witness #
Weights are structural, not trained (planning/full_width_seals.md §7):
ε = 1andγ = 1/64at all 52 BatchNorms;β = 3wherever a relu6 follows,β = 0at the eleven linear-bottleneck projections, which no activation follows;- the ten residual bottlenecks have all three kernels zeroed. A zero kernel gives a constant
channel, batch BN of a constant channel is
β, and the block's lastβis0— so a residual block is the exact identity (sealResB_eq), simpler than ResNet'sa ↦ a + 1; - the seven channel-changing blocks (
b1,b2,b4,b7,b11,b14,b17), the stem and the head carry the signal: every 1×1 expand and project is a centre-tap broadcast (BatchSeal.ctK), every 3×3 depthwise a centre-tap identity (BatchSeal.ctDW); - the head reads channel 0 into class 0, so
0 < nClsis the only constraint on the class count.
N = 2, and the input is the shared ray sealX t = rayX … t.
⭐⭐ Every one of the 35 clauses is weight-only #
Better than ResNet-34, whose post-residual relu still needed 0 ≤ activation. Two facts compose:
every relu6 in this net sits directly on a BatchNorm output, and BatchSeal.bnBatchLA_window
bounds a BN output inside (0, 6) at every input once |γ|·√(N·h·w) < β = 3; and the linear
bottleneck has no relu after the residual add, so there is no post-residual clause at all. The
margin holds at every site because the widest is 2·112² = 25 088 and √25 088 / 64 < 2.48
(BatchSeal.margin192). Consequence: no nonnegativity layer, no positional injectivity, and — with
no max-pool anywhere in this net — no no-tie argument.
⭐ The carrier threads twenty-two BatchNorms #
MobileNetV2's channel-changing blocks have no skip — the body is the block — so unlike
ResNet's carrier, which saw only the projection of each downsample, this one crosses every BN
inside them: 1 (stem) + 2 (b1) + 3 × 6 + 1 (head). The ten residual blocks pass it through
untouched. BatchSeal.EDiff is the invariant, BatchSeal.bnBatchLA_exdiff the step that survives
per-channel batch BN, and ⭐ BatchSeal.EDiff_dw is the one genuinely new shape: a depthwise
cannot broadcast, so where a centre-tap conv collapses the carrier to fun _ => s · δ 0 at every
output channel, a centre-tap depthwise scales the whole function δ channel by channel. The
class-0 output difference between the two examples is t · Rr t with Rr a 22-fold product of
1/64 · istd, continuous and positive, so g'(0) = Rr 0 ≠ 0.
⚠⚠ Every collapse below is stated at variable N, h, w, ic, mid, oc and instantiated at the
witness's numerals afterwards, never proved at them (planning/full_width_seals.md §3.5).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The witness input: the shared ray at 224×224, N = 2. Both examples carry the same ramp in
channel 0, and sealV adds t to all of example 0's channel 0. ⭐ Every clause of this net is
weight-only, so the ramp is doing no work beyond keeping one witness shape across the four
sealed nets.
Equations
- Proofs.Mnv2FullBSeal.sealX t = Proofs.BatchSeal.rayX (2 * 112) (2 * 112) t
Instances For
Its direction — all of example 0's channel 0.
Equations
- Proofs.Mnv2FullBSeal.sealV = Proofs.BatchSeal.rayV (2 * 112) (2 * 112)
Instances For
Equations
- Proofs.Mnv2FullBSeal.rf n z = 1 / 64 * Proofs.bnIstd n z 1
Instances For
⭐⭐ The whole-net VJP at the witness — all 19 bundles discharged, on
mobilenetv2ForwardB_full itself (through mobilenetv2ForwardB_full_eq_chain).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Proofs.Mnv2FullBSeal.Zs t = Proofs.StableHLO.batchMap 2 (Proofs.flatConvStride2Xla (Proofs.BatchSeal.ctK 32 3 3 3 1) (Proofs.BatchSeal.kv 32 0)) (Proofs.Mnv2FullBSeal.sealX t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.A1d nCls t = Proofs.StableHLO.bnBatchLA 2 32 112 112 1 (Proofs.BatchSeal.kv 32 (1 / 64)) (Proofs.BatchSeal.kv 32 3) (Proofs.Mnv2FullBSeal.Z1d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.Z1p nCls t = Proofs.StableHLO.batchMap 2 (Proofs.flatConv (Proofs.BatchSeal.ctK 16 32 1 1 1) (Proofs.BatchSeal.kv 16 0)) (Proofs.Mnv2FullBSeal.A1d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.A2e nCls t = Proofs.StableHLO.bnBatchLA 2 96 (2 * 56) (2 * 56) 1 (Proofs.BatchSeal.kv 96 (1 / 64)) (Proofs.BatchSeal.kv 96 3) (Proofs.Mnv2FullBSeal.Z2e nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.Z2d nCls t = Proofs.StableHLO.batchMap 2 (Proofs.depthwiseStride2FlatXla (Proofs.BatchSeal.ctDW 96 3 3 1) (Proofs.BatchSeal.kv 96 0)) (Proofs.Mnv2FullBSeal.A2e nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.A2d nCls t = Proofs.StableHLO.bnBatchLA 2 96 56 56 1 (Proofs.BatchSeal.kv 96 (1 / 64)) (Proofs.BatchSeal.kv 96 3) (Proofs.Mnv2FullBSeal.Z2d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.Z2p nCls t = Proofs.StableHLO.batchMap 2 (Proofs.flatConv (Proofs.BatchSeal.ctK 24 96 1 1 1) (Proofs.BatchSeal.kv 24 0)) (Proofs.Mnv2FullBSeal.A2d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.A4e nCls t = Proofs.StableHLO.bnBatchLA 2 144 (2 * 28) (2 * 28) 1 (Proofs.BatchSeal.kv 144 (1 / 64)) (Proofs.BatchSeal.kv 144 3) (Proofs.Mnv2FullBSeal.Z4e nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.A4d nCls t = Proofs.StableHLO.bnBatchLA 2 144 28 28 1 (Proofs.BatchSeal.kv 144 (1 / 64)) (Proofs.BatchSeal.kv 144 3) (Proofs.Mnv2FullBSeal.Z4d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.Z4p nCls t = Proofs.StableHLO.batchMap 2 (Proofs.flatConv (Proofs.BatchSeal.ctK 32 144 1 1 1) (Proofs.BatchSeal.kv 32 0)) (Proofs.Mnv2FullBSeal.A4d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.A7e nCls t = Proofs.StableHLO.bnBatchLA 2 192 (2 * 14) (2 * 14) 1 (Proofs.BatchSeal.kv 192 (1 / 64)) (Proofs.BatchSeal.kv 192 3) (Proofs.Mnv2FullBSeal.Z7e nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.A7d nCls t = Proofs.StableHLO.bnBatchLA 2 192 14 14 1 (Proofs.BatchSeal.kv 192 (1 / 64)) (Proofs.BatchSeal.kv 192 3) (Proofs.Mnv2FullBSeal.Z7d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.Z7p nCls t = Proofs.StableHLO.batchMap 2 (Proofs.flatConv (Proofs.BatchSeal.ctK 64 192 1 1 1) (Proofs.BatchSeal.kv 64 0)) (Proofs.Mnv2FullBSeal.A7d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.A11e nCls t = Proofs.StableHLO.bnBatchLA 2 384 14 14 1 (Proofs.BatchSeal.kv 384 (1 / 64)) (Proofs.BatchSeal.kv 384 3) (Proofs.Mnv2FullBSeal.Z11e nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.Z11d nCls t = Proofs.StableHLO.batchMap 2 (Proofs.depthwiseFlat (Proofs.BatchSeal.ctDW 384 3 3 1) (Proofs.BatchSeal.kv 384 0)) (Proofs.Mnv2FullBSeal.A11e nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.A11d nCls t = Proofs.StableHLO.bnBatchLA 2 384 14 14 1 (Proofs.BatchSeal.kv 384 (1 / 64)) (Proofs.BatchSeal.kv 384 3) (Proofs.Mnv2FullBSeal.Z11d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.Z11p nCls t = Proofs.StableHLO.batchMap 2 (Proofs.flatConv (Proofs.BatchSeal.ctK 96 384 1 1 1) (Proofs.BatchSeal.kv 96 0)) (Proofs.Mnv2FullBSeal.A11d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.A14e nCls t = Proofs.StableHLO.bnBatchLA 2 576 (2 * 7) (2 * 7) 1 (Proofs.BatchSeal.kv 576 (1 / 64)) (Proofs.BatchSeal.kv 576 3) (Proofs.Mnv2FullBSeal.Z14e nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.A14d nCls t = Proofs.StableHLO.bnBatchLA 2 576 7 7 1 (Proofs.BatchSeal.kv 576 (1 / 64)) (Proofs.BatchSeal.kv 576 3) (Proofs.Mnv2FullBSeal.Z14d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.Z14p nCls t = Proofs.StableHLO.batchMap 2 (Proofs.flatConv (Proofs.BatchSeal.ctK 160 576 1 1 1) (Proofs.BatchSeal.kv 160 0)) (Proofs.Mnv2FullBSeal.A14d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.A17e nCls t = Proofs.StableHLO.bnBatchLA 2 960 7 7 1 (Proofs.BatchSeal.kv 960 (1 / 64)) (Proofs.BatchSeal.kv 960 3) (Proofs.Mnv2FullBSeal.Z17e nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.Z17d nCls t = Proofs.StableHLO.batchMap 2 (Proofs.depthwiseFlat (Proofs.BatchSeal.ctDW 960 3 3 1) (Proofs.BatchSeal.kv 960 0)) (Proofs.Mnv2FullBSeal.A17e nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.A17d nCls t = Proofs.StableHLO.bnBatchLA 2 960 7 7 1 (Proofs.BatchSeal.kv 960 (1 / 64)) (Proofs.BatchSeal.kv 960 3) (Proofs.Mnv2FullBSeal.Z17d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.Z17p nCls t = Proofs.StableHLO.batchMap 2 (Proofs.flatConv (Proofs.BatchSeal.ctK 320 960 1 1 1) (Proofs.BatchSeal.kv 320 0)) (Proofs.Mnv2FullBSeal.A17d nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.Ah nCls t = Proofs.StableHLO.bnBatchLA 2 1280 7 7 1 (Proofs.BatchSeal.kv 1280 (1 / 64)) (Proofs.BatchSeal.kv 1280 3) (Proofs.Mnv2FullBSeal.Zh nCls t)
Instances For
Equations
- Proofs.Mnv2FullBSeal.dS t ci = t * Proofs.Mnv2FullBSeal.rf (2 * (112 * 112)) (Proofs.BatchSeal.bnRowLA 2 32 112 112 (Proofs.Mnv2FullBSeal.Zs t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d1d nCls t ci = Proofs.Mnv2FullBSeal.dS t ci * Proofs.Mnv2FullBSeal.rf (2 * (112 * 112)) (Proofs.BatchSeal.bnRowLA 2 32 112 112 (Proofs.Mnv2FullBSeal.Z1d nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d2d nCls t ci = Proofs.Mnv2FullBSeal.d2e nCls t ci * Proofs.Mnv2FullBSeal.rf (2 * (56 * 56)) (Proofs.BatchSeal.bnRowLA 2 96 56 56 (Proofs.Mnv2FullBSeal.Z2d nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d2p nCls t ci = Proofs.Mnv2FullBSeal.d2d nCls t 0 * Proofs.Mnv2FullBSeal.rf (2 * (56 * 56)) (Proofs.BatchSeal.bnRowLA 2 24 56 56 (Proofs.Mnv2FullBSeal.Z2p nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d4d nCls t ci = Proofs.Mnv2FullBSeal.d4e nCls t ci * Proofs.Mnv2FullBSeal.rf (2 * (28 * 28)) (Proofs.BatchSeal.bnRowLA 2 144 28 28 (Proofs.Mnv2FullBSeal.Z4d nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d4p nCls t ci = Proofs.Mnv2FullBSeal.d4d nCls t 0 * Proofs.Mnv2FullBSeal.rf (2 * (28 * 28)) (Proofs.BatchSeal.bnRowLA 2 32 28 28 (Proofs.Mnv2FullBSeal.Z4p nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d7d nCls t ci = Proofs.Mnv2FullBSeal.d7e nCls t ci * Proofs.Mnv2FullBSeal.rf (2 * (14 * 14)) (Proofs.BatchSeal.bnRowLA 2 192 14 14 (Proofs.Mnv2FullBSeal.Z7d nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d7p nCls t ci = Proofs.Mnv2FullBSeal.d7d nCls t 0 * Proofs.Mnv2FullBSeal.rf (2 * (14 * 14)) (Proofs.BatchSeal.bnRowLA 2 64 14 14 (Proofs.Mnv2FullBSeal.Z7p nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d11e nCls t ci = Proofs.Mnv2FullBSeal.d7p nCls t 0 * Proofs.Mnv2FullBSeal.rf (2 * (14 * 14)) (Proofs.BatchSeal.bnRowLA 2 384 14 14 (Proofs.Mnv2FullBSeal.Z11e nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d11d nCls t ci = Proofs.Mnv2FullBSeal.d11e nCls t ci * Proofs.Mnv2FullBSeal.rf (2 * (14 * 14)) (Proofs.BatchSeal.bnRowLA 2 384 14 14 (Proofs.Mnv2FullBSeal.Z11d nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d11p nCls t ci = Proofs.Mnv2FullBSeal.d11d nCls t 0 * Proofs.Mnv2FullBSeal.rf (2 * (14 * 14)) (Proofs.BatchSeal.bnRowLA 2 96 14 14 (Proofs.Mnv2FullBSeal.Z11p nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d14d nCls t ci = Proofs.Mnv2FullBSeal.d14e nCls t ci * Proofs.Mnv2FullBSeal.rf (2 * (7 * 7)) (Proofs.BatchSeal.bnRowLA 2 576 7 7 (Proofs.Mnv2FullBSeal.Z14d nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d14p nCls t ci = Proofs.Mnv2FullBSeal.d14d nCls t 0 * Proofs.Mnv2FullBSeal.rf (2 * (7 * 7)) (Proofs.BatchSeal.bnRowLA 2 160 7 7 (Proofs.Mnv2FullBSeal.Z14p nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d17e nCls t ci = Proofs.Mnv2FullBSeal.d14p nCls t 0 * Proofs.Mnv2FullBSeal.rf (2 * (7 * 7)) (Proofs.BatchSeal.bnRowLA 2 960 7 7 (Proofs.Mnv2FullBSeal.Z17e nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d17d nCls t ci = Proofs.Mnv2FullBSeal.d17e nCls t ci * Proofs.Mnv2FullBSeal.rf (2 * (7 * 7)) (Proofs.BatchSeal.bnRowLA 2 960 7 7 (Proofs.Mnv2FullBSeal.Z17d nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.d17p nCls t ci = Proofs.Mnv2FullBSeal.d17d nCls t 0 * Proofs.Mnv2FullBSeal.rf (2 * (7 * 7)) (Proofs.BatchSeal.bnRowLA 2 320 7 7 (Proofs.Mnv2FullBSeal.Z17p nCls t) ci)
Instances For
Equations
- Proofs.Mnv2FullBSeal.dH nCls t ci = Proofs.Mnv2FullBSeal.d17p nCls t 0 * Proofs.Mnv2FullBSeal.rf (2 * (7 * 7)) (Proofs.BatchSeal.bnRowLA 2 1280 7 7 (Proofs.Mnv2FullBSeal.Zh nCls t) ci)
Instances For
⭐⭐ The positive, continuous nonlinear factor. MobileNetV2's channel-changing blocks have
no skip, so the carrier threads every BatchNorm inside them: the stem, both of b1's, three
each in b2, b4, b7, b11, b14, b17, and the head's. ⚠ No BatchNorm variance
derivative is ever taken — Rr enters only through t * Rr t, whose derivative at 0 is
Rr 0 for any Rr continuous there.
Equations
- One or more equations did not get rendered due to their size.
Instances For
⭐⭐ The class-0 difference between the two examples, along the ray, is t · Rr t.
⭐⭐ Level 2 — the witness is non-degenerate: the full-width batch-BN MobileNetV2 at the structural weights is NOT constant in its input.
⭐⭐ Level 3 — the whole-net Jacobian is nonzero at the witness.
⭐⭐ The seal: the proven whole-network backward of the full-width, batch-BatchNorm,
seventeen-bottleneck, 224×224 MobileNetV2 — mobilenetv2ForwardB_full, the forward every
MobileNetV2 artifact runs — is not the zero map at the witness.