Subrings #
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)
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 Mand coercion(↑) : Subring M → et Mform aGaloisInsertion.comap f B : Subring A: the preimage of a subringBalong the ring homomorphismfmap f A : Subring B: the image of a subringAalong the ring homomorphismf.eqLocus f g : Subring R: given ring homomorphismsf g : R →+* S, the subring ofRwheref 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
top #
Equations
comap #
map #
A subring is isomorphic to its image under an injective function
Equations
- s.equivMapOfInjective f hf = { toEquiv := Equiv.Set.image (⇑f) (↑s) hf, map_mul' := ⋯, map_add' := ⋯ }
Instances For
range #
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.instBot = { bot := (Int.castRingHom R).range }
inf #
Equations
- Subring.instInfSet = { sInf := fun (s : Set (Subring R)) => Subring.mk' (⋂ t ∈ s, ↑t) (⨅ t ∈ s, t.toSubmonoid) (⨅ t ∈ s, t.toAddSubgroup) ⋯ ⋯ }
Subrings of a ring form a complete lattice.
Equations
- One or more equations did not get rendered due to their size.
Center of a ring #
The center of a ring R is the set of elements that commute with everything in R
Equations
- Subring.center R = { carrier := Set.center R, mul_mem' := ⋯, one_mem' := ⋯, add_mem' := ⋯, zero_mem' := ⋯, neg_mem' := ⋯ }
Instances For
Equations
- Subring.decidableMemCenter x✝ = decidable_of_iff' (∀ (g : R), g * x✝ = x✝ * g) ⋯
The center of a (not necessarily associative) ring is isomorphic to the center of its opposite.
Instances For
Equations
- One or more equations did not get rendered due to their size.
The centralizer of a set inside a ring as a Subring.
Equations
- Subring.centralizer s = { toSubsemiring := Subsemiring.centralizer s, neg_mem' := ⋯ }
Instances For
subring closure of a subset #
Alias of Subring.notMem_of_notMem_closure.
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 = { toRing := (Subring.closure s).toRing, mul_comm := ⋯ }
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
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
- f.rangeRestrict = f.codRestrict f.range ⋯
Instances For
The subring of elements x : R such that f x = g x, i.e.,
the equalizer of f and g as a subring of R
Equations
Instances For
The ring homomorphism associated to an inclusion of subrings.
Equations
- Subring.inclusion h = S.subtype.codRestrict T ⋯
Instances For
Makes the identity isomorphism from a proof two subrings of a multiplicative monoid are equal.
Equations
- RingEquiv.subringCongr h = { toEquiv := Equiv.setCongr ⋯, map_mul' := ⋯, map_add' := ⋯ }
Instances For
Restrict a ring homomorphism with a left inverse to a ring isomorphism to its
RingHom.range.
Equations
- RingEquiv.ofLeftInverse h = { toFun := fun (x : R) => f.rangeRestrict x, invFun := fun (x : ↥f.range) => (g ∘ ⇑f.range.subtype) x, left_inv := h, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯ }
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
Instances For
Actions by Subrings #
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
- S.instSMulSubtypeMem = inferInstanceAs (SMul (↥S.toSubsemiring) α)
Note that this provides IsScalarTower S R R which is needed by smul_mul_assoc.
The action by a subring is the action by the underlying ring.
Equations
The action by a subring is the action by the underlying ring.
Equations
The action by a subring is the action by the underlying ring.
Equations
The action by a subring is the action by the underlying ring.
Equations
The action by a subring is the action by the underlying ring.
Equations
- S.instModuleSubtypeMem = inferInstanceAs (Module (↥S.toSubsemiring) α)
The action by a subsemiring is the action by the underlying ring.
Equations
The center of a semiring acts commutatively on that semiring.
The center of a semiring acts commutatively on that semiring.