File: Mathlib/Algebra/Module/Submodule/RestrictScalars.lean

full_name: Submodule.restrictScalars
code: /-- `V.restrictScalars S` is the `S`-submodule of the `S`-module given by restriction of scalars,
corresponding to `V`, an `R`-submodule of the original `R`-module.
-/
def restrictScalars (V : Submodule R M) : Submodule S M 
goal: Submodule S M

full_name: Submodule.coe_restrictScalars
code: @[simp]
theorem coe_restrictScalars (V : Submodule R M) : (V.restrictScalars S : Set M) = V 
goal: ↑(Submodule.restrictScalars S V) = ↑V

full_name: Submodule.toAddSubmonoid_restrictScalars
code: @[simp]
theorem toAddSubmonoid_restrictScalars (V : Submodule R M) :
    (V.restrictScalars S).toAddSubmonoid = V.toAddSubmonoid 
goal: (Submodule.restrictScalars S V).toAddSubmonoid = V.toAddSubmonoid

full_name: Submodule.restrictScalars_mem
code: @[simp]
theorem restrictScalars_mem (V : Submodule R M) (m : M) : m ∈ V.restrictScalars S ↔ m ∈ V 
goal: m ∈ Submodule.restrictScalars S V ↔ m ∈ V

full_name: Submodule.restrictScalars_self
code: @[simp]
theorem restrictScalars_self (V : Submodule R M) : V.restrictScalars R = V 
goal: Submodule.restrictScalars R V = V

full_name: Submodule.restrictScalars_injective
code: theorem restrictScalars_injective :
    Function.Injective (restrictScalars S : Submodule R M → Submodule S M) 
goal: Function.Injective (Submodule.restrictScalars S)

full_name: Submodule.restrictScalars_inj
code: @[simp]
theorem restrictScalars_inj {V₁ V₂ : Submodule R M} :
    restrictScalars S V₁ = restrictScalars S V₂ ↔ V₁ = V₂ 
goal: Submodule.restrictScalars S V₁ = Submodule.restrictScalars S V₂ ↔ V₁ = V₂

full_name: Submodule.restrictScalars.origModule
code: /-- Even though `p.restrictScalars S` has type `Submodule S M`, it is still an `R`-module. -/
instance restrictScalars.origModule (p : Submodule R M) : Module R (p.restrictScalars S) 
goal: Module R ↥(Submodule.restrictScalars S p)

full_name: Submodule.restrictScalars.isScalarTower
code: instance restrictScalars.isScalarTower (p : Submodule R M) :
    IsScalarTower S R (p.restrictScalars S) 
goal: IsScalarTower S R ↥(Submodule.restrictScalars S p)

full_name: Submodule.restrictScalarsEmbedding
code: /-- `restrictScalars S` is an embedding of the lattice of `R`-submodules into
the lattice of `S`-submodules. -/
@[simps]
def restrictScalarsEmbedding : Submodule R M ↪o Submodule S M 
goal: Submodule R M ↪o Submodule S M

full_name: Submodule.restrictScalarsEmbedding_apply
code: /-- `restrictScalars S` is an embedding of the lattice of `R`-submodules into
the lattice of `S`-submodules. -/
@[simps]
def restrictScalarsEmbedding : Submodule R M ↪o Submodule S M 
goal: (Submodule.restrictScalarsEmbedding S R M) V = Submodule.restrictScalars S V

full_name: Submodule.restrictScalarsEquiv
code: /-- Turning `p : Submodule R M` into an `S`-submodule gives the same module structure
as turning it into a type and adding a module structure. -/
@[simps (config := { simpRhs := true })]
def restrictScalarsEquiv (p : Submodule R M) : p.restrictScalars S ≃ₗ[R] p 
goal: ↥(Submodule.restrictScalars S p) ≃ₗ[R] ↥p

full_name: Submodule.restrictScalarsEquiv_apply
code: /-- Turning `p : Submodule R M` into an `S`-submodule gives the same module structure
as turning it into a type and adding a module structure. -/
@[simps (config := { simpRhs := true })]
def restrictScalarsEquiv (p : Submodule R M) : p.restrictScalars S ≃ₗ[R] p 
goal: ∀ (a : ↥p), (Submodule.restrictScalarsEquiv S R M p) a = a

full_name: Submodule.restrictScalarsEquiv_symm_apply
code: /-- Turning `p : Submodule R M` into an `S`-submodule gives the same module structure
as turning it into a type and adding a module structure. -/
@[simps (config := { simpRhs := true })]
def restrictScalarsEquiv (p : Submodule R M) : p.restrictScalars S ≃ₗ[R] p 
goal: ∀ (a : ↥p), (Submodule.restrictScalarsEquiv S R M p).symm a = a

full_name: Submodule.restrictScalars_bot
code: @[simp]
theorem restrictScalars_bot : restrictScalars S (⊥ : Submodule R M) = ⊥ 
goal: Submodule.restrictScalars S ⊥ = ⊥

full_name: Submodule.restrictScalars_eq_bot_iff
code: @[simp]
theorem restrictScalars_eq_bot_iff {p : Submodule R M} : restrictScalars S p = ⊥ ↔ p = ⊥ 
goal: Submodule.restrictScalars S p = ⊥ ↔ p = ⊥

full_name: Submodule.restrictScalars_top
code: @[simp]
theorem restrictScalars_top : restrictScalars S (⊤ : Submodule R M) = ⊤ 
goal: Submodule.restrictScalars S ⊤ = ⊤

full_name: Submodule.restrictScalars_eq_top_iff
code: @[simp]
theorem restrictScalars_eq_top_iff {p : Submodule R M} : restrictScalars S p = ⊤ ↔ p = ⊤ 
goal: Submodule.restrictScalars S p = ⊤ ↔ p = ⊤

full_name: Submodule.restrictScalarsLatticeHom
code: /-- If ring `S` acts on a ring `R` and `M` is a module over both (compatibly with this action) then
we can turn an `R`-submodule into an `S`-submodule by forgetting the action of `R`. -/
def restrictScalarsLatticeHom : CompleteLatticeHom (Submodule R M) (Submodule S M) 
goal: CompleteLatticeHom (Submodule R M) (Submodule S M)