Compfiles/Imo1990P5.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.
Project sources: Pinned compfiles documentation, Pinned compfiles corpus index
47 declarations, 0 contain sorry, 0 declared as axioms
International Mathematical Olympiad 1990, Problem 5
Given an initial integer n₀ > 1, two players A and B choose integers n₁, n₂, n₃, ... alternately according to the following rules:
Knowing n₂ₖ, A chooses any integer n₂ₖ₊₁ such that n₂ₖ ≤ n₂ₖ₊₁ ≤ n₂ₖ².
Knowing n₂ₖ₊₁, B chooses any integer n₂ₖ₊₂ such that n₂ₖ₊₁/n₂ₖ₊₂ = p^r for some prime p and integer r ≥ 1.
Player A wins the game by choosing the number 1990; player B wins by choosing the number 1.
For which n₀ does (a) A have a winning strategy? (b) B have a winning strategy? (c) neither player have a winning strategy?
Formalization notes
The proof follows a solution sketch after kalva.
Imports (5)
Imported by 1 file
- def
Imo1990P5.AMoveA legal move of player A: from the numbernjust chosen by B (or the initial numbern₀), A may choose anymwithn ≤ m ≤ n ^ 2(A wins by choosing 1990) line 46 sourceSource documentation
A legal move of player A: from the number
njust chosen by B (or the initial numbern₀), A may choose anymwithn ≤ m ≤ n ^ 2(A wins by choosing 1990).standard axioms: propext what this means
Statement uses:
NatProof uses:
And,LE.le,HPow.hPow,OfNat.ofNat6 instances, coercions and auxiliary constants left out.
@[reducible] def AMove (n m : ℕ) : Prop := n ≤ m ∧ m ≤ n ^ 2
- def
Imo1990P5.BMoveA legal move of player B: from the numbermjust chosen by A, B may choose anym'such thatm / m'is a prime powerp ^ rwithr ≥ 1(B wins by choosing 1) line 50 sourceSource documentation
A legal move of player B: from the number
mjust chosen by A, B may choose anym'such thatm / m'is a prime powerp ^ rwithr ≥ 1(B wins by choosing 1).standard axioms: propext what this means
Statement uses:
NatProof uses:
Exists,And,Nat.Prime,LT.lt,OfNat.ofNat,Eq,HMul.hMul,HPow.hPow8 instances, coercions and auxiliary constants left out.
@[reducible] def BMove (m m' : ℕ) : Prop := ∃ p r : ℕ, p.Prime ∧ 0 < r ∧ m = m' * p ^ r
- inductive
Imo1990P5.AWinsAWins n: it is A's turn and the current number isn(the initial position hasn = n₀), and A has a winning strategy line 57 sourceSource documentation
AWins n: it is A's turn and the current number isn(the initial position hasn = n₀), and A has a winning strategy. A either wins immediately by choosing 1990 (a legal move fromn), or chooses a legal movemfrom which B cannot win (B wins by choosing 1) and such that every legal answer of B is again a winning position for A.standard axioms: propext what this means
Statement uses:
Natinductive AWins : ℕ → Prop | win (n : ℕ) (h : AMove n 1990) : AWins n | move (n m : ℕ) (h₁ : AMove n m) (h₂ : ¬ BMove m 1) (h₃ : ∀ m', BMove m m' → AWins m') : AWins n /-- `BWins m`: it is B's turn and the current number is `m`, and B has a winning strategy. B either wins immediately by choosing 1, or chooses a legal move `m' ≠ 1` from which A cannot win (A wins by choosing 1990) and such that every legal answer of A is again a winning position for B. -/Mentions: h, Imo1990P5.AMove, Imo1990P5.BMove, Imo1990P5.BWins, answer
- inductive
Imo1990P5.BWinsBWins m: it is B's turn and the current number ism, and B has a winning strategy line 66 sourceSource documentation
BWins m: it is B's turn and the current number ism, and B has a winning strategy. B either wins immediately by choosing 1, or chooses a legal movem' ≠ 1from which A cannot win (A wins by choosing 1990) and such that every legal answer of A is again a winning position for B.standard axioms: propext what this means
Statement uses:
Natinductive BWins : ℕ → Prop | one (m : ℕ) (h : BMove m 1) : BWins m | move (m m' : ℕ) (h : BMove m m') (h₁ : m' ≠ 1) (h₂ : ∀ m'', AMove m' m'' → m'' ≠ 1990) (h₃ : ∀ m'', AMove m' m'' → BWins m'') : BWins m /-- `BWinsStart n`: B has a winning strategy from the initial position with `n₀ = n` (it is A's turn): whatever legal first move `m` A makes, it is not 1990 and B wins from `m`. -/Mentions: h, Imo1990P5.BMove, Imo1990P5.AMove, Imo1990P5.BWinsStart
- def
Imo1990P5.BWinsStartBWinsStart n: B has a winning strategy from the initial position withn₀ = n(it is A's turn): whatever legal first movemA makes, it is not 1990 and B wins frommline 75 sourceSource documentation
BWinsStart n: B has a winning strategy from the initial position withn₀ = n(it is A's turn): whatever legal first movemA makes, it is not 1990 and B wins fromm.standard axioms: propext what this means
Statement uses:
NatProof uses: Imo1990P5.AMove,
And,Ne,OfNat.ofNat, Imo1990P5.BWins1 instances, coercions and auxiliary constants left out.
def BWinsStart (n : ℕ) : Prop := ∀ m, AMove n m → m ≠ 1990 ∧ BWins m …
Mentions: Imo1990P5.AMove, Imo1990P5.BWins
- theorem
Imo1990P5.bmove_one_iff_isPrimePowB can win from the movem(by choosing 1) iffmis a prime power line 80 sourceSource documentation
B can win from the move
m(by choosing 1) iffmis a prime power.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Iff, Imo1990P5.BMove,OfNat.ofNat,IsPrimePowProof uses:
Iff.intro,Exists,And,Nat.Prime,LT.lt,Eq,HMul.hMul,HPow.hPow,Iff.mpr,isPrimePow_nat_iff,Exists.intro,And.intro,Eq.mpr,id,congrArg,one_mul,Eq.refl,Eq.mp,propext18 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
theorem bmove_one_iff_isPrimePow {m : ℕ} : BMove m 1 ↔ IsPrimePow m := by …Mentions: Imo1990P5.BMove
- theorem
Imo1990P5.not_isPrimePow_of_dvd_of_dvdA number divisible by two distinct primes is not a prime power line 90 sourceSource documentation
A number divisible by two distinct primes is not a prime power.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Nat.Prime,Ne,Dvd.dvd,Not,IsPrimePowProof uses:
Eq.mpr,Exists,And,LT.lt,OfNat.ofNat,Eq,HPow.hPow,id,congrArg,propext,isPrimePow_nat_iff,False,Nat.Prime.dvd_of_dvd_pow,Eq.mp,Eq.symm,Iff.mp,Nat.prime_dvd_prime_iff_eq,Eq.trans12 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
theorem not_isPrimePow_of_dvd_of_dvd {m a b : ℕ} (ha : a.Prime) (hb : b.Prime) (hab : a ≠ b) (ham : a ∣ m) (hbm : b ∣ m) : ¬ IsPrimePow m := by … - def
Imo1990P5.bResponsesThe legal responses available to B after A choosesmline 103 sourceSource documentation
The legal responses available to B after A chooses
m. Keeping only divisors whose complementary factor is a prime power avoids reasoning about impossible moves.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,FinsetProof uses:
Finset.filter,IsPrimePow,HDiv.hDiv,Nat.divisors4 instances, coercions and auxiliary constants left out.
def bResponses (m : ℕ) : Finset ℕ := …
- theorem
Imo1990P5.bmove_iff_mem_bResponsesline 106 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Ne,OfNat.ofNat,Iff, Imo1990P5.BMove,Membership.mem,Finset, Imo1990P5.bResponsesProof uses:
Eq.mpr,Finset.filter,IsPrimePow,HDiv.hDiv,Nat.divisors,id,Eq,congrArg,Imo1990P5.bResponses.eq_1,And,propext,Finset.mem_filter,Dvd.dvd,Nat.mem_divisors,Iff.intro,Exists,Nat.Prime,LT.lt,HMul.hMul,HPow.hPowand 15 more35 instances, coercions and auxiliary constants left out.
Tactic trace: 16 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.not_bmove_one_of_not_memline 122 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Ne,OfNat.ofNat,Not,Membership.mem,Finset, Imo1990P5.bResponses, Imo1990P5.BMoveProof uses:
Iff.mp, Imo1990P5.bmove_iff_mem_bResponses6 instances, coercions and auxiliary constants left out.
- theorem
Imo1990P5.bResponses_30line 125 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Finset,Nat, Imo1990P5.bResponses,OfNat.ofNat,Insert.insert,Singleton.singleton5 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.bResponses_60line 126 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Finset,Nat, Imo1990P5.bResponses,OfNat.ofNat,Insert.insert,Singleton.singleton5 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.bResponses_140line 127 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Finset,Nat, Imo1990P5.bResponses,OfNat.ofNat,Insert.insert,Singleton.singleton5 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.bResponses_280line 128 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Finset,Nat, Imo1990P5.bResponses,OfNat.ofNat,Insert.insert,Singleton.singleton5 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.bResponses_504line 129 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Finset,Nat, Imo1990P5.bResponses,OfNat.ofNat,Insert.insert,Singleton.singleton5 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.bResponses_1991line 131 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Finset,Nat, Imo1990P5.bResponses,OfNat.ofNat,Insert.insert,Singleton.singleton5 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- def
Imo1990P5.trapThe finite trap used for the drawn starting positions line 134 sourceSource documentation
The finite trap used for the drawn starting positions.
standard axioms: Quot.sound, propext what this means
Statement uses:
Finset,NatProof uses:
Insert.insert,OfNat.ofNat,Singleton.singleton4 instances, coercions and auxiliary constants left out.
def trap : Finset ℕ := {30, 60, 140, 280, 504} - lemma
Imo1990P5.ne_zero_of_mem_trapline 136 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Membership.mem,Finset, Imo1990P5.trap,Ne,OfNat.ofNatProof uses:
List,List.Mem,Eq,List.insert,List.cons,List.nil,HEq,Insert.insert,Singleton.singleton,Eq.mp,congrArg,Imo1990P5.trap.eq_1,List.Mem.head,of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl,eq_of_heqand 5 more14 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1990P5.one_not_mem_bResponses_of_mem_trapline 140 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Membership.mem,Finset, Imo1990P5.trap,Not, Imo1990P5.bResponses,OfNat.ofNatProof uses:
List,List.Mem,Eq,List.insert,List.cons,List.nil,HEq,Insert.insert,Singleton.singleton,Eq.mp,congrArg,Imo1990P5.trap.eq_1,List.Mem.head,of_eq_true,Eq.trans,False,True,Or,congrFun', Imo1990P5.bResponses_30 and 14 more20 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Imo1990P5.return_to_trapWhatever B plays from a trap number, A can legally return to that same number line 147 sourceSource documentation
Whatever B plays from a trap number, A can legally return to that same number.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Membership.mem,Finset, Imo1990P5.trap, Imo1990P5.bResponses, Imo1990P5.AMoveProof uses:
List,List.Mem,Eq,List.insert,OfNat.ofNat,List.cons,List.nil,HEq,Insert.insert,Singleton.singleton,Eq.mp,congrArg,Imo1990P5.trap.eq_1,List.Mem.head, Imo1990P5.bResponses_30,of_decide_eq_true,LE.le,HPow.hPow,id,Booland 13 more19 instances, coercions and auxiliary constants left out.
Tactic trace: 12 steps
Open to load the checked before-and-after goal states.
lemma return_to_trap {m m' : ℕ} (hm : m ∈ trap) (hm' : m' ∈ bResponses m) : AMove m' m := by …Mentions: Imo1990P5.trap, Imo1990P5.bResponses, Imo1990P5.AMove
- theorem
Imo1990P5.aw_45_1990line 165 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat, Imo1990P5.AWinsProof uses:
Imo1990P5.AWins.win,And.intro,HPow.hPow,le_of_not_gt,LT.lt,Mathlib.Tactic.Linarith.lt_irrefl,Int,Eq.mp,HAdd.hAdd,HMul.hMul,Neg.neg,HSub.hSub,congrArg,Mathlib.Tactic.Ring.of_eq,Mathlib.Tactic.Ring.Common.add_congr,Nat.rawCast,Int.rawCast,inferInstance,Ring,Int.negOfNatand 68 more92 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.aw_23_44line 169 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat, Imo1990P5.AWinsProof uses:
Imo1990P5.AWins.move,And.intro,HPow.hPow,le_of_not_gt,LT.lt,Mathlib.Tactic.Linarith.lt_irrefl,Int,Eq.mp,HAdd.hAdd,HMul.hMul,Neg.neg,HSub.hSub,congrArg,Mathlib.Tactic.Ring.of_eq,Mathlib.Tactic.Ring.Common.add_congr,Nat.rawCast,Int.rawCast,inferInstance,Ring,Int.negOfNatand 104 more108 instances, coercions and auxiliary constants left out.
Tactic trace: 18 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.aw_17_22line 178 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat, Imo1990P5.AWinsProof uses:
Imo1990P5.AWins.move,And.intro,HPow.hPow,le_of_not_gt,LT.lt,Mathlib.Tactic.Linarith.lt_irrefl,Int,Eq.mp,HAdd.hAdd,HMul.hMul,Neg.neg,HSub.hSub,congrArg,Mathlib.Tactic.Ring.of_eq,Mathlib.Tactic.Ring.Common.add_congr,Nat.rawCast,Int.rawCast,inferInstance,Ring,Int.negOfNatand 105 more108 instances, coercions and auxiliary constants left out.
Tactic trace: 22 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.aw_12_16line 189 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat, Imo1990P5.AWinsProof uses:
Imo1990P5.AWins.move,And.intro,HPow.hPow,le_of_not_gt,LT.lt,Mathlib.Tactic.Linarith.lt_irrefl,Int,Eq.mp,HAdd.hAdd,HMul.hMul,Neg.neg,HSub.hSub,congrArg,Mathlib.Tactic.Ring.of_eq,Mathlib.Tactic.Ring.Common.add_congr,Nat.rawCast,Int.rawCast,inferInstance,Ring,Int.negOfNatand 106 more108 instances, coercions and auxiliary constants left out.
Tactic trace: 25 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.aw_8_11line 201 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat, Imo1990P5.AWinsProof uses:
Imo1990P5.AWins.move,And.intro,HPow.hPow,le_of_not_gt,LT.lt,Mathlib.Tactic.Linarith.lt_irrefl,Int,Eq.mp,HAdd.hAdd,HMul.hMul,Neg.neg,HSub.hSub,congrArg,Mathlib.Tactic.Ring.of_eq,Mathlib.Tactic.Ring.Common.add_congr,Nat.rawCast,Int.rawCast,inferInstance,Ring,Int.negOfNatand 106 more108 instances, coercions and auxiliary constants left out.
Tactic trace: 25 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.aw_1991line 213 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P5.AWins,
OfNat.ofNat,NatProof uses:
Imo1990P5.AWins.move,And.intro,LE.le,HPow.hPow,of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl, Imo1990P5.not_bmove_one_of_not_mem,Ne,of_eq_true,Not,Membership.mem,Finset, Imo1990P5.bResponses,Eq.trans,Falseand 29 more25 instances, coercions and auxiliary constants left out.
Tactic trace: 22 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.exists_intervalForn ≥ 1992there is an exponentr ≥ 1with11 ^ r * 181 < n ≤ 11 ^ (r + 1) * 181, i.e. the intervals(11^r·181, 11^(r+1)·181]cover[1992, ∞)line 226 sourceSource documentation
For
n ≥ 1992there is an exponentr ≥ 1with11 ^ r * 181 < n ≤ 11 ^ (r + 1) * 181, i.e. the intervals(11^r·181, 11^(r+1)·181]cover[1992, ∞).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat,Exists,And,LT.lt,HMul.hMul,HPow.hPow,HAdd.hAddProof uses:
Exists.intro,le_trans,LT.lt.le,Nat.lt_pow_self,of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl,Nat.pow_le_pow_right,GT.gt,Nat.le_mul_of_pos_right,Nat.find,Decidable.byContradiction,Not,Nat.find_spec,Eq.mp,congrArgand 10 more41 instances, coercions and auxiliary constants left out.
Tactic trace: 24 steps
Open to load the checked before-and-after goal states.
theorem exists_interval {n : ℕ} (h : 1992 ≤ n) : ∃ r, 1 ≤ r ∧ 11 ^ r * 181 < n ∧ n ≤ 11 ^ (r + 1) * 181 := by …Mentions: h
- theorem
Imo1990P5.aw_bigline 247 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat,LT.lt, Imo1990P5.AWinsProof uses:
And,HMul.hMul,HPow.hPow,HAdd.hAdd,Exists, Imo1990P5.exists_interval,Imo1990P5.AWins.move,And.intro,Trans.trans,Eq,Eq.symm,pow_one,Nat.pow_le_pow_right,of_decide_eq_true,GT.gt,id,Bool,Decidable.decide,Bool.true,Eq.refland 78 more68 instances, coercions and auxiliary constants left out.
Tactic trace: 121 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.awins_of_ge_8A wins from everyn ≥ 8line 345 sourceSource documentation
A wins from every
n ≥ 8.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat, Imo1990P5.AWinsProof uses:
Nat.strong_induction_on,LT.lt,dite, Imo1990P5.aw_big,Not,Or,And,Eq, Imo1990P5.aw_8_11, Imo1990P5.aw_12_16,And.left,And.right, Imo1990P5.aw_17_22, Imo1990P5.aw_23_44, Imo1990P5.aw_45_1990, Imo1990P5.aw_1991,Eq.symm9 instances, coercions and auxiliary constants left out.
Tactic trace: 22 steps
Open to load the checked before-and-after goal states.
theorem awins_of_ge_8 (n : ℕ) : 8 ≤ n → AWins n := by …
Mentions: Imo1990P5.AWins
- theorem
Imo1990P5.escape_le49From any non-prime-powerm ∈ [2, 49], B has a legal move into[2, 7]line 364 sourceSource documentation
From any non-prime-power
m ∈ [2, 49], B has a legal move into[2, 7].standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat,Not,IsPrimePow,Exists,And, Imo1990P5.BMoveProof uses:
dite,absurd,Iff.mpr,Nat.Prime,LT.lt,Eq,HPow.hPow,isPrimePow_nat_iff,Exists.intro,And.intro,Mathlib.Meta.NormNum.isNat_prime_2,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.true,Mathlib.Meta.NormNum.isNat_minFac_4,Mathlib.Meta.NormNum.IsNat.raw_refl,Mathlib.Meta.NormNum.minFacHelper_0,Bool.false,of_decide_eq_trueand 12 more19 instances, coercions and auxiliary constants left out.
Tactic trace: 291 steps (first 200 of 291)
Open to load the checked before-and-after goal states.
theorem escape_le49 {m : ℕ} (h₁ : 2 ≤ m) (h₂ : m ≤ 49) (h₃ : ¬ IsPrimePow m) : ∃ m', BMove m m' ∧ 2 ≤ m' ∧ m' ≤ 7 := by …Mentions: Imo1990P5.BMove
- theorem
Imo1990P5.awins_geline 416 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo1990P5.AWins,Or,Eq,OfNat.ofNat,LE.leProof uses:
Imo1990P5.AWins.rec, Imo1990P5.AMove,HPow.hPow,Or.inr,Decidable.byContradiction,Not,Trans.trans,Nat.pow_le_pow_left,of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl, Imo1990P5.BMove,dite,Or.inl,Eq.mpr,Eq.mp,Eq.transand 26 more44 instances, coercions and auxiliary constants left out.
Tactic trace: 39 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.awins_not_bwinsstartline 448 sourcestandard axioms: propext what this means
Statement uses:
Nat, Imo1990P5.AWins, Imo1990P5.BWinsStart,FalseProof uses:
Imo1990P5.AWins.rec, Imo1990P5.AMove,OfNat.ofNat,And.left,Ne, Imo1990P5.BWins,rfl,Not, Imo1990P5.BMove,And.right,Eq,HEq,Imo1990P5.BWins.one,Imo1990P5.BWins.move,And.intro,Eq.refl,HEq.refl3 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.bw_ppline 463 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,IsPrimePow, Imo1990P5.BWinsProof uses:
Exists,And,Nat.Prime,LT.lt,OfNat.ofNat,Eq,HPow.hPow,Eq.mp,congrArg,propext,isPrimePow_nat_iff,Imo1990P5.BWins.one,Exists.intro,HMul.hMul,And.intro,Eq.mpr,id,one_mul,Eq.refl17 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.bw_le_11line 469 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat, Imo1990P5.BWinsProof uses:
dite, Imo1990P5.bw_pp,Iff.mpr,IsPrimePow,Exists,And,Nat.Prime,LT.lt,Eq,HPow.hPow,isPrimePow_nat_iff,Exists.intro,And.intro,Mathlib.Meta.NormNum.isNat_prime_2,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.true,Mathlib.Meta.NormNum.isNat_minFac_4,Mathlib.Meta.NormNum.IsNat.raw_refland 23 more24 instances, coercions and auxiliary constants left out.
Tactic trace: 103 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.bw_le_19line 500 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat, Imo1990P5.BWinsProof uses:
dite, Imo1990P5.bw_pp,Iff.mpr,IsPrimePow,Exists,And,Nat.Prime,LT.lt,Eq,HPow.hPow,isPrimePow_nat_iff,Exists.intro,And.intro,Mathlib.Meta.NormNum.isNat_prime_2,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.true,Mathlib.Meta.NormNum.isNat_minFac_4,Mathlib.Meta.NormNum.IsNat.raw_refland 24 more26 instances, coercions and auxiliary constants left out.
Tactic trace: 175 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.bw_le_29line 557 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat, Imo1990P5.BWinsProof uses:
dite, Imo1990P5.bw_pp,Iff.mpr,IsPrimePow,Exists,And,Nat.Prime,LT.lt,Eq,HPow.hPow,isPrimePow_nat_iff,Exists.intro,And.intro,Mathlib.Meta.NormNum.isNat_prime_2,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.true,Mathlib.Meta.NormNum.isNat_minFac_4,Mathlib.Meta.NormNum.IsNat.raw_refland 25 more28 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.
- theorem
Imo1990P5.bwinsstart_2line 660 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P5.BWinsStart,
OfNat.ofNat,NatProof uses: Imo1990P5.AMove,
And,Ne, Imo1990P5.BWins,LE.le,HPow.hPow,le_trans,of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl,And.intro, Imo1990P5.bw_le_1114 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.bwinsstart_3line 665 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P5.BWinsStart,
OfNat.ofNat,NatProof uses: Imo1990P5.AMove,
And,Ne, Imo1990P5.BWins,LE.le,HPow.hPow,le_trans,of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl,And.intro, Imo1990P5.bw_le_1114 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.bwinsstart_4line 670 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P5.BWinsStart,
OfNat.ofNat,NatProof uses: Imo1990P5.AMove,
And,Ne, Imo1990P5.BWins,LE.le,HPow.hPow,le_trans,of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl,And.intro, Imo1990P5.bw_le_1914 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.bwinsstart_5line 675 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo1990P5.BWinsStart,
OfNat.ofNat,NatProof uses: Imo1990P5.AMove,
And,Ne, Imo1990P5.BWins,LE.le,HPow.hPow,le_trans,of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl,And.intro, Imo1990P5.bw_le_2914 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.not_bwins_trapB has no winning strategy from a trap number: A can always restore it line 683 sourceSource documentation
B has no winning strategy from a trap number: A can always restore it.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo1990P5.BWins,Not,Membership.mem,Finset, Imo1990P5.trapProof uses:
Imo1990P5.BWins.rec, Imo1990P5.BMove,OfNat.ofNat, Imo1990P5.one_not_mem_bResponses_of_mem_trap,Iff.mp, Imo1990P5.bResponses, Imo1990P5.bmove_iff_mem_bResponses, Imo1990P5.ne_zero_of_mem_trap,Ne, Imo1990P5.AMove, Imo1990P5.return_to_trap5 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
theorem not_bwins_trap {m : ℕ} (h : BWins m) : m ∉ trap := by …Mentions: h, Imo1990P5.BWins, Imo1990P5.trap
- theorem
Imo1990P5.not_bwinsstart_6line 694 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Not, Imo1990P5.BWinsStart,OfNat.ofNat,NatProof uses:
Ne, Imo1990P5.BWins,And,False,And.intro,LE.le,HPow.hPow,of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl, Imo1990P5.not_bwins_trap,Membership.mem,Finset, Imo1990P5.trap13 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- theorem
Imo1990P5.not_bwinsstart_7line 699 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Not, Imo1990P5.BWinsStart,OfNat.ofNat,NatProof uses:
Ne, Imo1990P5.BWins,And,False,And.intro,LE.le,HPow.hPow,of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl, Imo1990P5.not_bwins_trap,Membership.mem,Finset, Imo1990P5.trap13 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- determine
Imo1990P5.aWinsSetline 706 sourceno axioms what this means
Statement uses:
Set,NatProof uses:
Set.ofPred,LE.le,OfNat.ofNat2 instances, coercions and auxiliary constants left out.
- determine
Imo1990P5.bWinsSetline 708 sourcestandard axioms: Quot.sound, propext what this means
Statement uses:
Finset,NatProof uses:
Insert.insert,OfNat.ofNat,Singleton.singleton4 instances, coercions and auxiliary constants left out.
- determine
Imo1990P5.drawSetline 710 sourcestandard axioms: Quot.sound, propext what this means
Statement uses:
Finset,NatProof uses:
Insert.insert,OfNat.ofNat,Singleton.singleton4 instances, coercions and auxiliary constants left out.
- problem
Imo1990P5.imo1990_p5line 712 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat,And,Iff, Imo1990P5.AWins,Membership.mem,Set, Imo1990P5.aWinsSet, Imo1990P5.BWinsStart,Finset, Imo1990P5.bWinsSet,Not, Imo1990P5.drawSetProof uses:
And.intro,Iff.intro,Eq,Or, Imo1990P5.awins_ge,False.elim, Imo1990P5.awins_of_ge_8,dite, Imo1990P5.awins_not_bwinsstart,absurd, Imo1990P5.not_bwinsstart_7,Eq.symm,le_antisymm,Nat.ge_of_not_lt,Mathlib.Tactic.IntervalCases.of_not_le_left,Nat.rawCast,Mathlib.Meta.NormNum.IsNat.to_raw_eq,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl, Imo1990P5.not_bwinsstart_6 and 23 more26 instances, coercions and auxiliary constants left out.
Tactic trace: 78 steps
Open to load the checked before-and-after goal states.