ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
⊢ (range fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) =
    range fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
⊢ (⨆ (i : { x // x ∈ M }), map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) =
    map (AlgHom.toLinearMap f) M * map (AlgHom.toLinearMap f) N
apply congr_arg sSup
case h
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
⊢ (S ∈ range fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) ↔
    S ∈ range fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
⊢ (range fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) =
    range fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)
ext S
case h.mp.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ M }
hy : (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) y = S
⊢ S ∈ range fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)

case h.mpr.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ map (AlgHom.toLinearMap f) M }
hy : (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y = S
⊢ S ∈ range fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)
case h
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
⊢ (S ∈ range fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) ↔
    S ∈ range fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)
constructor <;> rintro ⟨y, hy⟩
case h.mp.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ M }
hy : (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) y = S
⊢ (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N))
      { val := ↑f ↑y, property := (_ : ↑f ↑y ∈ map (AlgHom.toLinearMap f) M) } =
    S
case h.mp.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ M }
hy : (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) y = S
⊢ S ∈ range fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)
use ⟨f y, mem_map.mpr ⟨y.1, y.2, rfl⟩⟩
case h.mp.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ M }
hy : (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) y = S
⊢ (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N))
      { val := ↑f ↑y, property := (_ : ↑f ↑y ∈ map (AlgHom.toLinearMap f) M) } =
    (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) y
case h.mp.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ M }
hy : (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) y = S
⊢ (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N))
      { val := ↑f ↑y, property := (_ : ↑f ↑y ∈ map (AlgHom.toLinearMap f) M) } =
    S
refine' Eq.trans _ hy
case h.mp.intro.h
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ M }
hy : (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) y = S
x✝ : A'
⊢ x✝ ∈
      (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N))
        { val := ↑f ↑y, property := (_ : ↑f ↑y ∈ map (AlgHom.toLinearMap f) M) } ↔
    x✝ ∈ (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) y
case h.mp.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ M }
hy : (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) y = S
⊢ (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N))
      { val := ↑f ↑y, property := (_ : ↑f ↑y ∈ map (AlgHom.toLinearMap f) M) } =
    (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) y
ext
no goals
case h.mp.intro.h
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ M }
hy : (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) y = S
x✝ : A'
⊢ x✝ ∈
      (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N))
        { val := ↑f ↑y, property := (_ : ↑f ↑y ∈ map (AlgHom.toLinearMap f) M) } ↔
    x✝ ∈ (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) y
simp
case h.mpr.intro.intro.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ map (AlgHom.toLinearMap f) M }
hy : (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y = S
y' : A
hy' : y' ∈ M
fy_eq : ↑(AlgHom.toLinearMap f) y' = ↑y
⊢ S ∈ range fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)
case h.mpr.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ map (AlgHom.toLinearMap f) M }
hy : (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y = S
⊢ S ∈ range fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)
obtain ⟨y', hy', fy_eq⟩ := mem_map.mp y.2
case h.mpr.intro.intro.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ map (AlgHom.toLinearMap f) M }
hy : (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y = S
y' : A
hy' : y' ∈ M
fy_eq : ↑(AlgHom.toLinearMap f) y' = ↑y
⊢ (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) { val := y', property := hy' } = S
case h.mpr.intro.intro.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ map (AlgHom.toLinearMap f) M }
hy : (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y = S
y' : A
hy' : y' ∈ M
fy_eq : ↑(AlgHom.toLinearMap f) y' = ↑y
⊢ S ∈ range fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)
use ⟨y', hy'⟩
case h.mpr.intro.intro.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ map (AlgHom.toLinearMap f) M }
hy : (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y = S
y' : A
hy' : y' ∈ M
fy_eq : ↑(AlgHom.toLinearMap f) y' = ↑y
⊢ (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) { val := y', property := hy' } =
    (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y
case h.mpr.intro.intro.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ map (AlgHom.toLinearMap f) M }
hy : (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y = S
y' : A
hy' : y' ∈ M
fy_eq : ↑(AlgHom.toLinearMap f) y' = ↑y
⊢ (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) { val := y', property := hy' } = S
refine' Eq.trans _ hy
case h.mpr.intro.intro.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ map (AlgHom.toLinearMap f) M }
hy : (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y = S
y' : A
hy' : y' ∈ M
fy_eq : ↑f y' = ↑y
⊢ (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) { val := y', property := hy' } =
    (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y
case h.mpr.intro.intro.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ map (AlgHom.toLinearMap f) M }
hy : (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y = S
y' : A
hy' : y' ∈ M
fy_eq : ↑(AlgHom.toLinearMap f) y' = ↑y
⊢ (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) { val := y', property := hy' } =
    (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y
rw [f.toLinearMap_apply] at fy_eq
case h.mpr.intro.intro.intro.h
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ map (AlgHom.toLinearMap f) M }
hy : (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y = S
y' : A
hy' : y' ∈ M
fy_eq : ↑f y' = ↑y
x✝ : A'
⊢ x✝ ∈ (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) { val := y', property := hy' } ↔
    x✝ ∈ (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y
case h.mpr.intro.intro.intro
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ map (AlgHom.toLinearMap f) M }
hy : (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y = S
y' : A
hy' : y' ∈ M
fy_eq : ↑f y' = ↑y
⊢ (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) { val := y', property := hy' } =
    (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y
ext
no goals
case h.mpr.intro.intro.intro.h
ι : Sort uι
R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
S✝ T : Set A
M N P Q : Submodule R A
m n : A
A' : Type u_1
inst✝¹ : Semiring A'
inst✝ : Algebra R A'
f : A →ₐ[R] A'
S : Submodule R A'
y : { x // x ∈ map (AlgHom.toLinearMap f) M }
hy : (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y = S
y' : A
hy' : y' ∈ M
fy_eq : ↑f y' = ↑y
x✝ : A'
⊢ x✝ ∈ (fun i => map (AlgHom.toLinearMap f) (map (↑(LinearMap.mul R A) ↑i) N)) { val := y', property := hy' } ↔
    x✝ ∈ (fun s => map (↑(LinearMap.mul R A') ↑s) (map (AlgHom.toLinearMap f) N)) y
simp [fy_eq]