Documentation

Mathlib.Data.Finsupp.MonomialOrder.DegLex

Homogeneous lexicographic monomial ordering

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 (α : Type u_1) :
Type u_1

A type synonym to equip a type with its lexicographic order sorted by degrees.

Equations
Instances For
    @[match_pattern]
    def toDegLex {α : Type u_1} :
    α DegLex α

    toDegLex is the identity function to the DegLex of a type.

    Equations
    Instances For
      theorem toDegLex_injective {α : Type u_1} :
      Function.Injective toDegLex
      theorem toDegLex_inj {α : Type u_1} {a b : α} :
      toDegLex a = toDegLex b a = b
      @[match_pattern]
      def ofDegLex {α : Type u_1} :
      DegLex α α

      ofDegLex is the identity function from the DegLex of a type.

      Equations
      Instances For
        theorem ofDegLex_injective {α : Type u_1} :
        Function.Injective ofDegLex
        theorem ofDegLex_inj {α : Type u_1} {a b : DegLex α} :
        ofDegLex a = ofDegLex b a = b
        @[simp]
        theorem ofDegLex_symm_eq {α : Type u_1} :
        ofDegLex.symm = toDegLex
        @[simp]
        theorem toDegLex_symm_eq {α : Type u_1} :
        toDegLex.symm = ofDegLex
        @[simp]
        theorem ofDegLex_toDegLex {α : Type u_1} (a : α) :
        ofDegLex (toDegLex a) = a
        @[simp]
        theorem toDegLex_ofDegLex {α : Type u_1} (a : DegLex α) :
        toDegLex (ofDegLex a) = a
        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
        Instances For
          @[simp]
          theorem DegLex.forall_iff {α : Type u_1} {p : DegLex αProp} :
          (∀ (a : DegLex α), p a) ∀ (a : α), p (toDegLex a)
          @[simp]
          theorem DegLex.exists_iff {α : Type u_1} {p : DegLex αProp} :
          (∃ (a : DegLex α), p a) ∃ (a : α), p (toDegLex a)
          noncomputable instance instAddCommMonoidDegLex {α : Type u_1} [AddCommMonoid α] :
          Equations
          • instAddCommMonoidDegLex = ofDegLex.addCommMonoid
          theorem toDegLex_add {α : Type u_1} [AddCommMonoid α] (a b : α) :
          toDegLex (a + b) = toDegLex a + toDegLex b
          theorem ofDegLex_add {α : Type u_1} [AddCommMonoid α] (a b : DegLex α) :
          ofDegLex (a + b) = ofDegLex a + ofDegLex b
          def Finsupp.DegLex {α : Type u_1} (r : ααProp) (s : Prop) :
          (α →₀ )(α →₀ )Prop

          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
          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) :
            instance Finsupp.DegLex.instLTDegLexNat {α : Type u_1} [LT α] :
            Equations
            • Finsupp.DegLex.instLTDegLexNat = { lt := fun (f g : DegLex (α →₀ )) => Finsupp.DegLex (fun (x1 x2 : α) => x1 < x2) (fun (x1 x2 : ) => x1 < x2) (ofDegLex f) (ofDegLex g) }
            theorem Finsupp.DegLex.lt_def {α : Type u_1} [LT α] {a b : DegLex (α →₀ )} :
            a < b toLex ((ofDegLex a).degree, toLex (ofDegLex a)) < toLex ((ofDegLex b).degree, toLex (ofDegLex b))
            theorem Finsupp.DegLex.lt_iff {α : Type u_1} [LT α] {a b : DegLex (α →₀ )} :
            a < b (ofDegLex a).degree < (ofDegLex b).degree (ofDegLex a).degree = (ofDegLex b).degree toLex (ofDegLex a) < toLex (ofDegLex b)
            instance Finsupp.DegLex.isStrictOrder {α : Type u_1} [LinearOrder α] :
            IsStrictOrder (DegLex (α →₀ )) fun (x1 x2 : DegLex (α →₀ )) => x1 < x2

            The linear order on Finsupps obtained by the homogeneous lexicographic ordering.

            Equations
            theorem Finsupp.DegLex.le_iff {α : Type u_1} [LinearOrder α] {x y : DegLex (α →₀ )} :
            x y (ofDegLex x).degree < (ofDegLex y).degree (ofDegLex x).degree = (ofDegLex y).degree toLex (ofDegLex x) toLex (ofDegLex y)
            Equations

            The linear order on Finsupps 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
            theorem Finsupp.DegLex.monotone_degree {α : Type u_1} [LinearOrder α] :
            Monotone fun (x : DegLex (α →₀ )) => (ofDegLex x).degree
            Equations
            noncomputable def MonomialOrder.degLex {σ : Type u_2} [LinearOrder σ] [WellFoundedGT σ] :

            The deg-lexicographic order on σ →₀ ℕ, as a MonomialOrder

            Equations
            • MonomialOrder.degLex = { syn := DegLex (σ →₀ ), locacm := inferInstance, toSyn := { toEquiv := toDegLex, map_add' := }, toSyn_monotone := , wf := }
            Instances For
              theorem MonomialOrder.degLex_le_iff {σ : Type u_2} [LinearOrder σ] [WellFoundedGT σ] {a b : σ →₀ } :
              MonomialOrder.degLex.toSyn a MonomialOrder.degLex.toSyn b toDegLex a toDegLex b
              theorem MonomialOrder.degLex_lt_iff {σ : Type u_2} [LinearOrder σ] [WellFoundedGT σ] {a b : σ →₀ } :
              MonomialOrder.degLex.toSyn a < MonomialOrder.degLex.toSyn b toDegLex a < toDegLex 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