Bundled non-unital subsemirings #
We define the CompleteLattice
structure, and non-unital subsemiring
map
, comap
and range (srange
) of a NonUnitalRingHom
etc.
The ring equiv between the top element of NonUnitalSubsemiring R
and R
.
Equations
- NonUnitalSubsemiring.topEquiv = { toEquiv := Subsemigroup.topEquiv.toEquiv, map_mul' := ⋯, map_add' := ⋯ }
Instances For
The preimage of a non-unital subsemiring along a non-unital ring homomorphism is a non-unital subsemiring.
Equations
- NonUnitalSubsemiring.comap f s = { carrier := ⇑f ⁻¹' ↑s, add_mem' := ⋯, zero_mem' := ⋯, mul_mem' := ⋯ }
Instances For
The image of a non-unital subsemiring along a ring homomorphism is a non-unital subsemiring.
Equations
- NonUnitalSubsemiring.map f s = { carrier := ⇑f '' ↑s, add_mem' := ⋯, zero_mem' := ⋯, mul_mem' := ⋯ }
Instances For
A non-unital subsemiring 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
The range of a non-unital ring homomorphism is a non-unital subsemiring. See note [range copy pattern].
Equations
- NonUnitalRingHom.srange f = (NonUnitalSubsemiring.map ↑f ⊤).copy (Set.range ⇑f) ⋯
Instances For
The range of a morphism of non-unital semirings is finite if the domain is a finite.
Equations
- ⋯ = ⋯
Equations
- NonUnitalSubsemiring.instInfSet = { sInf := fun (s : Set (NonUnitalSubsemiring R)) => NonUnitalSubsemiring.mk' (⋂ t ∈ s, ↑t) (⨅ t ∈ s, t.toSubsemigroup) ⋯ (⨅ t ∈ s, t.toAddSubmonoid) ⋯ }
Non-unital subsemirings of a non-unital semiring form a complete lattice.
Equations
- NonUnitalSubsemiring.instCompleteLattice = CompleteLattice.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
The center of a semiring R
is the set of elements that commute and associate with everything
in R
Equations
- NonUnitalSubsemiring.center R = { carrier := (Subsemigroup.center R).carrier, add_mem' := ⋯, zero_mem' := ⋯, mul_mem' := ⋯ }
Instances For
The center is commutative and associative.
A point-free means of proving membership in the center, for a non-associative ring.
This can be helpful when working with types that have ext lemmas for R →+ R
.
Equations
- NonUnitalSubsemiring.decidableMemCenter x = decidable_of_iff' (∀ (g : R), g * x = x * g) ⋯
The centralizer of a set as non-unital subsemiring.
Equations
- NonUnitalSubsemiring.centralizer s = { carrier := s.centralizer, add_mem' := ⋯, zero_mem' := ⋯, mul_mem' := ⋯ }
Instances For
The NonUnitalSubsemiring
generated by a set.
Equations
- NonUnitalSubsemiring.closure s = sInf {S : NonUnitalSubsemiring R | s ⊆ ↑S}
Instances For
The non-unital subsemiring generated by a set includes the set.
A non-unital subsemiring S
includes closure s
if and only if it includes s
.
Subsemiring closure of a set is monotone in its argument: if s ⊆ t
,
then closure s ≤ closure t
.
If all the elements of a set s
commute, then closure s
is a non-unital commutative
semiring.
Instances For
The additive closure of a non-unital subsemigroup is a non-unital subsemiring.
Equations
- M.nonUnitalSubsemiringClosure = { toAddSubmonoid := AddSubmonoid.closure ↑M, mul_mem' := ⋯ }
Instances For
The NonUnitalSubsemiring
generated by a multiplicative subsemigroup coincides with the
NonUnitalSubsemiring.closure
of the subsemigroup itself .
The elements of the non-unital subsemiring closure of M
are exactly the elements of the
additive closure of a multiplicative subsemigroup M
.
An induction principle for closure membership. If p
holds for 0
, 1
, and all elements
of s
, and is preserved under addition and multiplication, then p
holds for all elements
of the closure of s
.
An induction principle for closure membership for predicates with two arguments.
closure
forms a Galois insertion with the coercion to set.
Equations
- NonUnitalSubsemiring.gi R = { choice := fun (s : Set R) (x : ↑(NonUnitalSubsemiring.closure s) ≤ s) => NonUnitalSubsemiring.closure s, gc := ⋯, le_l_u := ⋯, choice_eq := ⋯ }
Instances For
Closure of a non-unital subsemiring S
equals S
.
Given NonUnitalSubsemiring
s s
, t
of semirings R
, S
respectively, s.prod t
is
s × t
as a non-unital subsemiring of R × S
.
Instances For
Product of non-unital subsemirings is isomorphic to their product as semigroups.
Equations
- s.prodEquiv t = { toEquiv := Equiv.Set.prod ↑s ↑t, map_mul' := ⋯, map_add' := ⋯ }
Instances For
Restriction of a non-unital ring homomorphism to its range interpreted as a non-unital subsemiring.
This is the bundled version of Set.rangeFactorization
.
Equations
Instances For
The range of a surjective non-unital ring homomorphism is the whole of the codomain.
Alias of NonUnitalRingHom.srange_eq_top_of_surjective
.
The range of a surjective non-unital ring homomorphism is the whole of the codomain.
If two non-unital ring homomorphisms are equal on a set, then they are equal on its non-unital subsemiring closure.
The image under a ring homomorphism of the subsemiring generated by a set equals the subsemiring generated by the image of the set.
Makes the identity isomorphism from a proof two non-unital subsemirings of a multiplicative monoid are equal.
Equations
- RingEquiv.nonUnitalSubsemiringCongr h = { toEquiv := Equiv.setCongr ⋯, map_mul' := ⋯, map_add' := ⋯ }
Instances For
Restrict a non-unital ring homomorphism with a left inverse to a ring isomorphism to its
NonUnitalRingHom.srange
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given an equivalence e : R ≃+* S
of non-unital semirings and a non-unital subsemiring
s
of R
, non_unital_subsemiring_map e s
is the induced equivalence between s
and
s.map e
Equations
- e.nonUnitalSubsemiringMap s = { toEquiv := (e.toAddEquiv.addSubmonoidMap s.toAddSubmonoid).toEquiv, map_mul' := ⋯, map_add' := ⋯ }