Documentation

CharacteristicSet.AscendingSet

Ascending sets and basic sets #

This file defines the abstract theory of ascending sets and basic sets. An ascending set is a triangular set with additional reduction properties. A basic set is the "smallest" ascending set contained in a given set of polynomials.

Main declarations #

class AscendingSetTheory (σ : Type u_1) (R : Type u_2) [CommSemiring R] [DecidableEq R] [LinearOrder σ] :
Type (max u_1 u_2)

The abstract theory of Ascending Sets. This class allows us to define what it means for a TriangularSet to be an "Ascending Set". Different instances can implement Ritt's strong ascending sets or Wu's weak ascending sets.

Instances

    A Triangular Set is an Ascending Set if every element is reduced with respect to its predecessors.

    Equations
    Instances For
      @[implicit_reducible]
      Equations
      theorem TriangularSet.isAscendingSet_concat {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S : TriangularSet σ R} {p : MvPolynomial σ R} (h : S.CanConcat p) (hp : i < S.length, AscendingSetTheory.reducedTo' p (S i)) :
      def AscendingSet (σ : Type u_3) (R : Type u_4) [CommSemiring R] [LinearOrder σ] [DecidableEq R] [AscendingSetTheory σ R] :
      Type (max 0 u_3 u_4)

      The type of Ascending Sets, which are Triangular Sets satisfying the ascending property.

      Equations
      Instances For
        class HasBasicSet (σ : Type u_3) (R : Type u_4) [CommSemiring R] [DecidableEq R] [LinearOrder σ] extends AscendingSetTheory σ R :
        Type (max u_3 u_4)

        The interface for algorithms computing Basic Sets. Any instance of this class provides a basicSet function that computes a minimal ascending set contained in a given list of polynomials.

        Instances

          Definition of Standard (Ritt) Ascending Set: strict degree reduction.

          Equations
          Instances For

            Definition of Weak (Wu) Ascending Set: initial reduction.

            Equations
            Instances For
              def AscendingSet.mk' {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S : TriangularSet σ R} (h : S.IsAscendingSet) :

              Construct an ascending set from a triangular set and a proof of the ascending property.

              Equations
              Instances For
                @[implicit_reducible]
                Equations
                @[simp]
                theorem AscendingSet.coe_mk {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S : AscendingSet σ R} (h : (↑S).IsAscendingSet) :
                S, h = S
                theorem AscendingSet.coe_mk' {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] (S : TriangularSet σ R) (h : S.IsAscendingSet) :
                S, h = S
                theorem AscendingSet.eq_of_coe_eq {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S T : AscendingSet σ R} (h : S = T) :
                S = T
                theorem AscendingSet.ne_of_coe_ne {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S T : AscendingSet σ R} (h : S T) :
                S T
                theorem AscendingSet.coe_eq_coe {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S T : AscendingSet σ R} :
                S = T S = T
                theorem AscendingSet.coe_ne_coe {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S T : AscendingSet σ R} :
                S T S T
                def AscendingSet.length {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] (S : AscendingSet σ R) :

                The length of the ascending set.

                Equations
                Instances For
                  theorem AscendingSet.length_coe {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S : AscendingSet σ R} :
                  S.length = (↑S).length
                  @[implicit_reducible]
                  noncomputable instance AscendingSet.instFunLikeNatMvPolynomial {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] :
                  Equations
                  theorem AscendingSet.ext {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S T : AscendingSet σ R} (h : ∀ (i : ), S i = T i) :
                  S = T
                  theorem AscendingSet.ext_iff {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S T : AscendingSet σ R} :
                  S = T ∀ (i : ), S i = T i
                  theorem AscendingSet.ext' {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S T : AscendingSet σ R} (h1 : S.length = T.length) (h2 : i < S.length, S i = T i) :
                  S = T
                  @[implicit_reducible]
                  Equations
                  theorem AscendingSet.mem_def {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S : AscendingSet σ R} {p : MvPolynomial σ R} :
                  p S p S
                  @[implicit_reducible]
                  Equations
                  @[implicit_reducible]
                  Equations
                  theorem AscendingSet.subset_def {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S T : AscendingSet σ R} :
                  S T S T
                  theorem AscendingSet.ssubset_def {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S T : AscendingSet σ R} :
                  S T S T
                  noncomputable def AscendingSet.toFinset {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] (S : AscendingSet σ R) :

                  Converts a ascending set to a finite set.

                  Equations
                  Instances For
                    def AscendingSet.toList {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] (S : AscendingSet σ R) :

                    Converts a ascending set to a list.

                    Equations
                    Instances For
                      @[implicit_reducible]
                      noncomputable instance AscendingSet.instEmptyCollection {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] :
                      Equations
                      @[implicit_reducible]
                      noncomputable instance AscendingSet.instInhabited {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] :
                      Equations
                      noncomputable def AscendingSet.order {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] (S : AscendingSet σ R) :
                      Lex (WithTop (Lex (WithBot σ × )))

                      The order on the ascending set is exactly the order on the underlying triangular set.

                      Equations
                      Instances For
                        theorem AscendingSet.order_coe {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S : AscendingSet σ R} :
                        S.order = (↑S).order
                        theorem AscendingSet.lt_def {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S T : AscendingSet σ R} :
                        S < T S < T
                        theorem AscendingSet.le_def {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S T : AscendingSet σ R} :
                        S T S T
                        @[implicit_reducible]
                        noncomputable instance AscendingSet.instDecidableLE {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] :
                        Equations
                        @[implicit_reducible]
                        noncomputable instance AscendingSet.instDecidableRelEquiv {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] :
                        DecidableRel fun (x1 x2 : AscendingSet σ R) => x1 x2
                        Equations
                        theorem AscendingSet.equiv_def {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S T : AscendingSet σ R} :
                        S T S T
                        @[implicit_reducible]
                        Equations
                        theorem AscendingSet.Set.has_min {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] [Finite σ] (S' : Set (AscendingSet σ R)) (h : S'.Nonempty) :
                        SS', TS', S T
                        theorem AscendingSet.Set.has_min' {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] [Finite σ] (S' : Set (AscendingSet σ R)) (h : S'.Nonempty) :
                        ∃ (S : AscendingSet σ R), Minimal (fun (x : AscendingSet σ R) => x S') S
                        noncomputable def AscendingSet.Set.min {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] [Finite σ] (S' : Set (AscendingSet σ R)) (h : S'.Nonempty) :

                        The minimal element of a nonempty set of ascending sets.

                        Equations
                        Instances For
                          theorem AscendingSet.Set.min_mem {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] [Finite σ] (S' : Set (AscendingSet σ R)) (h : S'.Nonempty) :
                          min S' h S'
                          theorem AscendingSet.Set.min_le {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] [Finite σ] (S' : Set (AscendingSet σ R)) (h : S'.Nonempty) (T : AscendingSet σ R) :
                          T S'min S' h T
                          @[implicit_reducible]
                          Equations
                          theorem MvPolynomial.Classical.hasBasicSet {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] [Finite σ] {α : Type u_3} [Membership (MvPolynomial σ R) α] (a : α) :
                          ∃ (S : AscendingSet σ R), Minimal (fun (a' : AscendingSet σ R) => ∀ ⦃p : MvPolynomial σ R⦄, p a'p a) S

                          The main variableical existence of a Basic Set for any set of polynomials a. This is guaranteed by the well-foundedness of the order.

                          noncomputable def MvPolynomial.Classical.basicSet {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] [Finite σ] {α : Type u_3} [Membership (MvPolynomial σ R) α] (a : α) :

                          Non-computable choice of a Basic Set for a.

                          Equations
                          Instances For
                            theorem MvPolynomial.Classical.basicSet_minimal' {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] [Finite σ] {α : Type u_3} [Membership (MvPolynomial σ R) α] (a : α) :
                            Minimal (fun (a' : AscendingSet σ R) => ∀ ⦃p : MvPolynomial σ R⦄, p a'p a) (Classical.basicSet a)
                            def MvPolynomial.List.basicSet {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [HasBasicSet σ R] (l : List (MvPolynomial σ R)) :

                            The Basic Set of a list l, as computed by the HasBasicSet instance.

                            Equations
                            Instances For
                              theorem MvPolynomial.List.basicSet_subset {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [HasBasicSet σ R] (l : List (MvPolynomial σ R)) :
                              (basicSet l) {p : MvPolynomial σ R | p l}
                              theorem MvPolynomial.List.basicSet_minimal {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [HasBasicSet σ R] (l : List (MvPolynomial σ R)) S : AscendingSet σ R :
                              S {p : MvPolynomial σ R | p l}basicSet l S
                              theorem MvPolynomial.List.basicSet_ge_of_subset {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [HasBasicSet σ R] {l1 l2 : List (MvPolynomial σ R)} :
                              l1 l2basicSet l2 basicSet l1
                              theorem MvPolynomial.List.basicSet_append_comm {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [HasBasicSet σ R] {l1 l2 : List (MvPolynomial σ R)} :
                              basicSet (l1 ++ l2) basicSet (l2 ++ l1)
                              theorem MvPolynomial.List.basicSet_append_lt_of_exists_reducedToSet {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [HasBasicSet σ R] {l1 l2 : List (MvPolynomial σ R)} (h : pl2, p 0 p.reducedToSet (basicSet l1)) :
                              basicSet (l2 ++ l1) < basicSet l1