Theorem: LO.FirstOrder.Arith.Model.mod_lt (Arithmetization/Basic/IOpen.lean)

State before:
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
a b : M
pos : 0 < b
⊢ a % b < b
Tactic:
rcases div_spec_of_pos' a pos with ⟨r, hr, ha⟩
State after:
case intro.intro
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
a b : M
pos : 0 < b
r : M
hr : r < b
ha : a = a / b * b + r
⊢ a % b < b

State before:
case intro.intro
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
a b : M
pos : 0 < b
r : M
hr : r < b
ha : a = a / b * b + r
⊢ a % b < b
Tactic:
have : ((a / b) * b + r) % b = r := mod_mul_add_of_lt _ _ hr
State after:
case intro.intro
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
a b : M
pos : 0 < b
r : M
hr : r < b
ha : a = a / b * b + r
this : (a / b * b + r) % b = r
⊢ a % b < b

State before:
case intro.intro
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
a b : M
pos : 0 < b
r : M
hr : r < b
ha : a = a / b * b + r
this : (a / b * b + r) % b = r
⊢ a % b < b
Tactic:
have : a % b = r := by simpa [←ha] using this
State after:
case intro.intro
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
a b : M
pos : 0 < b
r : M
hr : r < b
ha : a = a / b * b + r
this✝ : (a / b * b + r) % b = r
this : a % b = r
⊢ a % b < b

State before:
case intro.intro
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
a b : M
pos : 0 < b
r : M
hr : r < b
ha : a = a / b * b + r
this✝ : (a / b * b + r) % b = r
this : a % b = r
⊢ a % b < b
Tactic:
simp [this, hr]
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 ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
a b : M
pos : 0 < b
r : M
hr : r < b
ha : a = a / b * b + r
this : (a / b * b + r) % b = r
⊢ a % b = r
Tactic:
simpa [←ha] using this
State after:
no goals