Compfiles/Imo1971P1.lean

GitHub source file

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

International Mathematical Olympiad 1971, Problem 1

Prove that the following assertion is true for n = 3 and n = 5, and that it is false for every other natural number n > 2:

If a1, a2, ..., an are arbitrary real numbers, then (a1 − a2)(a1 − a3) · · · (a1 − an) + (a2 − a1)(a2 − a3) · · · (a2 − an)

Imports (3)
Imported by 1 file
  1. def Imo1971P1.E line 31 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat, Fin, Real

    Proof uses: Finset.sum, Finset.univ, Finset.prod, Finset.erase, HSub.hSub

    6 instances, coercions and auxiliary constants left out.

  2. def Imo1971P1.P line 34 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat

    Proof uses: Fin, Real, GE.ge, Imo1971P1.E, OfNat.ofNat

    3 instances, coercions and auxiliary constants left out.

  3. lemma Imo1971P1.prod_ne_eq_prod_ite This makes working with the sum easier and simp more powerful line 40 source

    Source comment

    This makes working with the sum easier and simp more powerful.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat, Fin, Real, Eq, Finset.prod, Finset.erase, Finset.univ, HSub.hSub, ite, OfNat.ofNat

    Proof uses: Eq.mpr, HMul.hMul, id, congrArg, Eq.symm, Finset.mul_prod_erase, Finset.mem_univ

    20 instances, coercions and auxiliary constants left out.

    Tactic trace: 2 steps

    Open to load the checked before-and-after goal states.

    lemma prod_ne_eq_prod_ite {n : ℕ} {i : Fin n} {a : Fin n → ℝ} : ∏ j ≠ i, (a i - a j) = ∏ j, if j = i then 1 else a i - a j := by
    …
  4. lemma Imo1971P1.E_equiv_perm A proof that E a = E b, where b is obtained by permuting a's indices line 45 source

    Source comment

    A proof that E a = E b, where b is obtained by permuting a's indices.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat, Fin, Real, Exists, Equiv.Perm, Eq, Function.comp, Imo1971P1.E

    Proof uses: id, Finset.sum_equiv, Finset.univ, Finset.prod, Finset.erase, HSub.hSub, Equiv.symm, of_eq_true, Iff, Membership.mem, Finset, Equiv, Eq.trans, True, forall_congr, congr, congrArg, iff_self, implies_true, Finset.prod_equiv and 7 more

    19 instances, coercions and auxiliary constants left out.

    Tactic trace: 9 steps

    Open to load the checked before-and-after goal states.

    lemma E_equiv_perm {n : ℕ} {a b : Fin n → ℝ} (h : ∃ σ : Equiv.Perm (Fin n), b = a ∘ σ) : E a = E b := by
    …

    Mentions: h, Imo1971P1.E

  5. lemma Imo1971P1.antitone_of_monotone_comp_rev This gets a permutation of the indices of a such that the resulting sequence is antitone line 56 source

    Source comment

    This gets a permutation of the indices of a such that the resulting sequence is antitone. Uses Tuple.sort (which gives monotone) composed with Fin.revPerm (which reverses) to get antitone.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat, Fin, Real, Equiv.Perm, Monotone, Function.comp, Antitone, Fin.revPerm

    Proof uses: LE.le, id, of_eq_true, Eq.trans, True, Fin.rev, congr, congrArg, Fin.revPerm_apply, eq_true

    15 instances, coercions and auxiliary constants left out.

    Tactic trace: 4 steps

    Open to load the checked before-and-after goal states.

    lemma antitone_of_monotone_comp_rev {n : ℕ} (f : Fin n → ℝ) (σ : Equiv.Perm (Fin n))
        (hm : Monotone (f ∘ σ)) : Antitone (f ∘ σ ∘ Fin.revPerm) := by
    …

    Mentions: f

  6. lemma Imo1971P1.exists_antitone_perm line 62 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat, Fin, Real, Exists, Equiv.Perm, And, Eq, Function.comp, Antitone

    Proof uses: HMul.hMul, Tuple.sort, Fin.revPerm, Exists.intro, And.intro, Eq.refl, id, Imo1971P1.antitone_of_monotone_comp_rev, Tuple.monotone_sort

    15 instances, coercions and auxiliary constants left out.

    Tactic trace: 8 steps

    Open to load the checked before-and-after goal states.

  7. problem Imo1971P1.imo1971_p1 line 73 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: And, Imo1971P1.P, OfNat.ofNat, Nat, GT.gt, Ne, Not

    Proof uses: Even, LT.lt, Eq.mpr, HAdd.hAdd, HSub.hSub, id, Eq, congrArg, Exists, Fin, Real, Imo1971P1.E, Eq.trans, LE.le, forall_congr, GE.ge, funext, ite, Neg.neg, Exists.intro and 200 more

    246 instances, coercions and auxiliary constants left out.

    Tactic trace: 180 steps

    Open to load the checked before-and-after goal states.