Theorem: LO.FirstOrder.Arith.Model.lt_hash_one_righs (Arithmetization/OmegaOne/Basic.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 : M
⊢ a # 1 ≤ 2 * a + 1
Tactic:
rcases zero_le a with (rfl | pos)
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 ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
⊢ 0 # 1 ≤ 2 * 0 + 1

case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
a : M
pos : 0 < a
⊢ a # 1 ≤ 2 * a + 1

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 ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
⊢ 0 # 1 ≤ 2 * 0 + 1
Tactic:
simp
State after:
no goals

State before:
case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
a : M
pos : 0 < a
⊢ a # 1 ≤ 2 * a + 1
Tactic:
exact (le_iff_lt_length_of_exp (exponential_hash a 1)).mpr (by
  simp [mul_comm 2 a]
  have : ‖a * 2 + 1‖ = ‖a‖ + 1 := by
    simpa using length_mul_pow2_add_of_lt pos (show Pow2 2 from by simp) one_lt_two
  simp [this])
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 : M
pos : 0 < a
⊢ ‖a‖ * ‖1‖ < ‖2 * a + 1‖
Tactic:
simp [mul_comm 2 a]
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
a : M
pos : 0 < a
⊢ ‖a‖ < ‖a * 2 + 1‖

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
a : M
pos : 0 < a
⊢ ‖a‖ < ‖a * 2 + 1‖
Tactic:
have : ‖a * 2 + 1‖ = ‖a‖ + 1 := by
  simpa using length_mul_pow2_add_of_lt pos (show Pow2 2 from by simp) one_lt_two
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
a : M
pos : 0 < a
this : ‖a * 2 + 1‖ = ‖a‖ + 1
⊢ ‖a‖ < ‖a * 2 + 1‖

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀ + 𝛀₁
a : M
pos : 0 < a
this : ‖a * 2 + 1‖ = ‖a‖ + 1
⊢ ‖a‖ < ‖a * 2 + 1‖
Tactic:
simp [this]
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 : M
pos : 0 < a
⊢ ‖a * 2 + 1‖ = ‖a‖ + 1
Tactic:
simpa using length_mul_pow2_add_of_lt pos (show Pow2 2 from by simp) one_lt_two
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 : M
pos : 0 < a
⊢ Pow2 2
Tactic:
simp
State after:
no goals