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

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

State before:
case a
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
a b : R
x : R[X]
⊢ ∀ (a_1 : FormalSum R X),
    a • b • Quotient.mk (formalSumSetoid R X) a_1 = (a * b) • Quotient.mk (formalSumSetoid R X) a_1
Tactic:
intro s
State after:
case a
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
a b : R
x : R[X]
s : FormalSum R X
⊢ a • b • Quotient.mk (formalSumSetoid R X) s = (a * b) • Quotient.mk (formalSumSetoid R X) s

State before:
case a
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
a b : R
x : R[X]
s : FormalSum R X
⊢ a • b • Quotient.mk (formalSumSetoid R X) s = (a * b) • Quotient.mk (formalSumSetoid R X) s
Tactic:
apply Quotient.sound
State after:
case a.a
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
a b : R
x : R[X]
s : FormalSum R X
⊢ scmul a (scmul b s) ≈ scmul (a * b) s

State before:
case a.a
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
a b : R
x : R[X]
s : FormalSum R X
⊢ scmul a (scmul b s) ≈ scmul (a * b) s
Tactic:
rw [FormalSum.action]
State after:
case a.a
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
a b : R
x : R[X]
s : FormalSum R X
⊢ scmul (a * b) s ≈ scmul (a * b) s

State before:
case a.a
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
a b : R
x : R[X]
s : FormalSum R X
⊢ scmul (a * b) s ≈ scmul (a * b) s
Tactic:
apply eqlCoords.refl
State after:
no goals