Compfiles/Imo1998P6.lean
34 declarations, 0 contain sorry, 0 declared as axioms
International Mathematical Olympiad 1998, Problem 6
Determine the least possible value of f(1998), where f : ℕ+ → ℕ+ satisfies
f(n^2 * f(m)) = m * f(n)^2 for all m, n ∈ ℕ+.
Imports (2)
Imported by 1 file
- lemma
Imo1998P6.f_f_eqline 33 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNatProof uses:
Eq.mp,congrFun',congrArg,Eq.trans,one_pow,one_mul24 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.f_injectiveline 37 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNat,Function.InjectiveProof uses: Imo1998P6.f_f_eq,
cast,Eq.symm,Eq.trans,Eq.mp,congrArg,propext,PNat.coe_inj,Nat.mul_left_inj,ne_of_gt,pow_pos,PNat.pos32 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.f_sq_dline 46 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNatProof uses:
Eq.mp,congrArg,one_mul21 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.f_prod_eqline 49 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNatProof uses:
Eq.mpr,eq_of_heq,HEq,Eq.refl,HEq.refl,Eq.symm,of_eq_true,Eq.trans,True,congrArg,congrFun',one_mul,eq_self,congr,mul_assoc,mul_pow,mul_comm,mul_left_comm, Imo1998P6.f_f_eq,forall_congrand 10 more57 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.f_d_mulline 57 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNatProof uses: Imo1998P6.f_prod_eq,
Eq.mp,congrArg,congrFun',mul_one21 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.f_mul_relline 61 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNatProof uses:
Eq.mpr,id,congrArg, Imo1998P6.f_prod_eq, Imo1998P6.f_d_mul,mul_assoc,Eq.refl22 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.f1_dvdline 64 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNat,Dvd.dvdProof uses:
GT.gt,HSub.hSub,Nat.le.rec,Nat.succ,of_eq_true,Eq.trans,True,congr,congrArg,zero_add,pow_succ,congrFun',pow_zero,mul_comm,mul_one,tsub_self,eq_self,Nat.le,Eq.mpr,idand 121 more187 instances, coercions and auxiliary constants left out.
Tactic trace: 30 steps
Open to load the checked before-and-after goal states.
- def
Imo1998P6.gfline 92 sourcestandard axioms: propext what this means
Statement uses:
PNat,NatProof uses:
HDiv.hDiv,OfNat.ofNat5 instances, coercions and auxiliary constants left out.
- lemma
Imo1998P6.gf_specline 94 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNat, Imo1998P6.gfProof uses:
Eq.mpr,HDiv.hDiv,id,congrArg,Imo1998P6.gf.eq_1,Nat.mul_div_cancel', Imo1998P6.f1_dvd,Eq.refl27 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.gf_posline 97 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNat,LT.lt, Imo1998P6.gfProof uses:
Eq.mpr,HDiv.hDiv,id,congrArg,Imo1998P6.gf.eq_1,Nat.div_pos,Nat.le_of_dvd,PNat.pos, Imo1998P6.f1_dvd23 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.gf_oneline 102 sourcestandard axioms: propext what this means
Statement uses:
PNat,Eq,Nat, Imo1998P6.gf,OfNat.ofNatProof uses:
Eq.mpr,HDiv.hDiv,id,congrArg,Imo1998P6.gf.eq_1,Nat.div_self,PNat.pos,Eq.refl10 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.gf_mulline 105 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNat, Imo1998P6.gfProof uses:
id,Eq.mpr,HDiv.hDiv,congrArg,Nat.div_mul_div_comm, Imo1998P6.f1_dvd,Eq.symm,PNat.mul_coe, Imo1998P6.f_mul_rel,of_eq_true,Eq.trans,True,Nat.mul_div_mul_left,LT.lt,eq_true,True.intro,eq_self26 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.gf_involline 113 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNat, Imo1998P6.gf,Subtype.mk,LT.lt, Imo1998P6.gf_posProof uses:
Eq.mpr,eq_of_heq,HEq,Eq.refl,HEq.refl,Eq.symm,id,congrArg,Eq.trans,congrFun',one_pow,mul_comm,mul_one,PNat.eq, Imo1998P6.gf_spec,Mathlib.Tactic.Ring.of_lift,Mathlib.Tactic.Ring.CSLift.lift,Mathlib.Tactic.Ring.of_eq,HAdd.hAdd,Nat.rawCastand 79 more129 instances, coercions and auxiliary constants left out.
Tactic trace: 17 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.gf_primeline 126 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNat,Nat.Prime, Imo1998P6.gfProof uses:
Iff.mpr,And,LE.le,LT.lt,Not,Dvd.dvd,Nat.prime_def_lt',And.intro,Decidable.byContradiction,dite,False,Subtype.mk, Imo1998P6.gf_pos, Imo1998P6.gf_invol,absurd,NeZero.mk,LT.lt.ne',Eq.mp,congrFun',congrArgand 96 more117 instances, coercions and auxiliary constants left out.
Tactic trace: 39 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.f_1998_eqline 148 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNat, Imo1998P6.gfProof uses:
Eq.mpr,id,congrArg, Imo1998P6.gf_spec,Eq.refl,congrFun',Eq.trans, Imo1998P6.gf_mul,Mathlib.Tactic.Ring.of_eq,HAdd.hAdd,Nat.rawCast,Mathlib.Tactic.Ring.Common.mul_congr,Mathlib.Tactic.Ring.Common.atom_pf,rfl,Eq.symm,Mathlib.Tactic.Ring.Common.add_mul,Mathlib.Tactic.Ring.Common.mul_add,Mathlib.Tactic.Ring.Common.mul_pf_left,Mathlib.Tactic.Ring.Common.mul_pf_right,Mathlib.Meta.NormNum.IsNat.to_raw_eqand 16 more40 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1998P6.f_1998_geline 155 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNat,LE.leProof uses:
Nat.Prime,And,Ne,GE.ge,dite,Nat.casesAuxOn,False.elim,Eq.mp,False,eq_false_of_decide,Eq.refl,Bool,Bool.false,HAdd.hAdd,eq_false,Eq.trans,True,congr,congrArg,congrFun'and 122 more138 instances, coercions and auxiliary constants left out.
Tactic trace: 41 steps
Open to load the checked before-and-after goal states.
- def
Imo1998P6.primeSwapline 179 sourceno axioms what this means
Statement uses:
NatProof uses:
Imo1998P6.primeSwap.match_1,Unit,OfNat.ofNat1 instances, coercions and auxiliary constants left out.
- def
Imo1998P6.gline 182 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
NatProof uses:
List.prod,List.map, Imo1998P6.primeSwap,Nat.primeFactorsList2 instances, coercions and auxiliary constants left out.
- lemma
Imo1998P6.primeSwap_involline 184 sourcestandard axioms: propext what this means
Statement uses:
Nat,Eq, Imo1998P6.primeSwapProof uses:
dite,OfNat.ofNat,Eq.refl,Eq.symm,Not,of_eq_true,Eq.trans,True,congrFun',congrArg,Imo1998P6.primeSwap.match_1,Unit,eq_self4 instances, coercions and auxiliary constants left out.
Tactic trace: 12 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.primeSwap_primeline 189 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Nat.Prime, Imo1998P6.primeSwapProof uses:
dite,Or,Eq,OfNat.ofNat,of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl,Eq.symm,Not,of_eq_true,Eq.trans,True,congrArg,Unit,False,implies_congr,eq_falseand 4 more9 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.g_mulline 194 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Ne,OfNat.ofNat,Eq, Imo1998P6.g,HMul.hMulProof uses:
id,List.Perm,List.map, Imo1998P6.primeSwap,Nat.primeFactorsList,HAppend.hAppend,List,List.Perm.map,Nat.perm_primeFactorsList_mul,Eq.mpr,List.prod,congrArg,List.Perm.prod_eq,Eq.mp,List.map_append,List.prod_append,Eq.refl18 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.g_primeline 200 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Nat.Prime,Eq, Imo1998P6.g, Imo1998P6.primeSwapProof uses:
of_eq_true,Eq.trans,True,congrFun',congrArg,List.prod,List.map,Nat.primeFactorsList,List.cons,List.nil,List,Nat.primeFactorsList_prime,List.map_cons,List.map_nil,mul_one,eq_self3 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.g_ne_zeroline 203 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Ne, Imo1998P6.g,OfNat.ofNatProof uses:
id,List.prod_ne_zero,List.map, Imo1998P6.primeSwap,Nat.primeFactorsList,Eq.mpr,Not,Membership.mem,List,Exists,And,Eq,congrArg,propext,List.mem_map,Eq.trans,binderNameHint,forall_congr,Mathlib.Tactic.Push.not_and_eq,Nat.Prime.ne_zeroand 2 more19 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.g_posline 208 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LT.lt,OfNat.ofNat, Imo1998P6.gProof uses:
Nat.pos_of_ne_zero, Imo1998P6.g_ne_zero2 instances, coercions and auxiliary constants left out.
- lemma
Imo1998P6.g_involline 210 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Ne,OfNat.ofNat,Eq, Imo1998P6.gProof uses:
Nat.strongRecOn,LT.lt,dite,of_eq_true,Eq.trans,True,congrFun',congrArg,List,List.map, Imo1998P6.primeSwap,Nat.primeFactorsList,List.nil,List.prod,Nat.primeFactorsList_one,List.map_nil,eq_self,Eq.symm,Not,Andand 91 more107 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.g_func_eqline 224 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Ne,OfNat.ofNat,Eq, Imo1998P6.g,HMul.hMul,HPow.hPowProof uses:
Eq.mpr,id,congrArg, Imo1998P6.g_mul,pow_ne_zero, Imo1998P6.g_ne_zero,sq, Imo1998P6.g_invol,mul_comm,Eq.refl34 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.g_1998line 227 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Nat, Imo1998P6.g,OfNat.ofNat2 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- def
Imo1998P6.gPNatline 229 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNatProof uses:
Subtype.mk,Nat,LT.lt,OfNat.ofNat, Imo1998P6.g4 instances, coercions and auxiliary constants left out.
- lemma
Imo1998P6.gPNat_func_eqline 231 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Eq, Imo1998P6.gPNat,HMul.hMul,HPow.hPow,Nat,OfNat.ofNatProof uses:
PNat.eq,id,Eq.mpr, Imo1998P6.g,congrArg,PNat.mul_coe,PNat.pow_coe, Imo1998P6.g_func_eq,PNat.ne_zero19 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1998P6.gPNat_1998line 239 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,PNat, Imo1998P6.gPNat,OfNat.ofNat,NatProof uses:
PNat.eq,of_eq_true,Eq.trans,True,congrFun',congrArg,NeZero.mk,LT.lt.ne', Imo1998P6.g,LT.lt, Imo1998P6.g_1998,Subtype.mk.congr_simp,eq_self13 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1998P6.imo1998_p6_memline 245 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Membership.mem,PNat,Set,Set.ofPred,Exists,And,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNatProof uses:
Exists.intro, Imo1998P6.gPNat,And.intro, Imo1998P6.gPNat_func_eq, Imo1998P6.gPNat_199821 instances, coercions and auxiliary constants left out.
- theorem
Imo1998P6.imo1998_p6_lbline 249 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
PNat,Membership.mem,Set,Set.ofPred,Exists,And,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNat,LE.leProof uses:
Eq.mpr,id,congrArg,Eq.symm, Imo1998P6.f_1998_ge37 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- determine
Imo1998P6.answerline 258 sourcestandard axioms: propext what this means
Statement uses:
PNatProof uses:
OfNat.ofNat2 instances, coercions and auxiliary constants left out.
- problem
Imo1998P6.imo1998_p6line 260 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
IsLeast,PNat,Set.ofPred,Exists,And,Eq,HMul.hMul,HPow.hPow,Nat,OfNat.ofNat, Imo1998P6.answerProof uses:
And.intro,Membership.mem,Set,lowerBounds, Imo1998P6.imo1998_p6_mem, Imo1998P6.imo1998_p6_lb35 instances, coercions and auxiliary constants left out.