Theorem: LO.FirstOrder.Arith.Model.Pow2.dvd_of_le (Arithmetization/ISigmaZero/Exponential/Pow2.lean)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b : M
ha : Pow2 a
hb : Pow2 b
⊢ a ≤ b → a ∣ b
Tactic:
suffices  ∀ b : M, ∀ a ≤ b, Pow2 a → Pow2 b → a ∣ b by
  intro hab; exact this b a hab ha hb
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b : M
ha : Pow2 a
hb : Pow2 b
⊢ ∀ (b a : M), a ≤ b → Pow2 a → Pow2 b → a ∣ b

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b : M
ha : Pow2 a
hb : Pow2 b
⊢ ∀ (b a : M), a ≤ b → Pow2 a → Pow2 b → a ∣ b
Tactic:
intro b
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b✝ : M
ha : Pow2 a
hb : Pow2 b✝
b : M
⊢ ∀ a ≤ b, Pow2 a → Pow2 b → a ∣ b

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b✝ : M
ha : Pow2 a
hb : Pow2 b✝
b : M
⊢ ∀ a ≤ b, Pow2 a → Pow2 b → a ∣ b
Tactic:
induction b using order_induction_iSigmaZero
State after:
case hP
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b : M
ha : Pow2 a
hb : Pow2 b
⊢ 𝚺₀-Predicate fun b => ∀ a ≤ b, Pow2 a → Pow2 b → a ∣ b

case ind
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b : M
ha : Pow2 a
hb : Pow2 b
x✝ : M
a✝ : ∀ y < x✝, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
⊢ ∀ a ≤ x✝, Pow2 a → Pow2 x✝ → a ∣ x✝

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b : M
ha : Pow2 a
hb : Pow2 b
this : ∀ (b a : M), a ≤ b → Pow2 a → Pow2 b → a ∣ b
⊢ a ≤ b → a ∣ b
Tactic:
intro hab
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b : M
ha : Pow2 a
hb : Pow2 b
this : ∀ (b a : M), a ≤ b → Pow2 a → Pow2 b → a ∣ b
hab : a ≤ b
⊢ a ∣ b

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b : M
ha : Pow2 a
hb : Pow2 b
this : ∀ (b a : M), a ≤ b → Pow2 a → Pow2 b → a ∣ b
hab : a ≤ b
⊢ a ∣ b
Tactic:
exact this b a hab ha hb
State after:
no goals

State before:
case hP
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b : M
ha : Pow2 a
hb : Pow2 b
⊢ 𝚺₀-Predicate fun b => ∀ a ≤ b, Pow2 a → Pow2 b → a ∣ b
Tactic:
definability
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b✝ : M
ha : Pow2 a
hb : Pow2 b✝
b : M
IH : ∀ y < b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
⊢ ∀ a ≤ b, Pow2 a → Pow2 b → a ∣ b
Tactic:
intro a hab ha hb
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝ : Pow2 a✝
hb✝ : Pow2 b✝
b : M
IH : ∀ y < b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
a : M
hab : a ≤ b
ha : Pow2 a
hb : Pow2 b
⊢ a ∣ b

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝ : Pow2 a✝
hb✝ : Pow2 b✝
b : M
IH : ∀ y < b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
a : M
hab : a ≤ b
ha : Pow2 a
hb : Pow2 b
⊢ a ∣ b
Tactic:
have : b = 1 ∨ 1 < b ∧ ∃ b', b = 2 * b' ∧ Pow2 b' := Pow2.elim'.mp hb
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝ : Pow2 a✝
hb✝ : Pow2 b✝
b : M
IH : ∀ y < b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
a : M
hab : a ≤ b
ha : Pow2 a
hb : Pow2 b
this : b = 1 ∨ 1 < b ∧ ∃ b', b = 2 * b' ∧ Pow2 b'
⊢ a ∣ b

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝ : Pow2 a✝
hb✝ : Pow2 b✝
b : M
IH : ∀ y < b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
a : M
hab : a ≤ b
ha : Pow2 a
hb : Pow2 b
this : b = 1 ∨ 1 < b ∧ ∃ b', b = 2 * b' ∧ Pow2 b'
⊢ a ∣ b
Tactic:
rcases this with (rfl | ⟨ltb, b, rfl, hb⟩)
State after:
case inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b : M
ha✝ : Pow2 a✝
hb✝ : Pow2 b
a : M
ha : Pow2 a
IH : ∀ y < 1, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hab : a ≤ 1
hb : Pow2 1
⊢ a ∣ 1

