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
.prod A B : Subring (R × S)
: the product of subringsf.range : Subring B
: the range of 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
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Alias of intCast_mem
.
Equations
- SubringClass.toHasIntCast s = { intCast := fun (n : ℤ) => ⟨↑n, ⋯⟩ }
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
- SubringClass.subtype s = { toFun := Subtype.val, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
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
- self.toAddSubgroup = { carrier := self.carrier, add_mem' := ⋯, zero_mem' := ⋯, neg_mem' := ⋯ }
Instances For
Equations
- ⋯ = ⋯
Copy of a subring with a new carrier
equal to the old one. Useful to fix definitional
equalities.
Equations
- S.copy s hs = { carrier := s, mul_mem' := ⋯, one_mem' := ⋯, add_mem' := ⋯, zero_mem' := ⋯, neg_mem' := ⋯ }
Instances For
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
- Subring.mk' s sm sa hm ha = { toSubmonoid := sm.copy s ⋯, add_mem' := ⋯, zero_mem' := ⋯, neg_mem' := ⋯ }
Instances For
A Subsemiring
containing -1 is a Subring
.
Equations
- s.toSubring hneg = { toSubsemiring := s, neg_mem' := ⋯ }
Instances For
A subring of a ring inherits a ring structure
Equations
- s.toRing = SubringClass.toRing s
A subring of a CommRing
is a CommRing
.
Equations
- s.toCommRing = SubringClass.toCommRing s
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
- ⋯ = ⋯