Compfiles/Usa1984P4.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
7 declarations, 0 contain sorry, 0 declared as axioms
USA Mathematical Olympiad 1984, Problem 4
A maths exam has two papers, each with at least one question and 28 questions in total. Each pupil attempted 7 questions. Each pair of questions was attempted by just two pupils. Show that one pupil attempted either nil or at least 4 questions in the first paper.
Imports (9)
Imported by 1 file
- lemma
Usa1984P4.sum_ite_eraseNumber of ordered pairs(q₁, q₂)withq₂ ∈ sandq₁ ≠ q₂, for a fixed questionq₁, expressed as a sum of indicators over all questions line 55 sourceSource documentation
Number of ordered pairs
(q₁, q₂)withq₂ ∈ sandq₁ ≠ q₂, for a fixed questionq₁, expressed as a sum of indicators over all questions.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Fin,OfNat.ofNat,Nat,Eq,Finset.sum,Finset.univ,ite,And,Membership.mem,Ne,HSub.hSub,Finset.cardProof uses:
dite,Eq.mpr,id,congrArg,ite_eq_left,Finset.filter,Finset.erase,Finset.ext,Iff,congr,Eq.trans,True,congrFun',true_and,Iff.intro,And.intro,Ne.symm,And.right,And.left,Eq.symmand 6 more30 instances, coercions and auxiliary constants left out.
Tactic trace: 18 steps
Open to load the checked before-and-after goal states.
lemma sum_ite_erase (s : Finset (Fin 28)) (q1 : Fin 28) : ∑ q2 : Fin 28, (if q1 ∈ s ∧ q2 ∈ s ∧ q1 ≠ q2 then (1 : ℕ) else 0) = if q1 ∈ s then s.card - 1 else 0 := by … - lemma
Usa1984P4.card_ordered_pairsThe number of ordered pairs of distinct questions ins, written as a double sum of indicators over all questions line 76 sourceSource documentation
The number of ordered pairs of distinct questions in
s, written as a double sum of indicators over all questions.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Fin,OfNat.ofNat,Nat,Eq,Finset.sum,Finset.univ,ite,And,Membership.mem,Ne,HMul.hMul,Finset.card,HSub.hSubProof uses:
Eq.mpr,id,congrArg,Finset.sum_congr,rfl, Usa1984P4.sum_ite_erase,Inter.inter,Finset.sum_ite_mem,Finset.univ_inter,HSMul.hSMul,Finset.sum_const,smul_eq_mul,Eq.refl36 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
lemma card_ordered_pairs (s : Finset (Fin 28)) : ∑ q1 : Fin 28, ∑ q2 : Fin 28, (if q1 ∈ s ∧ q2 ∈ s ∧ q1 ≠ q2 then (1 : ℕ) else 0) = s.card * (s.card - 1) := by … - lemma
Usa1984P4.sum_pupils_pairFor fixed questionsq₁ ≠ q₂, the number of pupils that attempted both is2, expressed as a sum of indicators over all pupils line 84 sourceSource documentation
For fixed questions
q₁ ≠ q₂, the number of pupils that attempted both is2, expressed as a sum of indicators over all pupils.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,Finset,Fin,OfNat.ofNat,Nat,Ne,Eq,Finset.card,Finset.filter,And,Membership.mem,Finset.univ,Finset.sum,iteProof uses:
dite,Eq.mpr,id,congrArg,ite_eq_left,Finset.ext,Iff,congr,Eq.trans,True,congrFun',true_and,Iff.intro,And.intro,And.left,And.right,Eq.symm,Finset.card_filter,Eq.refl,Notand 4 more25 instances, coercions and auxiliary constants left out.
Tactic trace: 19 steps
Open to load the checked before-and-after goal states.
lemma sum_pupils_pair {Pupil : Type} [Fintype Pupil] (attempt : Pupil → Finset (Fin 28)) (hpair : ∀ q1 q2 : Fin 28, q1 ≠ q2 → (Finset.univ.filter fun p ↦ q1 ∈ attempt p ∧ q2 ∈ attempt p).card = 2) (q1 q2 : Fin 28) : (∑ p : Pupil, if q1 ∈ attempt p ∧ q2 ∈ attempt p ∧ q1 ≠ q2 then (1 : ℕ) else 0) = if q1 ≠ q2 then 2 else 0 := by … - lemma
Usa1984P4.sum_two_distinctFor a fixed questionq₁, the number of questionsq₂ ≠ q₁is27, so summing the constant2over them gives54line 110 sourceSource documentation
For a fixed question
q₁, the number of questionsq₂ ≠ q₁is27, so summing the constant2over them gives54.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fin,OfNat.ofNat,Nat,Eq,Finset.sum,Finset.univ,ite,NeProof uses:
Finset,Finset.filter,Finset.erase,Finset.filter_ne,Eq.mpr,id,congrArg,Eq.symm,Finset.sum_filter,HSMul.hSMul,Finset.card,Finset.sum_const,HSub.hSub,Finset.card_erase_of_mem,Finset.mem_univ,Fintype.card,Finset.card_univ,Fintype.card_fin,HMul.hMul,smul_eq_muland 1 more23 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
lemma sum_two_distinct (q1 : Fin 28) : ∑ q2 : Fin 28, (if q1 ≠ q2 then (2 : ℕ) else 0) = 54 := by … - lemma
Usa1984P4.card_pupilsDouble counting ordered pairs of distinct questions attempted by the same pupil shows there are36pupils line 120 sourceSource documentation
Double counting ordered pairs of distinct questions attempted by the same pupil shows there are
36pupils.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,Finset,Fin,OfNat.ofNat,Nat,Eq,Finset.card,Ne,Finset.filter,And,Membership.mem,Finset.univ,Fintype.cardProof uses:
Finset.sum,ite,HMul.hMul,Eq.mpr,HSub.hSub,id,congrArg,Finset.sum_congr,rfl, Usa1984P4.card_ordered_pairs,Eq.refl,HSMul.hSMul,Finset.sum_const,Finset.card_univ,smul_eq_mul,Eq.symm,Finset.sum_comm_cycle, Usa1984P4.sum_pupils_pair, Usa1984P4.sum_two_distinct,Fintype.card_finand 1 more25 instances, coercions and auxiliary constants left out.
Tactic trace: 13 steps
Open to load the checked before-and-after goal states.
lemma card_pupils {Pupil : Type} [Fintype Pupil] (attempt : Pupil → Finset (Fin 28)) (hattempt : ∀ p, (attempt p).card = 7) (hpair : ∀ q1 q2 : Fin 28, q1 ≠ q2 → (Finset.univ.filter fun p ↦ q1 ∈ attempt p ∧ q2 ∈ attempt p).card = 2) : Fintype.card Pupil = 36 := by … - lemma
Usa1984P4.card_attemptersDouble counting the pairs(p, q₂)withqandq₂both attempted bypshows every question was attempted by exactly9pupils line 149 sourceSource documentation
Double counting the pairs
(p, q₂)withqandq₂both attempted bypshows every question was attempted by exactly9pupils.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,Finset,Fin,OfNat.ofNat,Nat,Eq,Finset.card,Ne,Finset.filter,And,Membership.mem,Finset.univProof uses:
Finset.sum,ite,HMul.hMul,Eq.mpr,HSub.hSub,id,congrArg,Finset.sum_congr,rfl, Usa1984P4.sum_ite_erase,Eq.refl,Eq.symm,Finset.sum_filter,HSMul.hSMul,Finset.sum_const,smul_eq_mul,Finset.sum_comm, Usa1984P4.sum_pupils_pair, Usa1984P4.sum_two_distinct,Eq.mp29 instances, coercions and auxiliary constants left out.
Tactic trace: 12 steps
Open to load the checked before-and-after goal states.
lemma card_attempters {Pupil : Type} [Fintype Pupil] (attempt : Pupil → Finset (Fin 28)) (hattempt : ∀ p, (attempt p).card = 7) (hpair : ∀ q1 q2 : Fin 28, q1 ≠ q2 → (Finset.univ.filter fun p ↦ q1 ∈ attempt p ∧ q2 ∈ attempt p).card = 2) (q : Fin 28) : (Finset.univ.filter fun p ↦ q ∈ attempt p).card = 9 := by … - problem
Usa1984P4.usa1984_p4line 178 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,Finset,Fin,OfNat.ofNat,Nat,Eq,Finset.card,Ne,Finset.filter,And,Membership.mem,Finset.univ,Finset.Nonempty,SDiff.sdiff,Exists,Or,Inter.inter,LE.leProof uses:
Decidable.byContradiction,Not,Iff.mpr,Nat.one_le_iff_ne_zero,And.left,LT.lt,Eq.mp,Eq.trans,binderNameHint,forall_congr,congrArg,And.right,Fintype.card, Usa1984P4.card_pupils,Finset.card_pos,Finset.sum,HMul.hMul,ite,Eq.mpr,idand 130 more164 instances, coercions and auxiliary constants left out.
Tactic trace: 79 steps
Open to load the checked before-and-after goal states.