Documentation

CharacteristicSet.AscendingSet

Ascending Set and Basic Set #

This file defines the abstract theory of Ascending Set and Basic Set. An Ascending Set is a Triangulated Set with additional reduction properties. A Basic Set is, informally, the "smallest" Ascending Set contained in a given set of polynomials.

We introduce two type main variables:

  1. AscendingSetTheory: Abstracting the definition of an ascending set (e.g., strong vs. weak reduction).
  2. HasBasicSet: Abstracting the algorithm to compute a basic set from a list of polynomials.
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 TriangulatedSet to be an "Ascending Set". Different instances can implement Ritt's strong ascending sets or Wu's weak ascending sets.

Instances

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

    Equations
    Instances For
      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 Triangulated 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 : TriangulatedSet σ R} (h : S.isAscendingSet) :
              Equations
              Instances For
                @[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 : TriangulatedSet σ 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) :
                Equations
                Instances For
                  def AscendingSet.length_coe {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S : AscendingSet σ R} :
                  S.length = (↑S).length
                  Equations
                  • =
                  Instances For
                    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
                    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
                    Equations
                    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
                    Equations
                    Instances For
                      def AscendingSet.toList {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] (S : AscendingSet σ R) :
                      Equations
                      Instances For
                        noncomputable instance AscendingSet.instEmptyCollection {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] :
                        Equations
                        noncomputable instance AscendingSet.instInhabited {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] :
                        Equations
                        noncomputable def AscendingSet.rank {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] (S : AscendingSet σ R) :
                        Lex (WithTop (Lex (WithBot σ × )))
                        Equations
                        Instances For
                          theorem AscendingSet.rank_def {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] {S : AscendingSet σ R} :
                          S.rank = (↑S).rank
                          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
                          noncomputable instance AscendingSet.instDecidableLE {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] [AscendingSetTheory σ R] :
                          Equations
                          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
                          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) :
                          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
                            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 rank.

                            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