Isomorphisms of R-algebras #
This file defines bundled isomorphisms of R-algebras.
Main definitions #
AlgEquiv R A B: the type ofR-algebra isomorphisms betweenAandB.
Notation #
A ≃ₐ[R] B:R-algebra equivalence fromAtoB.
An equivalence of algebras (denoted as A ≃ₐ[R] B)
is an equivalence of rings commuting with the actions of scalars.
- toFun : A → B
- invFun : B → A
- left_inv : Function.LeftInverse self.invFun self.toFun
- right_inv : Function.RightInverse self.invFun self.toFun
An equivalence of algebras commutes with the action of scalars.
Instances For
An equivalence of algebras (denoted as A ≃ₐ[R] B)
is an equivalence of rings commuting with the actions of scalars.
Equations
- One or more equations did not get rendered due to their size.
Instances For
AlgEquivClass F R A B states that F is a type of algebra structure preserving
equivalences. You should extend this class when you extend AlgEquiv.
An equivalence of algebras commutes with the action of scalars.
Instances
Turn an element of a type F satisfying AlgEquivClass F R A B into an actual AlgEquiv.
This is declared as the default coercion from F to A ≃ₐ[R] B.
Instances For
Equations
- AlgEquivClass.instCoeTCAlgEquiv F R A B = { coe := AlgEquivClass.toAlgEquiv }
Helper instance since the coercion is not always found.
Equations
Equations
Interpret an algebra equivalence as an algebra homomorphism.
This definition is included for symmetry with the other to*Hom projections.
The simp normal form is to use the coercion of the AlgHomClass.coeTC instance.
Equations
Instances For
Algebra equivalences are reflexive.
Equations
- AlgEquiv.refl = { toEquiv := (RingEquiv.refl A₁).toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Equations
- AlgEquiv.instInhabited = { default := AlgEquiv.refl }
Auxiliary definition to avoid looping in dsimp with AlgEquiv.symm_mk.
Equations
- AlgEquiv.symm_mk.aux f f' h₁ h₂ h₃ h₄ h₅ = { toFun := f, invFun := f', left_inv := h₁, right_inv := h₂, map_mul' := h₃, map_add' := h₄, commutes' := h₅ }.symm
Instances For
See Note [custom simps projection]
Equations
- AlgEquiv.Simps.apply e = ⇑e
Instances For
See Note [custom simps projection]
Equations
- AlgEquiv.Simps.toEquiv e = ↑e
Instances For
Algebra equivalences are transitive.
Equations
- e₁.trans e₂ = { toEquiv := (e₁.toRingEquiv.trans e₂.toRingEquiv).toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Equiv.cast (congrArg _ h) as an algebra equiv.
Note that unlike Equiv.cast, this takes an equality of indices rather than an equality of types,
to avoid having to deal with an equality of the algebraic structure itself.
Equations
- AlgEquiv.cast h = { toEquiv := (RingEquiv.cast h).toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
If A₁ is equivalent to A₁' and A₂ is equivalent to A₂', then the type of maps
A₁ →ₐ[R] A₂ is equivalent to the type of maps A₁' →ₐ[R] A₂'.
Equations
Instances For
If A₁ is equivalent to A₂ and A₁' is equivalent to A₂', then the type of maps
A₁ ≃ₐ[R] A₁' is equivalent to the type of maps A₂ ≃ₐ[R] A₂'.
This is the AlgEquiv version of AlgEquiv.arrowCongr.
Equations
Instances For
If an algebra morphism has an inverse, it is an algebra isomorphism.
Equations
- AlgEquiv.ofAlgHom f g h₁ h₂ = { toFun := ⇑f, invFun := ⇑g, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Forgetting the multiplicative structures, an equivalence of algebras is a linear equivalence.
Equations
- e.toLinearEquiv = { toFun := ⇑e, map_add' := ⋯, map_smul' := ⋯, invFun := ⇑e.symm, left_inv := ⋯, right_inv := ⋯ }
Instances For
Interpret an algebra equivalence as a linear map.
Equations
- e.toLinearMap = (↑e).toLinearMap
Instances For
Promotes a bijective algebra homomorphism to an algebra equivalence.
Equations
- AlgEquiv.ofBijective f hf = { toEquiv := (RingEquiv.ofBijective (↑f) hf).toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Upgrade a linear equivalence to an algebra equivalence, given that it distributes over multiplication and the identity
Equations
- AlgEquiv.ofLinearEquiv l map_one map_mul = { toFun := ⇑l, invFun := ⇑l.symm, left_inv := ⋯, right_inv := ⋯, map_mul' := map_mul, map_add' := ⋯, commutes' := ⋯ }
Instances For
Auxiliary definition to avoid looping in dsimp with AlgEquiv.ofLinearEquiv_symm.
Equations
- AlgEquiv.ofLinearEquiv_symm.aux l map_one map_mul = (AlgEquiv.ofLinearEquiv l map_one map_mul).symm
Instances For
Promotes a linear RingEquiv to an AlgEquiv.
Equations
- AlgEquiv.ofRingEquiv hf = { toFun := ⇑f, invFun := ⇑f.symm, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := hf }
Instances For
Equations
- One or more equations did not get rendered due to their size.
An algebra isomorphism induces a group isomorphism between automorphism groups.
This is a more bundled version of AlgEquiv.equivCongr.
Equations
Instances For
The tautological action by A₁ ≃ₐ[R] A₁ on A₁.
This generalizes Function.End.applyMulAction.
AlgEquiv.toAlgHom as a MonoidHom.
Equations
- AlgEquiv.toAlgHomHom R A = { toFun := AlgEquiv.toAlgHom, map_one' := ⋯, map_mul' := ⋯ }
Instances For
AlgEquiv.toLinearMap as a MonoidHom.
Equations
Instances For
The units group of S →ₐ[R] S is S ≃ₐ[R] S.
See LinearMap.GeneralLinearGroup.generalLinearEquiv for the linear map version.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Each element of the group defines an algebra equivalence.
This is a stronger version of MulSemiringAction.toRingEquiv and
DistribMulAction.toLinearEquiv.
Equations
- MulSemiringAction.toAlgEquiv R A g = { toEquiv := (MulSemiringAction.toRingEquiv G A g).toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Each element of the group defines an algebra equivalence.
This is a stronger version of MulSemiringAction.toRingAut and
DistribMulAction.toModuleEnd.
Equations
- MulSemiringAction.toAlgAut G R A = { toFun := MulSemiringAction.toAlgEquiv R A, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Equations
- instUniqueAlgEquivOfSubsingleton = { default := AlgEquiv.ofAlgHom default default ⋯ ⋯, uniq := ⋯ }
The algebra equivalence between ULift A and A.
Equations
- ULift.algEquiv = { toEquiv := ULift.ringEquiv.toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
If an R-algebra A is isomorphic to R as R-module, then the canonical map R → A is an
equivalence of R-algebras.
Note that if e : R ≃ₗ[R] A is the linear equivalence, then this is not the same as the equivalence
of algebras provided here unless e 1 = 1.
Equations
- e.algEquivOfRing = { toFun := (↑↑(Algebra.ofId R A).toRingHom).toFun, invFun := fun (x : A) => e.symm (e 1 * x), left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }