(Semi)linear equivalences #
In this file we define
linear_equiv σ M M₂,M ≃ₛₗ[σ] M₂: an invertible semilinear map. Here,σis aring_homfromRtoR₂and ane : M ≃ₛₗ[σ] M₂satisfiese (c • x) = (σ c) • (e x). The plain linear version, withσbeingring_hom.id R, is denoted byM ≃ₗ[R] M₂, and the star-linear version (withσbeingstar_ring_end) is denoted byM ≃ₗ⋆[R] M₂.
Implementation notes #
To ensure that composition works smoothly for semilinear equivalences, we use the typeclasses
ring_hom_comp_triple, ring_hom_inv_pair and ring_hom_surjective from
algebra/ring/comp_typeclasses.
The group structure on automorphisms, linear_equiv.automorphism_group, 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
- to_fun : M → M₂
- map_add' : ∀ (x y : M), self.to_fun (x + y) = self.to_fun x + self.to_fun y
- map_smul' : ∀ (r : R) (x : M), self.to_fun (r • x) = ⇑σ r • self.to_fun x
- inv_fun : M₂ → M
- left_inv : function.left_inverse self.inv_fun self.to_fun
- right_inv : function.right_inverse self.inv_fun self.to_fun
A linear equivalence is an invertible linear map.
Equations
Equations
- linear_equiv.has_coe_to_fun = {coe := linear_equiv.to_fun _inst_7}
Equations
- linear_equiv.to_equiv = λ (f : M ≃ₛₗ[σ] M₂), f.to_add_equiv.to_equiv
Equations
- linear_equiv.add_monoid_hom_class = {coe := linear_equiv.to_fun _inst_7, coe_injective' := _, map_add := _, map_zero := _}
The identity map is a linear equivalence.
Equations
- linear_equiv.refl R M = {to_fun := linear_map.id.to_fun, map_add' := _, map_smul' := _, inv_fun := (equiv.refl M).inv_fun, left_inv := _, right_inv := _}
Linear equivalences are symmetric.
See Note [custom simps projection]
Equations
Linear equivalences are transitive.
The two paths coercion can take to an add_monoid_hom are equivalent
Interpret a ring_equiv f as an f-semilinear equiv.
An involutive linear map is a linear equivalence.
If M and M₂ are both R-semimodules and S-semimodules and R-semimodule structures
are defined by an action of R on S (formally, we have two scalar towers), then any S-linear
equivalence from M to M₂ is also an R-linear equivalence.
See also linear_map.restrict_scalars.
Equations
- linear_equiv.automorphism_group = {mul := λ (f g : M ≃ₗ[R] M), g.trans f, mul_assoc := _, one := linear_equiv.refl R M _inst_9, one_mul := _, mul_one := _, npow := div_inv_monoid.npow._default (linear_equiv.refl R M) (λ (f g : M ≃ₗ[R] M), g.trans f) linear_equiv.automorphism_group._proof_6 linear_equiv.automorphism_group._proof_7, npow_zero' := _, npow_succ' := _, inv := λ (f : M ≃ₗ[R] M), f.symm, div := div_inv_monoid.div._default (λ (f g : M ≃ₗ[R] M), g.trans f) linear_equiv.automorphism_group._proof_10 (linear_equiv.refl R M) linear_equiv.automorphism_group._proof_11 linear_equiv.automorphism_group._proof_12 (div_inv_monoid.npow._default (linear_equiv.refl R M) (λ (f g : M ≃ₗ[R] M), g.trans f) linear_equiv.automorphism_group._proof_6 linear_equiv.automorphism_group._proof_7) linear_equiv.automorphism_group._proof_13 linear_equiv.automorphism_group._proof_14 (λ (f : M ≃ₗ[R] M), f.symm), div_eq_mul_inv := _, zpow := div_inv_monoid.zpow._default (λ (f g : M ≃ₗ[R] M), g.trans f) linear_equiv.automorphism_group._proof_16 (linear_equiv.refl R M) linear_equiv.automorphism_group._proof_17 linear_equiv.automorphism_group._proof_18 (div_inv_monoid.npow._default (linear_equiv.refl R M) (λ (f g : M ≃ₗ[R] M), g.trans f) linear_equiv.automorphism_group._proof_6 linear_equiv.automorphism_group._proof_7) linear_equiv.automorphism_group._proof_19 linear_equiv.automorphism_group._proof_20 (λ (f : M ≃ₗ[R] M), f.symm), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _}
Restriction from R-linear automorphisms of M to R-linear endomorphisms of M,
promoted to a monoid hom.
Equations
The tautological action by M ≃ₗ[R] M on M.
This generalizes function.End.apply_mul_action.
Equations
- linear_equiv.apply_distrib_mul_action = {to_mul_action := {to_has_scalar := {smul := λ (_x : M ≃ₗ[R] M) (_y : M), ⇑_x _y}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}
linear_equiv.apply_distrib_mul_action is faithful.
g : R ≃+* S is R-linear when the module structure on S is module.comp_hom S g .
Each element of the group defines a linear equivalence.
This is a stronger version of distrib_mul_action.to_add_equiv.
Equations
- distrib_mul_action.to_linear_equiv R M s = {to_fun := (distrib_mul_action.to_add_equiv M s).to_fun, map_add' := _, map_smul' := _, inv_fun := (distrib_mul_action.to_add_equiv M s).inv_fun, left_inv := _, right_inv := _}
Each element of the group defines a module automorphism.
This is a stronger version of distrib_mul_action.to_add_aut.
Equations
- distrib_mul_action.to_module_aut R M = {to_fun := distrib_mul_action.to_linear_equiv R M _inst_6, map_one' := _, map_mul' := _}
An additive equivalence whose underlying function preserves smul is a linear equivalence.
An additive equivalence between commutative additive monoids is a linear equivalence between ℕ-modules
Equations
An additive equivalence between commutative additive groups is a linear equivalence between ℤ-modules