Compfiles/Imo1976P5.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
8 declarations, 0 contain sorry, 0 declared as axioms
International Mathematical Olympiad 1976, Problem 5
n is a positive integer and m = 2n. aᵢⱼ = 0, 1 or -1 for 1 ≤ i ≤ n, 1 ≤ j ≤ m. The m unknowns x₁, x₂, ... , xₘ satisfy the n equations:
aᵢ₁x₁ + aᵢ₂x₂ + ... + aᵢₘxₘ = 0,
for i = 1, 2, ... , n. Prove that the system has a solution in integers of absolute value at most m, not all zero.
Imports (2)
Imported by 1 file
- def
Imo1976P5.valueFinsetThe candidate values for the tuple of unknowns: integers between-nandnin each coordinate line 38 sourceSource documentation
The candidate values for the tuple of unknowns: integers between
-nandnin each coordinate.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,Fin,HMul.hMul,OfNat.ofNat,IntProof uses:
Fintype.piFinset,Finset.Icc,Neg.neg13 instances, coercions and auxiliary constants left out.
noncomputable def valueFinset (n : ℕ) : Finset (Fin (2 * n) → ℤ) := …
- def
Imo1976P5.lhsFinsetThe possible values of the tuple of left-hand sides: each coordinate is an integer between-2n²and2n²line 43 sourceSource documentation
The possible values of the tuple of left-hand sides: each coordinate is an integer between
-2n²and2n².standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,Fin,IntProof uses:
Fintype.piFinset,Finset.Icc,Neg.neg,HMul.hMul,OfNat.ofNat,HPow.hPow15 instances, coercions and auxiliary constants left out.
noncomputable def lhsFinset (n : ℕ) : Finset (Fin n → ℤ) := …
- def
Imo1976P5.lhsThe tuple of left-hand sides of the equations, as a function of the tuple of unknowns line 48 sourceSource documentation
The tuple of left-hand sides of the equations, as a function of the tuple of unknowns.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Fin,HMul.hMul,OfNat.ofNat,IntProof uses:
Finset.sum,Finset.univ9 instances, coercions and auxiliary constants left out.
def lhs (n : ℕ) (a : Fin n → Fin (2 * n) → ℤ) (x : Fin (2 * n) → ℤ) : Fin n → ℤ := … - theorem
Imo1976P5.card_valueFinsetline 52 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset.card,Fin,HMul.hMul,OfNat.ofNat,Int, Imo1976P5.valueFinset,HPow.hPow,HAdd.hAddProof uses:
Finset.Icc,Neg.neg,Eq.mpr,Int.toNat,HSub.hSub,id,congrArg,Int.card_Icc,Eq.trans,Nat.cast_add,congr,Nat.cast_mul,Nat.cast_one,Mathlib.Tactic.Ring.of_eq,Nat.rawCast,Mathlib.Meta.NormNum.instAddMonoidWithOne,inferInstance,Ring,Mathlib.Tactic.Ring.Common.sub_congr,Int.rawCastand 53 more70 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1976P5.card_lhsFinsetline 61 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset.card,Fin,Int, Imo1976P5.lhsFinset,HPow.hPow,HAdd.hAdd,HMul.hMul,OfNat.ofNatProof uses:
Finset.Icc,Neg.neg,Eq.mpr,Int.toNat,HSub.hSub,id,congrArg,Int.card_Icc,Eq.trans,Nat.cast_add,congr,Nat.cast_mul,Nat.cast_pow,Nat.cast_one,Mathlib.Tactic.Ring.of_eq,Nat.rawCast,Mathlib.Meta.NormNum.instAddMonoidWithOne,inferInstance,Ring,Mathlib.Tactic.Ring.Common.sub_congrand 62 more73 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1976P5.card_lhs_lt_card_valueThe pigeonhole step: there are more candidate tuples than possible values of the left-hand sides line 74 sourceSource documentation
The pigeonhole step: there are more candidate tuples than possible values of the left-hand sides.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LT.lt,OfNat.ofNat,Finset.card,Fin,Int, Imo1976P5.lhsFinset,HMul.hMul, Imo1976P5.valueFinsetProof uses:
Eq.mpr,HPow.hPow,HAdd.hAdd,id,Eq,congrArg, Imo1976P5.card_lhsFinset, Imo1976P5.card_valueFinset,Eq.symm,pow_mul,Eq.refl,Mathlib.Tactic.Ring.of_eq,Nat.rawCast,Mathlib.Tactic.Ring.Common.pow_congr,Mathlib.Tactic.Ring.Common.add_congr,Mathlib.Tactic.Ring.Common.mul_congr,Mathlib.Tactic.Ring.cast_pos,Mathlib.Meta.NormNum.isNat_ofNat,Mathlib.Tactic.Ring.Common.atom_pf,rfland 30 more29 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
theorem card_lhs_lt_card_value (n : ℕ) (hn : 0 < n) : (lhsFinset n).card < (valueFinset n).card := by …Mentions: Imo1976P5.lhsFinset, Imo1976P5.valueFinset
- theorem
Imo1976P5.mapsToEach left-hand side is bounded by2n²when every |xⱼ| ≤ n line 84 sourceSource documentation
Each left-hand side is bounded by
2n²when every |xⱼ| ≤ n.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Fin,HMul.hMul,OfNat.ofNat,Int,Or,Eq,Neg.neg,Set.MapsTo, Imo1976P5.lhs,Finset, Imo1976P5.valueFinset, Imo1976P5.lhsFinsetProof uses:
Membership.mem,Set,Eq.mpr,Finset.Icc,HPow.hPow,id,Eq.trans,Fintype.piFinset,LE.le,abs,And,Trans.trans,Finset.sum,Finset.univ,Finset.abs_sum_le_sum_abs,Finset.sum_le_sum,congrArg,abs_mul,of_eq_true,Trueand 50 more105 instances, coercions and auxiliary constants left out.
Tactic trace: 18 steps
Open to load the checked before-and-after goal states.
theorem mapsTo (n : ℕ) (a : Fin n → Fin (2 * n) → ℤ) (ha : ∀ i j, a i j = 0 ∨ a i j = 1 ∨ a i j = -1) : Set.MapsTo (lhs n a) ↑(valueFinset n) ↑(lhsFinset n) := by …Mentions: Imo1976P5.lhs, Imo1976P5.valueFinset, Imo1976P5.lhsFinset
- problem
Imo1976P5.imo1976_p5line 109 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LT.lt,OfNat.ofNat,Fin,HMul.hMul,Int,Or,Eq,Neg.neg,Exists,And,LE.le,abs,Ne,Finset.sum,Finset.univProof uses:
Membership.mem,Finset, Imo1976P5.valueFinset, Imo1976P5.lhs,Finset.exists_ne_map_eq_of_card_lt_of_maps_to, Imo1976P5.lhsFinset, Imo1976P5.card_lhs_lt_card_value, Imo1976P5.mapsTo,Finset.Icc,Iff.mp,Fintype.piFinset,Fintype.mem_piFinset,Exists.intro,HSub.hSub,And.intro,Eq.mpr,id,congrArg,Pi.sub_apply,propextand 67 more103 instances, coercions and auxiliary constants left out.
Tactic trace: 24 steps
Open to load the checked before-and-after goal states.