Theorem: ℤω.my_right_distrib (Mordell4/Eisenstein.lean)

State before:
a b c : ℤω
⊢ mul (add a b) c = add (mul a c) (mul b c)
Tactic:
cases a
State after:
case mk
b c : ℤω
x✝ y✝ : ℤ
⊢ mul (add { x := x✝, y := y✝ } b) c = add (mul { x := x✝, y := y✝ } c) (mul b c)

State before:
case mk
b c : ℤω
x✝ y✝ : ℤ
⊢ mul (add { x := x✝, y := y✝ } b) c = add (mul { x := x✝, y := y✝ } c) (mul b c)
Tactic:
cases b
State after:
case mk.mk
c : ℤω
x✝¹ y✝¹ x✝ y✝ : ℤ
⊢ mul (add { x := x✝¹, y := y✝¹ } { x := x✝, y := y✝ }) c =
    add (mul { x := x✝¹, y := y✝¹ } c) (mul { x := x✝, y := y✝ } c)

State before:
case mk.mk
c : ℤω
x✝¹ y✝¹ x✝ y✝ : ℤ
⊢ mul (add { x := x✝¹, y := y✝¹ } { x := x✝, y := y✝ }) c =
    add (mul { x := x✝¹, y := y✝¹ } c) (mul { x := x✝, y := y✝ } c)
Tactic:
cases c
State after:
case mk.mk.mk
x✝² y✝² x✝¹ y✝¹ x✝ y✝ : ℤ
⊢ mul (add { x := x✝², y := y✝² } { x := x✝¹, y := y✝¹ }) { x := x✝, y := y✝ } =
    add (mul { x := x✝², y := y✝² } { x := x✝, y := y✝ }) (mul { x := x✝¹, y := y✝¹ } { x := x✝, y := y✝ })

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

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