Compfiles/Imo2015P2.lean
10 declarations, 0 contain sorry, 0 declared as axioms
International Mathematical Olympiad 2015, Problem 2
Determine all triples of positive integers a, b, c such that each of ab - c, bc - a, ca - b is a power of two.
Imports (2)
Imported by 1 file
- determine
Imo2015P2.SolutionSetline 26 sourceno axioms what this means
Statement uses:
Set,Prod,IntProof uses:
Insert.insert,Prod.mk,OfNat.ofNat,Singleton.singleton3 instances, coercions and auxiliary constants left out.
- def
Imo2015P2.is_power_of_twoline 35 sourcestandard axioms: propext what this means
Statement uses:
IntProof uses:
Exists,Nat,Eq,HPow.hPow,OfNat.ofNat5 instances, coercions and auxiliary constants left out.
- lemma
Imo2015P2.pow_of_two_coprime_oddline 39 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Int,Not,Dvd.dvd,OfNat.ofNat,IsCoprime,HPow.hPowProof uses:
Eq.mpr,Nat.Coprime,Int.natAbs,id,Eq,congrArg,propext,Int.isCoprime_iff_nat_coprime,Int.natAbs_pow,Eq.symm,Int.ofNat_two,Int.natAbs_natCast,Nat.coprime_comm,Nat.Prime.coprime_pow_of_not_dvd,Nat.prime_two,Int.ofNat_dvd,Int.dvd_natAbs21 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2015P2.pow_of_two_dvd_odd_mul_self_sub_1line 47 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Int,Not,Dvd.dvd,OfNat.ofNat,LT.lt,HPow.hPow,HSub.hSub,LE.le,HAdd.hAdd,HMul.hMulProof uses:
Eq,Exists,Eq.mp,Odd,congrArg,propext,odd_iff_exists_bit1,HMod.hMod,Eq.symm,Int.odd_iff,Int.two_dvd_ne_zero,Eq.mpr,id,dite,IsCoprime.dvd_of_dvd_mul_right, Imo2015P2.pow_of_two_coprime_odd,Even,even_iff_two_dvd,Int.not_even_iff_odd,Even.add_oneand 54 more75 instances, coercions and auxiliary constants left out.
Tactic trace: 25 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2015P2.dvd_pow_of_twoline 72 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Int,LE.le,OfNat.ofNat,Dvd.dvd,HPow.hPow,Exists,EqProof uses:
CanLift.prf,And,Iff.mp,Nat.dvd_prime_pow,Nat.prime_two,Eq.mp,Eq.trans,congrArg,Exists.intro,cast,Eq.symm36 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2015P2.odd_dvd_pow_of_twoline 79 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Int,Not,Dvd.dvd,OfNat.ofNat,LE.le,HPow.hPow,EqProof uses:
Exists, Imo2015P2.dvd_pow_of_two,Eq.mpr,id,congrArg,Mathlib.Tactic.Contrapose.contrapose₂,Ne,dvd_pow_self,Mathlib.Tactic.Contrapose.contrapose₄,Mathlib.Meta.NormNum.isNat_eq_true,Mathlib.Meta.NormNum.isNat_pow,Eq.refl,Mathlib.Meta.NormNum.isNat_ofNat,Mathlib.Meta.NormNum.natPow_zero,Eq.mp21 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2015P2.sq_pow_of_two_sub_twoline 89 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Int,LE.le,OfNat.ofNat,Dvd.dvd,HPow.hPow,HSub.hSub,EqProof uses:
Eq.mpr,id,congrArg,propext,sub_nonneg,Trans.trans,Mathlib.Meta.NormNum.isNat_le_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Mathlib.Meta.NormNum.isNat_pow,Mathlib.Meta.NormNum.IsNatPowT.run,Mathlib.Meta.NormNum.IsNatPowT.bit0,Bool,Bool.true,Iff.mpr,pow_le_pow_iff_left₀,Mathlib.Meta.NormNum.isNat_eq_false,Bool.false,Exists, Imo2015P2.dvd_pow_of_two and 86 more143 instances, coercions and auxiliary constants left out.
Tactic trace: 46 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2015P2.swap_ab_solutionline 134 sourcestandard axioms: propext what this means
Statement uses:
Int,Iff,Membership.mem,Prod,Set, Imo2015P2.SolutionSet,Prod.mkProof uses:
Eq.mpr,Or,And,Eq,OfNat.ofNat,id,congr,congrArg,Eq.trans,Insert.insert,Singleton.singleton,Prod.mk.injEq,Iff.intro,of_eq_true,True,False,eq_true,Mathlib.Meta.NormNum.isNat_eq_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refland 12 more13 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2015P2.swap_bc_solutionline 139 sourcestandard axioms: propext what this means
Statement uses:
Int,Iff,Membership.mem,Prod,Set, Imo2015P2.SolutionSet,Prod.mkProof uses:
Eq.mpr,Or,And,Eq,OfNat.ofNat,id,congr,congrArg,Eq.trans,Insert.insert,Singleton.singleton,Prod.mk.injEq,Iff.intro,of_eq_true,True,False,eq_true,Mathlib.Meta.NormNum.isNat_eq_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refland 12 more13 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- problem
Imo2015P2.imo2015_p2line 146 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Int,Iff,Membership.mem,Prod,Set, Imo2015P2.SolutionSet,Prod.mk,And,LT.lt,OfNat.ofNat, Imo2015P2.is_power_of_two,HSub.hSub,HMul.hMulProof uses:
LE.le,Not,Or,Classical.em,Iff.intro,Eq.mpr,Eq,Exists,Nat,HPow.hPow,id,implies_congr,Insert.insert,Singleton.singleton,Eq.trans,congr,congrArg,Prod.mk.injEq,Eq.refl,Exists.introand 186 more217 instances, coercions and auxiliary constants left out.
Tactic trace: 309 steps (first 200 of 309)
Open to load the checked before-and-after goal states.