Automorphism extension: an involution preserving the colours on and the colour degrees of preserves the colour of the pair with
ProvedClassicalSchur.color_eq_of_card_filter_eqThis is a general counting lemma for colourings of pairs: if an involution of a set keeps the colours of the pairs in , and a point and its image have the same colour degrees in , then the pairs and have the same colour.
Let and be types with decidable equality (points and colours), and let give each ordered pair a colour . Let be a finite subset of , let with , and let satisfy, for all :
- ;
- ;
- .
Let , and suppose that and have the same number of neighbours of each colour in : for every colour ,
Then
In the mission the lemma is applied with the central neighbourhood without its endpoint, , and ; the saturation theorem supplies the equal colour degrees, and the conclusion is the forced reflection.
Formalization Note. The colour function takes ordered pairs and need not be symmetric; the degrees of and are counted with and as first argument, and the pair of a point with itself is not counted. The types and are arbitrary (Lean Type* with DecidableEq), and is a Finset. The conditions on are required only on . The case is allowed, and the conclusion is then immediate.
import Mathlib open Finset
theorem ClassicalSchur.color_eq_of_card_filter_eq {α γ : Type*} [DecidableEq α] [DecidableEq γ]
(col : α → α → γ) {W : Finset α} {e : α} (he : e ∉ W) (J : α → α)
(hJ : ∀ x ∈ W, J x ∈ W) (hJJ : ∀ x ∈ W, J (J x) = x)
(hcol : ∀ x ∈ W, ∀ y ∈ W, col (J x) (J y) = col x y) {v : α} (hv : v ∈ W)
(hdeg : ∀ i, (((insert e W).erase v).filter fun w => col v w = i).card =
(((insert e W).erase (J v)).filter fun w => col (J v) w = i).card) :
col v e = col (J v) e := by sorryConfirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.