Homogeneous lexicographic monomial ordering
MonomialOrder.degLex
: a variant of the lexicographic ordering that first compares degrees. For this,σ
needs to be embedded with an ordering relation which satisfiesWellFoundedGT σ
. (This last property is automatic whenσ
is finite).
The type synonym is DegLex (σ →₀ ℕ)
and the two lemmas MonomialOrder.degLex_le_iff
and MonomialOrder.degLex_lt_iff
rewrite the ordering as comparisons in the type Lex (σ →₀ ℕ)
.
References #
def
DegLex.rec
{α : Type u_1}
{β : DegLex α → Sort u_2}
(h : (a : α) → β (toDegLex a))
(a : DegLex α)
:
β a
A recursor for DegLex
. Use as induction x
.
Equations
- DegLex.rec h a = h (ofDegLex a)
Instances For
noncomputable instance
instAddCommMonoidDegLex
{α : Type u_1}
[AddCommMonoid α]
:
AddCommMonoid (DegLex α)
Equations
- instAddCommMonoidDegLex = ofDegLex.addCommMonoid
Finsupp.DegLex r s
is the homogeneous lexicographic order on α →₀ M
,
where α
is ordered by r
and M
is ordered by s
.
The type synonym DegLex (α →₀ M)
has an order given by Finsupp.DegLex (· < ·) (· < ·)
.
Equations
- Finsupp.DegLex r s = (Prod.Lex s (Finsupp.Lex r s) on fun (x : α →₀ ℕ) => (x.degree, x))
Instances For
theorem
Finsupp.degLex_def
{α : Type u_1}
{r : α → α → Prop}
{s : ℕ → ℕ → Prop}
{a b : α →₀ ℕ}
:
Finsupp.DegLex r s a b ↔ Prod.Lex s (Finsupp.Lex r s) (a.degree, a) (b.degree, b)
theorem
Finsupp.DegLex.wellFounded
{α : Type u_1}
{r : α → α → Prop}
[IsTrichotomous α r]
(hr : WellFounded (Function.swap r))
{s : ℕ → ℕ → Prop}
(hs : WellFounded s)
(hs0 : ∀ ⦃n : ℕ⦄, ¬s n 0)
:
WellFounded (Finsupp.DegLex r s)
instance
Finsupp.DegLex.instLinearOrderDegLexNat
{α : Type u_1}
[LinearOrder α]
:
LinearOrder (DegLex (α →₀ ℕ))
The linear order on Finsupp
s obtained by the homogeneous lexicographic ordering.
Equations
- Finsupp.DegLex.instLinearOrderDegLexNat = LinearOrder.lift' (fun (f : DegLex (α →₀ ℕ)) => toLex ((ofDegLex f).degree, toLex (ofDegLex f))) ⋯
noncomputable instance
Finsupp.DegLex.instOrderedCancelAddCommMonoidDegLexNat
{α : Type u_1}
[LinearOrder α]
:
OrderedCancelAddCommMonoid (DegLex (α →₀ ℕ))
Equations
- Finsupp.DegLex.instOrderedCancelAddCommMonoidDegLexNat = OrderedCancelAddCommMonoid.mk ⋯
noncomputable instance
Finsupp.DegLex.instLinearOrderedCancelAddCommMonoidDegLexNat
{α : Type u_1}
[LinearOrder α]
:
The linear order on Finsupp
s obtained by the homogeneous lexicographic ordering.
Equations
- One or more equations did not get rendered due to their size.
theorem
Finsupp.DegLex.single_strictAnti
{α : Type u_1}
[LinearOrder α]
:
StrictAnti fun (a : α) => toDegLex (Finsupp.single a 1)
theorem
Finsupp.DegLex.single_antitone
{α : Type u_1}
[LinearOrder α]
:
Antitone fun (a : α) => toDegLex (Finsupp.single a 1)
theorem
Finsupp.DegLex.single_lt_iff
{α : Type u_1}
[LinearOrder α]
{a b : α}
:
toDegLex (Finsupp.single b 1) < toDegLex (Finsupp.single a 1) ↔ a < b
theorem
Finsupp.DegLex.single_le_iff
{α : Type u_1}
[LinearOrder α]
{a b : α}
:
toDegLex (Finsupp.single b 1) ≤ toDegLex (Finsupp.single a 1) ↔ a ≤ b
Equations
- Finsupp.DegLex.orderBot = OrderBot.mk ⋯
instance
Finsupp.DegLex.wellFoundedLT
{α : Type u_1}
[LinearOrder α]
[WellFoundedGT α]
:
WellFoundedLT (DegLex (α →₀ ℕ))
The deg-lexicographic order on σ →₀ ℕ
, as a MonomialOrder
Equations
Instances For
theorem
MonomialOrder.degLex_le_iff
{σ : Type u_2}
[LinearOrder σ]
[WellFoundedGT σ]
{a b : σ →₀ ℕ}
:
theorem
MonomialOrder.degLex_lt_iff
{σ : Type u_2}
[LinearOrder σ]
[WellFoundedGT σ]
{a b : σ →₀ ℕ}
:
theorem
MonomialOrder.degLex_single_le_iff
{σ : Type u_2}
[LinearOrder σ]
[WellFoundedGT σ]
{a b : σ}
:
MonomialOrder.degLex.toSyn (Finsupp.single a 1) ≤ MonomialOrder.degLex.toSyn (Finsupp.single b 1) ↔ b ≤ a
theorem
MonomialOrder.degLex_single_lt_iff
{σ : Type u_2}
[LinearOrder σ]
[WellFoundedGT σ]
{a b : σ}
:
MonomialOrder.degLex.toSyn (Finsupp.single a 1) < MonomialOrder.degLex.toSyn (Finsupp.single b 1) ↔ b < a