OAI/AlgebraicGeometry/CharacterVarieties/Foundation/Incidence.lean
59 declarations, 0 contain sorry, 0 declared as axioms
- abbrev
OAI.IntegralCharacterVarieties.OccurrenceIncidence.Sideline 11Source documentation
A side is an occurrence, not a facet:
nonedenotes the parent andsome jthe j-th ordered child. The same facet may appear arbitrarily often.abbrev Side (S : Type*) (arity : S → ℕ) := (s : S) × Option (Fin (arity s))
- abbrev
OAI.IntegralCharacterVarieties.OccurrenceIncidence.Germline 12 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.positiveline 15Source documentation
The positive boundary orientation follows the seam parameter on the parent and goes against it on every child.
def positive {S : Type*} {arity : S → ℕ} (a : Side S arity) : Bool := a.2.isNoneMentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.Side
- def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.startline 17 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.finishline 18 - structure
OAI.IntegralCharacterVarieties.OccurrenceIncidence.Cornersline 21Source documentation
Frame-independent incidence data before imposing the allowed vertex tables. Facets and germs stay separate. Corner maps cannot accidentally identify two occurrences merely because they sit on the same facet.
structure Corners (F S : Type*) (arity : S → ℕ) where …
- lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.Corners.mate_finishline 31 - lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.Corners.mate_startline 40 - lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.Corners.mate_neline 47 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.Corners.boundaryNextline 56Source documentation
The next-side permutation of the oriented facet boundaries. All finite cycles, in particular self-incidences and one-side circles, are retained.
def boundaryNext : Equiv.Perm (Side S arity) where …
Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.Side
- lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.Corners.boundaryNext_facetline 68 - lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.Corners.boundaryPrev_facetline 71 - lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.Corners.boundaryNext_iterate_facetline 74 - theorem
OAI.IntegralCharacterVarieties.OccurrenceIncidence.Corners.occurrence_preservedline 82Source documentation
Distinct side-germ occurrences never collapse under the boundary successor, even when all of their facets coincide.
theorem occurrence_preserved (a b : Side S arity) : D.boundaryNext a=D.boundaryNext b ↔ a=b := D.boundaryNext.injective.eq_iff …Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.Side
- structure
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTableline 91Source documentation
One local vertex table. Every endpoint port has its own full ordered side list. A mate is a pairing of occurrences, not an identification of facets.
structure VertexTable where …
- def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.passageline 102Source documentation
A continuation or interchange has precisely two ports.
def passage {C : Type} (σ : Equiv.Perm C) : VertexTable where …Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable
- inductive
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.Passageline 115Source documentation
Only these two passage permutations are allowed in a surface diagram. An arbitrary permutation is factored into several vertices, never one vertex.
inductive Passage (m : ℕ) where …
- def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.Passage.permutationline 121 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.Passage.tableline 125 - inductive
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.SplitPortline 128 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.splitChildline 132Source documentation
Ordered child lists: prefix, the split block, suffix; and then prefix, its ordered subblocks, suffix. The third seam carries just those subblocks.
def splitChild (A B C : Type) : SplitPort → Type | .before => A ⊕ (Unit ⊕ C) | .after => A ⊕ (B ⊕ C) | .branch => B /-- Germ matching at a split. In particular the child W and the parent W are different occurrences; each subblock is also used twice, not collapsed. -/
Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.SplitPort, OAI.IntegralCharacterVarieties.OccurrenceIncidence.Germ
- def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.splitMateline 138Source documentation
Germ matching at a split. In particular the child W and the parent W are different occurrences; each subblock is also used twice, not collapsed.
def splitMate {A B C : Type} : ((p : SplitPort) × Option (splitChild A B C p)) → ((p : SplitPort) × Option (splitChild A B C p)) | ⟨.before,none⟩ => ⟨.after,none⟩ | ⟨.after,none⟩ => ⟨.before,none⟩ | ⟨.before,some (.inl a)⟩ => ⟨.after,some (.inl a)⟩ | ⟨.after,some (.inl a)⟩ => ⟨.before,some (.inl a)⟩ | ⟨.before,some (.inr (.inl _))⟩ => ⟨.branch,none⟩ | ⟨.branch,none⟩ => ⟨.before,some (.inr (.inl ()))⟩ | ⟨.before,some (.inr (.inr c))⟩ => ⟨.after,some (.inr (.inr c))⟩ | ⟨.after,some (.inr (.inr c))⟩ => ⟨.before,some (.inr (.inr c))⟩ | ⟨.after,some (.inr (.inl b))⟩ => ⟨.branch,some b⟩ | ⟨.branch,some b⟩ => ⟨.after,some (.inr (.inl b))⟩Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.SplitPort, OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.splitChild
- def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.splitEndpointline 151 - lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.splitMate_involutiveline 153 - lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.splitMate_orientationline 160 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.splitline 171Source documentation
A split or its orientation-reversed merge, with all three port lists.
def split (A B C : Type) : VertexTable where …
Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable
- def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.reverseline 180Source documentation
Reversal changes every seam endpoint, and nothing in the occurrence table.
def reverse (t : VertexTable) : VertexTable where …
Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable
- lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.mate_neline 194Source documentation
Every local table is fixed-point free for occurrences, even when a facet is attached to several of the ports.
lemma mate_ne (t : VertexTable) (s : (p : t.Port) × Option (t.Child p)) : t.mate s ≠ s := by …
Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable
- def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.splitPortEquivline 208 - instance
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.(instance at line 214)line 214 - inductive
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.Kindline 217Source documentation
Exactly the allowed vertex list, including reversal of splitting. The nonnegative numbers include every zero block before normalization.
inductive Kind where …
- def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.Kind.tableline 221 - instance
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.finitePortline 226 - instance
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.finiteChildline 232 - abbrev
OAI.IntegralCharacterVarieties.OccurrenceIncidence.LocalEndline 240Source documentation
Local endpoint occurrences at permitted vertices.
abbrev LocalEnd (V : Type) (kind : V → VertexTable.Kind) := …
Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.Kind
- def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.localMateline 243 - lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.localMate_involutiveline 246 - structure
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexAssemblyline 253Source documentation
A finite incidence diagram is specified by a bijection from local ports to global side-germ occurrences.
structure VertexAssembly (F S V : Type) (arity : S → ℕ) where …
- lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexAssembly.localOrientationline 264 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexAssembly.cornersline 271Source documentation
The global corner involution is constructed from the source vertex tables.
def corners : Corners F S arity where …
Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.Corners
- lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexAssembly.corner_localline 284Source documentation
Every corner of the constructed diagram is one of the permitted local occurrences, even if all its adjacent sides share the same facet name.
lemma corner_local (g : Germ S arity) : A.realize.symm (A.corners.mate g)=localMate (A.realize.symm g) := …Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.Germ, OAI.IntegralCharacterVarieties.OccurrenceIncidence.localMate
- lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexAssembly.boundary_next_injectiveline 288 - instance
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexAssembly.finiteLocalEndline 292 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.Kind.arityline 302 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.unitFinline 311 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.beforeEnumline 312 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.afterEnumline 315 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.Kind.childEnumerationline 319Source documentation
The source order on each child list: prefix, split block/subblocks, suffix. This is not an arbitrary finite enumeration or an unconstrained germ bijection.
def Kind.childEnumeration : (k : Kind) → (p : k.table.Port) → k.table.Child p ≃ Fin (k.arity p) | .passage _ _, _ => Equiv.refl _ | .splitting a _ c false, .before => beforeEnum a c | .splitting a b c false, .after => afterEnum a b c | .splitting _ _ _ false, .branch => Equiv.refl _ | .splitting a _ c true, .before => beforeEnum a c | .splitting a b c true, .after => afterEnum a b c | .splitting _ _ _ true, .branch => Equiv.refl _ end VertexTableMentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.Kind, OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.passage, OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.beforeEnum, OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable.afterEnum, OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexTable
- abbrev
OAI.IntegralCharacterVarieties.OccurrenceIncidence.LocalPortline 330 - structure
OAI.IntegralCharacterVarieties.OccurrenceIncidence.PortAssemblyline 333Source documentation
Whole ordered ports, rather than unrelated side germs, attach to seam endpoints. This is the finite incidence condition for surface diagrams.
structure PortAssembly (F S V : Type) (arity : S → ℕ) where …
- def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.PortAssembly.childEquivline 349 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.PortAssembly.localBundleEquivline 352 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.PortAssembly.bundleGermEquivline 359 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.PortAssembly.realizeline 366Source documentation
Every germ follows its own port, retaining all repeated facet uses.
def realize : LocalEnd V A.kind ≃ Germ S arity := …
Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.LocalEnd, OAI.IntegralCharacterVarieties.OccurrenceIncidence.Germ
- lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.PortAssembly.realize_applyline 370 - lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.PortAssembly.realize_endpointline 374 - lemma
OAI.IntegralCharacterVarieties.OccurrenceIncidence.PortAssembly.realize_parentline 377 - def
OAI.IntegralCharacterVarieties.OccurrenceIncidence.PortAssembly.vertexAssemblyline 383Source documentation
The original corner construction can now be used WITHOUT accidentally scattering a seam's children between unrelated endpoints.
def vertexAssembly : VertexAssembly F S V arity where …
Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.VertexAssembly
- theorem
OAI.IntegralCharacterVarieties.OccurrenceIncidence.PortAssembly.port_integrityline 398Source documentation
Port integrity: even the parent and every child of the same port lie at the same global seam endpoint.
theorem port_integrity (p : LocalPort V A.kind) (c : Option ((A.kind p.1).table.Child p.2)) : ((A.realize ⟨p.1,p.2,c⟩).1.1,(A.realize ⟨p.1,p.2,c⟩).2)=A.attach p := rfl …Mentions: OAI.IntegralCharacterVarieties.OccurrenceIncidence.LocalPort