Theorem: Algebra.TensorProduct.rTensor_ker
File: Mathlib/LinearAlgebra/TensorProduct/RightExactness.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝¹³ : CommSemiring R✝
A✝ : Type u_2
B✝ : Type u_3
inst✝¹² : Semiring A✝
inst✝¹¹ : Semiring B✝
inst✝¹⁰ : Algebra R✝ A✝
inst✝⁹ : Algebra R✝ B✝
R : Type u_4
inst✝⁸ : CommRing R
A : Type u_5
B : Type u_6
C : Type u_7
D : Type u_8
inst✝⁷ : Ring A
inst✝⁶ : Ring B
inst✝⁵ : Ring C
inst✝⁴ : Ring D
inst✝³ : Algebra R A
inst✝² : Algebra R B
inst✝¹ : Algebra R C
inst✝ : Algebra R D
f : A →ₐ[R] B
g : C →ₐ[R] D
hf : Function.Surjective ⇑f
⊢ RingHom.ker (map f (AlgHom.id R C)) = Ideal.map includeLeft (RingHom.ker f)
state_after: R✝ : Type u_1
inst✝¹³ : CommSemiring R✝
A✝ : Type u_2
B✝ : Type u_3
inst✝¹² : Semiring A✝
inst✝¹¹ : Semiring B✝
inst✝¹⁰ : Algebra R✝ A✝
inst✝⁹ : Algebra R✝ B✝
R : Type u_4
inst✝⁸ : CommRing R
A : Type u_5
B : Type u_6
C : Type u_7
D : Type u_8
inst✝⁷ : Ring A
inst✝⁶ : Ring B
inst✝⁵ : Ring C
inst✝⁴ : Ring D
inst✝³ : Algebra R A
inst✝² : Algebra R B
inst✝¹ : Algebra R C
inst✝ : Algebra R D
f : A →ₐ[R] B
g : C →ₐ[R] D
hf : Function.Surjective ⇑f
⊢ Submodule.restrictScalars R (RingHom.ker (map f (AlgHom.id R C))) =
    Submodule.restrictScalars R (Ideal.map includeLeft (RingHom.ker f))
tactic: rw [← Submodule.restrictScalars_inj R]
state_before: R✝ : Type u_1
inst✝¹³ : CommSemiring R✝
A✝ : Type u_2
B✝ : Type u_3
inst✝¹² : Semiring A✝
inst✝¹¹ : Semiring B✝
inst✝¹⁰ : Algebra R✝ A✝
inst✝⁹ : Algebra R✝ B✝
R : Type u_4
inst✝⁸ : CommRing R
A : Type u_5
B : Type u_6
C : Type u_7
D : Type u_8
inst✝⁷ : Ring A
inst✝⁶ : Ring B
inst✝⁵ : Ring C
inst✝⁴ : Ring D
inst✝³ : Algebra R A
inst✝² : Algebra R B
inst✝¹ : Algebra R C
inst✝ : Algebra R D
f : A →ₐ[R] B
g : C →ₐ[R] D
hf : Function.Surjective ⇑f
⊢ Submodule.restrictScalars R (RingHom.ker (map f (AlgHom.id R C))) =
    Submodule.restrictScalars R (Ideal.map includeLeft (RingHom.ker f))
state_after: R✝ : Type u_1
inst✝¹³ : CommSemiring R✝
A✝ : Type u_2
B✝ : Type u_3
inst✝¹² : Semiring A✝
inst✝¹¹ : Semiring B✝
inst✝¹⁰ : Algebra R✝ A✝
inst✝⁹ : Algebra R✝ B✝
R : Type u_4
inst✝⁸ : CommRing R
A : Type u_5
B : Type u_6
C : Type u_7
D : Type u_8
inst✝⁷ : Ring A
inst✝⁶ : Ring B
inst✝⁵ : Ring C
inst✝⁴ : Ring D
inst✝³ : Algebra R A
inst✝² : Algebra R B
inst✝¹ : Algebra R C
inst✝ : Algebra R D
f : A →ₐ[R] B
g : C →ₐ[R] D
hf : Function.Surjective ⇑f
this :
  Submodule.restrictScalars R (RingHom.ker (map f (AlgHom.id R C))) = LinearMap.ker (LinearMap.rTensor C f.toLinearMap)
⊢ Submodule.restrictScalars R (RingHom.ker (map f (AlgHom.id R C))) =
    Submodule.restrictScalars R (Ideal.map includeLeft (RingHom.ker f))
tactic: have : (RingHom.ker (map f (AlgHom.id R C))).restrictScalars R =
    LinearMap.ker (LinearMap.rTensor C (AlgHom.toLinearMap f)) := rfl
state_before: R✝ : Type u_1
inst✝¹³ : CommSemiring R✝
A✝ : Type u_2
B✝ : Type u_3
inst✝¹² : Semiring A✝
inst✝¹¹ : Semiring B✝
inst✝¹⁰ : Algebra R✝ A✝
inst✝⁹ : Algebra R✝ B✝
R : Type u_4
inst✝⁸ : CommRing R
A : Type u_5
B : Type u_6
C : Type u_7
D : Type u_8
inst✝⁷ : Ring A
inst✝⁶ : Ring B
inst✝⁵ : Ring C
inst✝⁴ : Ring D
inst✝³ : Algebra R A
inst✝² : Algebra R B
inst✝¹ : Algebra R C
inst✝ : Algebra R D
f : A →ₐ[R] B
g : C →ₐ[R] D
hf : Function.Surjective ⇑f
this :
  Submodule.restrictScalars R (RingHom.ker (map f (AlgHom.id R C))) = LinearMap.ker (LinearMap.rTensor C f.toLinearMap)
