NonUnitalSubring
s #
Let R
be a non-unital ring.
We prove that non-unital 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 NonUnitalSubring R
, sending a subset of
R
to the non-unital subring it generates, and prove that it is a Galois insertion.
Main definitions #
Notation used here:
(R : Type u) [NonUnitalRing R] (S : Type u) [NonUnitalRing S] (f g : R →ₙ+* S)
(A : NonUnitalSubring R) (B : NonUnitalSubring S) (s : Set R)
instance : CompleteLattice (NonUnitalSubring R)
: the complete lattice structure on the non-unital subrings.NonUnitalSubring.center
: the center of a non-unital ringR
.NonUnitalSubring.closure
: non-unital subring closure of a set, i.e., the smallest non-unital subring that includes the set.NonUnitalSubring.gi
:closure : Set M → NonUnitalSubring M
and coercioncoe : NonUnitalSubring M → Set M
form aGaloisInsertion
.comap f B : NonUnitalSubring A
: the preimage of a non-unital subringB
along the non-unital ring homomorphismf
map f A : NonUnitalSubring B
: the image of a non-unital subringA
along the non-unital ring homomorphismf
.Prod A B : NonUnitalSubring (R × S)
: the product of non-unital subringsf.range : NonUnitalSubring B
: the range of the non-unital ring homomorphismf
.eq_locus f g : NonUnitalSubring R
: given non-unital ring homomorphismsf g : R →ₙ+* S
, the non-unital subring ofR
wheref x = g x
Implementation notes #
A non-unital subring is implemented as a NonUnitalSubsemiring
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 non-unital subring's underlying set.
Tags #
non-unital subring
Sum of a list of elements in a non-unital subring is in the non-unital subring.
Sum of a multiset of elements in a NonUnitalSubring
of a NonUnitalRing
is
in the NonUnitalSubring
.
Sum of elements in a NonUnitalSubring
of a NonUnitalRing
indexed by a Finset
is in the NonUnitalSubring
.
top #
The non-unital subring R
of the ring R
.
The ring equiv between the top element of NonUnitalSubring R
and R
.
Equations
- NonUnitalSubring.topEquiv = NonUnitalSubsemiring.topEquiv
Instances For
comap #
The preimage of a NonUnitalSubring
along a ring homomorphism is a NonUnitalSubring
.
Equations
- NonUnitalSubring.comap f s = { carrier := ⇑f ⁻¹' s.carrier, add_mem' := ⋯, zero_mem' := ⋯, mul_mem' := ⋯, neg_mem' := ⋯ }
Instances For
map #
The image of a NonUnitalSubring
along a ring homomorphism is a NonUnitalSubring
.
Equations
- NonUnitalSubring.map f s = { carrier := ⇑f '' s.carrier, add_mem' := ⋯, zero_mem' := ⋯, mul_mem' := ⋯, neg_mem' := ⋯ }
Instances For
A NonUnitalSubring
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, as a NonUnitalSubring
of the target.
See Note [range copy pattern].
Equations
- f.range = (NonUnitalSubring.map f ⊤).copy (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
- f.fintypeRange = Set.fintypeRange ⇑f
bot #
Equations
- NonUnitalSubring.instBot = { bot := NonUnitalRingHom.range 0 }
inf #
The inf of two NonUnitalSubring
s is their intersection.
Equations
- One or more equations did not get rendered due to their size.
Equations
- NonUnitalSubring.instInfSet = { sInf := fun (s : Set (NonUnitalSubring R)) => NonUnitalSubring.mk' (⋂ t ∈ s, ↑t) (⨅ t ∈ s, t.toSubsemigroup) (⨅ t ∈ s, t.toAddSubgroup) ⋯ ⋯ }
NonUnitalSubring
s of a ring form a complete lattice.
Equations
- NonUnitalSubring.instCompleteLattice = CompleteLattice.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Center of a ring #
The center of a ring R
is the set of elements that commute with everything in R
Equations
- NonUnitalSubring.center R = { toNonUnitalSubsemiring := NonUnitalSubsemiring.center R, neg_mem' := ⋯ }
Instances For
The center is commutative and associative.
Equations
- NonUnitalSubring.decidableMemCenter x✝ = decidable_of_iff' (∀ (g : R), g * x✝ = x✝ * g) ⋯
NonUnitalSubring
closure of a subset #
The NonUnitalSubring
generated by a set.
Equations
- NonUnitalSubring.closure s = sInf {S : NonUnitalSubring R | s ⊆ ↑S}
Instances For
The NonUnitalSubring
generated by a set includes the set.
A NonUnitalSubring
t
includes closure s
if and only if it includes s
.
NonUnitalSubring
closure of a set is monotone in its argument: if s ⊆ t
,
then closure s ≤ closure t
.
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
.
The difference with NonUnitalSubring.closure_induction
is that this acts on the
subtype.
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
Instances For
closure
forms a Galois insertion with the coercion to set.
Equations
- NonUnitalSubring.gi R = { choice := fun (s : Set R) (x : ↑(NonUnitalSubring.closure s) ≤ s) => NonUnitalSubring.closure s, gc := ⋯, le_l_u := ⋯, choice_eq := ⋯ }
Instances For
Closure of a NonUnitalSubring
S
equals S
.
Given NonUnitalSubring
s s
, t
of rings R
, S
respectively, s.prod t
is s ×ˢ t
as a NonUnitalSubring
of R × S
.
Equations
Instances For
Product of NonUnitalSubring
s is isomorphic to their product as rings.
Equations
- s.prodEquiv t = { toEquiv := Equiv.Set.prod ↑s ↑t, map_mul' := ⋯, map_add' := ⋯ }
Instances For
The underlying set of a non-empty directed Sup of NonUnitalSubring
s is just a union of the
NonUnitalSubring
s. Note that this fails without the directedness assumption (the union of two
NonUnitalSubring
s is typically not a NonUnitalSubring
)
Restriction of a ring homomorphism to its range interpreted as a NonUnitalSubring
.
This is the bundled version of Set.rangeFactorization
.
Equations
- f.rangeRestrict = NonUnitalRingHom.codRestrict f f.range ⋯
Instances For
Alias of NonUnitalRingHom.range_eq_top
.
The range of a surjective ring homomorphism is the whole of the codomain.
Alias of NonUnitalRingHom.range_eq_top_of_surjective
.
The range of a surjective ring homomorphism is the whole of the codomain.
The NonUnitalSubring
of elements x : R
such that f x = g x
, i.e.,
the equalizer of f and g as a NonUnitalSubring
of R
Equations
Instances For
If two ring homomorphisms are equal on a set, then they are equal on its
NonUnitalSubring
closure.
The image under a ring homomorphism of the NonUnitalSubring
generated by a set equals
the NonUnitalSubring
generated by the image of the set.
Makes the identity isomorphism from a proof two NonUnitalSubring
s of a multiplicative
monoid are equal.
Equations
- RingEquiv.nonUnitalSubringCongr 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
- One or more equations did not get rendered due to their size.