Packages

trait AlgebraTool extends ToolInterface

Tool for computer algebraic computations.

See also

edu.cmu.cs.ls.keymaerax.btactics.ToolProvider

Linear Supertypes
ToolInterface, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. AlgebraTool
  2. ToolInterface
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def groebnerBasis(polynomials: List[Term]): List[Term]

    Computes the Gröbner Basis of the given set of polynomials (with respect to some fixed monomial order).

    Computes the Gröbner Basis of the given set of polynomials (with respect to some fixed monomial order). Gröbner Bases can be made unique for the fixed monomial order, when reduced, modulo scaling by constants.

    returns

    The Gröbner Basis of polynomials. The Gröbner Basis spans the same ideal as polynomials but has unique remainders of polynomialReduce.

    See also

    polynomialReduce()

    https://lfcps.org/orbital/Orbital-doc/api/orbital/math/AlgebraicAlgorithms.html#groebnerBasis(java.util.Set,%20java.util.Comparator)

  2. abstract def polynomialReduce(polynomial: Term, GB: List[Term]): (List[Term], Term)

    Computes the multivariate polynomial reduction of polynomial divided with respect to the set of polynomials GB, which is guaranteed to be unique iff GB is a Gröbner basis.

    Computes the multivariate polynomial reduction of polynomial divided with respect to the set of polynomials GB, which is guaranteed to be unique iff GB is a Gröbner basis. Returns the list of cofactors and the remainder. Repeatedly divides the leading term of polynomial by a corresponding multiple of a polynomial of GB while possible. Each individual reduction divides the leading term of polynomial by the required multiple of the leading term of the polynomial of GB such that those cancel. Let l(p) be the leading monomial of p and lc(p) its leading coefficient. Then each round of reduction of p:=polynomial with leading term l*X^v picks a polynomial g in GB and turns it into

    p := p - l/lc(g) * X^v/l(g) * g

    alias

    p := p - (l/(lc(g) * l(g)))*X^v  * g

    The former leading monomial X^v no longer occurs in the resulting polynomial and p got smaller or is now 0. To determine leading terms, polynomial reduction uses the same fixed monomial order that groeberBasis() uses. The remainders will be unique (independent of the order of divisions) iff GB is a Gröbner Basis.

    polynomial

    the multivariate polynomial to divide by the elements of GB until saturation.

    GB

    the set of multivariate polynomials that polynomial will repeatedly be divided by. The result of this algorithm is particularly insightful (and has unique remainders) if GB is a Gröbner Basis.

    returns

    (coeff, rem) where rem is the result of multivariate polynomial division of polynomial by GB and coeff are the respective coefficients of the polynomials in GB that explain the result. That is

    polynomial == coeff(1)*GB(1) + coeff(2)*GB(2) + ... + coeff(n)*GB(n) + rem

    alias

    rem == polynomial - coeff(1)*GB(1) - coeff(2)*GB(2) - ... - coeff(n)*GB(n)

    In addition, the remainder rem is small in that its leading monomial cannot be divided by leading monomials of any polynomial in GB. The result rem is unique when GB is a Gröbner Basis.

    Example:
    1. polynomialReduce("y^3 + 2*x^2*y".asTerm, List("x^2-y".asTerm, "y^2+5".asTerm)) = ((2*y :: 2 + y), -5*y-10)
      // because y^3 + 2*x^2*y == (2*y) * (x^2-y) + (2+y) * (y^2+5) + (-5*y-10)
    See also

    groebnerBasis()

  3. abstract def quotientRemainder(term: Term, div: Term, v: Variable): (Term, Term)

    Computes the quotient and remainder of term divided by div.

    Computes the quotient and remainder of term divided by div.

    term

    the polynomial term to divide, considered as a univariate polynomial in variable v with coefficients that may have other variables.

    div

    the polynomial term to divide term by, considered as a univariate polynomial in variable v with coefficients that may have other variables.

    v

    the variable with respect to which term and div are regarded as univariate polynomials (with coefficients that may have other variables).

    Example:
    1. quotientRemainder("6*x^2+4*x+8".asTerm, "2*x".asTerm, Variable("x")) == (3*x+2, 8)
      // because (6*x^2+4*x+8) == (3*x+2) * (2*x) + 8
      // so the result of division is 3*x+2 with remainder 8

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  13. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  14. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  16. def toString(): String
    Definition Classes
    AnyRef → Any
  17. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  18. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )

Inherited from ToolInterface

Inherited from AnyRef

Inherited from Any

Ungrouped