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 #
AscendingSetTheory: A typeclass abstracting the ascending-set predicate (e.g., strong vs. weak reduction) and the algorithm to compute a basic set from a list of polynomials.
References #
- [Wen-Tsun Wu, Basic principles of mechanical theorem proving in elementary geometries] [WT86]
- Wen-Tsun Wu, Mathematics Mechanization
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.
- decidableReducedTo : DecidablePred isAscendingSet
- initial_reducedToSet_of_max_vars_ne_bot ⦃S : TriangularSet σ R⦄ ⦃i : ℕ⦄ : isAscendingSet S → (S i).vars.max ≠ ⊥ → (S i).initial.reducedToSet S
A key property linking the ascending set structure to the initial. If
Sis an ascending set, the initial of any non-constant element inSmust be reduced with respect toS. - basicSet : List (MvPolynomial σ R) → TriangularSet σ R
Computes a Basic Set from a list of polynomials.
- basicSet_isAscendingSet (l : List (MvPolynomial σ R)) : isAscendingSet (basicSet isAscendingSet l)
The output is always an Ascending Set.
- basicSet_subset (l : List (MvPolynomial σ R)) ⦃c : MvPolynomial σ R⦄ : c ∈ basicSet isAscendingSet l → c ∈ l
The output is a subset of the input.
- basicSet_minimal (l : List (MvPolynomial σ R)) ⦃S : TriangularSet σ R⦄ : isAscendingSet S → (∀ ⦃p : MvPolynomial σ R⦄, p ∈ S → p ∈ l) → basicSet isAscendingSet l ≤ S
Minimality condition: the output is ≤ any other ascending set contained in the input.
- basicSet_append_lt_of_exists_reducedToSet ⦃l1 l2 : List (MvPolynomial σ R)⦄ : (∃ p ∈ l2, p ≠ 0 ∧ p.reducedToSet (basicSet isAscendingSet l1)) → basicSet isAscendingSet (l2 ++ l1) < basicSet isAscendingSet l1
Order reduction property: appending a reduced element strictly decreases the basic set order. Crucial for proving termination of zero decomposition.
Instances
Definition of Standard (Ritt) Ascending Set: A Triangular Set is an Ascending Set if every element is reduced with respect to its predecessors.
Instances For
Definition of Weak (Wu) Ascending Set: A Triangular Set is an Ascending Set if every element's initial is reduced with respect to its predecessors.
Instances For
Equations
- x✝.instDecidablePredIsAscendingSet = decidable_of_iff (∀ j < x✝.length, ∀ i < j, (x✝ j).reducedTo (x✝ i)) ⋯
Equations
- x✝.instDecidablePredIsWeakAscendingSet = decidable_of_iff (∀ j < x✝.length, ∀ i < j, (x✝ j).initial.reducedTo (x✝ i)) ⋯
The Basic Set of a list l, as computed by the AscendingSetTheory instance.
Equations
- MvPolynomial.List.basicSet isAscendingSet l = AscendingSetTheory.basicSet isAscendingSet l
Instances For
The recursive algorithm for computing the Standard Basic Set.
Equations
- One or more equations did not get rendered due to their size.
- IsAscendingSet.basicSet.go [] BS hl1_2 = BS
Instances For
Computes the Standard Basic Set of a list of polynomials. The algorithm works by:
- Sort the list and let
BS = ∅. - Pick the first (minimal) element
Bin the list. - Update the current basic set
BSwithBusingtakeConcat(which handles replacements). - Filter the remaining list to keep only elements reduced w.r.t. the new
BSand go to step 2.
Equations
- IsAscendingSet.basicSet l = IsAscendingSet.basicSet.go (List.filter (fun (x : MvPolynomial σ R) => decide (x ≠ 0)) (l.mergeSort fun (a b : MvPolynomial σ R) => decide (a ≤ b))) ∅ ⋯
Instances For
The core lemma proving that the computed Basic Set is indeed minimal
among all ascending sets contained in l.
The Standard Basic Set algorithm satisfies the abstract AscendingSetTheory interface.
Equations
- One or more equations did not get rendered due to their size.
The recursive algorithm for computing the Weak Basic Set.
Equations
- One or more equations did not get rendered due to their size.
- IsWeakAscendingSet.basicSet.go [] BS hl1_2 hl2_2 = BS
Instances For
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
The Weak Basic Set algorithm satisfies the abstract AscendingSetTheory interface.
Equations
- One or more equations did not get rendered due to their size.