Theorem: ℤα.my_mul_assoc (Mordell4/Rt7Ring.lean)

State before:
a b c : ℤα
⊢ mul (mul a b) c = mul a (mul b c)
Tactic:
cases a
State after:
case mk
b c : ℤα
z✝ w✝ : ℤ
⊢ mul (mul { z := z✝, w := w✝ } b) c = mul { z := z✝, w := w✝ } (mul b c)

State before:
case mk
b c : ℤα
z✝ w✝ : ℤ
⊢ mul (mul { z := z✝, w := w✝ } b) c = mul { z := z✝, w := w✝ } (mul b c)
Tactic:
cases b
State after:
case mk.mk
c : ℤα
z✝¹ w✝¹ z✝ w✝ : ℤ
⊢ mul (mul { z := z✝¹, w := w✝¹ } { z := z✝, w := w✝ }) c = mul { z := z✝¹, w := w✝¹ } (mul { z := z✝, w := w✝ } c)

State before:
case mk.mk
c : ℤα
z✝¹ w✝¹ z✝ w✝ : ℤ
⊢ mul (mul { z := z✝¹, w := w✝¹ } { z := z✝, w := w✝ }) c = mul { z := z✝¹, w := w✝¹ } (mul { z := z✝, w := w✝ } c)
Tactic:
cases c
State after:
case mk.mk.mk
z✝² w✝² z✝¹ w✝¹ z✝ w✝ : ℤ
⊢ mul (mul { z := z✝², w := w✝² } { z := z✝¹, w := w✝¹ }) { z := z✝, w := w✝ } =
    mul { z := z✝², w := w✝² } (mul { z := z✝¹, w := w✝¹ } { z := z✝, w := w✝ })

State before:
case mk.mk.mk
z✝² w✝² z✝¹ w✝¹ z✝ w✝ : ℤ
⊢ mul (mul { z := z✝², w := w✝² } { z := z✝¹, w := w✝¹ }) { z := z✝, w := w✝ } =
    mul { z := z✝², w := w✝² } (mul { z := z✝¹, w := w✝¹ } { z := z✝, w := w✝ })
Tactic:
simp only [mul]
State after:
case mk.mk.mk
z✝² w✝² z✝¹ w✝¹ z✝ w✝ : ℤ
⊢ { z := (z✝² * z✝¹ - 2 * w✝² * w✝¹) * z✝ - 2 * (z✝² * w✝¹ + w✝² * z✝¹ + w✝² * w✝¹) * w✝,
      w :=
        (z✝² * z✝¹ - 2 * w✝² * w✝¹) * w✝ + (z✝² * w✝¹ + w✝² * z✝¹ + w✝² * w✝¹) * z✝ +
          (z✝² * w✝¹ + w✝² * z✝¹ + w✝² * w✝¹) * w✝ } =
    { z := z✝² * (z✝¹ * z✝ - 2 * w✝¹ * w✝) - 2 * w✝² * (z✝¹ * w✝ + w✝¹ * z✝ + w✝¹ * w✝),
      w :=
        z✝² * (z✝¹ * w✝ + w✝¹ * z✝ + w✝¹ * w✝) + w✝² * (z✝¹ * z✝ - 2 * w✝¹ * w✝) +
          w✝² * (z✝¹ * w✝ + w✝¹ * z✝ + w✝¹ * w✝) }

State before:
case mk.mk.mk
z✝² w✝² z✝¹ w✝¹ z✝ w✝ : ℤ
⊢ { z := (z✝² * z✝¹ - 2 * w✝² * w✝¹) * z✝ - 2 * (z✝² * w✝¹ + w✝² * z✝¹ + w✝² * w✝¹) * w✝,
      w :=
        (z✝² * z✝¹ - 2 * w✝² * w✝¹) * w✝ + (z✝² * w✝¹ + w✝² * z✝¹ + w✝² * w✝¹) * z✝ +
          (z✝² * w✝¹ + w✝² * z✝¹ + w✝² * w✝¹) * w✝ } =
    { z := z✝² * (z✝¹ * z✝ - 2 * w✝¹ * w✝) - 2 * w✝² * (z✝¹ * w✝ + w✝¹ * z✝ + w✝¹ * w✝),
      w :=
        z✝² * (z✝¹ * w✝ + w✝¹ * z✝ + w✝¹ * w✝) + w✝² * (z✝¹ * z✝ - 2 * w✝¹ * w✝) +
          w✝² * (z✝¹ * w✝ + w✝¹ * z✝ + w✝¹ * w✝) }
Tactic:
ring
State after:
no goals