case inr.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝ : Pow2 a✝
hb✝¹ : Pow2 b✝
a : M
ha : Pow2 a
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hab : a ≤ 2 * b
hb : Pow2 (2 * b)
ltb : 1 < 2 * b
⊢ a ∣ 2 * b

State before:
case inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b : M
ha✝ : Pow2 a✝
hb✝ : Pow2 b
a : M
ha : Pow2 a
IH : ∀ y < 1, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hab : a ≤ 1
hb : Pow2 1
⊢ a ∣ 1
Tactic:
rcases le_one_iff_eq_zero_or_one.mp hab with (rfl | rfl) <;> simp
State after:
case inl.inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b : M
ha✝ : Pow2 a
hb✝ : Pow2 b
IH : ∀ y < 1, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 1
ha : Pow2 0
hab : 0 ≤ 1
⊢ False

State before:
case inl.inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b : M
ha✝ : Pow2 a
hb✝ : Pow2 b
IH : ∀ y < 1, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 1
ha : Pow2 0
hab : 0 ≤ 1
⊢ False
Tactic:
simp at ha
State after:
no goals

State before:
case inr.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝ : Pow2 a✝
hb✝¹ : Pow2 b✝
a : M
ha : Pow2 a
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hab : a ≤ 2 * b
hb : Pow2 (2 * b)
ltb : 1 < 2 * b
⊢ a ∣ 2 * b
Tactic:
have : a = 1 ∨ 1 < a ∧ ∃ a', a = 2 * a' ∧ Pow2 a' := Pow2.elim'.mp ha
State after:
case inr.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝ : Pow2 a✝
hb✝¹ : Pow2 b✝
a : M
ha : Pow2 a
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hab : a ≤ 2 * b
hb : Pow2 (2 * b)
ltb : 1 < 2 * b
this : a = 1 ∨ 1 < a ∧ ∃ a', a = 2 * a' ∧ Pow2 a'
⊢ a ∣ 2 * b

State before:
case inr.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝ : Pow2 a✝
hb✝¹ : Pow2 b✝
a : M
ha : Pow2 a
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hab : a ≤ 2 * b
hb : Pow2 (2 * b)
ltb : 1 < 2 * b
this : a = 1 ∨ 1 < a ∧ ∃ a', a = 2 * a' ∧ Pow2 a'
⊢ a ∣ 2 * b
Tactic:
rcases this with (rfl | ⟨lta, a, rfl, ha⟩)
State after:
case inr.intro.intro.intro.inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b✝ : M
ha✝ : Pow2 a
hb✝¹ : Pow2 b✝
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * b)
ltb : 1 < 2 * b
ha : Pow2 1
hab : 1 ≤ 2 * b
⊢ 1 ∣ 2 * b

case inr.intro.intro.intro.inr.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝¹ : Pow2 a✝
hb✝¹ : Pow2 b✝
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * b)
ltb : 1 < 2 * b
a : M
ha✝ : Pow2 a
ha : Pow2 (2 * a)
hab : 2 * a ≤ 2 * b
lta : 1 < 2 * a
⊢ 2 * a ∣ 2 * b

State before:
case inr.intro.intro.intro.inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a b✝ : M
ha✝ : Pow2 a
hb✝¹ : Pow2 b✝
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * b)
ltb : 1 < 2 * b
ha : Pow2 1
hab : 1 ≤ 2 * b
⊢ 1 ∣ 2 * b
Tactic:
simp
State after:
no goals

State before:
case inr.intro.intro.intro.inr.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝¹ : Pow2 a✝
hb✝¹ : Pow2 b✝
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * b)
ltb : 1 < 2 * b
a : M
ha✝ : Pow2 a
ha : Pow2 (2 * a)
hab : 2 * a ≤ 2 * b
lta : 1 < 2 * a
⊢ 2 * a ∣ 2 * b
Tactic:
have ltb : b < 2 * b := lt_two_mul_self (pos_iff_ne_zero.mpr $ by rintro rfl; simp at ltb)
State after:
case inr.intro.intro.intro.inr.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝¹ : Pow2 a✝
hb✝¹ : Pow2 b✝
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * b)
ltb✝ : 1 < 2 * b
a : M
ha✝ : Pow2 a
ha : Pow2 (2 * a)
hab : 2 * a ≤ 2 * b
lta : 1 < 2 * a
ltb : b < 2 * b
⊢ 2 * a ∣ 2 * b

