OAI/Computability/WLIdentification/RowOffsets.lean
65 declarations, 0 contain sorry, 0 declared as axioms
- def
OAI.WLIdentification.CycleRows.RowSumline 11Source documentation
The row-sum restriction is retained explicitly; pointwise globally consistent address values alone are not used as a substitute for actual readout offsets.
def RowSum {r : ℕ} (A : Fin r → Type) (V : Type) [AddCommMonoid V] (h : ((i : Fin r) → A i) → V) : Prop := … - theorem
OAI.WLIdentification.CycleRows.RowSum.zeroline 19 - theorem
OAI.WLIdentification.CycleRows.RowSum.addline 21 - theorem
OAI.WLIdentification.CycleRows.RowSum.mapline 29 - theorem
OAI.WLIdentification.CycleRows.RowSum.pullbackline 34 - theorem
OAI.WLIdentification.CycleRows.RowSum.constantline 40 - theorem
OAI.WLIdentification.CycleRows.RowSum.extendline 49Source documentation
Extending the adjacent-coordinate terms, not an arbitrary full-address function, gives the extension on a product subdomain used by private buffers.
theorem extend {A' : Fin r → Type} {h : ((i : Fin r) → A i) → V} (hh : RowSum A V h) (f : (i : Fin r) → A i → A' i) (hf : ∀ i, Function.Injective (f i)) : ∃ h', RowSum A' V h' ∧ ∀ a, h' (fun i => f i (a i)) = h a := by …Mentions: OAI.WLIdentification.CycleRows.RowSum
- theorem
OAI.WLIdentification.CycleRows.square_liftingline 75Source documentation
One link, with arbitrary nonempty coordinate match domains, has legal vertical offsets exactly when the horizontal ring sums have the required shift. This is the local-to-global step used independently on every private wire link.
theorem square_lifting {r : ℕ} (hr : 3 ≤ r) (A : Fin r → Type) (base : (i : Fin r) → A i) (left right beta : (i : Fin r) → A i → A (finRotate r i) → Bit) : (∃ y : (i : Fin r) → A i → Bit, ∀ i u v, left i u v + right i u v + y i u + y (finRotate r i) v = beta i u v) ↔ ∀ a : (i : Fin r) → A i, (∑ i, left i (a i) (a (finRotate r i))) + (∑ i, right i (a i) (a (finRotate r i))) = ∑ i, beta i (a i) (a (finRotate r i)) := by …Mentions: OAI.WLIdentification.Bit
- structure
OAI.WLIdentification.RingLayoutline 113 - abbrev
OAI.WLIdentification.RingLayout.Labelline 136 - abbrev
OAI.WLIdentification.RingLayout.Matchline 137 - abbrev
OAI.WLIdentification.RingLayout.HNameline 138 - abbrev
OAI.WLIdentification.RingLayout.VNameline 139 - abbrev
OAI.WLIdentification.RingLayout.Squareline 140 - abbrev
OAI.WLIdentification.RingLayout.Coordinateline 141 - abbrev
OAI.WLIdentification.RingLayout.Blockline 142 - def
OAI.WLIdentification.RingLayout.leftHline 144 - def
OAI.WLIdentification.RingLayout.rightHline 148 - def
OAI.WLIdentification.RingLayout.topVline 152 - def
OAI.WLIdentification.RingLayout.bottomVline 153 - theorem
OAI.WLIdentification.RingLayout.vertical_neline 155 - theorem
OAI.WLIdentification.RingLayout.horizontal_neline 160 - instance
OAI.WLIdentification.RingLayout.coordinateDecidableEqline 164 - instance
OAI.WLIdentification.RingLayout.blockDecidableEqline 165 - def
OAI.WLIdentification.RingLayout.hCoordsline 167 - def
OAI.WLIdentification.RingLayout.coordinatesline 171 - theorem
OAI.WLIdentification.RingLayout.hCoord_memline 176 - theorem
OAI.WLIdentification.RingLayout.left_memline 181 - theorem
OAI.WLIdentification.RingLayout.right_memline 186 - theorem
OAI.WLIdentification.RingLayout.top_memline 191 - theorem
OAI.WLIdentification.RingLayout.bottom_memline 195 - def
OAI.WLIdentification.RingLayout.localProjline 199 - def
OAI.WLIdentification.RingLayout.squareFormline 202 - theorem
OAI.WLIdentification.RingLayout.squareForm_applyline 208 - theorem
OAI.WLIdentification.RingLayout.squareForm_nonzeroline 214 - def
OAI.WLIdentification.RingLayout.hIndexline 244 - def
OAI.WLIdentification.RingLayout.vIndexline 248 - def
OAI.WLIdentification.RingLayout.squareIndexline 252 - def
OAI.WLIdentification.RingLayout.colorIndexline 256 - def
OAI.WLIdentification.RingLayout.affineline 261 - abbrev
OAI.WLIdentification.RingLayout.Horizontalline 280 - abbrev
OAI.WLIdentification.RingLayout.Verticalline 281 - def
OAI.WLIdentification.RingLayout.horizontalline 283 - def
OAI.WLIdentification.RingLayout.verticalline 284 - def
OAI.WLIdentification.RingLayout.packline 285 - theorem
OAI.WLIdentification.RingLayout.solves_iffline 289 - abbrev
OAI.WLIdentification.RingLayout.Addressline 302 - abbrev
OAI.WLIdentification.RingLayout.MatchAddressline 303 - def
OAI.WLIdentification.RingLayout.leftAddressline 305 - def
OAI.WLIdentification.RingLayout.rightAddressline 307 - def
OAI.WLIdentification.RingLayout.ringValueline 310 - def
OAI.WLIdentification.RingLayout.linkShiftline 313 - theorem
OAI.WLIdentification.RingLayout.ringValue_rowSumline 317 - theorem
OAI.WLIdentification.RingLayout.linkShift_rowSumline 322 - theorem
OAI.WLIdentification.RingLayout.offsets_iff_horizontalline 328Source documentation
All link square equations are lifted simultaneously. No arbitrary-address assignment substitutes for readouts shared by adjacent-coordinate pairs.
theorem offsets_iff_horizontal (hr : 3 ≤ r) (beta : R.Block → Bit) : (∃ z, (R.affine (by omega)).Solves beta z) ↔ ∃ x : R.Horizontal, ∀ e (a : R.MatchAddress e), R.firstForm e (R.ringValue x (R.first e) (R.leftAddress e a)) + R.secondForm e (R.ringValue x (R.second e) (R.rightAddress e a)) = R.linkShift beta e a := by …Mentions: OAI.WLIdentification.Bit
- theorem
OAI.WLIdentification.RingLayout.offsets_iff_rowSumsline 361 - theorem
OAI.WLIdentification.AffineBlocks.constrained_cardline 387Source documentation
A nonzero scalar equation cuts a binary valuation class exactly in half.
theorem constrained_card (D : AffineBlocks C B) (beta : B → Bit) (b : B) (hc : D.constrained b = true) : 2 * Fintype.card {v // D.Legal beta b v} = 2 ^ (D.coordinates b).card := by …Mentions: OAI.WLIdentification.AffineBlocks, OAI.WLIdentification.Bit
- theorem
OAI.WLIdentification.AffineBlocks.local_card_leline 401 - theorem
OAI.WLIdentification.AffineBlocks.piece_card_boundline 407 - theorem
OAI.WLIdentification.RingLayout.hCoords_cardline 434 - theorem
OAI.WLIdentification.RingLayout.coordinates_cardline 442 - theorem
OAI.WLIdentification.RingLayout.piece_card_leline 465Source documentation
The advertised 26-vertex bound, including both vertices of every readout bit.
theorem piece_card_le (hr : 2 ≤ r) (beta : R.Block → Bit) (b : R.Block) : Fintype.card ((R.affine hr).Piece beta b) ≤ 26 := by …Mentions: OAI.WLIdentification.Bit
- def
OAI.WLIdentification.RingLayout.ownerline 478Source documentation
Every vertical name has a neighboring square, even for singleton factors.
noncomputable def owner : R.Coordinate → R.Block | .inl h => .inl h.1 | .inr v => .inr ⟨v.1, v.2.1, v.2.2, ⟨(R.matchLabels_nonempty v.1 (finRotate r v.2.1)).choose, (R.matchLabels_nonempty v.1 (finRotate r v.2.1)).choose_spec⟩⟩ omit [Fintype T] [Fintype L] in - theorem
OAI.WLIdentification.RingLayout.owner_coversline 485 - theorem
OAI.WLIdentification.RingLayout.arbitrary_mateline 491Source documentation
All-mates reconstruction for the ring construction when r≥32.
theorem arbitrary_mate (hr : 32 ≤ r) (H : Graph) (h : Equivalent r ((R.affine (by omega)).graph 0) H) : ∃ beta, Isomorphic H ((R.affine (by omega)).graph beta) := …Mentions: OAI.WLIdentification.Graph, OAI.WLIdentification.Equivalent, OAI.WLIdentification.Isomorphic