Theorem: SModEq.eval
File: Mathlib/LinearAlgebra/SModEq.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝⁶ : Ring R✝
A : Type u_2
inst✝⁵ : CommRing A
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R✝ M
U U₁ U₂ : Submodule R✝ M
x✝ x₁ x₂ y✝ y₁ y₂ z z₁ z₂ : M
N : Type u_4
inst✝² : AddCommGroup N
inst✝¹ : Module R✝ N
V V₁ V₂ : Submodule R✝ N
R : Type u_5
inst✝ : CommRing R
I : Ideal R
x y : R
h : x ≡ y [SMOD I]
f : R[X]
⊢ Polynomial.eval x f ≡ Polynomial.eval y f [SMOD I]
state_after: R✝ : Type u_1
inst✝⁶ : Ring R✝
A : Type u_2
inst✝⁵ : CommRing A
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R✝ M
U U₁ U₂ : Submodule R✝ M
x✝ x₁ x₂ y✝ y₁ y₂ z z₁ z₂ : M
N : Type u_4
inst✝² : AddCommGroup N
inst✝¹ : Module R✝ N
V V₁ V₂ : Submodule R✝ N
R : Type u_5
inst✝ : CommRing R
I : Ideal R
x y : R
h : Submodule.Quotient.mk x = Submodule.Quotient.mk y
f : R[X]
⊢ Submodule.Quotient.mk (Polynomial.eval x f) = Submodule.Quotient.mk (Polynomial.eval y f)
tactic: rw [SModEq.def] at h ⊢
state_before: R✝ : Type u_1
inst✝⁶ : Ring R✝
A : Type u_2
inst✝⁵ : CommRing A
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R✝ M
U U₁ U₂ : Submodule R✝ M
x✝ x₁ x₂ y✝ y₁ y₂ z z₁ z₂ : M
N : Type u_4
inst✝² : AddCommGroup N
inst✝¹ : Module R✝ N
V V₁ V₂ : Submodule R✝ N
R : Type u_5
inst✝ : CommRing R
I : Ideal R
x y : R
h : Submodule.Quotient.mk x = Submodule.Quotient.mk y
f : R[X]
⊢ Submodule.Quotient.mk (Polynomial.eval x f) = Submodule.Quotient.mk (Polynomial.eval y f)
state_after: R✝ : Type u_1
inst✝⁶ : Ring R✝
A : Type u_2
inst✝⁵ : CommRing A
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R✝ M
U U₁ U₂ : Submodule R✝ M
x✝ x₁ x₂ y✝ y₁ y₂ z z₁ z₂ : M
N : Type u_4
inst✝² : AddCommGroup N
inst✝¹ : Module R✝ N
V V₁ V₂ : Submodule R✝ N
R : Type u_5
inst✝ : CommRing R
I : Ideal R
x y : R
h : Submodule.Quotient.mk x = Submodule.Quotient.mk y
f : R[X]
⊢ (Ideal.Quotient.mk I) (Polynomial.eval x f) = (Ideal.Quotient.mk I) (Polynomial.eval y f)
tactic: show Ideal.Quotient.mk I (f.eval x) = Ideal.Quotient.mk I (f.eval y)
state_before: R✝ : Type u_1
inst✝⁶ : Ring R✝
A : Type u_2
inst✝⁵ : CommRing A
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R✝ M
U U₁ U₂ : Submodule R✝ M
x✝ x₁ x₂ y✝ y₁ y₂ z z₁ z₂ : M
N : Type u_4
inst✝² : AddCommGroup N
inst✝¹ : Module R✝ N
V V₁ V₂ : Submodule R✝ N
R : Type u_5
inst✝ : CommRing R
I : Ideal R
x y : R
h : Submodule.Quotient.mk x = Submodule.Quotient.mk y
f : R[X]
⊢ (Ideal.Quotient.mk I) (Polynomial.eval x f) = (Ideal.Quotient.mk I) (Polynomial.eval y f)
state_after: R✝ : Type u_1
inst✝⁶ : Ring R✝
A : Type u_2
inst✝⁵ : CommRing A
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R✝ M
U U₁ U₂ : Submodule R✝ M
x✝ x₁ x₂ y✝ y₁ y₂ z z₁ z₂ : M
N : Type u_4
inst✝² : AddCommGroup N
inst✝¹ : Module R✝ N
V V₁ V₂ : Submodule R✝ N
R : Type u_5
inst✝ : CommRing R
I : Ideal R
x y : R
f : R[X]
h : (Ideal.Quotient.mk I) x = (Ideal.Quotient.mk I) y
⊢ (Ideal.Quotient.mk I) (Polynomial.eval x f) = (Ideal.Quotient.mk I) (Polynomial.eval y f)
tactic: replace h : Ideal.Quotient.mk I x = Ideal.Quotient.mk I y := h
state_before: R✝ : Type u_1
inst✝⁶ : Ring R✝
A : Type u_2
inst✝⁵ : CommRing A
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R✝ M
U U₁ U₂ : Submodule R✝ M
x✝ x₁ x₂ y✝ y₁ y₂ z z₁ z₂ : M
N : Type u_4
inst✝² : AddCommGroup N
inst✝¹ : Module R✝ N
V V₁ V₂ : Submodule R✝ N
R : Type u_5
inst✝ : CommRing R
I : Ideal R
x y : R
f : R[X]
h : (Ideal.Quotient.mk I) x = (Ideal.Quotient.mk I) y
⊢ (Ideal.Quotient.mk I) (Polynomial.eval x f) = (Ideal.Quotient.mk I) (Polynomial.eval y f)
state_after: no goals
tactic: rw [← Polynomial.eval₂_at_apply, ← Polynomial.eval₂_at_apply, h]