Documentation

CharacteristicSet.CharacteristicSet

Characteristic Set Method (Wu's Method) #

This file implements the core algorithms of Wu's Method for solving systems of algebraic equations.

Main Concepts #

  1. Characteristic Set (CS): A special triangular set contained in a polynomial set PS that generates the same ideal up to saturation by initials.
  2. Zero Decomposition: The process of decomposing the zero set of PS into the union of zero sets of triangular sets. Zero(PS) = ⋃ Zero(CSᵢ/IPᵢ) where CSᵢ are triangular sets and IPᵢ are products of initials.

Main Algorithms #

Main Theorems #

Vanishing Sets #

def MvPolynomial.vanishingSet {R : Type u_1} {σ : Type u_2} [CommSemiring R] {α : Type u_3} [Membership (MvPolynomial σ R) α] (K : Type u_4) [CommSemiring K] [Algebra R K] (a : α) :
Set (σK)

The set of points in K ^ σ where all polynomials in a vanish. It is the same as zeroLocus K (Ideal.span a) for a : Set R[σ]

Equations
Instances For
    theorem MvPolynomial.vanishingSet_def {R : Type u_1} {σ : Type u_2} [CommSemiring R] {α : Type u_3} [Membership (MvPolynomial σ R) α] (K : Type u_4) [CommSemiring K] [Algebra R K] (a : α) :
    vanishingSet K a = {x : σK | pa, (aeval x) p = 0}
    def MvPolynomial.singleVanishingSet {R : Type u_1} {σ : Type u_2} [CommSemiring R] (K : Type u_4) [CommSemiring K] [Algebra R K] (p : MvPolynomial σ R) :
    Set (σK)

    The set of points where a single polynomial p vanishes.

    Equations
    Instances For
      theorem MvPolynomial.singleVanishingSet_def {R : Type u_1} {σ : Type u_2} [CommSemiring R] (K : Type u_4) [CommSemiring K] [Algebra R K] (p : MvPolynomial σ R) :
      singleVanishingSet K p = {x : σK | (aeval x) p = 0}
      theorem MvPolynomial.vanishingSet_eq_zeroLocus_span {R : Type u_1} {σ : Type u_2} [Field R] (K : Type u_3) [Field K] [Algebra R K] (PS : Set (MvPolynomial σ R)) :
      theorem MvPolynomial.vanishingSet_eq_zeroLocus_span' {R : Type u_1} {σ : Type u_2} [Field R] (K : Type u_3) [Field K] [Algebra R K] {α : Type u_4} [Membership (MvPolynomial σ R) α] (a : α) :

      Characteristic Set Properties #

      def TriangulatedSet.isCharacteristicSet {R : Type u_1} {σ : Type u_2} [Field R] [DecidableEq R] [LinearOrder σ] {α : Type u_3} [Membership (MvPolynomial σ R) α] (K : Type u_4) [CommSemiring K] [Algebra R K] (CS : TriangulatedSet σ R) (a : α) :

      A Triangulated Set CS is a Characteristic Set for a if:

      1. Every element in a reduce to 0 modulo CS.
      2. Zero(a) ⊆ Zero(CS) (geometric containment).
      Equations
      Instances For

        Well-Ordering Principle (1): Zero(CS/IP) ⊆ Zero(PS). If all polynomials in PS reduce to 0 modulo CS, then any zero of CS that isn't a zero of IP must be a zero of PS.

        Well-Ordering Principle (3): Zero(PS) = Zero(CS/IP) ∪ ⋃_{CS} Zero(PS ∪ {init(p)})

        Characteristic Set Algorithm #

        theorem MvPolynomial.List.characteristicSetGo_decreasing {R : Type u_1} {σ : Type u_2} [Field R] [DecidableEq R] [LinearOrder σ] [HasBasicSet σ R] (l₀ l : List (MvPolynomial σ R)) (BS : TriangulatedSet σ R) (lBS RS : List (MvPolynomial σ R)) (hRS : RS []) (hBS : BS = (basicSet l)) (hlBS : lBS = BS.toList) (hRS1 : RS = List.filter (fun (x : MvPolynomial σ R) => decide (x 0)) (List.map (fun (p : MvPolynomial σ R) => (p.setPseudo BS).remainder) (l \ lBS))) :
        basicSet (l₀ ++ RS ++ lBS) < basicSet l
        noncomputable def MvPolynomial.List.characteristicSet {R : Type u_1} {σ : Type u_2} [Field R] [DecidableEq R] [LinearOrder σ] [Finite σ] [HasBasicSet σ R] (l : List (MvPolynomial σ R)) :

        Computes the Characteristic Set of a polynomial list l. Algorithm:

        1. Let l₀ = l.
        2. Compute BS = BasicSet(l).
        3. Compute remainders RS of l \ BS with respect to BS.
        4. If RS is empty, BS is the characteristic set.
        5. If not, set l = l₀ ++ RS ++ BS and go to step 2. Termination is guaranteed by the well-ordering of ranks.
        Equations
        Instances For
          @[irreducible]
          noncomputable def MvPolynomial.List.characteristicSet.go {R : Type u_1} {σ : Type u_2} [Field R] [DecidableEq R] [LinearOrder σ] [HasBasicSet σ R] (l₀ : List (MvPolynomial σ R)) [Finite σ] (l : List (MvPolynomial σ R)) :
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem MvPolynomial.List.zero_isSetRemainder_characteristicSetGo {R : Type u_1} {σ : Type u_2} [Field R] [DecidableEq R] [LinearOrder σ] [Finite σ] [HasBasicSet σ R] (l₀ l : List (MvPolynomial σ R)) :
            l₀ lpl₀, isSetRemainder 0 p (characteristicSet.go l₀ l)

            The computed characteristicSet satisfies the required properties.

            def MvPolynomial.List.cs {R : Type u_1} {σ : Type u_2} [Field R] [DecidableEq R] [LinearOrder σ] [Finite σ] [HasBasicSet σ R] (l : List (MvPolynomial σ R)) :

            Alias of MvPolynomial.List.characteristicSet.


            Computes the Characteristic Set of a polynomial list l. Algorithm:

            1. Let l₀ = l.
            2. Compute BS = BasicSet(l).
            3. Compute remainders RS of l \ BS with respect to BS.
            4. If RS is empty, BS is the characteristic set.
            5. If not, set l = l₀ ++ RS ++ BS and go to step 2. Termination is guaranteed by the well-ordering of ranks.
            Equations
            Instances For

              Zero Decomposition #

              @[irreducible]
              noncomputable def MvPolynomial.List.zeroDecomposition {R : Type u_1} {σ : Type u_2} [Field R] [DecidableEq R] [LinearOrder σ] [Finite σ] [HasBasicSet σ R] (l : List (MvPolynomial σ R)) :

              Decomposes the zero set of l into a union of zero sets of triangular sets. The algorithm recursively computes the characteristic set CS and adds branches for the initials of CS.

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

                Zero Decomposition Theorem: The vanishing set of l is the union of the vanishing sets of the triangular sets in zeroDecomposition, excluding the zeros of their initials. Zero(l) = ⋃_{CS ∈ ZD(l)} Zero(CS/IP(CS)).