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

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

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

State before:
case a
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x : R[X]
s : FormalSum R X
⊢ 1 • Quotient.mk (formalSumSetoid R X) s = 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
x : R[X]
s : FormalSum R X
⊢ scmul 1 s ≈ s

State before:
case a.a
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x : R[X]
s : FormalSum R X
⊢ scmul 1 s ≈ s
Tactic:
apply funext
State after:
case a.a.h
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x : R[X]
s : FormalSum R X
⊢ ∀ (x : X), coords (scmul 1 s) x = coords s x

State before:
case a.a.h
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x : R[X]
s : FormalSum R X
⊢ ∀ (x : X), coords (scmul 1 s) x = coords s x
Tactic:
intro x₀
State after:
case a.a.h
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x : R[X]
s : FormalSum R X
x₀ : X
⊢ coords (scmul 1 s) x₀ = coords s x₀

State before:
case a.a.h
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x : R[X]
s : FormalSum R X
x₀ : X
⊢ coords (scmul 1 s) x₀ = coords s x₀
Tactic:
let l := scmul_coords 1 s x₀
State after:
case a.a.h
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x : R[X]
s : FormalSum R X
x₀ : X
l : 1 * coords s x₀ = coords (scmul 1 s) x₀ := scmul_coords 1 s x₀
⊢ coords (scmul 1 s) x₀ = coords s x₀

State before:
case a.a.h
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x : R[X]
s : FormalSum R X
x₀ : X
l : 1 * coords s x₀ = coords (scmul 1 s) x₀ := scmul_coords 1 s x₀
⊢ coords (scmul 1 s) x₀ = coords s x₀
Tactic:
rw [← l]
State after:
case a.a.h
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x : R[X]
s : FormalSum R X
x₀ : X
l : 1 * coords s x₀ = coords (scmul 1 s) x₀ := scmul_coords 1 s x₀
⊢ 1 * coords s x₀ = coords s x₀

State before:
case a.a.h
R : Type
inst✝² : Ring R
inst✝¹ : DecidableEq R
X : Type
inst✝ : DecidableEq X
x : R[X]
s : FormalSum R X
x₀ : X
l : 1 * coords s x₀ = coords (scmul 1 s) x₀ := scmul_coords 1 s x₀
⊢ 1 * coords s x₀ = coords s x₀
Tactic:
simp
State after:
no goals