OAI/Algebra/GroupRing/Iso.lean
42 declarations, 0 contain sorry, 0 declared as axioms
Finite names for the actual-image patterns in entropy.tex 126–138. The bounds R,K,T,I are fixed before H grows. No vertex names or letters are stored. Raw codes include invalid multigraphs as an overcount; all validity conditions must still be checked when a code is used in a realization event.
- def
OAI.TorsionFreeZeroDivisors.PortSubdivision.Iso.sideEmbeddingline 22Source documentation
A side-preserving graph isomorphism transports the actual rooted embedding, not just its edge or vertex counts.
def sideEmbedding (e : RealizationTransport.Embedding (SideRestriction.graph Γ' side' hs' b) (fun d => label d.val) outgoing (RootPins.pin (SidePins.root side' root' b) target) bar r) : RealizationTransport.Embedding (SideRestriction.graph Γ side hs b) (fun d => label (f.dart d.val)) outgoing (RootPins.pin (SidePins.root side root b) target) bar r := by …Mentions: OAI.TorsionFreeZeroDivisors.RealizationTransport.Embedding, OAI.TorsionFreeZeroDivisors.SideRestriction.graph, OAI.TorsionFreeZeroDivisors.RootPins.pin, OAI.TorsionFreeZeroDivisors.SidePins.root
- lemma
OAI.TorsionFreeZeroDivisors.OriginalPatternIso.length_eqline 65 - lemma
OAI.TorsionFreeZeroDivisors.OriginalPatternIso.dart_eqline 70 - lemma
OAI.TorsionFreeZeroDivisors.OriginalPatternIso.realizedline 96Source documentation
An unlabeled pattern isomorphism preserves the actual event in each fixed sample. No independence or expected-count assumption is used in this bridge.
lemma realized (r : Match rep) (he : OriginalPattern.Realized Γ' mark' h2' side' hs' paths' hp' root' rep a b C' r) : OriginalPattern.Realized Γ mark h2 side hs paths hp root rep a b C r := by …Mentions: OAI.TorsionFreeZeroDivisors.OriginalPattern.Realized
- def
OAI.TorsionFreeZeroDivisors.PatternCoding.packListline 134Source documentation
A list of at most T chain darts can be stored in T option-valued slots.
def packList {A : Type*} (T : ℕ) (p : List A) : Fin T → Option A := … - lemma
OAI.TorsionFreeZeroDivisors.PatternCoding.packList_injectiveline 137 - abbrev
OAI.TorsionFreeZeroDivisors.PatternCoding.Intervalline 148Source documentation
One interval uses one path index and two integer endpoints.
abbrev Interval (K H : ℕ) := Fin K × Fin (H+1) × Fin (H+1)
- abbrev
OAI.TorsionFreeZeroDivisors.PatternCoding.Comparisonline 151Source documentation
Two intervals and their comparison sign. Inactive comparison slots are absent.
abbrev Comparison (K H : ℕ) := Option (Interval K H × Interval K H × Bool)
Mentions: OAI.TorsionFreeZeroDivisors.PatternCoding.Interval
- abbrev
OAI.TorsionFreeZeroDivisors.PatternCoding.Codeline 156Source documentation
Bounded path sequences, marked graph incidence/reversal, lengths, sides, root designation and interval data. Unused graph indices may be padded. The use of oriented darts avoids choosing orientations of loop chains.
abbrev Code (R K T I H : ℕ) := …
- lemma
OAI.TorsionFreeZeroDivisors.PatternCoding.card_comparisonline 161 - lemma
OAI.TorsionFreeZeroDivisors.PatternCoding.card_codeline 167 - def
OAI.TorsionFreeZeroDivisors.PatternCoding.coefficientline 177Source documentation
The constant in the polynomial pattern bound depends only on fixed bounds.
def coefficient (R K T I : ℕ) : ℕ := …
- lemma
OAI.TorsionFreeZeroDivisors.PatternCoding.card_code_polynomialline 180 - def
OAI.TorsionFreeZeroDivisors.PatternCoding.namesline 194Source documentation
The canonical renaming is independent of every target vertex name.
def names {A : Type*} [Fintype A] (R : ℕ) (h : Fintype.card A ≤ R) : A ↪ Fin R := … - lemma
OAI.TorsionFreeZeroDivisors.PatternCoding.names_injectiveline 197 - def
OAI.TorsionFreeZeroDivisors.PatternCoding.padline 201Source documentation
Padding a finite table loses none of its entries.
def pad {A B : Type*} [Fintype A] (R : ℕ) (_h : Fintype.card A ≤ R) (default : B) (f : A → B) (i : Fin R) : B := … - lemma
OAI.TorsionFreeZeroDivisors.PatternCoding.pad_namesline 206 - def
OAI.TorsionFreeZeroDivisors.PatternCoding.endNameline 214Source documentation
Thus all the actual comparison endpoints with a ≤H bound fit literally.
def endName (H : ℕ) (i : ℕ) (hi : i ≤ H) : Fin (H+1) := ⟨i,by omega⟩
- lemma
OAI.TorsionFreeZeroDivisors.PatternCoding.endName_valline 216 - structure
OAI.TorsionFreeZeroDivisors.PatternCoding.ActualIntervalline 219Source documentation
An actual comparison endpoint. Its path and integer position are retained.
structure ActualInterval (P : Type*) (H : ℕ) where …
- structure
OAI.TorsionFreeZeroDivisors.PatternCoding.ActualComparisonline 225Source documentation
The sign records translation versus reflection, not a chosen graph label.
structure ActualComparison (P : Type*) (H : ℕ) where …
- def
OAI.TorsionFreeZeroDivisors.PatternCoding.intervalNameline 230 - def
OAI.TorsionFreeZeroDivisors.PatternCoding.comparisonNameline 234 - lemma
OAI.TorsionFreeZeroDivisors.PatternCoding.intervalName_injectiveline 238 - lemma
OAI.TorsionFreeZeroDivisors.PatternCoding.comparisonName_injectiveline 248 - def
OAI.TorsionFreeZeroDivisors.PatternCoding.encodeline 262Source documentation
Explicit encoding of all source pattern data after suppression. The graph and path carriers can be arbitrary finite types: their old vertex names do not survive. Empty padding is not counted as an actual chain or path.
def encode {D V P J : Type*} [Fintype D] [Fintype V] [Fintype P] [Fintype J] (R K T I H : ℕ) (hR : 0<R) (hD : Fintype.card D ≤ R) (hV : Fintype.card V ≤ R) (hP : Fintype.card P ≤ K) (hJ : Fintype.card J ≤ I) (rev : D → D) (origin : D → V) (side : D → Bool) (length : D → Fin (H+1)) (paths : P → List D) (root : Option (P × Bool)) (comparisons : J → ActualComparison P H) : Code R K T I H := …Mentions: OAI.TorsionFreeZeroDivisors.PatternCoding.ActualComparison, OAI.TorsionFreeZeroDivisors.PatternCoding.Code
- theorem
OAI.TorsionFreeZeroDivisors.PatternCoding.encode_preservesline 280Source documentation
Every finite marked multigraph, bounded list of chain traversals, rooted path designation and bounded set of signed comparisons is literally retained in one member of the polynomially counted family.
theorem encode_preserves {D V P J : Type*} [Fintype D] [Fintype V] [Fintype P] [Fintype J] (R K T I H : ℕ) (hR : 0<R) (hD : Fintype.card D ≤ R) (hV : Fintype.card V ≤ R) (hP : Fintype.card P ≤ K) (hJ : Fintype.card J ≤ I) (rev : D → D) (origin : D → V) (side : D → Bool) (length : D → Fin (H+1)) (paths : P → List D) (root : Option (P × Bool)) (comparisons : J → ActualComparison P H) : let c := encode R K T I H hR hD hV hP hJ rev origin side length paths root comparisons …Mentions: OAI.TorsionFreeZeroDivisors.PatternCoding.ActualComparison, OAI.TorsionFreeZeroDivisors.PatternCoding.encode
- lemma
OAI.TorsionFreeZeroDivisors.PatternCoding.encoded_paths_injectiveline 299Source documentation
The bounded-list slots lose no traversal, even if darts are repeated.
lemma encoded_paths_injective {D : Type*} [Fintype D] (R T : ℕ) (hD : Fintype.card D ≤ R) : Function.Injective (fun p : {p : List D // p.length ≤ T} => packList T (p.val.map (names R hD))) := by …Mentions: OAI.TorsionFreeZeroDivisors.PatternCoding.packList, OAI.TorsionFreeZeroDivisors.PatternCoding.names
- abbrev
OAI.TorsionFreeZeroDivisors.PatternCoding.SizedCodeline 317Source documentation
Carrier counts distinguish inactive padding from actual graph indices. The four extra counts are uniformly bounded, independent of H and n.
abbrev SizedCode (R K T I H : ℕ) := …
- theorem
OAI.TorsionFreeZeroDivisors.PatternCoding.card_sizedCodeline 320 - def
OAI.TorsionFreeZeroDivisors.PatternCoding.renameline 334 - theorem
OAI.TorsionFreeZeroDivisors.PatternCoding.rename_rankline 337 - theorem
OAI.TorsionFreeZeroDivisors.PatternCoding.rename_namesline 341 - theorem
OAI.TorsionFreeZeroDivisors.PatternCoding.same_padline 346 - structure
OAI.TorsionFreeZeroDivisors.PatternCoding.Dataline 355Source documentation
All non-label data of a bounded actual pattern. Proof fields are not encoded, while all data fields are.
structure Data (D V P J : Type*) (T H : ℕ) where …
- structure
OAI.TorsionFreeZeroDivisors.PatternCoding.Isomorphismline 371Source documentation
Exact simultaneous equivalence of graph incidence, orientation, side, length, every path traversal, root path, and comparison intervals.
structure Isomorphism {T H : ℕ} (a : Data D V P J T H) (b : Data D' V' P' J' T H) where … - def
OAI.TorsionFreeZeroDivisors.PatternCoding.encodeDataline 394 - theorem
OAI.TorsionFreeZeroDivisors.PatternCoding.same_code_canonical_isomorphismline 404Source documentation
Equality of the finite code loses no pattern information: the resulting isomorphism is valid for loops, repeated paths, and repeated comparisons.
theorem same_code_canonical_isomorphism (a : Data D V P J T H) (b : Data D' V' P' J' T H) (cD : Fintype.card D=Fintype.card D') (cV : Fintype.card V=Fintype.card V') (cP : Fintype.card P=Fintype.card P') (cJ : Fintype.card J=Fintype.card J') (he : encode R K T I H hR hD hV hP hJ a.reverse a.origin a.side a.length a.paths a.root a.comparisons = encode R K T I H hR hD' hV' hP' hJ' b.reverse b.origin b.side b.length b.paths b.root b.comparisons) : ∃ f : Isomorphism a b, f.dart=rename cD ∧ f.path=rename cP ∧ f.vertex=rename cV := by …Mentions: OAI.TorsionFreeZeroDivisors.PatternCoding.Data, OAI.TorsionFreeZeroDivisors.PatternCoding.encode, OAI.TorsionFreeZeroDivisors.PatternCoding.Isomorphism, OAI.TorsionFreeZeroDivisors.PatternCoding.rename
- theorem
OAI.TorsionFreeZeroDivisors.PatternCoding.same_code_ranked_isomorphismline 476 - theorem
OAI.TorsionFreeZeroDivisors.PatternCoding.same_code_isomorphismline 488 - theorem
OAI.TorsionFreeZeroDivisors.PatternCoding.encodeData_completeline 499Source documentation
Equal padded SIZED codes imply actual pattern equivalence, not merely similar numerical bounds or matching cardinalities.
theorem encodeData_complete (a : Data D V P J T H) (b : Data D' V' P' J' T H) (he : encodeData R K T I H hR hD hV hP hJ a = encodeData R K T I H hR hD' hV' hP' hJ' b) : Nonempty (Isomorphism a b) := by …Mentions: OAI.TorsionFreeZeroDivisors.PatternCoding.Data, OAI.TorsionFreeZeroDivisors.PatternCoding.encodeData, OAI.TorsionFreeZeroDivisors.PatternCoding.Isomorphism
- theorem
OAI.TorsionFreeZeroDivisors.PatternCoding.encodeData_ranked_completeline 509Source documentation
Equal codes additionally preserve the literal rank orientation used in the subdivision realization. This is an output of encoding, not an extra assumption.
theorem encodeData_ranked_complete (a : Data D V P J T H) (b : Data D' V' P' J' T H) (he : encodeData R K T I H hR hD hV hP hJ a = encodeData R K T I H hR hD' hV' hP' hJ' b) : ∃ f : Isomorphism a b, ∀ d, (Fintype.equivFin D' (f.dart d)).val = (Fintype.equivFin D d).val := by …Mentions: OAI.TorsionFreeZeroDivisors.PatternCoding.Data, OAI.TorsionFreeZeroDivisors.PatternCoding.encodeData, OAI.TorsionFreeZeroDivisors.PatternCoding.Isomorphism