Associated, prime, and irreducible elements. #
p
is not a unitif
p
factors then one factor is a unit
Irreducible p
states that p
is non-unit and only factors into units.
We explicitly avoid stating that p
is non-zero, this would require a semiring. Assuming only a
monoid allows us to reuse irreducible for associated elements.
Instances For
If p
and q
are irreducible, then p ∣ q
implies q ∣ p
.
Two elements of a Monoid
are Associated
if one of them is another one
multiplied by a unit on the right.
Equations
- Associated x y = ∃ u, x * ↑u = y
Instances For
The setoid of the relation x ~ᵤ y
iff there is a unit u
such that x * u = y
Equations
- Associated.setoid α = { r := Associated, iseqv := (_ : Equivalence Associated) }
Instances For
Equations
- instDecidableRelAssociatedToMonoidToMonoidWithZero x x = decidable_of_iff (x ∣ x ∧ x ∣ x) (_ : x ∣ x ∧ x ∣ x ↔ Associated x x)
The quotient of a monoid by the Associated
relation. Two elements x
and y
are associated iff there is a unit u
such that x * u = y
. There is a natural
monoid structure on Associates α
.
Equations
- Associates α = Quotient (Associated.setoid α)
Instances For
The canonical quotient map from a monoid α
into the Associates
of α
Equations
- Associates.mk a = Quotient.mk (Associated.setoid α) a
Instances For
Equations
- Associates.instInhabitedAssociates = { default := Quotient.mk (Associated.setoid α) 1 }
Equations
- Associates.instOneAssociates = { one := Quotient.mk (Associated.setoid α) 1 }
Equations
- Associates.instBotAssociates = { bot := 1 }
Equations
- Associates.instUniqueAssociates = { toInhabited := { default := 1 }, uniq := (_ : ∀ (a : Associates α), a = default) }
Equations
- One or more equations did not get rendered due to their size.
Equations
- Associates.instCommMonoid = CommMonoid.mk (_ : ∀ (a' b' : Associates α), a' * b' = b' * a')
Equations
- Associates.instPreorder = Preorder.mk (_ : ∀ (a : Associates α), a ∣ a) (_ : ∀ (a b c : Associates α), a ∣ b → b ∣ c → a ∣ c)
Associates.mk
as a MonoidHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Associates.uniqueUnits = { toInhabited := { default := 1 }, uniq := (_ : ∀ (u : (Associates α)ˣ), u = 1) }
Equations
- Associates.instOrderBot = OrderBot.mk (_ : ∀ (x : Associates α), 1 ≤ x)
Equations
- Associates.instZeroAssociates = { zero := Quotient.mk (Associated.setoid α) 0 }
Equations
- Associates.instTopAssociates = { top := 0 }
Equations
- Associates.instCommMonoidWithZero = CommMonoidWithZero.mk (_ : ∀ (a : Associates α), 0 * a = 0) (_ : ∀ (a : Associates α), a * 0 = 0)
Equations
- Associates.instOrderTop = OrderTop.mk (_ : ∀ (a : Associates α), ∃ c, ⊤ = a * c)
Equations
- Associates.instBoundedOrder = BoundedOrder.mk
Equations
- One or more equations did not get rendered due to their size.
Equations
- Associates.instPartialOrder = PartialOrder.mk (_ : ∀ (a' b' : Associates α), a' ≤ b' → b' ≤ a' → a' = b')
Equations
- Associates.instOrderedCommMonoid = OrderedCommMonoid.mk (_ : ∀ (a x : Associates α), a ≤ x → ∀ (c : Associates α), c * a ≤ c * x)
Equations
- Associates.instCancelCommMonoidWithZero = let src := inferInstance; CancelCommMonoidWithZero.mk
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.