Compfiles/Imo1976P4.lean
26 declarations, 0 contain sorry, 0 declared as axioms
International Mathematical Olympiad 1976, Problem 4
Determine, with proof, the largest number which is the product of positive integers whose sum is 1976.
Imports (2)
Imported by 1 file
- def
Imo1976P4.IsMaxProdline 28 sourcestandard axioms: propext what this means
Statement uses:
NatProof uses:
IsGreatest,Set.ofPred,Exists,Multiset,And,Eq,Multiset.sum,Multiset.prod3 instances, coercions and auxiliary constants left out.
- def
Imo1976P4.IsMaxProdSetline 33 sourcestandard axioms: propext what this means
Statement uses:
Multiset,NatProof uses: Imo1976P4.IsMaxProd,
Multiset.sum,Multiset.prod2 instances, coercions and auxiliary constants left out.
- def
Imo1976P4.resultline 36 sourceno axioms what this means
Statement uses:
Nat2 instances, coercions and auxiliary constants left out.
- lemma
Imo1976P4.prod_le_sum_pow_sumline 44 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Multiset,Nat,LE.le,Multiset.prod,HPow.hPow,Multiset.sumProof uses:
Multiset.induction,of_eq_true,OfNat.ofNat,Eq.trans,True,congrArg,pow_zero,Eq.mpr,Multiset.cons,HAdd.hAdd,id,Eq,Multiset.sum_cons,HMul.hMul,Multiset.prod_cons,dite,MulZeroClass.zero_mul,Nat.zero_le,Not,Trans.transand 15 more51 instances, coercions and auxiliary constants left out.
Tactic trace: 19 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.exists_mem_of_sum_lt_zeroline 65 sourcestandard axioms: propext what this means
Statement uses:
Multiset,Nat,LT.lt,OfNat.ofNat,Multiset.sum,Exists,Membership.memProof uses:
Ne,Mathlib.Tactic.Contrapose.contrapose₃,Eq,Eq.mpr,Not,LE.le,id,implies_congr,Eq.refl,congrArg,Multiset.sum_zero,le_refl,Multiset.exists_mem_of_ne_zero20 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.prod_with_given_sum_bddAboveline 72 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,BddAbove,Set.ofPred,Exists,Multiset,And,Eq,Multiset.sum,Multiset.prodProof uses:
Exists.intro,Membership.mem,Set,upperBounds,HPow.hPow,LE.le,Eq.mpr,id,congrArg,Eq.symm, Imo1976P4.prod_le_sum_pow_sum13 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.exists_max_prodline 80 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Exists, Imo1976P4.IsMaxProdProof uses:
BddAbove.exists_isGreatest_of_nonempty,Set.ofPred,Multiset,And,Eq,Multiset.sum,Multiset.prod, Imo1976P4.prod_with_given_sum_bddAbove,Exists.intro,Membership.mem,Set,Singleton.singleton,And.intro,Eq.mpr,id,congrArg,Multiset.sum_singleton,Eq.refl,Multiset.prod_singleton7 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.exists_max_prod_setline 90 sourcestandard axioms: propext what this means
Statement uses:
Nat, Imo1976P4.IsMaxProd,Exists,Multiset,And,Eq,Multiset.sum, Imo1976P4.IsMaxProdSetProof uses:
Multiset.prod,Membership.mem,Set,Set.ofPred,And.left,upperBounds,Exists.intro,And.intro,Eq.mpr,id,congrArg,Imo1976P4.IsMaxProdSet.eq_17 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.prod_le_max_prodline 99 sourcestandard axioms: Quot.sound, propext what this means
Statement uses:
Nat, Imo1976P4.IsMaxProd,Multiset,Eq,Multiset.sum,LE.le,Multiset.prodProof uses:
Membership.mem,Set,upperBounds,Set.ofPred,Exists,And,And.right,Eq.mp,congrFun',congrArg,funext,Eq.trans,forall_congr10 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.not_max_prod_set_of_prod_lt_prodline 105 sourcestandard axioms: Quot.sound, propext what this means
Statement uses:
Multiset,Nat,Eq,Multiset.sum,LT.lt,Multiset.prod,Not, Imo1976P4.IsMaxProdSetProof uses:
Mathlib.Tactic.Contrapose.contrapose₃,Eq.mpr,LE.le,id,implies_congr,Eq.refl,Membership.mem,Set,upperBounds,Set.ofPred,Exists,And,And.right,Eq.mp,congrFun',congrArg,funext,Eq.trans,forall_congr,Eq.symm17 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.exists_cons_le_of_le_of_sum_lt_sumline 112 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Multiset,Nat,LE.le,LT.lt,Multiset.sum,Exists,Multiset.consProof uses:
Ne,HSub.hSub,OfNat.ofNat,Mathlib.Tactic.Contrapose.contrapose₃,Eq,Eq.mpr,Not,id,implies_congr,Eq.refl,le_of_eq,Trans.trans,HAdd.hAdd,congrArg,Multiset.sub_add_cancel,Multiset.sum_add,Multiset.sum_zero,zero_add,Membership.mem,Multiset.exists_mem_of_ne_zeroand 7 more34 instances, coercions and auxiliary constants left out.
Tactic trace: 13 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.exists_le_of_mem_of_lt_sumline 128 sourcestandard axioms: Quot.sound, propext what this means
Statement uses:
Nat,Multiset,Membership.mem,LT.lt,Multiset.sum,Exists,LE.le,Insert.insert,Singleton.singletonProof uses:
Eq,Multiset.cons,Multiset.exists_cons_of_mem,Ne,OfNat.ofNat,Mathlib.Tactic.Contrapose.contrapose₃,Eq.mpr,Not,id,implies_congr,Eq.refl,congrArg,HAdd.hAdd,Multiset.sum_cons,Multiset.sum_zero,add_zero,le_refl,Multiset.exists_mem_of_ne_zero,Exists.intro,Multiset.insert_eq_consand 3 more31 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.zero_not_in_max_prod_setline 139 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Multiset,Nat, Imo1976P4.IsMaxProdSet,Not,Membership.mem,OfNat.ofNatProof uses:
Mathlib.Tactic.Contrapose.contrapose₃,Eq,Multiset.sum,Multiset.replicate,Eq.mpr,HSMul.hSMul,id,congrArg,Multiset.sum_replicate,HMul.hMul,Nat.nsmul_eq_mul,mul_one,Eq.refl, Imo1976P4.not_max_prod_set_of_prod_lt_prod,LT.lt,Multiset.prod,HPow.hPow,Multiset.prod_replicate,one_pow,Multiset.prod_eq_zeroand 4 more38 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.max_prod_set_of_subset_of_max_prod_setline 148 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Multiset,Nat,LE.le, Imo1976P4.IsMaxProdSetProof uses:
And.intro,Membership.mem,Set,Set.ofPred,Exists,And,Eq,Multiset.sum,Multiset.prod,upperBounds,Exists.intro,Eq.refl,GT.gt,HSub.hSub,OfNat.ofNat,Nat.zero_lt_of_ne_zero,Multiset.prod_ne_zero, Imo1976P4.zero_not_in_max_prod_set,Eq.mpr,LT.ltand 21 more51 instances, coercions and auxiliary constants left out.
Tactic trace: 25 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.one_not_in_max_prod_set_of_one_lt_sumline 174 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Multiset,Nat,LT.lt,OfNat.ofNat,Multiset.sum, Imo1976P4.IsMaxProdSet,Not,Membership.memProof uses:
LE.le,Insert.insert,Singleton.singleton,Exists,False, Imo1976P4.exists_le_of_mem_of_lt_sum, Imo1976P4.max_prod_set_of_subset_of_max_prod_set,Mathlib.Tactic.Contrapose.contrapose₁,Eq.mpr,True,id,Eq,implies_congr,not_false_eq_true,Eq.refl,HAdd.hAdd,congrArg,Multiset.sum_singleton,Multiset.cons,Multiset.insert_eq_consand 6 more27 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.not_in_max_prod_set_of_five_leline 186 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Multiset,Nat,LT.lt,OfNat.ofNat, Imo1976P4.IsMaxProdSet,Not,Membership.memProof uses:
Singleton.singleton, Imo1976P4.max_prod_set_of_subset_of_max_prod_set,Iff.mpr,LE.le,Multiset.singleton_le,Mathlib.Tactic.Contrapose.contrapose₁,False,Eq.mpr,True,id,Eq,implies_congr,not_false_eq_true,Eq.refl,Multiset.sum,Insert.insert,HSub.hSub,congrArg,Multiset.sum_singleton,Multiset.consand 10 more27 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.lt_and_gt_of_in_max_prod_set_of_four_lt_sumline 200 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Multiset,Nat,Membership.mem,LT.lt,OfNat.ofNat,Multiset.sum, Imo1976P4.IsMaxProdSet,AndProof uses:
Ne,Mathlib.Tactic.Contrapose.contrapose₃,Eq,Eq.mpr,Not,id,congrArg, Imo1976P4.zero_not_in_max_prod_set, Imo1976P4.one_not_in_max_prod_set_of_one_lt_sum,LE.le,Mathlib.Tactic.Contrapose.contrapose₁,implies_congr,Eq.refl, Imo1976P4.not_in_max_prod_set_of_five_le17 instances, coercions and auxiliary constants left out.
Tactic trace: 13 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.three_in_max_prod_set_of_four_lt_sumline 216 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Multiset,Nat,LT.lt,OfNat.ofNat,Multiset.sum, Imo1976P4.IsMaxProdSet,Membership.memProof uses:
Eq.mpr,Ne,Multiset.count,id,Eq,congrArg,Eq.symm,propext,Multiset.count_ne_zero,Nat.ne_zero_iff_zero_lt,LE.le,Finset,Multiset.toFinset,Insert.insert,Singleton.singleton,And, Imo1976P4.lt_and_gt_of_in_max_prod_set_of_four_lt_sum,Eq.mp,Multiset.mem_toFinset,And.leftand 60 more57 instances, coercions and auxiliary constants left out.
Tactic trace: 79 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.max_prod_zeroline 289 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1976P4.IsMaxProd,
OfNat.ofNat,NatProof uses:
And.intro,Membership.mem,Set,Set.ofPred,Exists,Multiset,And,Eq,Multiset.sum,Multiset.prod,upperBounds,Exists.intro,Eq.refl,LE.le,dite,Eq.mpr,id,congrArg,Eq.symm,Multiset.prod_zeroand 7 more28 instances, coercions and auxiliary constants left out.
Tactic trace: 18 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.max_prod_oneline 304 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1976P4.IsMaxProd,
OfNat.ofNat,NatProof uses:
And.intro,Membership.mem,Set,Set.ofPred,Exists,Multiset,And,Eq,Multiset.sum,Multiset.prod,upperBounds,Exists.intro,Singleton.singleton,Eq.refl,LE.le, Imo1976P4.exists_mem_of_sum_lt_zero,Eq.mpr,id,congrArg,Eq.symmand 25 more41 instances, coercions and auxiliary constants left out.
Tactic trace: 24 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.max_prod_twoline 324 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1976P4.IsMaxProd,
OfNat.ofNat,NatProof uses:
And.intro,Membership.mem,Set,Set.ofPred,Exists,Multiset,And,Eq,Multiset.sum,Multiset.prod,upperBounds,Exists.intro,Singleton.singleton,Eq.refl,LE.le, Imo1976P4.exists_mem_of_sum_lt_zero,Eq.mpr,id,congrArg,Eq.symmand 26 more42 instances, coercions and auxiliary constants left out.
Tactic trace: 27 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.max_prod_threeline 346 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1976P4.IsMaxProd,
OfNat.ofNat,NatProof uses:
And.intro,Membership.mem,Set,Set.ofPred,Exists,Multiset,And,Eq,Multiset.sum,Multiset.prod,upperBounds,Exists.intro,Singleton.singleton,Eq.refl,LE.le, Imo1976P4.exists_mem_of_sum_lt_zero,Eq.mpr,id,congrArg,Eq.symmand 27 more43 instances, coercions and auxiliary constants left out.
Tactic trace: 30 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1976P4.max_prod_fourline 370 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1976P4.IsMaxProd,
OfNat.ofNat,NatProof uses:
And.intro,Membership.mem,Set,Set.ofPred,Exists,Multiset,And,Eq,Multiset.sum,Multiset.prod,upperBounds,Exists.intro,Singleton.singleton,Eq.refl,LE.le, Imo1976P4.exists_mem_of_sum_lt_zero,Eq.mpr,id,congrArg,Eq.symmand 28 more44 instances, coercions and auxiliary constants left out.
Tactic trace: 33 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1976P4.generalizedline 396 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo1976P4.IsMaxProd, Imo1976P4.resultProof uses:
Imo1976P4.result.induct_unfolding, Imo1976P4.max_prod_zero, Imo1976P4.max_prod_one, Imo1976P4.max_prod_two, Imo1976P4.max_prod_three, Imo1976P4.max_prod_four,Eq,OfNat.ofNat,False,HAdd.hAdd,Exists,Nat.succ,HMul.hMul, Imo1976P4.exists_max_prod,Multiset,And,Multiset.sum, Imo1976P4.IsMaxProdSet, Imo1976P4.exists_max_prod_set,LT.ltand 31 more35 instances, coercions and auxiliary constants left out.
Tactic trace: 33 steps
Open to load the checked before-and-after goal states.
- determine
Imo1976P4.solutionline 435 sourceno axioms what this means
Statement uses:
NatProof uses: Imo1976P4.result,
OfNat.ofNat1 instances, coercions and auxiliary constants left out.
- problem
Imo1976P4.imo1976_p4line 437 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
IsGreatest,Nat,Set.ofPred,Exists,Multiset,And,Eq,Multiset.sum,OfNat.ofNat,Multiset.prod, Imo1976P4.solutionProof uses: Imo1976P4.generalized
5 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.