Documentation

Atlas.Buildings.code.Building.UniqueLabellingHelper

theorem thin_unique_other_chamber {V : Type} [DecidableEq V] (cc : ChamberComplex V) (hthin : cc.IsThin) (F C : Finset V) (hFC : cc.IsFacet F C) (hC : cc.IsMaximal C) :
∃! D : Finset V, D C cc.IsFacet F D cc.IsMaximal D

In a thin chamber complex, each facet $F$ of a chamber $C$ lies in exactly one other chamber $D \ne C$.

theorem coxeter_lab_card_eq_face_card {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj_φ : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L : Type) [DecidableEq L] (lab : Finset VFinset L) (hmono : ∀ (s t : Finset V), s A.facest A.facess tlab s lab t) (s : Finset V) (hs : s A.faces) :
(lab s).card = s.card

In a Coxeter complex, a strictly monotone labelling on faces has $|\text{lab}(s)| = |s|$ for every face $s$.

theorem coxeter_lab_vertex_in_face_label {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj_φ : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L : Type) [DecidableEq L] (lab : Finset VFinset L) (hmono : ∀ (s t : Finset V), s A.facest A.facess tlab s lab t) (s : Finset V) (hs : s A.faces) ( : L) (hℓ : lab s) :
vs, lab {v}

Each label in $\text{lab}(s)$ already appears in the label of some vertex $v \in s$.

theorem coxeter_lab_surj_on_chamber {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj_φ : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L : Type) [DecidableEq L] (lab : Finset VFinset L) (hmono : ∀ (s t : Finset V), s A.facest A.facess tlab s lab t) (C : Finset V) (hC : A.IsMaximal C) ( : L) :
lab C

On a chamber $C$, the labelling $\text{lab}$ is surjective onto $\text{lab}(C)$.

theorem coxeter_single_labelling_factors {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj_φ : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L : Type) [DecidableEq L] (lab : Finset VFinset L) (hmono : ∀ (s t : Finset V), s A.facest A.facess tlab s lab t) (C : Finset V) (hC : A.IsMaximal C) :
∃ (τ : VL), (∀ sA.faces, lab s = Finset.image τ s) Set.InjOn τ C ∀ ( : L), vC, τ v =

A labelling of a Coxeter complex factors through a vertex-level map: $\text{lab}(s) = \{\sigma(v) \mid v \in s\}$ for some $\sigma : V \to L$.

theorem coxeter_vertex_type_pointwise_compat {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj_φ : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L₁ L₂ : Type) [DecidableEq L₁] [DecidableEq L₂] (lab₁ : Finset VFinset L₁) (lab₂ : Finset VFinset L₂) (hmono₁ : ∀ (s t : Finset V), s A.facest A.facess tlab₁ s lab₁ t) (hmono₂ : ∀ (s t : Finset V), s A.facest A.facess tlab₂ s lab₂ t) (f : L₁L₂) (hf : Function.Bijective f) (C : Finset V) (hC : A.IsMaximal C) (hagree : lab₂ C = Finset.image f (lab₁ C)) (τ₁ : VL₁) (hτ₁ : sA.faces, lab₁ s = Finset.image τ₁ s) (τ₂ : VL₂) (hτ₂ : sA.faces, lab₂ s = Finset.image τ₂ s) (v : V) (hv : v C) :
τ₂ v = f (τ₁ v)

The vertex-level labelling is pointwise compatible: the label of a vertex matches the singleton label of that vertex.

theorem coxeter_subface_label_compat {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj_φ : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L₁ L₂ : Type) [DecidableEq L₁] [DecidableEq L₂] (lab₁ : Finset VFinset L₁) (lab₂ : Finset VFinset L₂) (hmono₁ : ∀ (s t : Finset V), s A.facest A.facess tlab₁ s lab₁ t) (hmono₂ : ∀ (s t : Finset V), s A.facest A.facess tlab₂ s lab₂ t) (f : L₁L₂) (hf : Function.Bijective f) (C : Finset V) (hC : A.IsMaximal C) (hagree : lab₂ C = Finset.image f (lab₁ C)) (s : Finset V) (hs : s A.faces) (hsC : s C) :
lab₂ s = Finset.image f (lab₁ s)

A labelling on a face is compatible with subface labels: removing a vertex removes its label from the labelling.

theorem coxeter_vertex_type_function {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj_φ : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L₁ L₂ : Type) [DecidableEq L₁] [DecidableEq L₂] (lab₁ : Finset VFinset L₁) (lab₂ : Finset VFinset L₂) (hmono₁ : ∀ (s t : Finset V), s A.facest A.facess tlab₁ s lab₁ t) (hmono₂ : ∀ (s t : Finset V), s A.facest A.facess tlab₂ s lab₂ t) (f : L₁L₂) (hf : Function.Bijective f) (C : Finset V) (hC : A.IsMaximal C) (hagree : lab₂ C = Finset.image f (lab₁ C)) :
∃ (τ₁ : VL₁) (τ₂ : VL₂), (∀ sA.faces, lab₁ s = Finset.image τ₁ s) (∀ sA.faces, lab₂ s = Finset.image τ₂ s) (∀ vC, τ₂ v = f (τ₁ v)) Set.InjOn τ₁ C ∀ ( : L₁), vC, τ₁ v =

The vertex-type function $\sigma : V \to L$ associated to a Coxeter labelling, extracted from the chamber-level labels.

