Documentation

LeanMlir.Proofs.Nets.MobileNet.MobileNetV2SyncStepTieB

MobileNetV2's data-parallel step at SYNCHRONISED BatchNorm IS the single-device step at R·N #

MobileNetV2StepTieB.lean (T3) threads the label-smoothed loss cotangent down the batch-BN backward chain on ONE device and ties every parameter gradient node to the certified gradient. This is its data-parallel twin, for the render MobileNetV2RenderB emits at replicas > 1: R replicas at batch N, every one of the 52 BatchNorms synchronised, every parameter gradient all-reduced by its mean. The capstone mnv2_net_syncTiedB says that, for every parameter the render emits,

mean over the R replicas of replica r's gradient node, loss divided by B
  = the single-device gradient node at the global batch R·N, loss divided by R·B

— the gradient node mnv2_net_tiedB at N := R·N ties to the certified gradient. The right-hand side is the existing single-device chain at N := R·N, so the spec has not moved.

The same four steps as ResNet-34's twin #

ResNet34SyncStepTieB.lean is the template, and everything net-agnostic is imported from it rather than restated: the replica BN link bnSyncInB and its shard lemma, the ConvWSync / BnSync / DenseSync statements and their *_of_scaled closers, the divisor step replicaLossCot_eq, and the homogeneity of bnInB and cInB. The inverted-residual pieces it shares with EfficientNet-B0 — the depthwise, GAP and dense input-VJPs, the depthwise and XLA-SAME stem weight collectives — come from MBConvSyncTieB.lean.

  1. Sharding — each replica's backward chain, handed its shard of a global cotangent, computes the shard of the global chain. The relu6 mask is pointwise (relu6MaskB_shard, by rfl); the conv, depthwise, XLA-SAME strided depthwise, GAP and dense input-VJPs are per-example maps; every BN link is bnSyncInB.
  2. The collectives — the mean over replicas of each replica's gradient node is 1/R of the global node at the global cotangent. MobileNetV2 adds three kinds the ResNet-34 kit does not have: the XLA-SAME strided conv weight (the stem), the depthwise weight and its XLA-SAME strided peer (§4).
  3. Homogeneity — the single-device chain and its gradient nodes are linear in the loss cotangent (§1): R × the cotangent gives R × every node.
  4. The divisor — replica r's loss cotangent is R × its shard of the global one, and that R cancels the collective's 1/R at every parameter.

What the DP render emits, and what is tied #

At the committed convBias := false, MobileNetV2RenderB emits 158 parameter gradients — stem 3 (sW, sg, sbt), b1 6, sixteen blocks × 9 (eW eg ebt dW dg dbt pW pg pbt), head 3 (hW, hg, hbt), dense 2 (Wd, bd) — and the capstone ties all 158. ⚠ The 52 conv, depthwise and project BIAS nodes the single-device tie also states are not emitted at convBias := false and are not tied here (mnv2_net_tiedB keeps them for the flag).

What is NOT claimed #

⚠ The replicas' saved forward activations enter as the shards of the single-device forward's (batchShard r (mnv2PreB{k} (R*N) w X)); that the sync forward graph computes exactly those is StableHLO.mobilenetv2FwdGraphSync_full_shard, the forward half. ⚠ That the replicas' inputs are the shards of one batch is the driver's. ⚠ The lowerer's all_reduce is trusted as every other op's lowering is.

theorem Proofs.MobileNetV2SyncTieB.relu6MaskB_smul (n : ) (pre dy : Vec n) (s : ) :
(MobileNetV2TieB.relu6MaskB n pre fun (i : Fin n) => s * dy i) = fun (i : Fin n) => s * MobileNetV2TieB.relu6MaskB n pre dy i

The two-sided relu6 mask is linear in the cotangent it gates.

theorem Proofs.MobileNetV2SyncTieB.dStridedXlaInB_smul (N : ) {c h w kH kW : } (W : DepthwiseKernel c kH kW) (b : Vec c) (dy : Vec (N * (c * h * w))) (s : ) :
(MobileNetV2TieB.dStridedXlaInB N W b fun (i : Fin (N * (c * h * w))) => s * dy i) = fun (i : Fin (N * (c * (2 * h) * (2 * w)))) => s * MobileNetV2TieB.dStridedXlaInB N W b dy i

The block cotangents, each one line from the previous link's.

