Theorem: FreeModule.addn_assoc (UnitConjecture/FreeModule.lean)

State before:
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x₁ x₂ x₃ : R[X]
⊢ x₁ + x₂ + x₃ = x₁ + (x₂ + x₃)
Tactic:
apply @Quotient.ind (motive := fun x₁ : R[X] => (x₁ + x₂) + x₃ = x₁ + (x₂ + x₃))
State after:
case a
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x₁ x₂ x₃ : R[X]
⊢ ∀ (a : FormalSum R X), Quotient.mk (formalSumSetoid R X) a + x₂ + x₃ = Quotient.mk (formalSumSetoid R X) a + (x₂ + x₃)

State before:
case a
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x₁ x₂ x₃ : R[X]
⊢ ∀ (a : FormalSum R X), Quotient.mk (formalSumSetoid R X) a + x₂ + x₃ = Quotient.mk (formalSumSetoid R X) a + (x₂ + x₃)
Tactic:
intro x₁
State after:
case a
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x₁✝ x₂ x₃ : R[X]
x₁ : FormalSum R X
⊢ Quotient.mk (formalSumSetoid R X) x₁ + x₂ + x₃ = Quotient.mk (formalSumSetoid R X) x₁ + (x₂ + x₃)

State before:
case a
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x₁✝ x₂ x₃ : R[X]
x₁ : FormalSum R X
⊢ Quotient.mk (formalSumSetoid R X) x₁ + x₂ + x₃ = Quotient.mk (formalSumSetoid R X) x₁ + (x₂ + x₃)
Tactic:
apply add_assoc_aux
State after:
no goals