Compfiles/Imo1985P4.lean
14 declarations, 0 contain sorry, 0 declared as axioms
International Mathematical Olympiad 1985, Problem 4
Given a set M of 1985 distinct positive integers, none of which has a prime divisor greater than 23, prove that M contains a subset of 4 elements whose product is the 4th power of an integer.
Imports (2)
Imported by 1 file
- lemma
Imo1985P4.extended_pigeonholeline 31 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
DecidableEq,Finset,Membership.mem,Nat,LE.le,HSub.hSub,HAdd.hAdd,HMul.hMul,OfNat.ofNat,Finset.card,Exists,And,Eq,Set.PairwiseDisjoint,idProof uses:
Nat.recAux,Exists.intro,EmptyCollection.emptyCollection,of_eq_true,Eq.trans,True,congr,congrArg,eq_self,forall_congr,False,implies_congr,Eq.refl,implies_true,Set,congrFun',Finset.coe_empty,and_self,SDiff.sdiff,Finset.disjiUnionand 45 more69 instances, coercions and auxiliary constants left out.
Tactic trace: 92 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1985P4.double_pigeonholeline 115 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
DecidableEq,Finset,Membership.mem,LE.le,Nat,HAdd.hAdd,HMul.hMul,OfNat.ofNat,Finset.card,Exists,And,Eq,DisjointProof uses:
HSub.hSub,Set.PairwiseDisjoint,id, Imo1985P4.extended_pigeonhole,LT.lt,Set.MapsTo,Set,Eq.mpr,congrArg,propext,Finset.mem_coe,Eq.mp,Ne,Finset.exists_ne_map_eq_of_card_lt_of_maps_to,Exists.intro,And.intro33 instances, coercions and auxiliary constants left out.
Tactic trace: 28 steps
Open to load the checked before-and-after goal states.
- def
Imo1985P4.pow_of_kth_prime_mod_twoline 143 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
NatProof uses:
HMod.hMod,padicValNat,Nat.nth,Nat.Prime,OfNat.ofNat3 instances, coercions and auxiliary constants left out.
- def
Imo1985P4.two_pow_k_finsetline 146 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,Membership.mem,Finset.rangeProof uses:
Finset.pi,OfNat.ofNat4 instances, coercions and auxiliary constants left out.
- def
Imo1985P4.pow_of_first_k_prime_mod_twoline 148 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Membership.mem,Finset,Finset.rangeProof uses: Imo1985P4.pow_of_kth_prime_mod_two
4 instances, coercions and auxiliary constants left out.
- lemma
Imo1985P4.pow_of_first_k_prime_mod_two_mem_two_pow_k_finsetline 151 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Membership.mem,Finset,Finset.range, Imo1985P4.two_pow_k_finset, Imo1985P4.pow_of_first_k_prime_mod_twoProof uses:
Eq.mpr,Finset.pi,OfNat.ofNat,id,Eq,congrArg,Imo1985P4.two_pow_k_finset.eq_1,propext,Finset.mem_pi,LT.lt,HMod.hMod,padicValNat,Nat.nth,Nat.Prime,Nat.mod_lt,Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.false18 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1985P4.square_of_pow_of_pow_of_kth_prime_mod_two_eqline 159 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Ne,OfNat.ofNat,Eq, Imo1985P4.pow_of_kth_prime_mod_two,Exists,HMul.hMul,HPow.hPowProof uses:
Finset.prod,Finset.filter,Nat.Prime,Finset.range,HAdd.hAdd,HDiv.hDiv,padicValNat,Exists.intro,Nat.mul_ne_zero,Eq.mpr,id,congrArg,Eq.symm,Nat.prod_pow_prime_padicValNat,Finset.prod_pow,Finset.prod_congr,rfl,Finset,Membership.mem,And.rightand 20 more41 instances, coercions and auxiliary constants left out.
Tactic trace: 21 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1985P4.padicValNat_eq_zero_of_divisorsline 184 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Ne,OfNat.ofNat,And,Nat.Prime,Dvd.dvd,LE.le,Nat.nth,LT.lt,Eq,padicValNatProof uses:
Decidable.byContradiction,Not,Fact,Fact.mk,Nat.prime_nth_prime,And.intro,Eq.mp,congrArg,Eq.symm,propext,dvd_iff_padicValNat_ne_zero,Nat.nth_le_nth,Nat.infinite_setOfPred_prime10 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1985P4.square_of_pow_of_first_k_prime_mod_two_eqline 194 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Ne,OfNat.ofNat,Eq,Membership.mem,Finset,Finset.range,HAdd.hAdd, Imo1985P4.pow_of_first_k_prime_mod_two,And,Nat.Prime,Dvd.dvd,LE.le,Nat.nth,Exists,HMul.hMul,HPow.hPowProof uses: Imo1985P4.pow_of_kth_prime_mod_two,
dite,Eq.mp,congrArg,propext,funext_iff,Iff.mpr,Nat.succ,Finset.mem_range_succ_iff,Not,id,Eq.mpr,HMod.hMod,padicValNat, Imo1985P4.padicValNat_eq_zero_of_divisors,LT.lt,Eq.refl, Imo1985P4.square_of_pow_of_pow_of_kth_prime_mod_two_eq28 instances, coercions and auxiliary constants left out.
Tactic trace: 17 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1985P4.prod_square_of_pow_of_first_k_prime_mod_two_eqline 216 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Nat,Membership.mem,And,Nat.Prime,Dvd.dvd,LE.le,Nat.nth,LT.lt,OfNat.ofNat,Eq,Finset.card,Exists,Finset.range,HAdd.hAdd, Imo1985P4.pow_of_first_k_prime_mod_two,Finset.prod,id,HPow.hPowProof uses:
Ne,Insert.insert,Singleton.singleton,Eq.mp,congrArg,propext,Finset.card_eq_two,Eq.mpr,HMul.hMul,Finset.prod_insert,Iff.mpr,Not,Finset.notMem_singleton,Finset.prod_singleton,id_eq,of_eq_true,Eq.trans,Or,True,congrFun'and 7 more44 instances, coercions and auxiliary constants left out.
Tactic trace: 17 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1985P4.sqrt_prod_subset_ne_zeroline 238 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Nat,Membership.mem,LT.lt,OfNat.ofNat,LE.le,Eq,Finset.prod,id,HPow.hPow,NeProof uses:
Mathlib.Tactic.Contrapose.contrapose₃,Not,Eq.mpr,congrArg,congr,Finset.prod_congr,Eq.refl,zero_pow,of_eq_true,Eq.trans,False,True,not_false_eq_true,Exists,And,propext,Finset.prod_eq_zero_iff,binderNameHint,forall_congr,Mathlib.Tactic.Push.not_and_eqand 2 more48 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1985P4.sqrt_divisors_subsetline 249 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Nat,Membership.mem,And,Nat.Prime,Dvd.dvd,LE.le,Nat.nth,Eq,Finset.prod,id,HPow.hPow,OfNat.ofNatProof uses:
Exists,Prime.exists_mem_finset_dvd,Nat.Prime.prime,Eq.mp,congrArg,Eq.symm,propext,Prime.dvd_pow_iff_dvd,Mathlib.Meta.NormNum.isNat_eq_false,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.false,And.intro36 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1985P4.generalizedline 259 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Nat,LE.le,HAdd.hAdd,HMul.hMul,OfNat.ofNat,HPow.hPow,Finset.card,Membership.mem,LT.lt,And,Nat.Prime,Dvd.dvd,Nat.nth,Exists,Eq,Finset.prod,idProof uses:
Finset.range, Imo1985P4.pow_of_first_k_prime_mod_two, Imo1985P4.two_pow_k_finset, Imo1985P4.pow_of_first_k_prime_mod_two_mem_two_pow_k_finset,Nat.sqrt,Eq.mpr,Finset.pi,congrArg,Imo1985P4.two_pow_k_finset.eq_1,Finset.card_pi,Finset.card_range,Finset.prod_const,Disjoint, Imo1985P4.double_pigeonhole,Exists.intro,Union.union,And.intro,Finset.union_subset,Eq.mp,Eq.symmand 14 more50 instances, coercions and auxiliary constants left out.
Tactic trace: 32 steps
Open to load the checked before-and-after goal states.
- problem
Imo1985P4.imo1985_p4line 299 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Nat,Eq,Finset.card,OfNat.ofNat,Membership.mem,LT.lt,Nat.primeFactors,LE.le,Exists,And,Finset.prod,id,HPow.hPowProof uses:
Nat.Prime,Dvd.dvd,Eq.mpr,congrArg,Eq.symm,propext,Nat.mem_primeFactors_of_ne_zero,Ne.symm,LT.lt.ne,Nat.nth,Nat.count,of_decide_eq_true,Bool,Decidable.decide,Bool.true,Eq.refl,Nat.nth_count,HAdd.hAdd,HMul.hMul,of_eq_trueand 16 more39 instances, coercions and auxiliary constants left out.
Tactic trace: 14 steps
Open to load the checked before-and-after goal states.