Theorem: Tutorial.mul_inv_eq_iff_eq_mul (Solution/Advanced/Algebra/Lecture1.lean)

State before:
A : Type ?u.20667
G : Type
inst✝¹ : Ring A
inst✝ : Group G
a b c : G
⊢ a * b⁻¹ = c ↔ a = c * b
Tactic:
constructor
State after:
case mp
A : Type ?u.20667
G : Type
inst✝¹ : Ring A
inst✝ : Group G
a b c : G
⊢ a * b⁻¹ = c → a = c * b

case mpr
A : Type ?u.20667
G : Type
inst✝¹ : Ring A
inst✝ : Group G
a b c : G
⊢ a = c * b → a * b⁻¹ = c

State before:
case mp
A : Type ?u.20667
G : Type
inst✝¹ : Ring A
inst✝ : Group G
a b c : G
⊢ a * b⁻¹ = c → a = c * b
Tactic:
intro h
State after:
case mp
A : Type ?u.20667
G : Type
inst✝¹ : Ring A
inst✝ : Group G
a b c : G
h : a * b⁻¹ = c
⊢ a = c * b

State before:
case mp
A : Type ?u.20667
G : Type
inst✝¹ : Ring A
inst✝ : Group G
a b c : G
h : a * b⁻¹ = c
⊢ a = c * b
Tactic:
apply mul_right_cancel (a := b⁻¹)
State after:
case mp
A : Type ?u.20667
G : Type
inst✝¹ : Ring A
inst✝ : Group G
a b c : G
h : a * b⁻¹ = c
⊢ a * b⁻¹ = c * b * b⁻¹

State before:
case mp
A : Type ?u.20667
G : Type
inst✝¹ : Ring A
inst✝ : Group G
a b c : G
h : a * b⁻¹ = c
⊢ a * b⁻¹ = c * b * b⁻¹
Tactic:
simp [h]
State after:
no goals

State before:
case mpr
A : Type ?u.20667
G : Type
inst✝¹ : Ring A
inst✝ : Group G
a b c : G
⊢ a = c * b → a * b⁻¹ = c
Tactic:
intro h
State after:
case mpr
A : Type ?u.20667
G : Type
inst✝¹ : Ring A
inst✝ : Group G
a b c : G
h : a = c * b
⊢ a * b⁻¹ = c

State before:
case mpr
A : Type ?u.20667
G : Type
inst✝¹ : Ring A
inst✝ : Group G
a b c : G
h : a = c * b
⊢ a * b⁻¹ = c
Tactic:
rw [h]
State after:
case mpr
A : Type ?u.20667
G : Type
inst✝¹ : Ring A
inst✝ : Group G
a b c : G
h : a = c * b
⊢ c * b * b⁻¹ = c

State before:
case mpr
A : Type ?u.20667
G : Type
inst✝¹ : Ring A
inst✝ : Group G
a b c : G
h : a = c * b
⊢ c * b * b⁻¹ = c
Tactic:
simp
State after:
no goals