⊢ Submodule.restrictScalars R (RingHom.ker (map f (AlgHom.id R C))) =
    Submodule.restrictScalars R (Ideal.map includeLeft (RingHom.ker f))
state_after: R✝ : Type u_1
inst✝¹³ : CommSemiring R✝
A✝ : Type u_2
B✝ : Type u_3
inst✝¹² : Semiring A✝
inst✝¹¹ : Semiring B✝
inst✝¹⁰ : Algebra R✝ A✝
inst✝⁹ : Algebra R✝ B✝
R : Type u_4
inst✝⁸ : CommRing R
A : Type u_5
B : Type u_6
C : Type u_7
D : Type u_8
inst✝⁷ : Ring A
inst✝⁶ : Ring B
inst✝⁵ : Ring C
inst✝⁴ : Ring D
inst✝³ : Algebra R A
inst✝² : Algebra R B
inst✝¹ : Algebra R C
inst✝ : Algebra R D
f : A →ₐ[R] B
g : C →ₐ[R] D
hf : Function.Surjective ⇑f
this :
  Submodule.restrictScalars R (RingHom.ker (map f (AlgHom.id R C))) = LinearMap.ker (LinearMap.rTensor C f.toLinearMap)
⊢ LinearMap.ker (LinearMap.rTensor C f.toLinearMap) =
    LinearMap.range (LinearMap.rTensor C (Submodule.restrictScalars R (RingHom.ker f)).subtype)
tactic: rw [this, Ideal.map_includeLeft_eq]
state_before: R✝ : Type u_1
inst✝¹³ : CommSemiring R✝
A✝ : Type u_2
B✝ : Type u_3
inst✝¹² : Semiring A✝
inst✝¹¹ : Semiring B✝
inst✝¹⁰ : Algebra R✝ A✝
inst✝⁹ : Algebra R✝ B✝
R : Type u_4
inst✝⁸ : CommRing R
A : Type u_5
B : Type u_6
C : Type u_7
D : Type u_8
inst✝⁷ : Ring A
inst✝⁶ : Ring B
inst✝⁵ : Ring C
inst✝⁴ : Ring D
inst✝³ : Algebra R A
inst✝² : Algebra R B
inst✝¹ : Algebra R C
inst✝ : Algebra R D
f : A →ₐ[R] B
g : C →ₐ[R] D
hf : Function.Surjective ⇑f
this :
  Submodule.restrictScalars R (RingHom.ker (map f (AlgHom.id R C))) = LinearMap.ker (LinearMap.rTensor C f.toLinearMap)
⊢ LinearMap.ker (LinearMap.rTensor C f.toLinearMap) =
    LinearMap.range (LinearMap.rTensor C (Submodule.restrictScalars R (RingHom.ker f)).subtype)
state_after: R✝ : Type u_1
inst✝¹³ : CommSemiring R✝
A✝ : Type u_2
B✝ : Type u_3
inst✝¹² : Semiring A✝
inst✝¹¹ : Semiring B✝
inst✝¹⁰ : Algebra R✝ A✝
inst✝⁹ : Algebra R✝ B✝
R : Type u_4
inst✝⁸ : CommRing R
A : Type u_5
B : Type u_6
C : Type u_7
D : Type u_8
inst✝⁷ : Ring A
inst✝⁶ : Ring B
inst✝⁵ : Ring C
inst✝⁴ : Ring D
inst✝³ : Algebra R A
inst✝² : Algebra R B
inst✝¹ : Algebra R C
inst✝ : Algebra R D
f : A →ₐ[R] B
g : C →ₐ[R] D
hf : Function.Surjective ⇑f
this :
  Submodule.restrictScalars R (RingHom.ker (map f (AlgHom.id R C))) = LinearMap.ker (LinearMap.rTensor C f.toLinearMap)
⊢ LinearMap.range (LinearMap.rTensor C (LinearMap.ker f.toLinearMap).subtype) =
    LinearMap.range (LinearMap.rTensor C (Submodule.restrictScalars R (RingHom.ker f)).subtype)
tactic: rw [(rTensor_exact C f.toLinearMap.exact_subtype_ker_map hf).linearMap_ker_eq]
state_before: R✝ : Type u_1
inst✝¹³ : CommSemiring R✝
A✝ : Type u_2
B✝ : Type u_3
inst✝¹² : Semiring A✝
inst✝¹¹ : Semiring B✝
inst✝¹⁰ : Algebra R✝ A✝
inst✝⁹ : Algebra R✝ B✝
R : Type u_4
inst✝⁸ : CommRing R
A : Type u_5
B : Type u_6
C : Type u_7
D : Type u_8
inst✝⁷ : Ring A
inst✝⁶ : Ring B
inst✝⁵ : Ring C
inst✝⁴ : Ring D
inst✝³ : Algebra R A
inst✝² : Algebra R B
inst✝¹ : Algebra R C
inst✝ : Algebra R D
f : A →ₐ[R] B
g : C →ₐ[R] D
hf : Function.Surjective ⇑f
this :
  Submodule.restrictScalars R (RingHom.ker (map f (AlgHom.id R C))) = LinearMap.ker (LinearMap.rTensor C f.toLinearMap)
⊢ LinearMap.range (LinearMap.rTensor C (LinearMap.ker f.toLinearMap).subtype) =
    LinearMap.range (LinearMap.rTensor C (Submodule.restrictScalars R (RingHom.ker f)).subtype)
state_after: no goals
tactic: rfl