The block sigma equivalence #
The block enumeration pairs a block index with an offset within the block to enumerate the concatenated total.
Split the sigma over a cons list into head + tail.
Equations
Instances For
The sigma over a cons list splits as head + tail.
Equations
- RS.blockSigmaSplit d ds = { toFun := RS.blockSigmaSplitFun d ds, invFun := RS.blockSigmaSplitInv d ds, left_inv := ⋯, right_inv := ⋯ }
Instances For
The block enumeration: a block index and an offset within the block enumerate the concatenated total.
Equations
- RS.blockSigmaEquiv [] = Equiv.equivOfIsEmpty ((v : Fin [].length) × Fin ([].get v)) (Fin [].sum)
- RS.blockSigmaEquiv (d :: ds) = (RS.blockSigmaSplit d ds).trans (((Equiv.refl (Fin d)).sumCongr (RS.blockSigmaEquiv ds)).trans (finSumFinEquiv.trans (finCongr ⋯)))