MobileNetV4-Conv-M's non-degeneracy seal, on the full-width batched net (levels 2 and 3) #
MobileNetV4FullBVJP.lean proves
mobilenetv4ForwardBFullHasVJPAt: the whole-net VJP at any (w, x) satisfying eight clause
bundles — the stem's relu, the fused stage's, one per resolution group and the head's, 38
relu sites in all (the #guard below counts them off the block table). That statement is
pointwise, so it could in principle be vacuous. This file exhibits a (w, x) that discharges
every clause — centre-tap kernels on the stem, the fused stage, the three channel-changing rows and
the head; the eighteen skip rows zeroed, each block then the exact identity — shows the forward is
not constant there, and seals
the Jacobian nonzero — hence, through
Training/JacobianSeal.lean,
the proven backward is not the zero map at that point.
The net is timm's mobilenetv4_conv_medium: relu throughout,
BN-only pre-DWs, the stride on each downsample's post-DW, and a head that pools before
conv_head, whose BatchNorm therefore normalises the pooled features over the batch alone.
All 38 clauses are weight-only — and generic in the table row #
Every kink in this net is a relu sitting directly on a bnBatchLA output (Mnv4StemSmoothAtB,
cbReluLayer.ok, cbReluStridedLayer.ok, mnv4DWReluLayer.ok, mnv4DWReluStridedLayer.ok);
projLayer.ok, mnv4DWBnLayer.ok, castLayer.ok and CertLayer.id'.ok are True.
bnBatchLA_pos bounds a BatchNorm output above β − |γ|√(N·h·w) > 0 at EVERY input, so with
γ = 1, β = 160, ε = 1 the whole bundle is discharged without the activation ever being read
— including conv_head's, whose BatchNorm sees N·1·1 = 2 cells.
The carrier #
The input is per-(example, channel) constant (sealX t = t • rayV), so it is an EDiff from the
start: example 0 is example 1 plus t on channel 0. Every stage on the carrier's path is a
centre-tap conv or depthwise then a BatchNorm, and inside the margin window every relu is the
identity, so each stage multiplies the carrier by one positive istd. Seventeen BatchNorms sit
on the path: the stem's, the fused stage's two, four in each of rows 1, 3 and 11 (the only rows
that change channels, hence the only ones without a skip) and the head's two. The pool in front
of conv_head keeps the carrier (a per-channel shift survives an average), and the two relabels
are index bijections. The readout along the ray is therefore t · Rr t, with Rr the product of
the seventeen istds: continuous and positive, and no BatchNorm variance derivative is taken.
Note: every collapse, every clause bundle and every block lemma here is proved at variable shapes and instantiated at the witness's numerals afterwards, never proved at them.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Proofs.Mnv4FullBSeal.sealV = Proofs.BatchSeal.rayV (2 * 112) (2 * 112)
Instances For
Equations
Instances For
the head's two relus — cn_960's at 7×7 and conv_head's on the pooled 1×1 (its BatchNorm
over the two examples alone); GAP, the relabels and dense are True.
The eight group conditions above, as the apex's one smoothness hypothesis.
The whole-net VJP at the witness — all eight bundles discharged.
Equations
Instances For
Equations
- Proofs.Mnv4FullBSeal.Zs t = Proofs.StableHLO.batchMap 2 (Proofs.flatConvStride2 (Proofs.BatchSeal.ctK 32 3 3 3 1) (Proofs.BatchSeal.kv 32 0)) (Proofs.Mnv4FullBSeal.sealX t)
Instances For
Equations
- Proofs.Mnv4FullBSeal.As t = Proofs.StableHLO.bnBatchLA 2 32 112 112 1 (Proofs.BatchSeal.kv 32 1) (Proofs.BatchSeal.kv 32 160) (Proofs.Mnv4FullBSeal.Zs t)
Instances For
Equations
- Proofs.Mnv4FullBSeal.Z1p t = Proofs.StableHLO.batchMap 2 (Proofs.flatConv (Proofs.BatchSeal.ctK 48 128 1 1 1) (Proofs.BatchSeal.kv 48 0)) (Proofs.Mnv4FullBSeal.Af✝ t)
Instances For
Equations
- Proofs.Mnv4FullBSeal.A1p t = Proofs.StableHLO.bnBatchLA 2 48 56 56 1 (Proofs.BatchSeal.kv 48 1) (Proofs.BatchSeal.kv 48 0) (Proofs.Mnv4FullBSeal.Z1p t)
Instances For
Equations
- Proofs.Mnv4FullBSeal.Aaz t = Proofs.StableHLO.bnBatchLA 2 80 28 28 1 (Proofs.BatchSeal.kv 80 1) (Proofs.BatchSeal.kv 80 0) (Proofs.Mnv4FullBSeal.Zaz✝ t)
Instances For
Equations
- Proofs.Mnv4FullBSeal.Abz t = Proofs.StableHLO.bnBatchLA 2 160 14 14 1 (Proofs.BatchSeal.kv 160 1) (Proofs.BatchSeal.kv 160 0) (Proofs.Mnv4FullBSeal.Zbz✝ t)
Instances For
Equations
- Proofs.Mnv4FullBSeal.Acz t = Proofs.StableHLO.bnBatchLA 2 256 7 7 1 (Proofs.BatchSeal.kv 256 1) (Proofs.BatchSeal.kv 256 0) (Proofs.Mnv4FullBSeal.Zcz✝ t)
Instances For
Equations
- Proofs.Mnv4FullBSeal.Ah2 t = Proofs.StableHLO.bnBatchLA 2 1280 1 1 1 (Proofs.BatchSeal.kv 1280 1) (Proofs.BatchSeal.kv 1280 160) (Proofs.Mnv4FullBSeal.Zh2✝ t)
Instances For
one carrier BatchNorm's whole contribution: γ · istd at γ = 1.
Equations
- Proofs.Mnv4FullBSeal.rf n z = Proofs.bnIstd n z 1
Instances For
Equations
- Proofs.Mnv4FullBSeal.ds t o = Proofs.Mnv4FullBSeal.dx t 0 * Proofs.Mnv4FullBSeal.rf (2 * (112 * 112)) (Proofs.BatchSeal.bnRowLA 2 32 112 112 (Proofs.Mnv4FullBSeal.Zs t) o)
Instances For
Equations
- Proofs.Mnv4FullBSeal.df t o = Proofs.Mnv4FullBSeal.ds t 0 * Proofs.Mnv4FullBSeal.rf (2 * (56 * 56)) (Proofs.BatchSeal.bnRowLA 2 128 56 56 (Proofs.Mnv4FullBSeal.Zf✝ t) o)
Instances For
Equations
- Proofs.Mnv4FullBSeal.d1p t o = Proofs.Mnv4FullBSeal.df t 0 * Proofs.Mnv4FullBSeal.rf (2 * (56 * 56)) (Proofs.BatchSeal.bnRowLA 2 48 56 56 (Proofs.Mnv4FullBSeal.Z1p t) o)
Instances For
Equations
- Proofs.Mnv4FullBSeal.dbq t ch = Proofs.Mnv4FullBSeal.daz✝ t ch * Proofs.Mnv4FullBSeal.rf (2 * (28 * 28)) (Proofs.BatchSeal.bnRowLA 2 80 28 28 (Proofs.Mnv4FullBSeal.Zbq✝ t) ch)
Instances For
Equations
- Proofs.Mnv4FullBSeal.dbe t o = Proofs.Mnv4FullBSeal.dbq t 0 * Proofs.Mnv4FullBSeal.rf (2 * (28 * 28)) (Proofs.BatchSeal.bnRowLA 2 480 28 28 (Proofs.Mnv4FullBSeal.Zbe✝ t) o)
Instances For
Equations
- Proofs.Mnv4FullBSeal.dbd t ch = Proofs.Mnv4FullBSeal.dbe t ch * Proofs.Mnv4FullBSeal.rf (2 * (14 * 14)) (Proofs.BatchSeal.bnRowLA 2 480 14 14 (Proofs.Mnv4FullBSeal.Zbd✝ t) ch)
Instances For
Equations
- Proofs.Mnv4FullBSeal.dh1 t o = Proofs.Mnv4FullBSeal.dcz✝ t 0 * Proofs.Mnv4FullBSeal.rf (2 * (7 * 7)) (Proofs.BatchSeal.bnRowLA 2 960 7 7 (Proofs.Mnv4FullBSeal.Zh1✝ t) o)
Instances For
Equations
- Proofs.Mnv4FullBSeal.dh2 t o = Proofs.Mnv4FullBSeal.dh1 t 0 * Proofs.Mnv4FullBSeal.rf (2 * (1 * 1)) (Proofs.BatchSeal.bnRowLA 2 1280 1 1 (Proofs.Mnv4FullBSeal.Zh2✝ t) o)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
the stem's relu is the identity here, so mnv4Pre0 IS the stem BatchNorm.
The class-0 difference between the two examples, along the ray: t times the
seventeen BatchNorm factors on the carrier's path.
Level 2 — the witness is non-degenerate: the full-width batch-BN MobileNetV4-Conv-M 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,
21-block, 224×224 MobileNetV4-Conv-M — mobilenetv4ForwardBFull, the training-BatchNorm
forward of the MobileNetV4 train steps (the mnv4in_emaacc* ones add classifier dropout),
here at N = 2 — is not the zero map at the witness.