Theorem: plus_assoc (meetings/ex6.lean)

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

⊢ ∀ (a b : ↑N0), plus (a, plus (b, z)) = plus (plus (a, b), z)

case hs

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

State before:
case hz

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

State before:
case hz
a b : ↑N0
⊢ plus (a, plus (b, z)) = plus (plus (a, b), z)
Tactic:
rw [zplus, zplus]
State after:
no goals

State before:
case hs

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

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

State before:
case hs
c a b : ↑N0
hi : plus (a, plus (b, c)) = plus (plus (a, b), c)
⊢ plus (a, plus (b, S c)) = plus (plus (a, b), S c)
Tactic:
rw [splus, splus, hi, splus]
State after:
no goals