theorem coxeter_chamber_labels_surj {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj_φ : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L : Type) [DecidableEq L] (lab : Finset VFinset L) (hmono : ∀ (s t : Finset V), s A.facest A.facess tlab s lab t) (C₀ : Finset V) (hC₀ : A.IsMaximal C₀) :
(∀ ( : L), lab C₀) (lab C₀).card = C₀.card

The labelling is surjective on each chamber: every label appears on some vertex of the chamber.

theorem coxeter_chambers_same_label_set {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj_φ : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L : Type) [DecidableEq L] (lab : Finset VFinset L) (hmono : ∀ (s t : Finset V), s A.facest A.facess tlab s lab t) (C D : Finset V) (hC : A.IsMaximal C) (hD : A.IsMaximal D) :
lab C = lab D

Any two chambers of a Coxeter complex have the same label set.

theorem coxeter_adj_label_step {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj_φ : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L₁ L₂ : Type) [DecidableEq L₁] [DecidableEq L₂] (lab₁ : Finset VFinset L₁) (lab₂ : Finset VFinset L₂) (hmono₁ : ∀ (s t : Finset V), s A.facest A.facess tlab₁ s lab₁ t) (hmono₂ : ∀ (s t : Finset V), s A.facest A.facess tlab₂ s lab₂ t) (f : L₁L₂) (hf : Function.Bijective f) (C₁ C₂ : Finset V) (hadj : A.Adjacent C₁ C₂) (hagree : lab₂ C₁ = Finset.image f (lab₁ C₁)) :
lab₂ C₂ = Finset.image f (lab₁ C₂)

Adjacent chambers differ in label by exactly one vertex.

theorem coxeter_subface_label_step {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj_φ : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L₁ L₂ : Type) [DecidableEq L₁] [DecidableEq L₂] (lab₁ : Finset VFinset L₁) (lab₂ : Finset VFinset L₂) (hmono₁ : ∀ (s t : Finset V), s A.facest A.facess tlab₁ s lab₁ t) (hmono₂ : ∀ (s t : Finset V), s A.facest A.facess tlab₂ s lab₂ t) (f : L₁L₂) (hf : Function.Bijective f) (C : Finset V) (hC : A.IsMaximal C) (hagree : lab₂ C = Finset.image f (lab₁ C)) (s : Finset V) (hs : s A.faces) (hsC : s C) :
lab₂ s = Finset.image f (lab₁ s)

A subface labelling step: how the labels of $s \cup \{v\}$ relate to those of $s$.

theorem coxeter_label_bijection_exists {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj_φ : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L₁ L₂ : Type) [DecidableEq L₁] [DecidableEq L₂] (lab₁ : Finset VFinset L₁) (lab₂ : Finset VFinset L₂) (hmono₁ : ∀ (s t : Finset V), s A.facest A.facess tlab₁ s lab₁ t) (hmono₂ : ∀ (s t : Finset V), s A.facest A.facess tlab₂ s lab₂ t) (C₀ : Finset V) (hC₀ : A.IsMaximal C₀) :
∃ (f : L₁L₂), Function.Bijective f lab₂ C₀ = Finset.image f (lab₁ C₀)

Existence of a label bijection between any two chambers compatible with the vertex labelling.

theorem coxeter_label_agree_along_chain {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj_φ : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L₁ L₂ : Type) [DecidableEq L₁] [DecidableEq L₂] (lab₁ : Finset VFinset L₁) (lab₂ : Finset VFinset L₂) (hmono₁ : ∀ (s t : Finset V), s A.facest A.facess tlab₁ s lab₁ t) (hmono₂ : ∀ (s t : Finset V), s A.facest A.facess tlab₂ s lab₂ t) (f : L₁L₂) (hf : Function.Bijective f) (cs : List (Finset V)) (hne : cs []) (hchain : List.IsChain A.Adjacent cs) (hall : Ccs, A.IsMaximal C) (hagree_head : lab₂ (cs.head hne) = Finset.image f (lab₁ (cs.head hne))) (D : Finset V) :
D cslab₂ D = Finset.image f (lab₁ D)

The Coxeter labelling is determined along a gallery: agreement at one chamber forces agreement throughout the chain.

theorem coxeter_complex_unique_labelling_axiom {V : Type} [DecidableEq V] (A : SimplicialComplex V) (B_idx : Type) (M : CoxeterMatrix B_idx) (cc : ChamberComplex V) (hcc_eq : cc.toSimplicialComplex = A) (φ : Finset VM.Group) (hinj : ∀ (C : Finset V), A.IsMaximal C∀ (D : Finset V), A.IsMaximal Dφ C = φ DC = D) (hsurj : ∀ (w : M.Group), ∃ (C : Finset V), A.IsMaximal C φ C = w) (hadj : ∀ (C C' : Finset V), A.Adjacent C C'CoxeterComplex.ChamberAdjacent M (φ C) (φ C')) (L₁ L₂ : Type) [DecidableEq L₁] [DecidableEq L₂] (lab₁ : Finset VFinset L₁) (lab₂ : Finset VFinset L₂) :
(∀ (s t : Finset V), s A.facest A.facess tlab₁ s lab₁ t)(∀ (s t : Finset V), s A.facest A.facess tlab₂ s lab₂ t)∀ (C₀ : Finset V), A.IsMaximal C₀(∃ (f : L₁L₂), Function.Bijective f lab₂ C₀ = Finset.image f (lab₁ C₀)) ∀ (f : L₁L₂), Function.Bijective flab₂ C₀ = Finset.image f (lab₁ C₀)sA.faces, lab₂ s = Finset.image f (lab₁ s)

The Coxeter complex satisfies the unique-labelling property: any two labellings agreeing on a single chamber agree everywhere.