State before:
case inr.intro.intro.intro.inr.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝¹ : Pow2 a✝
hb✝¹ : Pow2 b✝
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * b)
ltb✝ : 1 < 2 * b
a : M
ha✝ : Pow2 a
ha : Pow2 (2 * a)
hab : 2 * a ≤ 2 * b
lta : 1 < 2 * a
ltb : b < 2 * b
⊢ 2 * a ∣ 2 * b
Tactic:
have hab : a ≤ b := le_of_mul_le_mul_left hab (by simp)
State after:
case inr.intro.intro.intro.inr.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝¹ : Pow2 a✝
hb✝¹ : Pow2 b✝
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * b)
ltb✝ : 1 < 2 * b
a : M
ha✝ : Pow2 a
ha : Pow2 (2 * a)
hab✝ : 2 * a ≤ 2 * b
lta : 1 < 2 * a
ltb : b < 2 * b
hab : a ≤ b
⊢ 2 * a ∣ 2 * b

State before:
case inr.intro.intro.intro.inr.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝¹ : Pow2 a✝
hb✝¹ : Pow2 b✝
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * b)
ltb✝ : 1 < 2 * b
a : M
ha✝ : Pow2 a
ha : Pow2 (2 * a)
hab✝ : 2 * a ≤ 2 * b
lta : 1 < 2 * a
ltb : b < 2 * b
hab : a ≤ b
⊢ 2 * a ∣ 2 * b
Tactic:
exact mul_dvd_mul_left 2 <| IH b ltb a hab (by assumption) (by assumption)
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝¹ : Pow2 a✝
hb✝¹ : Pow2 b✝
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * b)
ltb : 1 < 2 * b
a : M
ha✝ : Pow2 a
ha : Pow2 (2 * a)
hab : 2 * a ≤ 2 * b
lta : 1 < 2 * a
⊢ b ≠ 0
Tactic:
rintro rfl
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b : M
ha✝¹ : Pow2 a✝
hb✝¹ : Pow2 b
a : M
ha✝ : Pow2 a
ha : Pow2 (2 * a)
lta : 1 < 2 * a
hb✝ : Pow2 0
IH : ∀ y < 2 * 0, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * 0)
ltb : 1 < 2 * 0
hab : 2 * a ≤ 2 * 0
⊢ False

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b : M
ha✝¹ : Pow2 a✝
hb✝¹ : Pow2 b
a : M
ha✝ : Pow2 a
ha : Pow2 (2 * a)
lta : 1 < 2 * a
hb✝ : Pow2 0
IH : ∀ y < 2 * 0, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * 0)
ltb : 1 < 2 * 0
hab : 2 * a ≤ 2 * 0
⊢ False
Tactic:
simp at ltb
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝¹ : Pow2 a✝
hb✝¹ : Pow2 b✝
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * b)
ltb✝ : 1 < 2 * b
a : M
ha✝ : Pow2 a
ha : Pow2 (2 * a)
hab : 2 * a ≤ 2 * b
lta : 1 < 2 * a
ltb : b < 2 * b
⊢ 0 < 2
Tactic:
simp
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝¹ : Pow2 a✝
hb✝¹ : Pow2 b✝
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * b)
ltb✝ : 1 < 2 * b
a : M
ha✝ : Pow2 a
ha : Pow2 (2 * a)
hab✝ : 2 * a ≤ 2 * b
lta : 1 < 2 * a
ltb : b < 2 * b
hab : a ≤ b
⊢ Pow2 a
Tactic:
assumption
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
a✝ b✝ : M
ha✝¹ : Pow2 a✝
hb✝¹ : Pow2 b✝
b : M
hb✝ : Pow2 b
IH : ∀ y < 2 * b, ∀ a ≤ y, Pow2 a → Pow2 y → a ∣ y
hb : Pow2 (2 * b)
ltb✝ : 1 < 2 * b
a : M
ha✝ : Pow2 a
ha : Pow2 (2 * a)
hab✝ : 2 * a ≤ 2 * b
lta : 1 < 2 * a
ltb : b < 2 * b
hab : a ≤ b
⊢ Pow2 b
Tactic:
assumption
State after:
no goals