Triangulated Set #
This file defines the structure of a Triangulated Set of multivariate polynomials.
A Triangulated Set is a finite ordered sequence of non-zero polynomials [P₁, P₂, ..., Pₘ]
such that their main variables (main variables) are strictly increasing:
mainVariable(P₁) < mainVariable(P₂) < ... < mainVariable(Pₘ).
Main Definitions #
TriangulatedSet: The structure definition. It bundles the length, the sequence function, and the proofs of non-zero elements and ascending main variables.TriangulatedSet.rank: A lexicographic rank assigned to each triangulated set, used to prove termination of algorithms (like Wu's Method).TriangulatedSet.toFinset/toList: Viewing the sequence as a set or list of polynomials.
Main Results #
TriangulatedSet.instWellFoundedLT: Proof that triangulated sets are well-founded under the rank ordering (assuming finite variables). This guarantees termination of characteristic set algorithms.TriangulatedSet.takeConcat_lt_of_reducedToSet: Appending a reduced element strictly decreases the rank, used to prove termination of basic set algorithms.
A Triangulated Set is a finite sequence of polynomials with strictly increasing main variables.
- length' : ℕ
The number of polynomials in the set.
- seq : ℕ → MvPolynomial σ R
The sequence of polynomials, indexed by
ℕ. Elements within the length bound are non-zero.
- ascending_mainVariable (n : ℕ) : n < self.length' - 1 → (self.seq n).mainVariable < (self.seq (n + 1)).mainVariable
The main variables of the polynomials are strictly increasing.
Instances For
Equations
- TriangulatedSet.instFunLike = { coe := fun (S : TriangulatedSet σ R) => S.seq, coe_injective' := ⋯ }
The length of the triangulated set.
Instances For
Set-like behavior #
Equations
- TriangulatedSet.instSetLike = { coe := fun (S : TriangulatedSet σ R) => {p : MvPolynomial σ R | ∃ n < S.length, S n = p}, coe_injective' := ⋯ }
Equations
- TriangulatedSet.instHasSubset = { Subset := fun (S T : TriangulatedSet σ R) => ∀ ⦃x : MvPolynomial σ R⦄, x ∈ S → x ∈ T }
Equations
- TriangulatedSet.instHasSSubset = { SSubset := fun (S T : TriangulatedSet σ R) => S ⊆ T ∧ ¬T ⊆ S }
Equations
- S.toFinset = Finset.map { toFun := fun (i : Fin S.length) => S ↑i, inj' := ⋯ } Finset.univ
Instances For
Instances For
Equations
- x✝¹.instDecidableEqOfMvPolynomial x✝ = decidable_of_iff (x✝¹.toList = x✝.toList) ⋯
Equations
- TriangulatedSet.instEmptyCollection = { emptyCollection := TriangulatedSet.empty✝ }
Equations
- TriangulatedSet.instInhabited = { default := ∅ }
Rank and Ordering #
The rank of a Triangulated Set is a lexicographic sequence of ranks of its polynomials.
A more intuitive definition is rank_lt_iff, S < T if one of the following two occurs:
- There exists some
k < S.lengthsuch thatS₀ ≈ T₀,S₁ ≈ T₁, ...,Sₖ₋₁ ≈ Tₖ₋₁andSₖ < Tₖ. S.length > T.lengthand∀ i < T.length, Sᵢ ≈ Tᵢ
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- x✝¹.instDecidableLE x✝ = decidable_of_iff (x✝¹.rank ≤ x✝.rank) ⋯
Equations
- TriangulatedSet.instSetoid = AntisymmRel.setoid (TriangulatedSet σ R) fun (x1 x2 : TriangulatedSet σ R) => x1 ≤ x2
Equations
Equations
Instances For
Well-Foundedness #
The set of Triangulated Sets is well-founded under the lexicographic rank ordering. This is a crucial result that guarantees the termination of the Characteristic Set Algorithm.
Equations
- TriangulatedSet.instWellFoundedRelation = { rel := fun (x1 x2 : TriangulatedSet σ R) => x1 < x2, wf := ⋯ }
Equations
- TriangulatedSet.Set.min S' h = ⋯.choose
Instances For
Equations
Instances For
Equations
Instances For
The condition required to append p to S while maintaining the Triangulated Set property.
p must be non-zero and its main variable must be strictly greater than
the main variable of the last element of S.
Equations
Instances For
Appends a polynomial p to the end of S. Requires S.canConcat p.
Equations
Instances For
Converts a list to a TriangulatedSet. Requires the list to be non-zero and pairwise strictly ascending in main variable.
Equations
Instances For
Unsafely construct a TriangulatedSet from a list. Panics if preconditions are not met. This should be used with caution, primarily for computation where inputs are guaranteed correct.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- TriangulatedSet.single p = if h : p = 0 then ∅ else TriangulatedSet.single_of_ne_zero h
Instances For
takeConcat S p tries to construct a new Triangulated Set
by taking a prefix of S and appending p.
This is a key operation in constructing the Characteristic Set.
If p fits naturally at the end of S, it behaves like S.concat p.
If p conflicts with some element in S (in terms of main variable order), takeConcat finds the
first element in S that has a higher or equal main variable than p,
truncates S before that element, and appends p.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- TriangulatedSet.instDecidableRelReducedToSet x✝ S = decidable_of_iff (∀ i < S.length, x✝.reducedTo (S i)) ⋯
Key Lemma for the Basic Set Algorithm:
If p is non-zero and reduced with respect to S, then modifying S
by appending p (using takeConcat) strictly decreases the rank of the triangulated set.
This rank decrease is what guarantees the termination of the characteristic set computation.