Ring involutions #
This file defines a ring involution as a structure extending R ≃+* Rᵐᵒᵖ
,
with the additional fact f.involution : (f (f x).unop).unop = x
.
Notations #
We provide a coercion to a function R → Rᵐᵒᵖ
.
References #
Tags #
Ring involution
A ring involution
- toFun : R → Rᵐᵒᵖ
- invFun : Rᵐᵒᵖ → R
- left_inv : Function.LeftInverse self.invFun self.toFun
- right_inv : Function.RightInverse self.invFun self.toFun
- involution' : ∀ (x : R), MulOpposite.unop (self.toEquiv.toFun (MulOpposite.unop (self.toEquiv.toFun x))) = x
The requirement that the ring homomorphism is its own inverse
Instances For
class
RingInvoClass
(F : Type u_2)
(R : Type u_3)
[Semiring R]
[EquivLike F R Rᵐᵒᵖ]
extends
RingEquivClass
:
RingInvoClass F R
states that F
is a type of ring involutions.
You should extend this class when you extend RingInvo
.
- involution : ∀ (f : F) (x : R), MulOpposite.unop (f (MulOpposite.unop (f x))) = x
Every ring involution must be its own inverse
Instances
def
RingInvoClass.toRingInvo
{F : Type u_2}
{R : Type u_3}
[Semiring R]
[EquivLike F R Rᵐᵒᵖ]
[RingInvoClass F R]
(f : F)
:
RingInvo R
Turn an element of a type F
satisfying RingInvoClass F R
into an actual
RingInvo
. This is declared as the default coercion from F
to RingInvo R
.
Equations
- ↑f = let src := ↑f; { toRingEquiv := src, involution' := (_ : ∀ (x : R), MulOpposite.unop (f (MulOpposite.unop (f x))) = x) }
Instances For
instance
RingInvo.instCoeTCRingInvo
{F : Type u_2}
{R : Type u_1}
[EquivLike F R Rᵐᵒᵖ]
[Semiring R]
[RingInvoClass F R]
:
Any type satisfying RingInvoClass
can be cast into RingInvo
via
RingInvoClass.toRingInvo
.
Equations
- RingInvo.instCoeTCRingInvo = { coe := RingInvoClass.toRingInvo }
instance
RingInvo.instRingInvoClassRingInvoInstEquivLikeRingInvoMulOpposite
{R : Type u_1}
[Semiring R]
:
RingInvoClass (RingInvo R) R
Equations
- (_ : RingInvoClass (RingInvo R) R) = (_ : RingInvoClass (RingInvo R) R)
def
RingInvo.mk'
{R : Type u_1}
[Semiring R]
(f : R →+* Rᵐᵒᵖ)
(involution : ∀ (r : R), MulOpposite.unop (f (MulOpposite.unop (f r))) = r)
:
RingInvo R
Construct a ring involution from a ring homomorphism.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
RingInvo.involution
{R : Type u_1}
[Semiring R]
(f : RingInvo R)
(x : R)
:
MulOpposite.unop (f (MulOpposite.unop (f x))) = x
Equations
- instInhabitedRingInvoToSemiringToCommSemiring R = { default := RingInvo.id R }