Theorem: mul_comm' (meetings/ex6.lean)

State before:
⊢ ∀ (a b : ↑N0), mul (a, b) = mul (b, a)
Tactic:
apply generic_recursor
State after:
case hz

⊢ ∀ (b : ↑N0), mul (z, b) = mul (b, z)

case hs

⊢ ∀ (n : ↑N0), (∀ (b : ↑N0), mul (n, b) = mul (b, n)) → ∀ (b : ↑N0), mul (S n, b) = mul (b, S n)

State before:
case hz

⊢ ∀ (b : ↑N0), mul (z, b) = mul (b, z)
Tactic:
intro a
State after:
case hz
a : ↑N0
⊢ mul (z, a) = mul (a, z)

State before:
case hz
a : ↑N0
⊢ mul (z, a) = mul (a, z)
Tactic:
rw [zmul, zero_mul_eq_zero]
State after:
no goals

State before:
case hs

⊢ ∀ (n : ↑N0), (∀ (b : ↑N0), mul (n, b) = mul (b, n)) → ∀ (b : ↑N0), mul (S n, b) = mul (b, S n)
Tactic:
intro a hi b
State after:
case hs
a : ↑N0
hi : ∀ (b : ↑N0), mul (a, b) = mul (b, a)
b : ↑N0
⊢ mul (S a, b) = mul (b, S a)

State before:
case hs
a : ↑N0
hi : ∀ (b : ↑N0), mul (a, b) = mul (b, a)
b : ↑N0
⊢ mul (S a, b) = mul (b, S a)
Tactic:
specialize hi b
State after:
case hs
a b : ↑N0
hi : mul (a, b) = mul (b, a)
⊢ mul (S a, b) = mul (b, S a)

State before:
case hs
a b : ↑N0
hi : mul (a, b) = mul (b, a)
⊢ mul (S a, b) = mul (b, S a)
Tactic:
rw [smul, muls, hi]
State after:
no goals