Compfiles/Usa2025P6.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.
Project sources: Pinned compfiles documentation, Pinned compfiles corpus index
77 declarations, 0 contain sorry, 0 declared as axioms
USA Mathematical Olympiad 2025, Problem 6
Let m and n be positive integers with m ≥ n. There are m cupcakes of different
flavors arranged around a circle and n people who like cupcakes. Each person assigns
a nonnegative real number score to each cupcake, depending on how much they like the
cupcake. Suppose that for each person P, it is possible to partition the circle of
m cupcakes into n groups of consecutive cupcakes so that the sum of P's scores
of the cupcakes in each group is at least 1. Prove that it is possible to distribute
the m cupcakes to the n people so that each person P receives cupcakes of total
score at least 1 with respect to P.
Imports (12)
- Mathlib.Tactic
- Mathlib.Algebra.BigOperators.Fin
- Mathlib.Algebra.BigOperators.Intervals
- Mathlib.AlgebraicTopology.SimplexCategory.Basic
- Mathlib.Combinatorics.Hall.Basic
- Mathlib.Data.Int.ConditionallyCompleteOrder
- Mathlib.Basic.Real.Basic
- Mathlib.Data.ZMod.Basic
- Mathlib.Tactic.Abel
- Mathlib.Tactic.Linarith.Lemmas
- Mathlib.Tactic.Ring.Basic
- ProblemExtraction
Imported by 1 file
- def
Usa2025P6.arcSetAn arc of lengthlstarting atcon the circleZMod mline 49 sourceSource documentation
An arc of length
lstarting atcon the circleZMod m.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,ZMod,FinsetProof uses:
Finset.image,HAdd.hAdd,Finset.range12 instances, coercions and auxiliary constants left out.
def arcSet {m : ℕ} (c : ZMod m) (l : ℕ) : Finset (ZMod m) := … - structure
Usa2025P6.CirclePartitionA partition of the circleZMod mintokconsecutive nonempty arcs, described by a basepoint and the list of arc lengths line 55 sourceSource documentation
A partition of the circle
ZMod mintokconsecutive nonempty arcs, described by a basepoint and the list of arc lengths.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Natstructure CirclePartition (m k : ℕ) where …
- def
Usa2025P6.CirclePartition.offThe offset of arci: total length of the preceding arcs line 67 sourceSource documentation
The offset of arc
i: total length of the preceding arcs.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,FinProof uses:
Finset.sum,Finset.filter,LT.lt,Finset.univ,Usa2025P6.CirclePartition.len4 instances, coercions and auxiliary constants left out.
def off (i : Fin k) : ℕ := ∑ j ∈ Finset.univ.filter (· < i), P.len j
- def
Usa2025P6.CirclePartition.startThe starting point of arciline 70 sourceSource documentation
The starting point of arc
i.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,Fin,ZModProof uses:
HAdd.hAdd,Usa2025P6.CirclePartition.base, Usa2025P6.CirclePartition.off11 instances, coercions and auxiliary constants left out.
def start (i : Fin k) : ZMod m := P.base + (P.off i : ZMod m)
- def
Usa2025P6.CirclePartition.arcOfThei-th arc as a finset line 73 sourceSource documentation
The
i-th arc as a finset.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,Fin,Finset,ZModProof uses: Usa2025P6.arcSet, Usa2025P6.CirclePartition.start,
Usa2025P6.CirclePartition.lendef arcOf (i : Fin k) : Finset (ZMod m) := arcSet (P.start i) (P.len i) …
Mentions: Usa2025P6.arcSet
- lemma
Usa2025P6.CirclePartition.mem_arcSetline 84 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,ZMod,Iff,Membership.mem,Finset, Usa2025P6.arcSet,Exists,And,LT.lt,Eq,HAdd.hAddProof uses:
of_eq_true,Eq.trans,True,congrFun',congrArg,Finset.image,Finset.range,funext,iff_self31 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.natCast_injective_of_ltline 88 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,LT.lt,Eq,ZModProof uses:
Nat.ModEq.eq_of_lt_of_lt,Eq.mp,Nat.ModEq,congrArg,propext,ZMod.natCast_eq_natCast_iff18 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.arcSet_cardline 93 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,ZMod,LE.le,Eq,Finset.card, Usa2025P6.arcSetProof uses:
Eq.mpr,Finset.image,HAdd.hAdd,Finset.range,id,congrArg,Finset,Usa2025P6.arcSet.eq_1,Finset.card_image_of_injOn,Membership.mem,Set, Usa2025P6.CirclePartition.natCast_injective_of_lt,Eq.mp,LT.lt,propext,Finset.mem_range,Finset.mem_coe,Finset.card_range,Eq.refl30 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.sum_arcSetline 101 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,ZMod,LE.le,Real,Eq,Finset.sum, Usa2025P6.arcSet,Finset.range,HAdd.hAddProof uses:
Eq.mpr,Finset.image,id,congrArg,Finset,Usa2025P6.arcSet.eq_1,Finset.sum_image,Membership.mem,Set, Usa2025P6.CirclePartition.natCast_injective_of_lt,Eq.mp,LT.lt,propext,Finset.mem_range,Finset.mem_coe,Eq.refl43 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.arcSet_univline 109 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,ZMod,Eq,Finset, Usa2025P6.arcSet,Finset.univProof uses:
Finset.eq_univ_of_card,Eq.mpr,Finset.card,Fintype.card,id,congrArg, Usa2025P6.CirclePartition.arcSet_card,le_rfl,ZMod.card,Eq.refl7 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.k_posline 114 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNatProof uses:
Decidable.byContradiction,Not,Eq,Nat.eq_zero_of_le_zero,Eq.mp,LE.le,Finset,Fin,Finset.univ,EmptyCollection.emptyCollection,Eq.mpr,id,congrArg,Finset.univ_eq_empty,Finset.sum,Usa2025P6.CirclePartition.len,Usa2025P6.CirclePartition.len_sum,Finset.sum_empty20 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
- def
Usa2025P6.CirclePartition.offExtPeriodic extension of the offsets: the total length of the firstaarcs (going around the circle repeatedly) line 127 sourceSource documentation
Periodic extension of the offsets: the total length of the first
aarcs (going around the circle repeatedly).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNatProof uses:
Finset.sum,Finset.range,Usa2025P6.CirclePartition.len,Fin.mk,HMod.hMod,Nat.mod_lt7 instances, coercions and auxiliary constants left out.
def offExt (hk : 0 < k) (a : ℕ) : ℕ := …
- lemma
Usa2025P6.CirclePartition.len_congrHelper: evaluating the periodic length at an explicitly given index line 132 sourceSource documentation
Helper: evaluating the periodic length at an explicitly given index.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Fin,Eq,HMod.hMod,Usa2025P6.CirclePartition.len,Fin.mk,Nat.mod_ltProof uses:
congr_arg,Fin.ext10 instances, coercions and auxiliary constants left out.
lemma len_congr (hk : 0 < k) {a : ℕ} {j : Fin k} (h : a % k = j.val) : P.len ⟨a % k, Nat.mod_lt a hk⟩ = P.len j := …Mentions: h
- lemma
Usa2025P6.CirclePartition.offExt_zeroline 136 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Eq, Usa2025P6.CirclePartition.offExtProof uses:
of_eq_true,eq_self10 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.offExt_succline 138 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Eq, Usa2025P6.CirclePartition.offExt,HAdd.hAdd,Usa2025P6.CirclePartition.len,Fin.mk,HMod.hMod,Nat.mod_ltProof uses:
of_eq_true,Finset.sum,Finset.range,Eq.trans,True,congrFun',congrArg,Finset.sum_range_succ,eq_self18 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.off_eq_offExtline 142 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Fin,Eq, Usa2025P6.CirclePartition.off, Usa2025P6.CirclePartition.offExtProof uses:
Eq.mpr,Finset.sum,Finset.filter,Finset.univ,Usa2025P6.CirclePartition.len,id,congrArg,Usa2025P6.CirclePartition.off.eq_1,Finset.range,Fin.mk,HMod.hMod,Nat.mod_lt,Usa2025P6.CirclePartition.offExt.eq_1,Finset.sum_bij,Membership.mem,Finset,propext,Finset.mem_range,And.right,Eq.mpand 13 more15 instances, coercions and auxiliary constants left out.
Tactic trace: 24 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.offExt_kline 161 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Eq, Usa2025P6.CirclePartition.offExtProof uses:
Finset.sum,Finset.range,Usa2025P6.CirclePartition.len,Fin.mk,HMod.hMod,Nat.mod_lt,Fin,Finset.univ,Eq.mpr,id,congrArg,Eq.symm,Fin.sum_univ_eq_sum_range,Finset.sum_congr,rfl,Finset,Membership.mem, Usa2025P6.CirclePartition.len_congr,Nat.mod_eq_of_lt,Fin.isLtand 3 more11 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.offExt_add_periodline 169 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Eq, Usa2025P6.CirclePartition.offExt,HAdd.hAddProof uses:
Nat.recAux,of_eq_true,Eq.trans,True,congr,congrArg,Usa2025P6.CirclePartition.offExt.congr_simp,Eq.refl,zero_add, Usa2025P6.CirclePartition.offExt_k,congrFun', Usa2025P6.CirclePartition.offExt_zero,eq_self,Usa2025P6.CirclePartition.len,Fin.mk,HMod.hMod,Nat.mod_lt, Usa2025P6.CirclePartition.len_congr,Nat.add_mod_right,Eq.mprand 14 more29 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.offExt_monoline 179 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,LE.le, Usa2025P6.CirclePartition.offExtProof uses:
Eq,HAdd.hAdd,Exists,Nat.exists_eq_add_of_le,Nat.recAux,of_eq_true,Eq.trans,True,congrArg,Usa2025P6.CirclePartition.offExt.congr_simp,Eq.refl,add_zero,Eq.mpr,Nat.succ,id,Nat.add_succ,Usa2025P6.CirclePartition.len,Fin.mk,HMod.hMod,Nat.mod_ltand 3 more18 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.offExt_lt_succline 188 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat, Usa2025P6.CirclePartition.offExt,HAdd.hAddProof uses:
Eq.mpr,Usa2025P6.CirclePartition.len,Fin.mk,HMod.hMod,Nat.mod_lt,id,Eq,congrArg, Usa2025P6.CirclePartition.offExt_succ,LE.le,Usa2025P6.CirclePartition.len_pos12 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- def
Usa2025P6.CirclePartition.perWThe periodic weight function onℕassociated to a score function line 194 sourceSource documentation
The periodic weight function on
ℕassociated to a score function.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,ZMod,RealProof uses:
HAdd.hAdd,Usa2025P6.CirclePartition.base11 instances, coercions and auxiliary constants left out.
def perW (w : ZMod m → ℝ) (t : ℕ) : ℝ := w (P.base + (t : ZMod m))
- lemma
Usa2025P6.CirclePartition.perW_periodicline 196 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,ZMod,Real,Eq, Usa2025P6.CirclePartition.perW,HAdd.hAddProof uses:
Eq.mpr,Usa2025P6.CirclePartition.base,id,congrArg,Usa2025P6.CirclePartition.perW.eq_1,Nat.cast_add,OfNat.ofNat,ZMod.natCast_self,add_zero,Eq.refl24 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.offExt_succ_finline 199 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Fin,Eq, Usa2025P6.CirclePartition.offExt,HAdd.hAdd, Usa2025P6.CirclePartition.off,Usa2025P6.CirclePartition.lenProof uses:
Eq.mpr,Fin.mk,HMod.hMod,Nat.mod_lt,id,congrArg, Usa2025P6.CirclePartition.offExt_succ, Usa2025P6.CirclePartition.off_eq_offExt,HAdd,Eq.rec,Eq.refl, Usa2025P6.CirclePartition.len_congr,Nat.mod_eq_of_lt,Fin.isLt12 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.off_add_len_leline 205 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Fin,LE.le,HAdd.hAdd, Usa2025P6.CirclePartition.off,Usa2025P6.CirclePartition.lenProof uses:
Eq.mpr, Usa2025P6.CirclePartition.offExt,id,Eq,congrArg,Eq.symm, Usa2025P6.CirclePartition.offExt_succ_fin,Nat.succ, Usa2025P6.CirclePartition.offExt_mono,Fin.isLt,Eq.mp, Usa2025P6.CirclePartition.offExt_k11 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.len_leline 210 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Fin,LE.le,Usa2025P6.CirclePartition.lenProof uses:
le_trans,HAdd.hAdd, Usa2025P6.CirclePartition.off,Nat.le_add_left, Usa2025P6.CirclePartition.off_add_len_le8 instances, coercions and auxiliary constants left out.
- lemma
Usa2025P6.CirclePartition.offExt_strictMonoline 213 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,StrictMono, Usa2025P6.CirclePartition.offExtProof uses:
Eq,HAdd.hAdd,Exists,Nat.exists_eq_add_of_lt, Usa2025P6.CirclePartition.offExt_lt_succ,Nat.recAux,Eq.mpr,id,Eq.trans,congrArg,Usa2025P6.CirclePartition.offExt.congr_simp,Eq.refl,congrFun',add_zero,Eq.mp,congr,Eq.symm16 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.off_le_offline 226 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Fin,LE.le, Usa2025P6.CirclePartition.offProof uses:
Eq.mpr, Usa2025P6.CirclePartition.offExt,id,Eq,congrArg, Usa2025P6.CirclePartition.off_eq_offExt, Usa2025P6.CirclePartition.offExt_mono,Eq.mp,propext,Fin.le_def9 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.off_add_len_le_offline 230 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Fin,LE.le,HAdd.hAdd, Usa2025P6.CirclePartition.off,Usa2025P6.CirclePartition.lenProof uses:
Eq.mpr, Usa2025P6.CirclePartition.offExt,id,Eq,congrArg,Eq.symm, Usa2025P6.CirclePartition.offExt_succ_fin, Usa2025P6.CirclePartition.offExt_mono,Eq.mp,propext,Fin.le_def14 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.exists_Ico_of_monoEvery position in[0, m)lies in a unique arc interval; existence part line 236 sourceSource documentation
Every position in
[0, m)lies in a unique arc interval; existence part.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat,LT.lt,Exists,And,HAdd.hAddProof uses:
Nat.recAux,dite,Exists.intro,And.intro,Nat.lt_succ_of_lt,Not,Nat.lt_succ_self16 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
lemma exists_Ico_of_mono {off : ℕ → ℕ} {K p : ℕ} (h0 : off 0 ≤ p) (hp : p < off K) : ∃ j < K, off j ≤ p ∧ p < off (j + 1) := by …Mentions: Usa2025P6.CirclePartition.off
- def
Usa2025P6.CirclePartition.posThe position of a point relative to the basepoint line 247 sourceSource documentation
The position of a point relative to the basepoint.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,ZModProof uses:
ZMod.val,HSub.hSub,Usa2025P6.CirclePartition.base7 instances, coercions and auxiliary constants left out.
def pos (x : ZMod m) : ℕ := (x - P.base).val
- lemma
Usa2025P6.CirclePartition.base_add_posline 249 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,NeZero,ZMod,Eq,HAdd.hAdd,Usa2025P6.CirclePartition.base, Usa2025P6.CirclePartition.posProof uses:
Eq.mpr,ZMod.val,HSub.hSub,id,congrArg,Usa2025P6.CirclePartition.pos.eq_1,ZMod.cast,ZMod.natCast_val,ZMod.cast_id31 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.pos_start_addline 254 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,NeZero,Fin,Usa2025P6.CirclePartition.len,Eq, Usa2025P6.CirclePartition.pos,HAdd.hAdd,ZMod, Usa2025P6.CirclePartition.start, Usa2025P6.CirclePartition.offProof uses:
HSub.hSub,Usa2025P6.CirclePartition.base,Eq.mpr,id,congrArg,Usa2025P6.CirclePartition.start.eq_1,Nat.cast_add,ZMod.val,Usa2025P6.CirclePartition.pos.eq_1,HMod.hMod,ZMod.val_natCast,Nat.mod_eq_of_lt,LE.le, Usa2025P6.CirclePartition.off_add_len_le,Eq.refl44 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.arcOf_coverline 263 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,NeZero,ZMod,Exists,Fin,Membership.mem,Finset, Usa2025P6.CirclePartition.arcOfProof uses:
And,LE.le, Usa2025P6.CirclePartition.offExt, Usa2025P6.CirclePartition.pos,HAdd.hAdd, Usa2025P6.CirclePartition.exists_Ico_of_mono,Eq.mpr,id,Eq,congrArg, Usa2025P6.CirclePartition.offExt_zero,Nat.zero_le, Usa2025P6.CirclePartition.offExt_k,ZMod.val_lt,HSub.hSub,Usa2025P6.CirclePartition.base, Usa2025P6.CirclePartition.off,Fin.mk, Usa2025P6.CirclePartition.off_eq_offExt,Usa2025P6.CirclePartition.lenand 15 more37 instances, coercions and auxiliary constants left out.
Tactic trace: 18 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.arcOf_disjointline 282 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,NeZero,Fin,Ne,Disjoint,Finset,ZMod, Usa2025P6.CirclePartition.arcOfProof uses:
Eq.mpr,Membership.mem,Not,id,Eq,congrArg,propext,Finset.disjoint_left,And,Usa2025P6.CirclePartition.len,HAdd.hAdd, Usa2025P6.CirclePartition.start,Exists,False,Eq.mp, Usa2025P6.arcSet, Usa2025P6.CirclePartition.mem_arcSet,Usa2025P6.CirclePartition.arcOf.eq_1, Usa2025P6.CirclePartition.pos, Usa2025P6.CirclePartition.off and 10 more40 instances, coercions and auxiliary constants left out.
Tactic trace: 22 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.perW_sum_shiftline 304 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,ZMod,Real,Eq,Finset.sum,Finset.Ico,HAdd.hAdd, Usa2025P6.CirclePartition.perWProof uses:
Finset.sum_bij,Membership.mem,Finset,HSub.hSub,Eq.mpr,And,LE.le,LT.lt,id,Eq.mp,Exists.intro,Exists,Eq.rec,Eq.refl,Eq.trans,congrArg,Eq.symm, Usa2025P6.CirclePartition.perW_periodic22 instances, coercions and auxiliary constants left out.
Tactic trace: 22 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.perW_sum_periodline 321 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,ZMod,Real,Eq,Finset.sum,Finset.Ico,HAdd.hAdd,HMul.hMul, Usa2025P6.CirclePartition.perWProof uses:
Nat.recAux,of_eq_true,OfNat.ofNat,Eq.trans,True,congrFun',congrArg,Finset.sum_congr,congr,Finset,MulZeroClass.zero_mul,add_zero,Membership.mem,Eq.refl,eq_self,Eq.mpr,id,Mathlib.Tactic.Ring.of_eq,HPow.hPow,Nat.rawCastand 21 more36 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.offExt_add_mul_periodline 330 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Eq, Usa2025P6.CirclePartition.offExt,HAdd.hAdd,HMul.hMulProof uses:
Nat.recAux,of_eq_true,Eq.trans,True,congr,congrArg,Usa2025P6.CirclePartition.offExt.congr_simp,Eq.refl,MulZeroClass.zero_mul,add_zero,eq_self,Eq.mpr,id,Mathlib.Tactic.Ring.of_eq,HPow.hPow,Nat.rawCast,Mathlib.Tactic.Ring.Common.add_congr,Mathlib.Tactic.Ring.Common.atom_pf,rfl,Eq.symmand 17 more31 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.offExt_eq_off_add_divline 338 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Fin,Eq,HMod.hMod, Usa2025P6.CirclePartition.offExt,HAdd.hAdd, Usa2025P6.CirclePartition.off,HMul.hMul,HDiv.hDivProof uses:
Eq.mpr,id,Eq.rec,Eq.refl,Eq.trans,congrArg,Eq.symm,Nat.mod_add_div,Nat.mul_comm, Usa2025P6.CirclePartition.offExt_add_mul_period, Usa2025P6.CirclePartition.off_eq_offExt,Iff.mpr,Nat.add_right_cancel_iff22 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.sum_arcOfline 344 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,NeZero,Fin,ZMod,Real,Eq,Finset.sum, Usa2025P6.CirclePartition.arcOf,Finset.Ico, Usa2025P6.CirclePartition.off,HAdd.hAdd,Usa2025P6.CirclePartition.len, Usa2025P6.CirclePartition.perWProof uses:
Eq.mpr, Usa2025P6.arcSet, Usa2025P6.CirclePartition.start,id,congrArg,Finset,Usa2025P6.CirclePartition.arcOf.eq_1,Finset.range, Usa2025P6.CirclePartition.sum_arcSet, Usa2025P6.CirclePartition.len_le,HSub.hSub,Finset.sum_Ico_eq_sum_range,Nat.add_sub_cancel_left,Finset.sum_congr,rfl,Membership.mem,Usa2025P6.CirclePartition.base,Usa2025P6.CirclePartition.perW.eq_1,Usa2025P6.CirclePartition.start.eq_1,Nat.cast_addand 3 more35 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.sum_arcOf_extline 352 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,NeZero,Fin,Eq,HMod.hMod,ZMod,Real,Finset.sum,Finset.Ico, Usa2025P6.CirclePartition.offExt,HAdd.hAdd,Usa2025P6.CirclePartition.len, Usa2025P6.CirclePartition.perW, Usa2025P6.CirclePartition.arcOfProof uses:
Eq.mpr, Usa2025P6.CirclePartition.off,HMul.hMul,HDiv.hDiv,id,congrArg, Usa2025P6.CirclePartition.offExt_eq_off_add_div, Usa2025P6.CirclePartition.perW_sum_period, Usa2025P6.CirclePartition.sum_arcOf,Eq.refl28 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.perW_sum_nonnegline 358 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,ZMod,Real,LE.le,OfNat.ofNat,Finset.sum,Finset.Ico, Usa2025P6.CirclePartition.perWProof uses:
Finset.sum_nonneg,Membership.mem,Finset,HAdd.hAdd,Usa2025P6.CirclePartition.base28 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.perW_sum_monoline 364 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,ZMod,Real,LE.le,OfNat.ofNat,Finset.sum,Finset.Ico, Usa2025P6.CirclePartition.perWProof uses:
Finset.sum_le_sum_of_subset_of_nonneg,Finset.Ico_subset_Ico,Membership.mem,Finset,Not,HAdd.hAdd,Usa2025P6.CirclePartition.base30 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.exists_gapline 382 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,Finset,ZMod,Ne,Finset.univ,Exists,And,LE.le,OfNat.ofNat,Not,Membership.mem,HAdd.hAddProof uses:
Finset.exists_of_ssubset,Iff.mpr,LT.lt,Finset.ssubset_univ_iff,dite,Eq,Exists.intro,And.intro,Nat.pos_of_ne_zero,NeZero.ne,le_rfl,Eq.mpr,id,congrArg,Eq.symm,ZMod.natCast_self,add_zero,ZMod.val,HSub.hSub,Eq.mpand 10 more65 instances, coercions and auxiliary constants left out.
Tactic trace: 21 steps
Open to load the checked before-and-after goal states.
- def
Usa2025P6.CirclePartition.gapSizeThe distance to the next point outsideD(a positive number of steps) line 400 sourceSource documentation
The distance to the next point outside
D(a positive number of steps).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,Finset,ZMod,Ne,Finset.univProof uses:
Nat.find,And,LE.le,OfNat.ofNat,Not,Membership.mem,HAdd.hAdd, Usa2025P6.CirclePartition.exists_gap26 instances, coercions and auxiliary constants left out.
noncomputable def gapSize (D : Finset (ZMod m)) (hD : D ≠ Finset.univ) (x : ZMod m) : ℕ := …
- lemma
Usa2025P6.CirclePartition.gapSize_specline 403 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,Finset,ZMod,Ne,Finset.univ,And,LE.le,OfNat.ofNat, Usa2025P6.CirclePartition.gapSize,Not,Membership.mem,HAdd.hAddProof uses:
Nat.find_spec, Usa2025P6.CirclePartition.exists_gap41 instances, coercions and auxiliary constants left out.
- lemma
Usa2025P6.CirclePartition.gapSize_memline 407 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,Finset,ZMod,Ne,Finset.univ,LE.le,OfNat.ofNat,LT.lt, Usa2025P6.CirclePartition.gapSize,Membership.mem,HAdd.hAddProof uses:
Not,And,Nat.find_min, Usa2025P6.CirclePartition.exists_gap, Usa2025P6.CirclePartition.gapSize_spec,Decidable.byContradiction,And.intro44 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- def
Usa2025P6.CirclePartition.nextDThe successor ofxin the circle withDdeleted line 415 sourceSource documentation
The successor of
xin the circle withDdeleted.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,Finset,ZMod,Ne,Finset.univProof uses:
HAdd.hAdd, Usa2025P6.CirclePartition.gapSize17 instances, coercions and auxiliary constants left out.
noncomputable def nextD (D : Finset (ZMod m)) (hD : D ≠ Finset.univ) (x : ZMod m) : ZMod m := …
- lemma
Usa2025P6.CirclePartition.nextD_notMemline 418 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,Finset,ZMod,Ne,Finset.univ,Not,Membership.mem, Usa2025P6.CirclePartition.nextDProof uses:
And.right,LE.le, Usa2025P6.CirclePartition.gapSize,HAdd.hAdd,OfNat.ofNat,And, Usa2025P6.CirclePartition.gapSize_spec23 instances, coercions and auxiliary constants left out.
- lemma
Usa2025P6.CirclePartition.nextD_ne_univline 422 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,Finset,ZMod,Ne,Finset.univ,Eq, Usa2025P6.CirclePartition.nextD,HAdd.hAdd, Usa2025P6.CirclePartition.gapSizeProof uses:
rfl17 instances, coercions and auxiliary constants left out.
- structure
Usa2025P6.CirclePartition.CircleEmbA circular embedding: an enumeration of the complement ofDthat respects the successor structure of the circle line 429 sourceSource documentation
A circular embedding: an enumeration of the complement of
Dthat respects the successor structure of the circle.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,Finset,ZMod,Ne,Finset.univ3 instances, coercions and auxiliary constants left out.
structure CircleEmb {m : ℕ} [NeZero m] {m' : ℕ} [NeZero m'] (D : Finset (ZMod m)) (hD : D ≠ Finset.univ) (φ : ZMod m' → ZMod m) : Prop where … - lemma
Usa2025P6.CirclePartition.CircleEmb.congr_Dline 436 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,Finset,ZMod,Ne,Finset.univ,Eq, Usa2025P6.CirclePartition.CircleEmb7 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- def
Usa2025P6.CirclePartition.skipMapThe enumeration of the complement of an arc, starting right after the arc line 444 sourceSource documentation
The enumeration of the complement of an arc, starting right after the arc.
standard axioms: Quot.sound, propext what this means
Statement uses:
Nat,ZMod,HSub.hSubProof uses:
HAdd.hAdd,ZMod.val15 instances, coercions and auxiliary constants left out.
def skipMap {m : ℕ} (a₀ : ZMod m) (l : ℕ) (i : ZMod (m - l)) : ZMod m := … - lemma
Usa2025P6.CirclePartition.skipMap_injectiveline 451 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,ZMod,HSub.hSub,LE.le,Function.Injective, Usa2025P6.CirclePartition.skipMapProof uses:
Eq,ZMod.val, Usa2025P6.CirclePartition.natCast_injective_of_lt,LT.lt,ZMod.val_lt,Eq.mp,HAdd.hAdd,congrArg,propext,add_left_cancel_iff,Usa2025P6.CirclePartition.skipMap.eq_1,ZMod.val_injective28 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.skipMap_notMemline 459 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,ZMod,HSub.hSub,LE.le,Not,Membership.mem,Finset, Usa2025P6.arcSet, Usa2025P6.CirclePartition.skipMapProof uses:
Eq.mpr,Exists,And,LT.lt,Eq,HAdd.hAdd,id,congrArg,propext, Usa2025P6.CirclePartition.mem_arcSet,False,ZMod.val,Nat.cast_add,Eq.mp,add_left_cancel_iff,add_assoc,Usa2025P6.CirclePartition.skipMap.eq_1, Usa2025P6.CirclePartition.natCast_injective_of_lt,ZMod.val_lt40 instances, coercions and auxiliary constants left out.
Tactic trace: 12 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.skipMap_coverline 471 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,ZMod,HSub.hSub,LE.le,Not,Membership.mem,Finset, Usa2025P6.arcSet,Exists,Eq, Usa2025P6.CirclePartition.skipMapProof uses:
HAdd.hAdd,ZMod.val,Eq.mpr,ZMod.cast,id,congrArg,ZMod.natCast_val,ZMod.cast_id,add_comm,sub_add_cancel,Eq.refl,dite,rfl,LT.lt,ZMod.val_lt,Exists.intro,HMod.hMod,ZMod.val_natCast,Nat.mod_eq_of_lt,Eq.mpand 10 more46 instances, coercions and auxiliary constants left out.
Tactic trace: 23 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.skipMap_addline 494 sourcestandard axioms: Quot.sound, propext what this means
Statement uses:
Nat,ZMod,HSub.hSub,Eq,HAdd.hAdd, Usa2025P6.CirclePartition.skipMap,ZMod.valProof uses:
Eq.mpr,id,congrArg,Usa2025P6.CirclePartition.skipMap.eq_1,Nat.cast_add32 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.skipMap_eqline 500 sourcestandard axioms: Quot.sound, propext what this means
Statement uses:
Nat,ZMod,HSub.hSub,Eq, Usa2025P6.CirclePartition.skipMap,HAdd.hAdd,ZMod.valProof uses:
Eq.mpr,id,congrArg,Usa2025P6.CirclePartition.skipMap.eq_1,Nat.cast_add,add_assoc,Eq.refl31 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.mem_arcSet_iffline 505 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,ZMod,LE.le,Iff,Membership.mem,Finset, Usa2025P6.arcSet,HAdd.hAdd,LT.lt,HMod.hModProof uses:
Eq.mpr,Exists,And,Eq,id,congrArg,propext, Usa2025P6.CirclePartition.mem_arcSet,Iff.intro,Eq.mp,Nat.ModEq,ZMod.natCast_eq_natCast_iff,add_left_cancel_iff,Eq.symm,Nat.mod_eq_of_lt,Exists.intro,And.intro,Nat.mod_modEq44 instances, coercions and auxiliary constants left out.
Tactic trace: 15 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.skipMap_nextline 520 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,ZMod,HSub.hSub,LE.le,Ne,Finset, Usa2025P6.arcSet,Finset.univ,Eq, Usa2025P6.CirclePartition.skipMap,HAdd.hAdd,OfNat.ofNat, Usa2025P6.CirclePartition.nextDProof uses:
LT.lt,Decidable.byContradiction,Not,Eq.mp,congrArg,Nat.le_antisymm, Usa2025P6.CirclePartition.arcSet_univ,ZMod.val,ZMod.val_lt,of_eq_true,Eq.trans,True,Nat.cast_one,eq_self,dite,Membership.mem,Eq.mpr,id, Usa2025P6.CirclePartition.skipMap_add,HMod.hModand 28 more81 instances, coercions and auxiliary constants left out.
Tactic trace: 77 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.circleEmb_skipMapThe circular embedding given by skipping a single arc line 583 sourceSource documentation
The circular embedding given by skipping a single arc.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,ZMod,HSub.hSub,LE.le,Ne,Finset, Usa2025P6.arcSet,Finset.univ, Usa2025P6.CirclePartition.CircleEmb, Usa2025P6.CirclePartition.skipMapProof uses:
Usa2025P6.CirclePartition.CircleEmb.mk, Usa2025P6.CirclePartition.skipMap_injective, Usa2025P6.CirclePartition.skipMap_next, Usa2025P6.CirclePartition.skipMap_notMem,Not,Membership.mem, Usa2025P6.CirclePartition.skipMap_cover14 instances, coercions and auxiliary constants left out.
lemma circleEmb_skipMap [NeZero (m - l)] (hl : l ≤ m) (hlD : arcSet a₀ l ≠ Finset.univ) : CircleEmb (arcSet a₀ l) hlD (skipMap a₀ l) where …Mentions: Usa2025P6.arcSet, Usa2025P6.CirclePartition.CircleEmb, Usa2025P6.CirclePartition.skipMap
- lemma
Usa2025P6.CirclePartition.mem_image_skipMapline 591 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,ZMod,Finset,HSub.hSub,LE.le,Iff,Membership.mem,Finset.image, Usa2025P6.CirclePartition.skipMapProof uses:
Eq.mpr,Exists,And,Eq,id,congrArg,propext,Finset.mem_image,Iff.intro,Eq.symm, Usa2025P6.CirclePartition.skipMap_injective,Exists.intro,And.intro,rfl18 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.skipMap_nextDThe intertwining lemma: skipping an arc commutes with the deleted successor line 603 sourceSource documentation
The intertwining lemma: skipping an arc commutes with the deleted successor.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,ZMod,HSub.hSub,LE.le,Finset,Ne,Finset.univ,Union.union, Usa2025P6.arcSet,Finset.image, Usa2025P6.CirclePartition.skipMap,Eq, Usa2025P6.CirclePartition.nextDProof uses:
LT.lt,ZMod.val,ZMod.val_lt,And,OfNat.ofNat, Usa2025P6.CirclePartition.gapSize,Not,Membership.mem,HAdd.hAdd, Usa2025P6.CirclePartition.gapSize_spec,rfl,Eq.mpr,Or,id,congrArg,propext,Finset.mem_union,And.intro, Usa2025P6.CirclePartition.skipMap_notMem, Usa2025P6.CirclePartition.mem_image_skipMap and 38 more77 instances, coercions and auxiliary constants left out.
Tactic trace: 111 steps
Open to load the checked before-and-after goal states.
lemma skipMap_nextD [NeZero (m - l)] (hl : l ≤ m) (D₂ : Finset (ZMod (m - l))) (hD₂ : D₂ ≠ Finset.univ) (hD : arcSet a₀ l ∪ D₂.image (skipMap a₀ l) ≠ Finset.univ) (x : ZMod (m - l)) : skipMap a₀ l (nextD D₂ hD₂ x) = nextD (arcSet a₀ l ∪ D₂.image (skipMap a₀ l)) hD (skipMap a₀ l x) := by …Mentions: Usa2025P6.arcSet, Usa2025P6.CirclePartition.skipMap, Usa2025P6.CirclePartition.nextD
- lemma
Usa2025P6.CirclePartition.circleEmb_comp_skipMapComposition of a circular embedding withskipMapline 704 sourceSource documentation
Composition of a circular embedding with
skipMap.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,ZMod,HSub.hSub,LE.le,Finset,Ne,Finset.univ, Usa2025P6.CirclePartition.CircleEmb,Union.union, Usa2025P6.arcSet,Finset.image, Usa2025P6.CirclePartition.skipMap,Function.compProof uses:
Usa2025P6.CirclePartition.CircleEmb.mk,Function.Injective.comp, Usa2025P6.CirclePartition.skipMap_injective,Usa2025P6.CirclePartition.CircleEmb.inj,Eq.mpr,Eq,HAdd.hAdd,OfNat.ofNat, Usa2025P6.CirclePartition.nextD,id,congrArg,Function.comp_apply,Usa2025P6.CirclePartition.CircleEmb.next, Usa2025P6.CirclePartition.skipMap_nextD,Not,Membership.mem,Or,propext,Finset.mem_union,Andand 14 more31 instances, coercions and auxiliary constants left out.
Tactic trace: 16 steps
Open to load the checked before-and-after goal states.
lemma circleEmb_comp_skipMap {m : ℕ} [NeZero m] {a₀ : ZMod m} {l : ℕ} [NeZero (m - l)] (hl : l ≤ m) {m₂ : ℕ} [NeZero m₂] (D₂ : Finset (ZMod (m - l))) (hD₂ : D₂ ≠ Finset.univ) (ψ : ZMod m₂ → ZMod (m - l)) (hψ : CircleEmb D₂ hD₂ ψ) (hD : arcSet a₀ l ∪ D₂.image (skipMap a₀ l) ≠ Finset.univ) : CircleEmb (arcSet a₀ l ∪ D₂.image (skipMap a₀ l)) hD ((skipMap a₀ l) ∘ ψ) where …Mentions: Usa2025P6.CirclePartition.CircleEmb, Usa2025P6.arcSet, Usa2025P6.CirclePartition.skipMap
- lemma
Usa2025P6.CirclePartition.circleEmb_factorFactorization of a circular embedding throughskipMapline 731 sourceSource documentation
Factorization of a circular embedding through
skipMap.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,ZMod,HSub.hSub,LE.le,Finset,Ne,Finset.univ,Eq,Union.union, Usa2025P6.arcSet,Finset.image, Usa2025P6.CirclePartition.skipMap, Usa2025P6.CirclePartition.CircleEmb,Exists,And,Function.compProof uses:
Eq.rec,Membership.mem,Set,Set.range,Not,Usa2025P6.CirclePartition.CircleEmb.notMem, Usa2025P6.CirclePartition.skipMap_cover,And.left,Eq.mp,Or,congrArg,propext,Finset.mem_union,Function.Injective,Usa2025P6.CirclePartition.CircleEmb.inj,Eq.mpr,id,Eq.symm,Eq.refl,Exists.introand 15 more33 instances, coercions and auxiliary constants left out.
Tactic trace: 39 steps
Open to load the checked before-and-after goal states.
lemma circleEmb_factor {m : ℕ} [NeZero m] {m' : ℕ} [NeZero m'] {a₀ : ZMod m} {l : ℕ} [NeZero (m - l)] (hl : l ≤ m) (D₂ : Finset (ZMod (m - l))) (hD₂ : D₂ ≠ Finset.univ) (D : Finset (ZMod m)) (hD : D ≠ Finset.univ) (hDeq : D = arcSet a₀ l ∪ D₂.image (skipMap a₀ l)) (φ : ZMod m' → ZMod m) (hφ : CircleEmb D hD φ) : ∃ φ' : ZMod m' → ZMod (m - l), (skipMap a₀ l ∘ φ') = φ ∧ CircleEmb D₂ hD₂ φ' := by …Mentions: Usa2025P6.arcSet, Usa2025P6.CirclePartition.skipMap, Usa2025P6.CirclePartition.CircleEmb
- lemma
Usa2025P6.CirclePartition.transport_arcTransport of an arc disjoint from the skipped arc into the smaller circle line 778 sourceSource documentation
Transport of an arc disjoint from the skipped arc into the smaller circle.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,ZMod,HSub.hSub,LE.le,OfNat.ofNat,Disjoint,Finset, Usa2025P6.arcSet,Exists,And,Eq,Finset.image, Usa2025P6.CirclePartition.skipMap,Real,Finset.sumProof uses:
LT.lt,ZMod.val,ZMod.val_lt,HAdd.hAdd,Eq.mpr,ZMod.cast,id,congrArg,ZMod.natCast_val,ZMod.cast_id,add_comm,sub_add_cancel,Eq.refl,Not,Membership.mem,propext, Usa2025P6.CirclePartition.mem_arcSet,Exists.intro,And.intro,of_eq_trueand 30 more74 instances, coercions and auxiliary constants left out.
Tactic trace: 78 steps
Open to load the checked before-and-after goal states.
lemma transport_arc {m : ℕ} [NeZero m] {a₀ : ZMod m} {l : ℕ} [NeZero (m - l)] (hl1 : 1 ≤ l) (hl : l ≤ m) {c : ZMod m} {l₁ : ℕ} (hl₁ : 1 ≤ l₁) (hdisj : Disjoint (arcSet a₀ l) (arcSet c l₁)) : ∃ v : ZMod (m - l), l₁ ≤ m - l ∧ (arcSet v l₁).image (skipMap a₀ l) = arcSet c l₁ ∧ (∀ w : ZMod m → ℝ, ∑ x ∈ arcSet c l₁, w x = ∑ y ∈ arcSet v l₁, w (skipMap a₀ l y)) := by …Mentions: Usa2025P6.arcSet, Usa2025P6.CirclePartition.skipMap
- lemma
Usa2025P6.CirclePartition.surgeryManySurgery: deleting a family of disjoint arcs yields a circular embedding of the complement, built by composingskipMaps line 850 sourceSource documentation
Surgery: deleting a family of disjoint arcs yields a circular embedding of the complement, built by composing
skipMaps.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,Fin,ZMod,LE.le,OfNat.ofNat,Ne,Disjoint,Finset, Usa2025P6.arcSet,Finset.biUnion,Finset.univ,Exists,And, Usa2025P6.CirclePartition.CircleEmb,Eq,HSub.hSub,Finset.sumProof uses:
Nat.recAux,EmptyCollection.emptyCollection,of_eq_true,Eq.trans,True,congrFun',congrArg,Finset.univ_eq_empty,eq_self,Ne.symm,Finset.Nonempty.ne_empty,Finset.univ_nonempty,HAdd.hAdd,id, Usa2025P6.CirclePartition.nextD, Usa2025P6.CirclePartition.gapSize,le_antisymm,Nat.find_min',Not,Membership.memand 62 more70 instances, coercions and auxiliary constants left out.
Tactic trace: 99 steps
Open to load the checked before-and-after goal states.
lemma surgeryMany {t : ℕ} : ∀ {m : ℕ} [NeZero m] (ca : Fin t → ZMod m) (la : Fin t → ℕ) (_hla1 : ∀ s, 1 ≤ la s) (_hlam : ∀ s, la s ≤ m) (_hdij : ∀ s₁ s₂, s₁ ≠ s₂ → Disjoint (arcSet (ca s₁) (la s₁)) (arcSet (ca s₂) (la s₂))) (hD : (Finset.univ.biUnion fun s => arcSet (ca s) (la s)) ≠ Finset.univ), ∃ (m' : ℕ) (_ : NeZero m') (φ : ZMod m' → ZMod m), CircleEmb (Finset.univ.biUnion fun s => arcSet (ca s) (la s)) hD φ ∧ m' = m - ∑ s, la s := by …Mentions: Usa2025P6.arcSet, Usa2025P6.CirclePartition.CircleEmb
- lemma
Usa2025P6.CirclePartition.off_zeroline 960 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Eq, Usa2025P6.CirclePartition.off,Fin.mkProof uses:
Eq.mpr,Finset.sum,Fin,Finset.filter,Finset.univ,Usa2025P6.CirclePartition.len,id,congrArg,Usa2025P6.CirclePartition.off.eq_1,EmptyCollection.emptyCollection,Finset,Iff.mpr,Membership.mem,Not,Finset.filter_eq_empty_iff,Finset.sum_empty,Eq.refl19 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.off_succline 965 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2025P6.CirclePartition,Fin,LT.lt,HAdd.hAdd,OfNat.ofNat,Eq, Usa2025P6.CirclePartition.off,Fin.mk,Usa2025P6.CirclePartition.lenProof uses:
Eq.mpr,Finset.sum,Finset.filter,Finset.univ,id,congrArg,Usa2025P6.CirclePartition.off.eq_1,Finset,Union.union,Singleton.singleton,Finset.ext,Iff,Membership.mem,Or,congr,Eq.trans,And,congrFun',Finset.filter_congr,Iff.of_eqand 16 more37 instances, coercions and auxiliary constants left out.
Tactic trace: 27 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.mergeOneThe single-arc merge lemma: deleting an arc of value< 1from the circle yields a smaller circle with a partition intok - 1arcs of value≥ 1line 990 sourceSource documentation
The single-arc merge lemma: deleting an arc of value
< 1from the circle yields a smaller circle with a partition intok - 1arcs of value≥ 1.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,LE.le,ZMod,Real,Fin,Finset.sum, Usa2025P6.CirclePartition.arcOf, Usa2025P6.arcSet,Exists,HSub.hSub,Function.comp, Usa2025P6.CirclePartition.skipMapProof uses:
Decidable.byContradiction,Not,Finset.univ,Fin.mk,le_trans,Finset.sum_le_sum_of_subset_of_nonneg,Finset.subset_univ,Membership.mem,Finset,False.elim,False,Mathlib.Tactic.Linarith.lt_irrefl,Eq.mp,HAdd.hAdd,congrArg,Mathlib.Tactic.Ring.of_eq,Mathlib.Tactic.Ring.Common.add_congr,Int.rawCast,inferInstance,Ringand 152 more184 instances, coercions and auxiliary constants left out.
Tactic trace: 347 steps (first 200 of 347)
Open to load the checked before-and-after goal states.
lemma mergeOne {m k : ℕ} [NeZero m] (P : CirclePartition m k) (hk : 0 < k) (hk2 : 2 ≤ k) (w : ZMod m → ℝ) (hnn : ∀ x, 0 ≤ w x) (hval : ∀ i, 1 ≤ ∑ x ∈ P.arcOf i, w x) {a₀ : ZMod m} {l : ℕ} (hl1 : 1 ≤ l) (hlm : l ≤ m) (hA : ∑ x ∈ arcSet a₀ l, w x < 1) : ∃ (P' : CirclePartition (m - l) (k - 1)), (∀ i, 1 ≤ ∑ x ∈ P'.arcOf i, (w ∘ skipMap a₀ l) x) := by …Mentions: P, Usa2025P6.CirclePartition, Usa2025P6.arcSet, Usa2025P6.CirclePartition.skipMap
- def
Usa2025P6.CirclePartition.castReindexing a circular partition along an equality of the number of arcs line 1355 sourceSource documentation
Reindexing a circular partition along an equality of the number of arcs.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq, Usa2025P6.CirclePartitionProof uses:
Usa2025P6.CirclePartition.mk,Usa2025P6.CirclePartition.base,Fin,Usa2025P6.CirclePartition.len,Fin.cast,Eq.symm2 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
def cast {m a b : ℕ} (h : a = b) (P : CirclePartition m a) : CirclePartition m b where …Mentions: h, P, Usa2025P6.CirclePartition
- lemma
Usa2025P6.CirclePartition.circlePartition_cast_lenline 1365 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq, Usa2025P6.CirclePartition,Fin,Usa2025P6.CirclePartition.len, Usa2025P6.CirclePartition.cast,Fin.cast,Eq.symmProof uses:
rfl - lemma
Usa2025P6.CirclePartition.circlePartition_cast_offline 1368 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq, Usa2025P6.CirclePartition,Fin, Usa2025P6.CirclePartition.off, Usa2025P6.CirclePartition.cast,Fin.cast,Eq.symmProof uses:
Eq.rec,Eq.mpr,Eq.refl,id,congrArg,congrFun,Fin.cast_refl,Finset.sum,Finset.filter,LT.lt,Finset.univ,Usa2025P6.CirclePartition.len,Usa2025P6.CirclePartition.off.eq_1,Finset.sum_congr,rfl,Finset,Membership.mem6 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.circlePartition_cast_arcOfline 1377 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq, Usa2025P6.CirclePartition,Fin,Finset,ZMod, Usa2025P6.CirclePartition.arcOf, Usa2025P6.CirclePartition.cast,Fin.cast,Eq.symmProof uses: Usa2025P6.CirclePartition.start,
Eq.mpr,HAdd.hAdd,Usa2025P6.CirclePartition.base, Usa2025P6.CirclePartition.off,id,congrArg,Usa2025P6.CirclePartition.start.eq_1, Usa2025P6.CirclePartition.circlePartition_cast_off,Eq.refl, Usa2025P6.arcSet,Usa2025P6.CirclePartition.len,Usa2025P6.CirclePartition.arcOf.eq_1, Usa2025P6.CirclePartition.circlePartition_cast_len11 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Usa2025P6.CirclePartition.mergeValuesThe multi-arc merge lemma: deletingtdisjoint arcs, each of value< 1, yields a smaller circle with a partition intok - tarcs of value≥ 1line 1386 sourceSource documentation
The multi-arc merge lemma: deleting
tdisjoint arcs, each of value< 1, yields a smaller circle with a partition intok - tarcs of value≥ 1.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero, Usa2025P6.CirclePartition,LT.lt,OfNat.ofNat,Fin,ZMod,Real,LE.le,Finset.sum, Usa2025P6.CirclePartition.arcOf,Ne,Disjoint,Finset, Usa2025P6.arcSet,Finset.biUnion,Finset.univ, Usa2025P6.CirclePartition.CircleEmb,Exists,HSub.hSuband 1 moreProof uses:
Nat.recAux,Eq,Nat.sub_zero,EmptyCollection.emptyCollection,of_eq_true,Eq.trans,True,congrFun',congrArg,Finset.univ_eq_empty,eq_self,Ne.symm,Finset.Nonempty.ne_empty,Finset.univ_nonempty, Usa2025P6.CirclePartition.CircleEmb.congr_D,HAdd.hAdd, Usa2025P6.CirclePartition.nextD,Usa2025P6.CirclePartition.CircleEmb.next, Usa2025P6.CirclePartition.gapSize,le_antisymmand 155 more137 instances, coercions and auxiliary constants left out.
Tactic trace: 165 steps
Open to load the checked before-and-after goal states.
lemma mergeValues {t : ℕ} : ∀ {m k : ℕ} [NeZero m] (P : CirclePartition m k) (_hk : 0 < k) (ca : Fin t → ZMod m) (la : Fin t → ℕ) (w : ZMod m → ℝ) (_hnn : ∀ x, 0 ≤ w x) (_hval : ∀ i, 1 ≤ ∑ x ∈ P.arcOf i, w x) (_hla1 : ∀ s, 1 ≤ la s) (_hlam : ∀ s, la s ≤ m) (_hdij : ∀ s₁ s₂, s₁ ≠ s₂ → Disjoint (arcSet (ca s₁) (la s₁)) (arcSet (ca s₂) (la s₂))) (_harcval : ∀ s, ∑ x ∈ arcSet (ca s) (la s), w x < 1) (_htk : t < k) {m' : ℕ} [NeZero m'] (φ : ZMod m' → ZMod m) {hD : (Finset.univ.biUnion fun s => arcSet (ca s) (la s)) ≠ Finset.univ} (_hφ : CircleEmb _ hD φ), ∃ P' : CirclePartition m' (k - t), ∀ i, 1 ≤ ∑ x ∈ P'.arcOf i, (w ∘ φ) x := by …Mentions: P, Usa2025P6.CirclePartition, Usa2025P6.arcSet, Usa2025P6.CirclePartition.CircleEmb
- theorem
Usa2025P6.CirclePartition.hall_deficiencyline 1569 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,Fin,DecidableRel,Exists,Finset,And,Membership.mem,Eq,Finset.card,NotProof uses:
Finset.filter,Finset.univ,rfl,Int,HSub.hSub,Finset.biUnion,LE.le,Finset.exists_max_image,Exists.intro,EmptyCollection.emptyCollection,Finset.mem_univ,OfNat.ofNat,LT.lt,Or,le_or_gt,Eq.mp,congrArg,cast,Function.Injective,Iff.mpand 57 more59 instances, coercions and auxiliary constants left out.
Tactic trace: 134 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2025P6.CirclePartition.usa2025_p6_mainThe main theorem: USAMO 2025 Problem 6 line 1719 sourceSource documentation
The main theorem: USAMO 2025 Problem 6.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LT.lt,OfNat.ofNat,NeZero,LE.le,Fin,ZMod,Real,Exists, Usa2025P6.CirclePartition,Finset.sum, Usa2025P6.CirclePartition.arcOf,Finset.filter,Eq,Finset.univProof uses:
Nat.strong_induction_on,Nat.succ,Or,Nat.eq_or_lt_of_le,Fin.mk,Usa2025P6.CirclePartition.len,Usa2025P6.CirclePartition.len_sum,Eq.mp,congrArg,Fin.sum_univ_one,Finset,Eq.mpr, Usa2025P6.arcSet, Usa2025P6.CirclePartition.start,id,Usa2025P6.CirclePartition.arcOf.eq_1, Usa2025P6.CirclePartition.arcSet_univ,Eq.refl,Exists.intro,Subsingleton.elimand 105 more111 instances, coercions and auxiliary constants left out.
Tactic trace: 277 steps (first 200 of 277)
Open to load the checked before-and-after goal states.
theorem usa2025_p6_main (N : ℕ) (hN : 0 < N) : ∀ (m : ℕ) [NeZero m] (_hmn : N ≤ m) (like : Fin N → ZMod m → ℝ) (_hnn : ∀ p c, 0 ≤ like p c) (_hpart : ∀ p, ∃ P : CirclePartition m N, ∀ i, 1 ≤ ∑ x ∈ P.arcOf i, like p x), ∃ a : ZMod m → Fin N, ∀ p, 1 ≤ ∑ c ∈ Finset.univ.filter (a · = p), like p c := by …Mentions: P, Usa2025P6.CirclePartition
- problem
Usa2025P6.usa2025_p6The USAMO 2025 Problem 6: distributing cupcakes to people so that everybody gets total score at least one in their own ranking line 1994 sourceSource documentation
The USAMO 2025 Problem 6: distributing cupcakes to people so that everybody gets total score at least one in their own ranking.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,NeZero,LT.lt,OfNat.ofNat,LE.le,Fin,ZMod,Real,Exists, Usa2025P6.CirclePartition,Finset.sum, Usa2025P6.CirclePartition.arcOf,Finset.filter,Eq,Finset.univProof uses: Usa2025P6.CirclePartition.usa2025_p6_main
24 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
problem usa2025_p6 {m n : ℕ} [NeZero m] (_hm : 0 < m) (hn : 0 < n) (hmn : n ≤ m) (like : Fin n → ZMod m → ℝ) (hnn : ∀ p c, 0 ≤ like p c) (hpart : ∀ p, ∃ P : CirclePartition m n, ∀ i, 1 ≤ ∑ x ∈ P.arcOf i, like p x) : ∃ a : ZMod m → Fin n, ∀ p, 1 ≤ ∑ c ∈ Finset.univ.filter (a · = p), like p c := by …Mentions: P, Usa2025P6.CirclePartition