Subrings #
Let R
be a ring. This file defines the "bundled" subring type Subring R
, a type
whose terms correspond to subrings of R
. This is the preferred way to talk
about subrings in mathlib. Unbundled subrings (s : Set R
and IsSubring s
)
are not in this file, and they will ultimately be deprecated.
We prove that subrings are a complete lattice, and that you can map
(pushforward) and
comap
(pull back) them along ring homomorphisms.
We define the closure
construction from Set R
to Subring R
, sending a subset of R
to the subring it generates, and prove that it is a Galois insertion.
Main definitions #
Notation used here:
(R : Type u) [Ring R] (S : Type u) [Ring S] (f g : R →+* S)
(A : Subring R) (B : Subring S) (s : Set R)
-
Subring R
: the type of subrings of a ringR
. -
instance : CompleteLattice (Subring R)
: the complete lattice structure on the subrings. -
Subring.center
: the center of a ringR
. -
Subring.closure
: subring closure of a set, i.e., the smallest subring that includes the set. -
Subring.gi
:closure : Set M → Subring M
and coercion(↑) : Subring M → et M
form aGaloisInsertion
. -
comap f B : Subring A
: the preimage of a subringB
along the ring homomorphismf
-
map f A : Subring B
: the image of a subringA
along the ring homomorphismf
. -
eqLocus f g : Subring R
: given ring homomorphismsf g : R →+* S
, the subring ofR
wheref x = g x
Implementation notes #
A subring is implemented as a subsemiring which is also an additive subgroup. The initial PR was as a submonoid which is also an additive subgroup.
Lattice inclusion (e.g. ≤
and ⊓
) is used rather than set notation (⊆
and ∩
), although
∈
is defined as membership of a subring's underlying set.
Tags #
subring, subrings
SubringClass S R
states that S
is a type of subsets s ⊆ R
that
are both a multiplicative submonoid and an additive subgroup.
Instances
Equations
- ⋯ = ⋯
Alias of intCast_mem
.
Equations
- SubringClass.toHasIntCast s = { intCast := fun (n : ℤ) => { val := ↑n, property := ⋯ } }
A subring of a ring inherits a ring structure
Equations
- SubringClass.toRing s = Function.Injective.ring Subtype.val ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
A subring of a CommRing
is a CommRing
.
Equations
- SubringClass.toCommRing s = Function.Injective.commRing Subtype.val ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
A subring of a domain is a domain.
Equations
- ⋯ = ⋯
The natural ring hom from a subring of ring R
to R
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Subring R
is the type of subrings of R
. A subring of R
is a subset s
that is a
multiplicative submonoid and an additive subgroup. Note in particular that it shares the
same 0 and 1 as R.
Instances For
Reinterpret a Subring
as an AddSubgroup
.
Equations
- Subring.toAddSubgroup self = { toAddSubmonoid := { toAddSubsemigroup := { carrier := self.carrier, add_mem' := ⋯ }, zero_mem' := ⋯ }, neg_mem' := ⋯ }
Instances For
Equations
- ⋯ = ⋯
Construct a Subring R
from a set s
, a submonoid sm
, and an additive
subgroup sa
such that x ∈ s ↔ x ∈ sm ↔ x ∈ sa
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A Subsemiring
containing -1 is a Subring
.
Equations
- Subsemiring.toSubring s hneg = { toSubsemiring := s, neg_mem' := ⋯ }
Instances For
Product of a multiset of elements in a subring of a CommRing
is in the subring.
A subring of a ring inherits a ring structure
Equations
A subring of a non-trivial ring is non-trivial.
Equations
- ⋯ = ⋯
A subring of a ring with no zero divisors has no zero divisors.
Equations
- ⋯ = ⋯
Partial order #
top #
comap #
map #
A subring is isomorphic to its image under an injective function
Equations
- Subring.equivMapOfInjective s f hf = let __src := Equiv.Set.image (⇑f) (↑s) hf; { toEquiv := __src, map_mul' := ⋯, map_add' := ⋯ }
Instances For
range #
The range of a ring homomorphism, as a subring of the target. See Note [range copy pattern].
Equations
- RingHom.range f = Subring.copy (Subring.map f ⊤) (Set.range ⇑f) ⋯
Instances For
The range of a ring homomorphism is a fintype, if the domain is a fintype.
Note: this instance can form a diamond with Subtype.fintype
in the
presence of Fintype S
.
Equations
bot #
Equations
- Subring.instBotSubring = { bot := RingHom.range (Int.castRingHom R) }
inf #
Equations
- Subring.instInfSetSubring = { sInf := fun (s : Set (Subring R)) => Subring.mk' (⋂ t ∈ s, ↑t) (⨅ t ∈ s, t.toSubmonoid) (⨅ t ∈ s, Subring.toAddSubgroup t) ⋯ ⋯ }
Subrings of a ring form a complete lattice.
Equations
- Subring.instCompleteLatticeSubring = let __src := completeLatticeOfInf (Subring R) ⋯; CompleteLattice.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Center of a ring #
The center of a ring R
is the set of elements that commute with everything in R
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Subring.decidableMemCenter x = decidable_of_iff' (∀ (g : R), g * x = x * g) ⋯
The center is commutative.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Subring.instField = Field.mk ⋯ zpowRec ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ (fun (q : ℚ≥0) (a : ↥(Subring.center K)) => ↑q * a) ⋯ ⋯ (fun (a : ℚ) (x : ↥(Subring.center K)) => ↑a * x) ⋯
The centralizer of a set inside a ring as a Subring
.
Equations
- Subring.centralizer s = let __src := Subsemiring.centralizer s; { toSubsemiring := __src, neg_mem' := ⋯ }
Instances For
subring closure of a subset #
The subring generated by a set includes the set.
An induction principle for closure membership. If p
holds for 0
, 1
, and all elements
of s
, and is preserved under addition, negation, and multiplication, then p
holds for all
elements of the closure of s
.
An induction principle for closure membership, for predicates with two arguments.
If all elements of s : Set A
commute pairwise, then closure s
is a commutative ring.
Equations
- Subring.closureCommRingOfComm hcomm = let __src := Subring.toRing (Subring.closure s); CommRing.mk ⋯
Instances For
closure
forms a Galois insertion with the coercion to set.
Equations
- Subring.gi R = { choice := fun (s : Set R) (x : ↑(Subring.closure s) ≤ s) => Subring.closure s, gc := ⋯, le_l_u := ⋯, choice_eq := ⋯ }
Instances For
Closure of a subring S
equals S
.
Product of subrings is isomorphic to their product as rings.
Equations
- Subring.prodEquiv s t = let __src := Equiv.Set.prod ↑s ↑t; { toEquiv := __src, map_mul' := ⋯, map_add' := ⋯ }
Instances For
The underlying set of a non-empty directed sSup of subrings is just a union of the subrings. Note that this fails without the directedness assumption (the union of two subrings is typically not a subring)
Restriction of a ring homomorphism to its range interpreted as a subsemiring.
This is the bundled version of Set.rangeFactorization
.
Equations
Instances For
The range of a surjective ring homomorphism is the whole of the codomain.
The image under a ring homomorphism of the subring generated by a set equals the subring generated by the image of the set.
The ring homomorphism associated to an inclusion of subrings.
Equations
- Subring.inclusion h = RingHom.codRestrict (Subring.subtype S) T ⋯
Instances For
Makes the identity isomorphism from a proof two subrings of a multiplicative monoid are equal.
Equations
- RingEquiv.subringCongr h = let __src := Equiv.setCongr ⋯; { toEquiv := __src, map_mul' := ⋯, map_add' := ⋯ }
Instances For
Restrict a ring homomorphism with a left inverse to a ring isomorphism to its
RingHom.range
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given an equivalence e : R ≃+* S
of rings and a subring s
of R
,
subringMap e s
is the induced equivalence between s
and s.map e
Equations
- RingEquiv.subringMap e = RingEquiv.subsemiringMap e s.toSubsemiring
Instances For
Actions by Subring
s #
These are just copies of the definitions about Subsemiring
starting from
Subsemiring.MulAction
.
When R
is commutative, Algebra.ofSubring
provides a stronger result than those found in
this file, which uses the same scalar action.
The action by a subring is the action by the underlying ring.
Equations
- Subring.instSMulSubtypeMemSubringInstMembershipInstSetLikeSubring S = inferInstanceAs (SMul (↥S.toSubsemiring) α)
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Note that this provides IsScalarTower S R R
which is needed by smul_mul_assoc
.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The action by a subring is the action by the underlying ring.
Equations
- One or more equations did not get rendered due to their size.
The action by a subring is the action by the underlying ring.
Equations
- One or more equations did not get rendered due to their size.
The action by a subring is the action by the underlying ring.
Equations
- One or more equations did not get rendered due to their size.
The action by a subring is the action by the underlying ring.
Equations
- One or more equations did not get rendered due to their size.
The action by a subring is the action by the underlying ring.
The action by a subring is the action by the underlying ring.
The action by a subsemiring is the action by the underlying ring.
Equations
- One or more equations did not get rendered due to their size.
The center of a semiring acts commutatively on that semiring.
Equations
- ⋯ = ⋯
The center of a semiring acts commutatively on that semiring.
Equations
- ⋯ = ⋯