theorem Proofs.MobileNetV2SyncTieB.mnv2NoExpCotPc_smul (N h w : ) {ic oc : } (p : IVWNoExp ic oc) (xin : Vec (N * (ic * h * w))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2NoExpCotPc N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (oc * h * w))) => s * MobileNetV2TieB.mnv2NoExpCotPc N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2NoExpCotDn_smul (N h w : ) {ic oc : } (p : IVWNoExp ic oc) (xin : Vec (N * (ic * h * w))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2NoExpCotDn N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (ic * h * w))) => s * MobileNetV2TieB.mnv2NoExpCotDn N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2NoExpCotDc_smul (N h w : ) {ic oc : } (p : IVWNoExp ic oc) (xin : Vec (N * (ic * h * w))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2NoExpCotDc N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (ic * h * w))) => s * MobileNetV2TieB.mnv2NoExpCotDc N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2NoExpCotIn_smul (N h w : ) {ic oc : } (p : IVWNoExp ic oc) (xin : Vec (N * (ic * h * w))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2NoExpCotIn N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (ic * h * w))) => s * MobileNetV2TieB.mnv2NoExpCotIn N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2CotPc_smul (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (xin : Vec (N * (ic * h * w))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2CotPc N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (oc * h * w))) => s * MobileNetV2TieB.mnv2CotPc N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2CotDn_smul (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (xin : Vec (N * (ic * h * w))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2CotDn N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (mid * h * w))) => s * MobileNetV2TieB.mnv2CotDn N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2CotDc_smul (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (xin : Vec (N * (ic * h * w))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2CotDc N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (mid * h * w))) => s * MobileNetV2TieB.mnv2CotDc N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2CotEn_smul (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (xin : Vec (N * (ic * h * w))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2CotEn N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (mid * h * w))) => s * MobileNetV2TieB.mnv2CotEn N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2CotEc_smul (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (xin : Vec (N * (ic * h * w))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2CotEc N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (mid * h * w))) => s * MobileNetV2TieB.mnv2CotEc N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2CotInBody_smul (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (xin : Vec (N * (ic * h * w))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2CotInBody N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (ic * h * w))) => s * MobileNetV2TieB.mnv2CotInBody N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2ResidCotIn_smul (N h w : ) {c mid : } (p : IVW c mid c) (xin dy : Vec (N * (c * h * w))) (s : ) :
(MobileNetV2TieB.mnv2ResidCotIn N h w p xin fun (i : Fin (N * (c * h * w))) => s * dy i) = fun (i : Fin (N * (c * h * w))) => s * MobileNetV2TieB.mnv2ResidCotIn N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2SCotPc_smul (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (xin : Vec (N * (ic * (2 * h) * (2 * w)))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2SCotPc N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (oc * h * w))) => s * MobileNetV2TieB.mnv2SCotPc N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2SCotDn_smul (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (xin : Vec (N * (ic * (2 * h) * (2 * w)))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2SCotDn N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (mid * h * w))) => s * MobileNetV2TieB.mnv2SCotDn N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2SCotDc_smul (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (xin : Vec (N * (ic * (2 * h) * (2 * w)))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2SCotDc N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (mid * h * w))) => s * MobileNetV2TieB.mnv2SCotDc N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2SCotEn_smul (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (xin : Vec (N * (ic * (2 * h) * (2 * w)))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2SCotEn N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (mid * (2 * h) * (2 * w)))) => s * MobileNetV2TieB.mnv2SCotEn N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2SCotEc_smul (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (xin : Vec (N * (ic * (2 * h) * (2 * w)))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2SCotEc N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (mid * (2 * h) * (2 * w)))) => s * MobileNetV2TieB.mnv2SCotEc N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2StridedCotIn_smul (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (xin : Vec (N * (ic * (2 * h) * (2 * w)))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2StridedCotIn N h w p xin fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (ic * (2 * h) * (2 * w)))) => s * MobileNetV2TieB.mnv2StridedCotIn N h w p xin dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2StemCotN_smul (N h w : ) {ic oc kH kW : } (Ws : Kernel4 oc ic kH kW) (bs : Vec oc) (εs : ) (γs βs : Vec oc) (x : Vec (N * (ic * (2 * h) * (2 * w)))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2StemCotN N h w Ws bs εs γs βs x fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (oc * h * w))) => s * MobileNetV2TieB.mnv2StemCotN N h w Ws bs εs γs βs x dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2StemCotC_smul (N h w : ) {ic oc kH kW : } (Ws : Kernel4 oc ic kH kW) (bs : Vec oc) (εs : ) (γs βs : Vec oc) (x : Vec (N * (ic * (2 * h) * (2 * w)))) (dy : Vec (N * (oc * h * w))) (s : ) :
(MobileNetV2TieB.mnv2StemCotC N h w Ws bs εs γs βs x fun (i : Fin (N * (oc * h * w))) => s * dy i) = fun (i : Fin (N * (oc * h * w))) => s * MobileNetV2TieB.mnv2StemCotC N h w Ws bs εs γs βs x dy i
theorem Proofs.MobileNetV2SyncTieB.mnv2HeadCotHr_smul (N h w : ) {oc nCls : } (Wd : Mat oc nCls) (g : Vec (N * nCls)) (s : ) :
(MobileNetV2TieB.mnv2HeadCotHr N h w Wd fun (i : Fin (N * nCls)) => s * g i) = fun (i : Fin (N * (oc * h * w))) => s * MobileNetV2TieB.mnv2HeadCotHr N h w Wd g i
theorem Proofs.MobileNetV2SyncTieB.mnv2HeadCotHn_smul (N h w : ) {ic oc nCls : } (Wh : Kernel4 oc ic 1 1) (bh : Vec oc) (εh : ) (γh βh : Vec oc) (Wd : Mat oc nCls) (xin : Vec (N * (ic * h * w))) (g : Vec (N * nCls)) (s : ) :
(MobileNetV2TieB.mnv2HeadCotHn N h w Wh bh εh γh βh Wd xin fun (i : Fin (N * nCls)) => s * g i) = fun (i : Fin (N * (oc * h * w))) => s * MobileNetV2TieB.mnv2HeadCotHn N h w Wh bh εh γh βh Wd xin g i
theorem Proofs.MobileNetV2SyncTieB.mnv2HeadCotHc_smul (N h w : ) {ic oc nCls : } (Wh : Kernel4 oc ic 1 1) (bh : Vec oc) (εh : ) (γh βh : Vec oc) (Wd : Mat oc nCls) (xin : Vec (N * (ic * h * w))) (g : Vec (N * nCls)) (s : ) :
(MobileNetV2TieB.mnv2HeadCotHc N h w Wh bh εh γh βh Wd xin fun (i : Fin (N * nCls)) => s * g i) = fun (i : Fin (N * (oc * h * w))) => s * MobileNetV2TieB.mnv2HeadCotHc N h w Wh bh εh γh βh Wd xin g i
theorem Proofs.MobileNetV2SyncTieB.mnv2HeadCotBlk_smul (N h w : ) {ic oc nCls : } (Wh : Kernel4 oc ic 1 1) (bh : Vec oc) (εh : ) (γh βh : Vec oc) (Wd : Mat oc nCls) (xin : Vec (N * (ic * h * w))) (g : Vec (N * nCls)) (s : ) :
(MobileNetV2TieB.mnv2HeadCotBlk N h w Wh bh εh γh βh Wd xin fun (i : Fin (N * nCls)) => s * g i) = fun (i : Fin (N * (ic * h * w))) => s * MobileNetV2TieB.mnv2HeadCotBlk N h w Wh bh εh γh βh Wd xin g i

The gradient nodes MobileNetV2 adds to the ResNet-34 kit.

