Documentation

CharacteristicSet.WeakAscendingSet

Weak Ascending Set (Wu's Definition) #

This file implements the theory and algorithm for Weak Ascending Set, which are central to Wu's Method. In this context, a "Weak Ascending Set" requires that the initial of every element is reduced with respect to preceding elements. This is a weaker condition than the standard reduction.

Consequently, the algorithm for computing a Weak Basic Set must ensure the triangular structure (strict ascending main variables) explicitly, by filtering candidates with B.max_vars < p.max_vars.

Main declarations #

theorem WeakAscendingSet.isAscendingSet_def {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] {S : TriangularSet σ R} :
IsAscendingSet S ∀ ⦃i j : ⦄, i < jj < S.length(S j).initial.reducedTo (S i)
theorem WeakAscendingSet.isAscendingSet_def' {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] {S : TriangularSet σ R} :
IsAscendingSet S ∀ ⦃i j : ⦄, i < ji < S.length(S j).initial.reducedTo (S i)
theorem WeakAscendingSet.initial_reducedTo_of_ne {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] {S : TriangularSet σ R} {i j : } (h : IsAscendingSet S) :
i jj < S.length(S i).initial.reducedTo (S j)
@[implicit_reducible]

The weak ascending set theory uses weak reduction p.initial.reducedTo.

Equations
Instances For
    @[irreducible]
    noncomputable def WeakAscendingSet.basicSet.go {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] (l : List (MvPolynomial σ R)) (BS : TriangularSet σ R) (hl1 : pl, p 0) (hl2 : pl, BS.CanConcat p) :

    The recursive algorithm for computing the Weak Basic Set.

    Equations
    Instances For
      noncomputable def WeakAscendingSet.basicSet {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] (l : List (MvPolynomial σ R)) :

      Computes the Weak Basic Set of a list of polynomials. Difference from Standard: The filter condition includes B.max_vars < p.max_vars. This is because p.initial.reducedTo B does NOT imply B.max_vars < p.max_vars (unlike strong reduction). We must enforce the triangular structure explicitly.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem WeakAscendingSet.basicSetGo_lt {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] (l : List (MvPolynomial σ R)) (BS : TriangularSet σ R) (hl1 : pl, p 0) (hl2 : pl, BS.CanConcat p) (h : l []) :
        (l.head h).initial.reducedToSet BSbasicSet.go l BS hl1 hl2 < BS
        theorem WeakAscendingSet.basicSetGo_le {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] (l : List (MvPolynomial σ R)) (BS : TriangularSet σ R) (hl1 : pl, p 0) (hl2 : pl, BS.CanConcat p) :
        Option.all (fun (p : MvPolynomial σ R) => decide (p.initial.reducedToSet BS)) l.head? = truebasicSet.go l BS hl1 hl2 BS
        theorem WeakAscendingSet.mem_of_mem_basicSetGo {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] (l : List (MvPolynomial σ R)) (BS : TriangularSet σ R) (hl1 : pl, p 0) (hl2 : pl, BS.CanConcat p) (p : MvPolynomial σ R) :
        pBSp basicSet.go l BS hl1 hl2p l
        theorem WeakAscendingSet.basicSetGo_isAscendingSet {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] (l : List (MvPolynomial σ R)) (BS : TriangularSet σ R) (hl1 : pl, p 0) (hl2 : pl, BS.CanConcat p) :
        Option.all (fun (p : MvPolynomial σ R) => decide (p.initial.reducedToSet BS)) l.head? = trueBS.IsAscendingSet(basicSet.go l BS hl1 hl2).IsAscendingSet
        theorem WeakAscendingSet.basicSetGo_le_ascendingSet {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] (l : List (MvPolynomial σ R)) (BS : TriangularSet σ R) (hl1 : pl, p 0) (hl2 : pl, BS.CanConcat p) :
        List.Pairwise (fun (x1 x2 : MvPolynomial σ R) => x1 x2) lOption.all (fun (p : MvPolynomial σ R) => decide (p.initial.reducedToSet BS)) l.head? = true∀ (T : TriangularSet σ R), T.IsAscendingSet(BS.length T.length i < BS.length, BS i T i) → (∀ pT, (∀ i < BS.length, ¬BS i p)p l)basicSet.go l BS hl1 hl2 T
        theorem WeakAscendingSet.basicSet_subset {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] (l : List (MvPolynomial σ R)) p : MvPolynomial σ R :
        p basicSet lp l
        theorem WeakAscendingSet.basicSet_minimal {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] (l : List (MvPolynomial σ R)) S : TriangularSet σ R :
        S.IsAscendingSet(∀ ⦃p : MvPolynomial σ R⦄, p Sp l)basicSet l S
        @[implicit_reducible]
        noncomputable def WeakAscendingSet.instHasBasicSet {R : Type u_1} {σ : Type u_2} [CommSemiring R] [DecidableEq R] [LinearOrder σ] :

        The Weak Basic Set algorithm satisfies the abstract HasBasicSet interface.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For