Compfiles/Imo1990P4.lean
32 declarations, 0 contain sorry, 0 declared as axioms
International Mathematical Olympiad 1990, Problem 4
Let $\mathbb{Q^+}$ be the set of positive rational numbers. Construct a function $f :\mathbb{Q^+}\rightarrow\mathbb{Q^+}$ such that $f(xf(y)) = \frac{f(x)}{y}$ for all $x, y\in\mathbb{Q^+}$.
Imports (6)
Imported by 1 file
- abbrev
Imo1990P4.PRatline 32 sourcestandard axioms: Quot.sound, propext what this means
Proof uses:
Subtype,Rat,LT.lt,OfNat.ofNat2 instances, coercions and auxiliary constants left out.
- theorem
Imo1990P4.Nat.Primes.toPnat_valline 42 sourcestandard axioms: propext what this means
Statement uses:
Nat.Primes,Eq,Nat,Nat.PrimeProof uses:
Eq.refl5 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.Nat.Primes.PNat_mk_valline 46 sourcestandard axioms: propext what this means
Statement uses:
Nat.Primes,LT.lt,Nat,OfNat.ofNat,Nat.Prime,Eq,Subtype,Subtype.mkProof uses:
Eq.refl7 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.PRat.num_toNatline 50 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P4.PRat,
Eq,Int,Int.toNat,Rat.num,Rat,LT.lt,OfNat.ofNatProof uses:
Eq.mpr,LE.le,id,Eq.trans,Max.max,congrFun',congrArg,Int.ofNat_toNat,le_of_lt,Subtype.prop21 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.PRat.cast_num_toNatline 56 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P4.PRat,
Eq,Rat,Int.toNat,Rat.num,LT.lt,OfNat.ofNatProof uses:
Eq.mpr,Int,id,congrArg,Eq.symm,Iff.mpr,LE.le,Int.natCast_toNat_eq_self,le_of_lt,Subtype.prop,Eq.refl20 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.PRat.num_toNat_div_denline 64 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P4.PRat,
Eq,Rat,HDiv.hDiv,Int.toNat,Rat.num,LT.lt,OfNat.ofNat,Rat.denProof uses:
Eq.mpr,id,congrFun',congrArg, Imo1990P4.PRat.cast_num_toNat,Rat.num_div_den,Eq.refl16 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- instance
Imo1990P4.coePRatNNRatline 69 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Coe, Imo1990P4.PRat,NNRatProof uses:
Coe.mk,Imo1990P4.coePRatNNRat.match_1,Rat,LT.lt,OfNat.ofNat,Subtype.mk,LE.le4 instances, coercions and auxiliary constants left out.
- instance
Imo1990P4.coePrimesPRatline 73 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Coe,Nat.Primes, Imo1990P4.PRatProof uses:
Coe.mk,Subtype.mk,Rat,LT.lt,OfNat.ofNat,Nat,Nat.Prime6 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.PRat.prime_inductionline 78 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P4.PRat,
OfNat.ofNat,Rat,Nat.Primes,HMul.hMul,Subtype,LT.lt,Subtype.mk,Nat,Nat.Prime,HDiv.hDivProof uses:
Prod,Prod.fst,Prod.snd,Eq.mpr,id,Eq,induction_on_primes,of_eq_true,Eq.trans,True,forall_congr,False,Eq.substr,congrArg,congrFun',CharP.cast_eq_zero,zero_div,forall_prop_domain_congr,Subtype.mk.congr_simp,implies_trueand 93 more162 instances, coercions and auxiliary constants left out.
Tactic trace: 95 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.PRat.mk_mul_mkline 159 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Rat,LT.lt,OfNat.ofNat,Eq,Subtype,HMul.hMul,Subtype.mk,Rat.mul_posProof uses:
Subtype.coe_eq_of_eq_mk,rfl16 instances, coercions and auxiliary constants left out.
- theorem
Imo1990P4.just_for_fun.f_one_eq_oneline 167 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P4.PRat,
Eq,HMul.hMul,Rat,HDiv.hDiv,OfNat.ofNatProof uses:
Eq.symm,Eq.mp,congrArg,congr,one_mul,div_one,div_self'36 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.just_for_fun.f_mul_homline 176 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P4.PRat,
Eq,HMul.hMul,Rat,HDiv.hDivProof uses:
OfNat.ofNat,id,Eq.mpr,Inv.inv,congrArg,one_div,Eq.symm,propext,div_eq_one,Eq.mp,congr,Eq.trans,congrFun',inv_mul_cancel, Imo1990P4.just_for_fun.f_one_eq_one,of_eq_true,True,div_inv_eq_mul,eq_self39 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.just_for_fun.f_chainline 189 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P4.PRat,
Eq,HMul.hMul,Rat,HDiv.hDiv,OfNat.ofNatProof uses:
Eq.mpr,id,congrArg,of_eq_true,Eq.trans,True,one_mul,eq_self, Imo1990P4.just_for_fun.f_one_eq_one,Eq.refl30 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- instance
Imo1990P4.PRat.coePNatline 195 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Coe,PNat, Imo1990P4.PRatProof uses:
Coe.mk,Subtype.mk,Rat,LT.lt,OfNat.ofNat6 instances, coercions and auxiliary constants left out.
- theorem
Imo1990P4.Set.Infinite.exists_union_disjoint_infinite_of_infiniteline 199 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Set,Set.Infinite,Exists,And,Eq,Union.union,DisjointProof uses:
Cardinal,Cardinal.mk,Set.Infinite.exists_union_disjoint_cardinal_eq_of_infinite,Exists.intro,Eq.mpr,id,Eq.trans,True,congr,congrArg,congrFun',eq_self,eq_true,true_and,Infinite,Eq.symm,propext,Set.infinite_coe_iff,LE.le,Cardinal.aleph0and 10 more31 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
- def
Imo1990P4.PNat.mk_mul_hom_funline 212 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommMonoid,Nat,MulHom,PNatProof uses:
MulHom.mk,List.prod,List.map,Nat.primeFactorsList13 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.PNat.mk_mul_hom_fun.nonZeroline 221 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommMonoidWithZero,NoZeroDivisors,Nontrivial,Nat,Nat.Prime,Not,Eq,OfNat.ofNat,PNat,Ne,MulHom, Imo1990P4.PNat.mk_mul_hom_funProof uses:
id,Eq.mpr,MulHom.mk,List.prod,List.map,Nat.primeFactorsList,Dvd.dvd,Eq.trans,And,Exists,congrArg,Membership.mem,List,funext,congrFun',True,False,not_false_eq_true,and_true,forall_congr42 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.PNat.mk_mul_hom_fun.primeline 231 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommMonoid,Nat,Nat.Primes,Eq,MulHom,PNat, Imo1990P4.PNat.mk_mul_hom_fun,Nat.PrimeProof uses:
id,Eq.mpr,MulHom.mk,List.prod,List.map,Nat.primeFactorsList,congrFun',congrArg,List, Imo1990P4.Nat.Primes.toPnat_val,List.cons,List.nil,Nat.primeFactorsList_prime,Subtype.prop,of_eq_true,Eq.trans,True,List.map_cons,List.map_nil,mul_oneand 1 more21 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.PNat.mk_mul_hom_fun.oneline 241 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommMonoid,Nat,Eq,MulHom,PNat, Imo1990P4.PNat.mk_mul_hom_fun,OfNat.ofNatProof uses:
id,of_eq_true,MulHom.mk,List.prod,List.map,Nat.primeFactorsList,Eq.trans,True,congrFun',congrArg,List,List.nil,Nat.primeFactorsList_one,List.map_nil,eq_self26 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.PNat.mk_mul_hom_fun.cancelline 246 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommMonoid,Nat,Nat.Prime,Eq,HMul.hMul,OfNat.ofNat,PNat,MulHom, Imo1990P4.PNat.mk_mul_hom_funProof uses:
Eq.mpr,id,congrFun',congrArg,congr,map_mul,Trans.trans,mul_mul_mul_comm,MulHom.mk,List.prod,List.map,Nat.primeFactorsList,Eq.symm,List.prod_map_mul,List.prod_eq_one,Membership.mem,List,And,Dvd.dvd,Existsand 12 more34 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.PNat.mk_mul_hom_fun.invline 261 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo1990P4.PRat,PNat,Eq,MulHom,Rat, Imo1990P4.PNat.mk_mul_hom_fun,Inv.invProof uses:
Eq.mpr,List.prod,List.map,Nat.primeFactorsList,Function.comp,id,congrArg,Eq.trans,List.prod_inv,List,List.map_map,Eq.refl41 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.PNat.mk_mul_mkline 266 sourcestandard axioms: propext what this means
Statement uses:
Nat,LT.lt,OfNat.ofNat,Eq,Subtype,HMul.hMul,Subtype.mk,Nat.mul_posProof uses:
Subtype.coe_eq_of_eq_mk,rfl16 instances, coercions and auxiliary constants left out.
- theorem
Imo1990P4.Nat.toPNat_mul_toPNatline 269 sourcestandard axioms: propext what this means
Statement uses:
Nat,LT.lt,OfNat.ofNat,Eq,PNat,HMul.hMul,Nat.toPNat,Nat.mul_posProof uses:
rfl9 instances, coercions and auxiliary constants left out.
- theorem
Imo1990P4.Nat.toPNat_coeline 273 sourceno axioms what this means
Statement uses:
Nat,LT.lt,OfNat.ofNat,Eq,Nat.toPNatProof uses:
rfl6 instances, coercions and auxiliary constants left out.
- theorem
Imo1990P4.Nat.toPNat_oneline 276 sourcestandard axioms: propext what this means
Statement uses:
LT.lt,Nat,OfNat.ofNat,Eq,PNat,Nat.toPNatProof uses:
rfl6 instances, coercions and auxiliary constants left out.
- theorem
Imo1990P4.Nat.Primes.val_toPNatline 279 sourcestandard axioms: propext what this means
Statement uses:
Nat.Primes,LT.lt,Nat,OfNat.ofNat,Nat.Prime,Eq,PNat,Nat.toPNatProof uses:
rfl7 instances, coercions and auxiliary constants left out.
- def
Imo1990P4.PRat.mk_mul_hom_funline 281 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo1990P4.PRat,MonoidHom,RatProof uses:
MonoidHom.mk,OneHom.mk,Subtype.mk,LT.lt,OfNat.ofNat,HMul.hMul,MulHom,PNat, Imo1990P4.PNat.mk_mul_hom_fun,Nat.toPNat,Int.toNat,Rat.num,Inv.inv,Rat.den34 instances, coercions and auxiliary constants left out.
Tactic trace: 20 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.PRat.mk_mul_hom_fun.primeline 307 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo1990P4.PRat,Nat.Primes,Eq,MonoidHom,Rat, Imo1990P4.PRat.mk_mul_hom_fun,Subtype.mk,LT.lt,OfNat.ofNat,Nat.PrimeProof uses:
id,of_eq_true,MonoidHom.mk,OneHom.mk,HMul.hMul,MulHom,PNat, Imo1990P4.PNat.mk_mul_hom_fun,Nat.toPNat,Int.toNat,Rat.num,Inv.inv,Rat.den,Eq.trans,True,forall_congr,congrFun',congrArg,Subtype,congrand 7 more54 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.PRat.mk_mul_hom_fun.inv_primeline 312 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo1990P4.PRat,Nat.Primes,Eq,MonoidHom,Rat, Imo1990P4.PRat.mk_mul_hom_fun,Inv.inv,Subtype.mk,LT.lt,OfNat.ofNat,Nat.PrimeProof uses:
id,Eq.mpr,MonoidHom.mk,OneHom.mk,HMul.hMul,MulHom,PNat, Imo1990P4.PNat.mk_mul_hom_fun,Nat.toPNat,Int.toNat,Rat.num,Rat.den,Int.sign,Int,congrArg,Eq.trans,Rat.num_inv,Nat.cast_one,mul_one,iteand 23 more91 instances, coercions and auxiliary constants left out.
Tactic trace: 18 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P4.exists_fline 330 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Exists, Imo1990P4.PRat,Eq,HMul.hMul,Rat,HDiv.hDivProof uses:
Set,Nat,And,Union.union,Set.ofPred,Nat.Prime,Disjoint,Set.Infinite, Imo1990P4.Set.Infinite.exists_union_disjoint_infinite_of_infinite,Nat.infinite_setOfPred_prime,Equiv,Nonempty.some,Set.Infinite.to_subtype,Decidable,Classical.dec,dite,Membership.mem,Subtype.mk,LT.lt,OfNat.ofNatand 62 more127 instances, coercions and auxiliary constants left out.
Tactic trace: 90 steps
Open to load the checked before-and-after goal states.
- determine
Imo1990P4.fline 428 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P4.PRat
Proof uses:
Exists.choose,Eq,HMul.hMul,Rat,HDiv.hDiv, Imo1990P4.exists_f12 instances, coercions and auxiliary constants left out.
- problem
Imo1990P4.imo1990_p4line 430 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P4.PRat,
Eq, Imo1990P4.f,HMul.hMul,Rat,HDiv.hDivProof uses:
Exists.choose_spec, Imo1990P4.exists_f24 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.