(Semi)linear equivalences #
In this file we define
LinearEquiv σ M M₂
,M ≃ₛₗ[σ] M₂
: an invertible semilinear map. Here,σ
is aRingHom
fromR
toR₂
and ane : M ≃ₛₗ[σ] M₂
satisfiese (c • x) = (σ c) • (e x)
. The plain linear version, withσ
beingRingHom.id R
, is denoted byM ≃ₗ[R] M₂
, and the star-linear version (withσ
beingstarRingEnd
) is denoted byM ≃ₗ⋆[R] M₂
.
Implementation notes #
To ensure that composition works smoothly for semilinear equivalences, we use the typeclasses
RingHomCompTriple
, RingHomInvPair
and RingHomSurjective
from
Algebra/Ring/CompTypeclasses
.
The group structure on automorphisms, LinearEquiv.automorphismGroup
, is provided elsewhere.
TODO #
- Parts of this file have not yet been generalized to semilinear maps
Tags #
linear equiv, linear equivalences, linear isomorphism, linear isomorphic
A linear equivalence is an invertible linear map.
Instances For
The additive equivalence of types underlying a linear equivalence.
Equations
- self.toAddEquiv = { toFun := (↑self).toFun, invFun := self.invFun, left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ }
Instances For
LinearEquiv.invFun
is a right inverse to the linear equivalence's underlying function.
LinearEquiv.invFun
is a left inverse to the linear equivalence's underlying function.
The notation M ≃ₛₗ[σ] M₂
denotes the type of linear equivalences between M
and M₂
over a
ring homomorphism σ
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The notation M ≃ₗ [R] M₂
denotes the type of linear equivalences between M
and M₂
over
a plain linear map M →ₗ M₂
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
SemilinearEquivClass F σ M M₂
asserts F
is a type of bundled σ
-semilinear equivs
M → M₂
.
See also LinearEquivClass F R M M₂
for the case where σ
is the identity map on R
.
A map f
between an R
-module and an S
-module over a ring homomorphism σ : R →+* S
is semilinear if it satisfies the two properties f (x + y) = f x + f y
and
f (c • x) = (σ c) • f x
.
Applying a semilinear equivalence
f
overσ
tor • x
equalsσ r • f x
.
Instances
Applying a semilinear equivalence f
over σ
to r • x
equals σ r • f x
.
LinearEquivClass F R M M₂
asserts F
is a type of bundled R
-linear equivs M → M₂
.
This is an abbreviation for SemilinearEquivClass F (RingHom.id R) M M₂
.
Equations
- LinearEquivClass F R M M₂ = SemilinearEquivClass F (RingHom.id R) M M₂
Instances For
Equations
- ⋯ = ⋯
Reinterpret an element of a type of semilinear equivalences as a semilinear equivalence.
Equations
- ↑f = { toFun := (↑f).toFun, map_add' := ⋯, map_smul' := ⋯, invFun := (↑f).invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
Reinterpret an element of a type of semilinear equivalences as a semilinear equivalence.
Equations
- SemilinearEquivClass.instCoeToSemilinearEquiv = { coe := fun (f : F) => ↑f }
Equations
- LinearEquiv.instCoeLinearMap = { coe := LinearEquiv.toLinearMap }
The equivalence of types underlying a linear equivalence.
Equations
- f.toEquiv = f.toAddEquiv.toEquiv
Instances For
Equations
- ⋯ = ⋯
The identity map is a linear equivalence.
Equations
- LinearEquiv.refl R M = { toLinearMap := LinearMap.id, invFun := (Equiv.refl M).invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
Linear equivalences are symmetric.
Equations
- e.symm = { toFun := ⇑((↑e).inverse e.invFun ⋯ ⋯), map_add' := ⋯, map_smul' := ⋯, invFun := e.toEquiv.symm.invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
See Note [custom simps projection]
Equations
- LinearEquiv.Simps.apply e = ⇑e
Instances For
See Note [custom simps projection]
Equations
- LinearEquiv.Simps.symm_apply e = ⇑e.symm
Instances For
Linear equivalences are transitive.
Equations
- e₁₂.trans e₂₃ = { toLinearMap := (↑e₂₃).comp ↑e₁₂, invFun := (e₁₂.toEquiv.trans e₂₃.toEquiv).invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
Pretty printer defined by notation3
command.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The notation e₁ ≪≫ₗ e₂
denotes the composition of the linear equivalences e₁
and e₂
.
Equations
- LinearEquiv.transNotation = Lean.ParserDescr.trailingNode `LinearEquiv.transNotation 80 80 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≪≫ₗ ") (Lean.ParserDescr.cat `term 81))
Instances For
The two paths coercion can take to an AddMonoidHom
are equivalent
Auxiliary definition to avoid looping in dsimp
with LinearEquiv.symm_mk
.
Equations
- LinearEquiv.symm_mk.aux e f h₁ h₂ h₃ h₄ = { toFun := ⇑e, map_add' := h₁, map_smul' := h₂, invFun := f, left_inv := h₃, right_inv := h₄ }.symm
Instances For
An involutive linear map is a linear equivalence.
Equations
- LinearEquiv.ofInvolutive f hf = { toLinearMap := f, invFun := (Function.Involutive.toPerm (⇑f) hf).invFun, left_inv := ⋯, right_inv := ⋯ }