theorem Proofs.MobileNetV2SyncTieB.depthwiseStridedXlaWeightGradB_smul {N c h w kH kW : } (xN cotN : String) (b : Vec c) (x : Vec (N * (c * (2 * h) * (2 * w)))) (W : DepthwiseKernel c kH kW) (cot : Vec (N * (c * h * w))) (s : ) (idx : Fin (c * kH * kW)) :
theorem Proofs.MobileNetV2SyncTieB.relu6MaskB_shard {R N n : } (PRE DY : Vec (R * N * n)) (r : Fin R) :
MobileNetV2TieB.relu6MaskB (N * n) (batchShard R N n PRE r) (batchShard R N n DY r) = batchShard R N n (MobileNetV2TieB.relu6MaskB (R * N * n) PRE DY) r
theorem Proofs.MobileNetV2SyncTieB.dStridedXlaInB_shard {R N c h w kH kW : } (W : DepthwiseKernel c kH kW) (b : Vec c) (DY : Vec (R * N * (c * h * w))) (r : Fin R) :
MobileNetV2TieB.dStridedXlaInB N W b (batchShard R N (c * h * w) DY r) = batchShard R N (c * (2 * h) * (2 * w)) (MobileNetV2TieB.dStridedXlaInB (R * N) W b DY) r
theorem Proofs.MobileNetV2SyncTieB.mnv2HeadCotHr_shard {R N : } (h w : ) {oc nCls : } (Wd : Mat oc nCls) (G : Vec (R * N * nCls)) (r : Fin R) :
MobileNetV2TieB.mnv2HeadCotHr N h w Wd (batchShard R N nCls G r) = batchShard R N (oc * h * w) (MobileNetV2TieB.mnv2HeadCotHr (R * N) h w Wd G) r
noncomputable def Proofs.MobileNetV2SyncTieB.mnv2NoExpSyncCotPc (R : ) (hR : 0 < R) (N h w : ) {ic oc : } (p : IVWNoExp ic oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
Vec (N * (oc * h * w))

b1, replica r: the project BatchNorm's sync backward of the block-output cotangent (the linear bottleneck has no activation after project). Feeds pW.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    noncomputable def Proofs.MobileNetV2SyncTieB.mnv2NoExpSyncCotDn (R : ) (hR : 0 < R) (N h w : ) {ic oc : } (p : IVWNoExp ic oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
    Vec (N * (ic * h * w))

    b1, replica r: the depthwise BN's output cotangent. Feeds dg/dbt.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      noncomputable def Proofs.MobileNetV2SyncTieB.mnv2NoExpSyncCotDc (R : ) (hR : 0 < R) (N h w : ) {ic oc : } (p : IVWNoExp ic oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
      Vec (N * (ic * h * w))

      b1, replica r: the depthwise conv's output cotangent. Feeds dW.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        noncomputable def Proofs.MobileNetV2SyncTieB.mnv2NoExpSyncCotIn (R : ) (hR : 0 < R) (N h w : ) {ic oc : } (p : IVWNoExp ic oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
        Vec (N * (ic * h * w))

        b1, replica r: the block-INPUT cotangent, handed to the stem.

        Equations
        Instances For
          theorem Proofs.MobileNetV2SyncTieB.mnv2NoExpSyncCotPc_shard (R : ) (hR : 0 < R) (N h w : ) {ic oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVWNoExp ic oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
          mnv2NoExpSyncCotPc R hR N h w p XIN dys r = batchShard R N (oc * h * w) (MobileNetV2TieB.mnv2NoExpCotPc (R * N) h w p XIN DY) r
          theorem Proofs.MobileNetV2SyncTieB.mnv2NoExpSyncCotDn_shard (R : ) (hR : 0 < R) (N h w : ) {ic oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVWNoExp ic oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
          mnv2NoExpSyncCotDn R hR N h w p XIN dys r = batchShard R N (ic * h * w) (MobileNetV2TieB.mnv2NoExpCotDn (R * N) h w p XIN DY) r
          theorem Proofs.MobileNetV2SyncTieB.mnv2NoExpSyncCotDc_shard (R : ) (hR : 0 < R) (N h w : ) {ic oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVWNoExp ic oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
          mnv2NoExpSyncCotDc R hR N h w p XIN dys r = batchShard R N (ic * h * w) (MobileNetV2TieB.mnv2NoExpCotDc (R * N) h w p XIN DY) r
          theorem Proofs.MobileNetV2SyncTieB.mnv2NoExpSyncCotIn_shard (R : ) (hR : 0 < R) (N h w : ) {ic oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVWNoExp ic oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
          mnv2NoExpSyncCotIn R hR N h w p XIN dys r = batchShard R N (ic * h * w) (MobileNetV2TieB.mnv2NoExpCotIn (R * N) h w p XIN DY) r
          noncomputable def Proofs.MobileNetV2SyncTieB.mnv2SyncCotPc (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
          Vec (N * (oc * h * w))

          Stride-1 body, replica r: the project BatchNorm's sync backward of the block-output cotangent. Feeds pW.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            noncomputable def Proofs.MobileNetV2SyncTieB.mnv2SyncCotDn (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
            Vec (N * (mid * h * w))

            Stride-1 body, replica r: the depthwise BN's output cotangent. Feeds dg/dbt.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              noncomputable def Proofs.MobileNetV2SyncTieB.mnv2SyncCotDc (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
              Vec (N * (mid * h * w))

              Stride-1 body, replica r: the depthwise conv's output cotangent. Feeds dW.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                noncomputable def Proofs.MobileNetV2SyncTieB.mnv2SyncCotEn (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
                Vec (N * (mid * h * w))

                Stride-1 body, replica r: the expand BN's output cotangent. Feeds eg/ebt.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  noncomputable def Proofs.MobileNetV2SyncTieB.mnv2SyncCotEc (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
                  Vec (N * (mid * h * w))

                  Stride-1 body, replica r: the expand conv's output cotangent. Feeds eW.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    noncomputable def Proofs.MobileNetV2SyncTieB.mnv2SyncCotInBody (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
                    Vec (N * (ic * h * w))

                    Stride-1 body, replica r: the body's input cotangent — the whole block-input cotangent for a widening (b11, b17).

                    Equations
                    Instances For
                      noncomputable def Proofs.MobileNetV2SyncTieB.mnv2ResidSyncCotIn (R : ) (hR : 0 < R) (N h w : ) {c mid : } (p : IVW c mid c) (XIN : Vec (R * N * (c * h * w))) (dys : Fin RVec (N * (c * h * w))) (r : Fin R) :
                      Vec (N * (c * h * w))

                      Skip block, replica r: the body branch plus the identity skip.

                      Equations
                      Instances For
                        theorem Proofs.MobileNetV2SyncTieB.mnv2SyncCotPc_shard (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                        mnv2SyncCotPc R hR N h w p XIN dys r = batchShard R N (oc * h * w) (MobileNetV2TieB.mnv2CotPc (R * N) h w p XIN DY) r
                        theorem Proofs.MobileNetV2SyncTieB.mnv2SyncCotDn_shard (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                        mnv2SyncCotDn R hR N h w p XIN dys r = batchShard R N (mid * h * w) (MobileNetV2TieB.mnv2CotDn (R * N) h w p XIN DY) r
                        theorem Proofs.MobileNetV2SyncTieB.mnv2SyncCotDc_shard (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                        mnv2SyncCotDc R hR N h w p XIN dys r = batchShard R N (mid * h * w) (MobileNetV2TieB.mnv2CotDc (R * N) h w p XIN DY) r
                        theorem Proofs.MobileNetV2SyncTieB.mnv2SyncCotEn_shard (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                        mnv2SyncCotEn R hR N h w p XIN dys r = batchShard R N (mid * h * w) (MobileNetV2TieB.mnv2CotEn (R * N) h w p XIN DY) r
                        theorem Proofs.MobileNetV2SyncTieB.mnv2SyncCotEc_shard (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                        mnv2SyncCotEc R hR N h w p XIN dys r = batchShard R N (mid * h * w) (MobileNetV2TieB.mnv2CotEc (R * N) h w p XIN DY) r
                        theorem Proofs.MobileNetV2SyncTieB.mnv2SyncCotInBody_shard (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                        mnv2SyncCotInBody R hR N h w p XIN dys r = batchShard R N (ic * h * w) (MobileNetV2TieB.mnv2CotInBody (R * N) h w p XIN DY) r
                        theorem Proofs.MobileNetV2SyncTieB.mnv2ResidSyncCotIn_shard (R : ) (hR : 0 < R) (N h w : ) {c mid : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW c mid c) (XIN : Vec (R * N * (c * h * w))) (dys : Fin RVec (N * (c * h * w))) (DY : Vec (R * N * (c * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (c * h * w) DY r) (r : Fin R) :
                        mnv2ResidSyncCotIn R hR N h w p XIN dys r = batchShard R N (c * h * w) (MobileNetV2TieB.mnv2ResidCotIn (R * N) h w p XIN DY) r
                        noncomputable def Proofs.MobileNetV2SyncTieB.mnv2SSyncCotPc (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
                        Vec (N * (oc * h * w))

                        Stride-2 block, replica r: the project BatchNorm's sync backward. Feeds pW.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          noncomputable def Proofs.MobileNetV2SyncTieB.mnv2SSyncCotDn (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
                          Vec (N * (mid * h * w))

                          Stride-2 block, replica r: the strided depthwise BN's output cotangent. Feeds dg/dbt.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            noncomputable def Proofs.MobileNetV2SyncTieB.mnv2SSyncCotDc (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
                            Vec (N * (mid * h * w))

                            Stride-2 block, replica r: the strided depthwise conv's output cotangent. Feeds dW.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              noncomputable def Proofs.MobileNetV2SyncTieB.mnv2SSyncCotEn (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
                              Vec (N * (mid * (2 * h) * (2 * w)))

                              Stride-2 block, replica r: the expand BN's output cotangent at the 2h x 2w grid — the strided depthwise's input-VJP (which upsamples) masked by the expand relu6.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                noncomputable def Proofs.MobileNetV2SyncTieB.mnv2SSyncCotEc (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
                                Vec (N * (mid * (2 * h) * (2 * w)))

                                Stride-2 block, replica r: the expand conv's output cotangent. Feeds eW.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  noncomputable def Proofs.MobileNetV2SyncTieB.mnv2StridedSyncCotIn (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
                                  Vec (N * (ic * (2 * h) * (2 * w)))

                                  Stride-2 block, replica r: the block-INPUT cotangent.

                                  Equations
                                  Instances For
                                    theorem Proofs.MobileNetV2SyncTieB.mnv2SSyncCotPc_shard (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                                    mnv2SSyncCotPc R hR N h w p XIN dys r = batchShard R N (oc * h * w) (MobileNetV2TieB.mnv2SCotPc (R * N) h w p XIN DY) r
                                    theorem Proofs.MobileNetV2SyncTieB.mnv2SSyncCotDn_shard (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                                    mnv2SSyncCotDn R hR N h w p XIN dys r = batchShard R N (mid * h * w) (MobileNetV2TieB.mnv2SCotDn (R * N) h w p XIN DY) r
                                    theorem Proofs.MobileNetV2SyncTieB.mnv2SSyncCotDc_shard (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                                    mnv2SSyncCotDc R hR N h w p XIN dys r = batchShard R N (mid * h * w) (MobileNetV2TieB.mnv2SCotDc (R * N) h w p XIN DY) r
                                    theorem Proofs.MobileNetV2SyncTieB.mnv2SSyncCotEn_shard (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                                    mnv2SSyncCotEn R hR N h w p XIN dys r = batchShard R N (mid * (2 * h) * (2 * w)) (MobileNetV2TieB.mnv2SCotEn (R * N) h w p XIN DY) r
                                    theorem Proofs.MobileNetV2SyncTieB.mnv2SSyncCotEc_shard (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                                    mnv2SSyncCotEc R hR N h w p XIN dys r = batchShard R N (mid * (2 * h) * (2 * w)) (MobileNetV2TieB.mnv2SCotEc (R * N) h w p XIN DY) r
                                    theorem Proofs.MobileNetV2SyncTieB.mnv2StridedSyncCotIn_shard (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                                    mnv2StridedSyncCotIn R hR N h w p XIN dys r = batchShard R N (ic * (2 * h) * (2 * w)) (MobileNetV2TieB.mnv2StridedCotIn (R * N) h w p XIN DY) r
                                    noncomputable def Proofs.MobileNetV2SyncTieB.mnv2StemSyncCotN (R N h w : ) {ic oc kH kW : } (Ws : Kernel4 oc ic kH kW) (bs : Vec oc) (εs : ) (γs βs : Vec oc) (X : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
                                    Vec (N * (oc * h * w))

                                    Stem, replica r: the stem relu6's mask of the cotangent b1 hands down. Feeds sg/sbt.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      noncomputable def Proofs.MobileNetV2SyncTieB.mnv2StemSyncCotC (R : ) (hR : 0 < R) (N h w : ) {ic oc kH kW : } (Ws : Kernel4 oc ic kH kW) (bs : Vec oc) (εs : ) (γs βs : Vec oc) (X : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (r : Fin R) :
                                      Vec (N * (oc * h * w))

                                      Stem, replica r: the stem BatchNorm's sync backward. Feeds sW.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        theorem Proofs.MobileNetV2SyncTieB.mnv2StemSyncCotN_shard (R N h w : ) {ic oc kH kW : } (Ws : Kernel4 oc ic kH kW) (bs : Vec oc) (εs : ) (γs βs : Vec oc) (X : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                                        mnv2StemSyncCotN R N h w Ws bs εs γs βs X dys r = batchShard R N (oc * h * w) (MobileNetV2TieB.mnv2StemCotN (R * N) h w Ws bs εs γs βs X DY) r
                                        theorem Proofs.MobileNetV2SyncTieB.mnv2StemSyncCotC_shard (R : ) (hR : 0 < R) (N h w : ) {ic oc kH kW : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (Ws : Kernel4 oc ic kH kW) (bs : Vec oc) (εs : ) (γs βs : Vec oc) (X : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) DY r) (r : Fin R) :
                                        mnv2StemSyncCotC R hR N h w Ws bs εs γs βs X dys r = batchShard R N (oc * h * w) (MobileNetV2TieB.mnv2StemCotC (R * N) h w Ws bs εs γs βs X DY) r
                                        noncomputable def Proofs.MobileNetV2SyncTieB.mnv2HeadSyncCotHn (R N h w : ) {ic oc nCls : } (Wh : Kernel4 oc ic 1 1) (bh : Vec oc) (εh : ) (γh βh : Vec oc) (Wd : Mat oc nCls) (XIN : Vec (R * N * (ic * h * w))) (gs : Fin RVec (N * nCls)) (r : Fin R) :
                                        Vec (N * (oc * h * w))

                                        Head, replica r: the head relu6's mask of the GAP backward of the classifier's input-VJP of this replica's loss cotangent. Feeds hg/hbt.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          noncomputable def Proofs.MobileNetV2SyncTieB.mnv2HeadSyncCotHc (R : ) (hR : 0 < R) (N h w : ) {ic oc nCls : } (Wh : Kernel4 oc ic 1 1) (bh : Vec oc) (εh : ) (γh βh : Vec oc) (Wd : Mat oc nCls) (XIN : Vec (R * N * (ic * h * w))) (gs : Fin RVec (N * nCls)) (r : Fin R) :
                                          Vec (N * (oc * h * w))

                                          Head, replica r: the head BatchNorm's sync backward. Feeds hW.

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For
                                            noncomputable def Proofs.MobileNetV2SyncTieB.mnv2HeadSyncCotBlk (R : ) (hR : 0 < R) (N h w : ) {ic oc nCls : } (Wh : Kernel4 oc ic 1 1) (bh : Vec oc) (εh : ) (γh βh : Vec oc) (Wd : Mat oc nCls) (XIN : Vec (R * N * (ic * h * w))) (gs : Fin RVec (N * nCls)) (r : Fin R) :
                                            Vec (N * (ic * h * w))

                                            Head, replica r: the cotangent handed to b17.

                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Instances For
                                              theorem Proofs.MobileNetV2SyncTieB.mnv2HeadSyncCotHn_shard (R N h w : ) {ic oc nCls : } (Wh : Kernel4 oc ic 1 1) (bh : Vec oc) (εh : ) (γh βh : Vec oc) (Wd : Mat oc nCls) (XIN : Vec (R * N * (ic * h * w))) (gs : Fin RVec (N * nCls)) (G : Vec (R * N * nCls)) (hgs : ∀ (r : Fin R), gs r = batchShard R N nCls G r) (r : Fin R) :
                                              mnv2HeadSyncCotHn R N h w Wh bh εh γh βh Wd XIN gs r = batchShard R N (oc * h * w) (MobileNetV2TieB.mnv2HeadCotHn (R * N) h w Wh bh εh γh βh Wd XIN G) r
                                              theorem Proofs.MobileNetV2SyncTieB.mnv2HeadSyncCotHc_shard (R : ) (hR : 0 < R) (N h w : ) {ic oc nCls : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (Wh : Kernel4 oc ic 1 1) (bh : Vec oc) (εh : ) (γh βh : Vec oc) (Wd : Mat oc nCls) (XIN : Vec (R * N * (ic * h * w))) (gs : Fin RVec (N * nCls)) (G : Vec (R * N * nCls)) (hgs : ∀ (r : Fin R), gs r = batchShard R N nCls G r) (r : Fin R) :
                                              mnv2HeadSyncCotHc R hR N h w Wh bh εh γh βh Wd XIN gs r = batchShard R N (oc * h * w) (MobileNetV2TieB.mnv2HeadCotHc (R * N) h w Wh bh εh γh βh Wd XIN G) r
                                              theorem Proofs.MobileNetV2SyncTieB.mnv2HeadSyncCotBlk_shard (R : ) (hR : 0 < R) (N h w : ) {ic oc nCls : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (Wh : Kernel4 oc ic 1 1) (bh : Vec oc) (εh : ) (γh βh : Vec oc) (Wd : Mat oc nCls) (XIN : Vec (R * N * (ic * h * w))) (gs : Fin RVec (N * nCls)) (G : Vec (R * N * nCls)) (hgs : ∀ (r : Fin R), gs r = batchShard R N nCls G r) (r : Fin R) :
                                              mnv2HeadSyncCotBlk R hR N h w Wh bh εh γh βh Wd XIN gs r = batchShard R N (ic * h * w) (MobileNetV2TieB.mnv2HeadCotBlk (R * N) h w Wh bh εh γh βh Wd XIN G) r
                                              theorem Proofs.MobileNetV2SyncTieB.den_allReduceMeanF_depthwiseStridedXlaWeightGradB_shard {N c h w kH kW : } (R : ) (hR : 0 < R) (t xN cotN : String) (ds : List ) (b : Vec c) (W : DepthwiseKernel c kH kW) (X : Vec (R * N * (c * (2 * h) * (2 * w)))) (DY : Vec (R * N * (c * h * w))) (dy : Fin RStableHLO.SHlo (N * (c * h * w))) (hdy : ∀ (r : Fin R), StableHLO.den (dy r) = batchShard R N (c * h * w) DY r) (idx : Fin (c * kH * kW)) :

                                              P4 at the XLA-SAME strided depthwise weight (b2, b4, b7, b14).

                                              def Proofs.MobileNetV2SyncTieB.DepthwiseStridedXlaWSync (R : ) (hR : 0 < R) (N h w : ) {c kH kW : } (t xN cotN : String) (b : Vec c) (X : Vec (R * N * (c * (2 * h) * (2 * w)))) (W : DepthwiseKernel c kH kW) (cots : Fin RVec (N * (c * h * w))) (COT : Vec (R * N * (c * h * w))) :

                                              The XLA-SAME strided depthwise weight, DP-tied.

                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                theorem Proofs.MobileNetV2SyncTieB.depthwiseStridedXlaWSync_of_scaled (R : ) (hR : 0 < R) (N h w : ) {c kH kW : } (t xN cotN : String) (b : Vec c) (X : Vec (R * N * (c * (2 * h) * (2 * w)))) (W : DepthwiseKernel c kH kW) (cots : Fin RVec (N * (c * h * w))) (COT : Vec (R * N * (c * h * w))) (hc : ∀ (r : Fin R), cots r = batchShard R N (c * h * w) (fun (i : Fin (R * N * (c * h * w))) => R * COT i) r) :
                                                DepthwiseStridedXlaWSync R hR N h w t xN cotN b X W cots COT
                                                def Proofs.MobileNetV2SyncTieB.mnv2StemSyncTiedB (R : ) (hR : 0 < R) (N h w : ) {ic oc kH kW : } (xN cotN vN epsStr : String) (Ws : Kernel4 oc ic kH kW) (bs : Vec oc) (εs : ) (γs βs : Vec oc) (X : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) :

                                                Stem, DP-tied — the 3x3/s2 XLA-SAME conv weight and its BatchNorm's γ and β.

                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For
                                                  theorem Proofs.MobileNetV2SyncTieB.mnv2_stem_syncTiedB (R : ) (hR : 0 < R) (N h w : ) {ic oc kH kW : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (xN cotN vN epsStr : String) (Ws : Kernel4 oc ic kH kW) (bs : Vec oc) (εs : ) (γs βs : Vec oc) (X : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) (fun (i : Fin (R * N * (oc * h * w))) => R * DY i) r) :
                                                  mnv2StemSyncTiedB R hR N h w xN cotN vN epsStr Ws bs εs γs βs X dys DY
                                                  def Proofs.MobileNetV2SyncTieB.mnv2NoExpSyncTiedB (R : ) (hR : 0 < R) (N h w : ) {ic oc : } (pfx xN cotN vN epsStr : String) (p : IVWNoExp ic oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) :

                                                  t = 1 block (b1), DP-tied — its six emitted collectives: the depthwise weight, the depthwise BatchNorm's γ and β, the project weight, the project BatchNorm's γ and β.

                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For
                                                    theorem Proofs.MobileNetV2SyncTieB.mnv2NoExpSyncCotIn_scaled (R : ) (hR : 0 < R) (N h w : ) {ic oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVWNoExp ic oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) (fun (i : Fin (R * N * (oc * h * w))) => R * DY i) r) (r : Fin R) :
                                                    mnv2NoExpSyncCotIn R hR N h w p XIN dys r = batchShard R N (ic * h * w) (fun (i : Fin (R * N * (ic * h * w))) => R * MobileNetV2TieB.mnv2NoExpCotIn (R * N) h w p XIN DY i) r

                                                    The scaled-shard invariant through b1: replicas at R × the shards of DY hand the stem R × the shards of the single-device block-input cotangent.

                                                    theorem Proofs.MobileNetV2SyncTieB.mnv2_noexp_syncTiedB (R : ) (hR : 0 < R) (N h w : ) {ic oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (pfx xN cotN vN epsStr : String) (p : IVWNoExp ic oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) (fun (i : Fin (R * N * (oc * h * w))) => R * DY i) r) :
                                                    mnv2NoExpSyncTiedB R hR N h w pfx xN cotN vN epsStr p XIN dys DY
                                                    def Proofs.MobileNetV2SyncTieB.mnv2Stride1SyncTiedB (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (pfx xN cotN vN epsStr : String) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) :

                                                    Stride-1 inverted-residual block, DP-tied — its nine emitted collectives (eW eg ebt dW dg dbt pW pg pbt). ⭐ One statement for all twelve stride-1 blocks, skip or widening, exactly as mnv2Stride1TiedB is: the identity skip changes only the cotangent handed to the previous block, never a parameter's.

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      theorem Proofs.MobileNetV2SyncTieB.mnv2SyncCotInBody_scaled (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) (fun (i : Fin (R * N * (oc * h * w))) => R * DY i) r) (r : Fin R) :
                                                      mnv2SyncCotInBody R hR N h w p XIN dys r = batchShard R N (ic * h * w) (fun (i : Fin (R * N * (ic * h * w))) => R * MobileNetV2TieB.mnv2CotInBody (R * N) h w p XIN DY i) r

                                                      The scaled-shard invariant through a widening's body (b11, b17).

                                                      theorem Proofs.MobileNetV2SyncTieB.mnv2ResidSyncCotIn_scaled (R : ) (hR : 0 < R) (N h w : ) {c mid : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW c mid c) (XIN : Vec (R * N * (c * h * w))) (dys : Fin RVec (N * (c * h * w))) (DY : Vec (R * N * (c * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (c * h * w) (fun (i : Fin (R * N * (c * h * w))) => R * DY i) r) (r : Fin R) :
                                                      mnv2ResidSyncCotIn R hR N h w p XIN dys r = batchShard R N (c * h * w) (fun (i : Fin (R * N * (c * h * w))) => R * MobileNetV2TieB.mnv2ResidCotIn (R * N) h w p XIN DY i) r

                                                      The scaled-shard invariant through a skip block.

                                                      theorem Proofs.MobileNetV2SyncTieB.mnv2_stride1_syncTiedB (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (pfx xN cotN vN epsStr : String) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * h * w))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) (fun (i : Fin (R * N * (oc * h * w))) => R * DY i) r) :
                                                      mnv2Stride1SyncTiedB R hR N h w pfx xN cotN vN epsStr p XIN dys DY
                                                      def Proofs.MobileNetV2SyncTieB.mnv2Stride2SyncTiedB (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (pfx xN cotN vN epsStr : String) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) :

                                                      Stride-2 downsampling block, DP-tied — its nine emitted collectives (b2, b4, b7, b14): the expand half at the 2h x 2w input grid, the XLA-SAME strided depthwise.

                                                      Equations
                                                      • One or more equations did not get rendered due to their size.
                                                      Instances For
                                                        theorem Proofs.MobileNetV2SyncTieB.mnv2StridedSyncCotIn_scaled (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) (fun (i : Fin (R * N * (oc * h * w))) => R * DY i) r) (r : Fin R) :
                                                        mnv2StridedSyncCotIn R hR N h w p XIN dys r = batchShard R N (ic * (2 * h) * (2 * w)) (fun (i : Fin (R * N * (ic * (2 * h) * (2 * w)))) => R * MobileNetV2TieB.mnv2StridedCotIn (R * N) h w p XIN DY i) r

                                                        The scaled-shard invariant through a stride-2 block.

                                                        theorem Proofs.MobileNetV2SyncTieB.mnv2_stride2_syncTiedB (R : ) (hR : 0 < R) (N h w : ) {ic mid oc : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (pfx xN cotN vN epsStr : String) (p : IVW ic mid oc) (XIN : Vec (R * N * (ic * (2 * h) * (2 * w)))) (dys : Fin RVec (N * (oc * h * w))) (DY : Vec (R * N * (oc * h * w))) (hdys : ∀ (r : Fin R), dys r = batchShard R N (oc * h * w) (fun (i : Fin (R * N * (oc * h * w))) => R * DY i) r) :
                                                        mnv2Stride2SyncTiedB R hR N h w pfx xN cotN vN epsStr p XIN dys DY
                                                        def Proofs.MobileNetV2SyncTieB.mnv2HeadSyncTiedB (R : ) (hR : 0 < R) (N h w : ) {ic oc nCls : } (xN cotN vN epsStr : String) (Wh : Kernel4 oc ic 1 1) (bh : Vec oc) (εh : ) (γh βh : Vec oc) (Wd : Mat oc nCls) (XIN : Vec (R * N * (ic * h * w))) (gs : Fin RVec (N * nCls)) (G : Vec (R * N * nCls)) :

                                                        Head, DP-tied — the 1x1 conv weight, its BatchNorm's γ and β, and the classifier's weight and bias at the GAP output.

                                                        Equations
                                                        • One or more equations did not get rendered due to their size.
                                                        Instances For
                                                          theorem Proofs.MobileNetV2SyncTieB.mnv2HeadSyncCotBlk_scaled (R : ) (hR : 0 < R) (N h w : ) {ic oc nCls : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (Wh : Kernel4 oc ic 1 1) (bh : Vec oc) (εh : ) (γh βh : Vec oc) (Wd : Mat oc nCls) (XIN : Vec (R * N * (ic * h * w))) (gs : Fin RVec (N * nCls)) (G : Vec (R * N * nCls)) (hgs : ∀ (r : Fin R), gs r = batchShard R N nCls (fun (i : Fin (R * N * nCls)) => R * G i) r) (r : Fin R) :
                                                          mnv2HeadSyncCotBlk R hR N h w Wh bh εh γh βh Wd XIN gs r = batchShard R N (ic * h * w) (fun (i : Fin (R * N * (ic * h * w))) => R * MobileNetV2TieB.mnv2HeadCotBlk (R * N) h w Wh bh εh γh βh Wd XIN G i) r

                                                          The head's cotangent handed to b17 on a replica, at R × the shards of G, is R × the shard of the single-device one.

                                                          theorem Proofs.MobileNetV2SyncTieB.mnv2_head_syncTiedB (R : ) (hR : 0 < R) (N h w : ) {ic oc nCls : } (hN : 0 < N) (hh : 0 < h) (hw : 0 < w) (xN cotN vN epsStr : String) (Wh : Kernel4 oc ic 1 1) (bh : Vec oc) (εh : ) (γh βh : Vec oc) (Wd : Mat oc nCls) (XIN : Vec (R * N * (ic * h * w))) (gs : Fin RVec (N * nCls)) (G : Vec (R * N * nCls)) (hgs : ∀ (r : Fin R), gs r = batchShard R N nCls (fun (i : Fin (R * N * nCls)) => R * G i) r) :
                                                          mnv2HeadSyncTiedB R hR N h w xN cotN vN epsStr Wh bh εh γh βh Wd XIN gs G
                                                          theorem Proofs.MobileNetV2SyncTieB.mnv2_net_syncTiedB (R : ) (hR : 0 < R) (N : ) (hN : 0 < N) {nCls : } (xN cotN vN epsStr aStr negAK bStr logN ohN : String) (α B : ) (w : MNV2BWeights nCls) (X : Vec (R * N * (3 * (2 * 112) * (2 * 112)))) (T : Vec (R * N * (1 * nCls))) :
                                                          have G := ResNet34TieB.unrowB (R * N) nCls (StableHLO.den (smoothedLossCotGraph (R * N) nCls α (R * B) aStr negAK bStr logN ohN (ResNet34TieB.rowB (R * N) nCls (mobilenetv2ForwardB_full (R * N) w X)) T)); have dy17 := MobileNetV2TieB.mnv2HeadCotBlk (R * N) 7 7 w.hW w.hb w. w. w. w.fcW (mnv2PreB17 (R * N) w X) G; have dy16 := MobileNetV2TieB.mnv2CotInBody (R * N) 7 7 w.b17 (mnv2PreB16 (R * N) w X) dy17; have dy15 := MobileNetV2TieB.mnv2ResidCotIn (R * N) 7 7 w.b16 (mnv2PreB15 (R * N) w X) dy16; have dy14 := MobileNetV2TieB.mnv2ResidCotIn (R * N) 7 7 w.b15 (mnv2PreB14 (R * N) w X) dy15; have dy13 := MobileNetV2TieB.mnv2StridedCotIn (R * N) 7 7 w.b14 (mnv2PreB13 (R * N) w X) dy14; have dy12 := MobileNetV2TieB.mnv2ResidCotIn (R * N) 14 14 w.b13 (mnv2PreB12 (R * N) w X) dy13; have dy11 := MobileNetV2TieB.mnv2ResidCotIn (R * N) 14 14 w.b12 (mnv2PreB11 (R * N) w X) dy12; have dy10 := MobileNetV2TieB.mnv2CotInBody (R * N) 14 14 w.b11 (mnv2PreB10 (R * N) w X) dy11; have dy9 := MobileNetV2TieB.mnv2ResidCotIn (R * N) 14 14 w.b10 (mnv2PreB9 (R * N) w X) dy10; have dy8 := MobileNetV2TieB.mnv2ResidCotIn (R * N) 14 14 w.b9 (mnv2PreB8 (R * N) w X) dy9; have dy7 := MobileNetV2TieB.mnv2ResidCotIn (R * N) 14 14 w.b8 (mnv2PreB7 (R * N) w X) dy8; have dy6 := MobileNetV2TieB.mnv2StridedCotIn (R * N) 14 14 w.b7 (mnv2PreB6 (R * N) w X) dy7; have dy5 := MobileNetV2TieB.mnv2ResidCotIn (R * N) 28 28 w.b6 (mnv2PreB5 (R * N) w X) dy6; have dy4 := MobileNetV2TieB.mnv2ResidCotIn (R * N) 28 28 w.b5 (mnv2PreB4 (R * N) w X) dy5; have dy3 := MobileNetV2TieB.mnv2StridedCotIn (R * N) 28 28 w.b4 (mnv2PreB3 (R * N) w X) dy4; have dy2 := MobileNetV2TieB.mnv2ResidCotIn (R * N) 56 56 w.b3 (mnv2PreB2 (R * N) w X) dy3; have dy1 := MobileNetV2TieB.mnv2StridedCotIn (R * N) 56 56 w.b2 (mnv2PreB1 (R * N) w X) dy2; have cotStem := MobileNetV2TieB.mnv2NoExpCotIn (R * N) 112 112 w.b1 (mnv2PreB0 (R * N) w X) dy1; have g := fun (r : Fin R) => ResNet34TieB.unrowB N nCls (StableHLO.den (smoothedLossCotGraph N nCls α B aStr negAK bStr logN ohN (ResNet34TieB.rowB N nCls (batchShard R N nCls (mobilenetv2ForwardB_full (R * N) w X) r)) (batchShard R N (1 * nCls) T r))); have e17 := mnv2HeadSyncCotBlk R hR N 7 7 w.hW w.hb w. w. w. w.fcW (mnv2PreB17 (R * N) w X) g; have e16 := mnv2SyncCotInBody R hR N 7 7 w.b17 (mnv2PreB16 (R * N) w X) e17; have e15 := mnv2ResidSyncCotIn R hR N 7 7 w.b16 (mnv2PreB15 (R * N) w X) e16; have e14 := mnv2ResidSyncCotIn R hR N 7 7 w.b15 (mnv2PreB14 (R * N) w X) e15; have e13 := mnv2StridedSyncCotIn R hR N 7 7 w.b14 (mnv2PreB13 (R * N) w X) e14; have e12 := mnv2ResidSyncCotIn R hR N 14 14 w.b13 (mnv2PreB12 (R * N) w X) e13; have e11 := mnv2ResidSyncCotIn R hR N 14 14 w.b12 (mnv2PreB11 (R * N) w X) e12; have e10 := mnv2SyncCotInBody R hR N 14 14 w.b11 (mnv2PreB10 (R * N) w X) e11; have e9 := mnv2ResidSyncCotIn R hR N 14 14 w.b10 (mnv2PreB9 (R * N) w X) e10; have e8 := mnv2ResidSyncCotIn R hR N 14 14 w.b9 (mnv2PreB8 (R * N) w X) e9; have e7 := mnv2ResidSyncCotIn R hR N 14 14 w.b8 (mnv2PreB7 (R * N) w X) e8; have e6 := mnv2StridedSyncCotIn R hR N 14 14 w.b7 (mnv2PreB6 (R * N) w X) e7; have e5 := mnv2ResidSyncCotIn R hR N 28 28 w.b6 (mnv2PreB5 (R * N) w X) e6; have e4 := mnv2ResidSyncCotIn R hR N 28 28 w.b5 (mnv2PreB4 (R * N) w X) e5; have e3 := mnv2StridedSyncCotIn R hR N 28 28 w.b4 (mnv2PreB3 (R * N) w X) e4; have e2 := mnv2ResidSyncCotIn R hR N 56 56 w.b3 (mnv2PreB2 (R * N) w X) e3; have e1 := mnv2StridedSyncCotIn R hR N 56 56 w.b2 (mnv2PreB1 (R * N) w X) e2; have eStem := mnv2NoExpSyncCotIn R hR N 112 112 w.b1 (mnv2PreB0 (R * N) w X) e1; mnv2StemSyncTiedB R hR N 112 112 xN cotN vN epsStr w.sW w.sb w. w. w. X eStem cotStem mnv2NoExpSyncTiedB R hR N 112 112 "1" xN cotN vN epsStr w.b1 (mnv2PreB0 (R * N) w X) e1 dy1 mnv2Stride2SyncTiedB R hR N 56 56 "2" xN cotN vN epsStr w.b2 (mnv2PreB1 (R * N) w X) e2 dy2 mnv2Stride1SyncTiedB R hR N 56 56 "3" xN cotN vN epsStr w.b3 (mnv2PreB2 (R * N) w X) e3 dy3 mnv2Stride2SyncTiedB R hR N 28 28 "4" xN cotN vN epsStr w.b4 (mnv2PreB3 (R * N) w X) e4 dy4 mnv2Stride1SyncTiedB R hR N 28 28 "5" xN cotN vN epsStr w.b5 (mnv2PreB4 (R * N) w X) e5 dy5 mnv2Stride1SyncTiedB R hR N 28 28 "6" xN cotN vN epsStr w.b6 (mnv2PreB5 (R * N) w X) e6 dy6 mnv2Stride2SyncTiedB R hR N 14 14 "7" xN cotN vN epsStr w.b7 (mnv2PreB6 (R * N) w X) e7 dy7 mnv2Stride1SyncTiedB R hR N 14 14 "8" xN cotN vN epsStr w.b8 (mnv2PreB7 (R * N) w X) e8 dy8 mnv2Stride1SyncTiedB R hR N 14 14 "9" xN cotN vN epsStr w.b9 (mnv2PreB8 (R * N) w X) e9 dy9 mnv2Stride1SyncTiedB R hR N 14 14 "10" xN cotN vN epsStr w.b10 (mnv2PreB9 (R * N) w X) e10 dy10 mnv2Stride1SyncTiedB R hR N 14 14 "11" xN cotN vN epsStr w.b11 (mnv2PreB10 (R * N) w X) e11 dy11

                                                          ⭐⭐⭐ The synchronised-BN data-parallel MobileNetV2 step IS the single-device step at the global batch. R replicas at batch N, each dividing its loss by B, each running the render's sync-BN backward chain from its own label-smoothed cotangent; every parameter's all-reduced mean gradient — stem 3, b1 6, sixteen blocks × 9, head 3, dense 2: the 158 the render emits — equals the single-device batch-BN gradient node at batch R·N, loss divided by R·B, at the cotangent T3's chain delivers there.

                                                          ⭐ The left-hand chain is the replicas' own: sync-BN backward (bnSyncInB, a collective per BN layer), per-example conv / depthwise / relu6 / GAP / dense links, each replica's own loss cotangent. The right-hand chain is mnv2_net_tiedB's at N := R·N, B := R·B, whose nodes that capstone ties to the certified gradient — so this and it together say the DP step's update is the certified gradient of the mean loss over all R·N examples.

                                                          ⛔ Before the render's sync-BN swap the DP render normalised per replica and this statement was false: DataParallel.dpMeanGrad_ne_globalBatchGrad is the witness, and stays as the statement of what those runs did.