OAI/Computability/WLIdentification/LocalImages.lean
42 declarations, 0 contain sorry, 0 declared as axioms
- theorem
OAI.WLIdentification.bit_eq_add_of_add_eqline 8Source documentation
Characteristic-two rearrangement, stated without an arithmetic oracle.
theorem bit_eq_add_of_add_eq {x y z : Bit} (h : x + y = z) : x = z + y := by …Mentions: OAI.WLIdentification.Bit
- theorem
OAI.WLIdentification.RingLayout.imageSet_linkline 18Source documentation
Image consistency for every link. Only scalar image sets are equated; no common vector choice is silently imposed on distinct comparisons.
theorem imageSet_link (hr : 2 ≤ r) (beta : R.Block → Bit) (e : L) (a : R.MatchAddress e) : (R.firstForm e) '' R.ImageSet hr beta (R.first e) (R.leftAddress e a) = (fun y => R.linkShift beta e a + R.secondForm e y) '' R.ImageSet hr beta (R.second e) (R.rightAddress e a) := by …Mentions: OAI.WLIdentification.Bit
- def
OAI.WLIdentification.WireAlgebra.shiftSetline 35 - theorem
OAI.WLIdentification.WireAlgebra.shiftSet_zeroline 38 - theorem
OAI.WLIdentification.WireAlgebra.shiftSet_shiftSetline 42 - theorem
OAI.WLIdentification.WireAlgebra.chain_setsline 48Source documentation
Private internal scalar image sets telescope by translations. This does not cancel Minkowski sums or select a common endpoint vector across comparisons.
theorem chain_sets {n : ℕ} (left right : Set Bit) (q : Fin (n + 1) → Set Bit) (first last : Bit) (middle : Fin n → Bit) (hfirst : left = shiftSet first (q 0)) (hmiddle : ∀ i, q i.castSucc = shiftSet (middle i) (q i.succ)) (hlast : q (Fin.last n) = shiftSet last right) : left = shiftSet (first + (∑ i, middle i) + last) right := by …Mentions: OAI.WLIdentification.Bit, OAI.WLIdentification.WireAlgebra.shiftSet
- def
OAI.WLIdentification.ComparisonSchemas.responseImagesline 69 - theorem
OAI.WLIdentification.ComparisonSchemas.image_consistencyline 73 - def
OAI.WLIdentification.Marker.walkSumline 116 - theorem
OAI.WLIdentification.Marker.walkSum_nilline 120 - theorem
OAI.WLIdentification.Marker.walkSum_consline 123 - theorem
OAI.WLIdentification.Marker.walkSum_appendline 126 - theorem
OAI.WLIdentification.Marker.walkSum_reverseline 133 - theorem
OAI.WLIdentification.Marker.walkSum_cast_leftline 142 - theorem
OAI.WLIdentification.Marker.exact_of_closed_zeroline 149Source documentation
A nonwrapping marker is an exact coboundary. No finiteness or connectedness assumption is needed; roots are chosen separately in actual graph components.
theorem exact_of_closed_zero (m : V → V → Bit) (hm : ∀ u v, G.Adj u v → m u v = m v u) (hc : ∀ u (p : G.Walk u u), walkSum m p = 0) : ∃ s : V → Bit, ∀ u v, G.Adj u v → m u v = s u + s v := by …Mentions: OAI.WLIdentification.Bit, OAI.WLIdentification.Marker.walkSum
- theorem
OAI.WLIdentification.Marker.walkSum_of_exactline 171Source documentation
Conversely, a potential cancels around every closed walk.
theorem walkSum_of_exact (s : V → Bit) (m : V → V → Bit) (hm : ∀ u v, G.Adj u v → m u v = s u + s v) {u v : V} (p : G.Walk u v) : walkSum m p = s u + s v := by …Mentions: OAI.WLIdentification.Bit, OAI.WLIdentification.Marker.walkSum
- theorem
OAI.WLIdentification.Marker.walkSum_addline 182 - theorem
OAI.WLIdentification.Marker.walkSum_smulline 188 - def
OAI.WLIdentification.Marker.cutline 194 - def
OAI.WLIdentification.Marker.deltaline 196 - theorem
OAI.WLIdentification.Marker.cut_toggleline 200Source documentation
Moving the marked row to any other cut changes the marker by a boundary potential, including for singleton coordinate domains.
theorem cut_toggle {r : ℕ} (j i : Fin r) : cut j i + cut j (finRotate r i) = delta i + (if i = j then 1 else 0) := by …Mentions: OAI.WLIdentification.Marker.cut, OAI.WLIdentification.Marker.delta
- theorem
OAI.WLIdentification.Marker.closed_zero_of_missing_rowline 229Source documentation
If one row is absent, the ring marker is a boundary potential. This is valid on an arbitrary corner subgraph and uses no assumption on label factors.
theorem closed_zero_of_missing_row {r : ℕ} (row : V → Fin r) (j : Fin r) (m : V → V → Bit) (he : ∀ u v, G.Adj u v → (row u = row v ∧ m u v = 0) ∨ ∃ i : Fin r, i ≠ j ∧ m u v = delta i ∧ ((row u = i ∧ row v = finRotate r i) ∨ (row v = i ∧ row u = finRotate r i))) : ∀ u (p : G.Walk u u), walkSum m p = 0 := by …Mentions: OAI.WLIdentification.Bit, OAI.WLIdentification.Marker.delta, OAI.WLIdentification.Marker.walkSum
- theorem
OAI.WLIdentification.Marker.horizontal_adjustline 251Source documentation
The potential adjustment in the exact-projection argument, at a horizontal readout. Vector coordinates are adjusted together, not independently chosen.
theorem horizontal_adjust {W : Type} [AddCommGroup W] [Module Bit W] (M N old new : W) (s t d : Bit) (hd : s + t = d) : (M + s • (new + old)) + (N + t • (new + old)) + d • new = M + N + d • old := by …Mentions: OAI.WLIdentification.Bit
- theorem
OAI.WLIdentification.Marker.vertical_adjustline 265Source documentation
Vertical readouts survive the same adjustment because the difference of the two affine component shifts solves the homogeneous link equation.
theorem vertical_adjust {W X : Type} [AddCommGroup W] [AddCommGroup X] [Module Bit W] [Module Bit X] (L : W →ₗ[Bit] Bit) (R : X →ₗ[Bit] Bit) (M : W) (N : X) (g : W) (h : X) (s t : Bit) (hst : s = t) (he : L g + R h = 0) : L (M + s • g) + R (N + t • h) = L M + R N := by …Mentions: OAI.WLIdentification.Bit
- abbrev
OAI.WLIdentification.RingLayout.Cornerline 281 - abbrev
OAI.WLIdentification.RingLayout.Nameline 282 - instance
OAI.WLIdentification.RingLayout.nameDecidableEqline 284 - def
OAI.WLIdentification.RingLayout.nameFirstline 286 - def
OAI.WLIdentification.RingLayout.nameSecondline 290 - theorem
OAI.WLIdentification.RingLayout.name_endpoints_neline 294 - def
OAI.WLIdentification.RingLayout.blockNamesline 302 - def
OAI.WLIdentification.RingLayout.namesline 306 - def
OAI.WLIdentification.RingLayout.blockRowline 310 - def
OAI.WLIdentification.RingLayout.cornerGraphline 316Source documentation
Shared names give a single edge. Vector bit coordinates are not counted as separate horizontal edges in the corner graph.
noncomputable def cornerGraph (hr : 2 ≤ r) (U : Finset R.Block) : SimpleGraph R.Corner where …
- def
OAI.WLIdentification.RingLayout.cornerMarkerline 328 - theorem
OAI.WLIdentification.RingLayout.cornerMarker_horizontalline 332 - theorem
OAI.WLIdentification.RingLayout.cornerMarker_verticalline 342 - theorem
OAI.WLIdentification.RingLayout.horizontal_row_memline 347 - theorem
OAI.WLIdentification.RingLayout.cornerGraph_row_edgeline 364Source documentation
Every horizontal edge in the support comes from a block in its own row; vertical edges preserve the boundary index and have marker zero.
theorem cornerGraph_row_edge (hr : 3 ≤ r) {U : Finset R.Block} {u v : R.Corner} (h : (R.cornerGraph (by omega) U).Adj u v) : (u.2.1 = v.2.1 ∧ R.cornerMarker u v = 0) ∨ ∃ i ∈ U.image R.blockRow, R.cornerMarker u v = Marker.delta i ∧ ((u.2.1 = i ∧ v.2.1 = finRotate r i) ∨ (v.2.1 = i ∧ u.2.1 = finRotate r i)) := by …Mentions: OAI.WLIdentification.Marker.delta
- def
OAI.WLIdentification.RingLayout.Wrappingline 383 - theorem
OAI.WLIdentification.RingLayout.wrapping_rowsline 387Source documentation
A closed walk of odd marker forces every row to be represented.
theorem wrapping_rows (hr : 3 ≤ r) {U : Finset R.Block} (h : R.Wrapping (by omega) U) (j : Fin r) : j ∈ U.image R.blockRow := by … - theorem
OAI.WLIdentification.RingLayout.wrapping_cardline 404Source documentation
A wrapping family has at least one block per row. The count is blocks, not readout names and not vertices; a square still supplies only one row.
theorem wrapping_card (hr : 3 ≤ r) {U : Finset R.Block} (h : R.Wrapping (by omega) U) : r ≤ U.card := by …