|
doc · redlog.php
|
|
| REDLOG | EXAMPLES | DOCUMENTATION | DOWNLOADS | REFERENCES | REMIS | · | REDUCE |
In case you hate long manuals and want to see something within a minute type reduce in the command line. reduce should start up. Type the four commands load redlog; rlset ofsf; phi := ex(x,a*x^2+b*x+1=0); rlqe phi; and hit return. You will get a condition on the parameters a and b such that the quadratic polynomial a*x^2+b*x+1 has a real root.
redlog stands for reduce logic system. It provides an extension of the computer algebra system reduce to a computer logic system implementing symbolic algorithms on first-order formulas wrt. temporarily fixed first-order languages and theories.
This document serves as a user guide describing the usage of redlog from the algebraic mode of reduce. For a detailed description of the system design see [DS97a].
An overview on some of the application areas of redlog is given in [DSW98]. See also References for articles on redlog applications.
redlog is designed for working with several languages and theories in the sense of first-order logic. Both a language and a theory make up a context. In addition, a context determines the internal representation of terms. There are the following contexts available:
The trailing "-sf" stands for standard form, which is the representation chosen for the terms within the implementation. Accordingly, "-lp" stands for Lisp prefix. See Context Selection, for details on selecting redlog contexts.
redlog origins from the implementation of quantifier elimination procedures. Successfully applying such methods to both academic and real-world problems, the authors have developed over the time a large set of formula-manipulating tools, many of which are meanwhile interesting in their own right:
for-loops, and the extension of built-in
commands such as sub
or part.
See Format and Handling of Formulas.
For ofsf and dvfsf we use a technique based on elimination set ideas [Wei88]. The ofsf implementation is restricted to at most quadratic occurrences of the quantified variables, but includes numerous heuristic strategies for coping with higher degrees. See [LW93], [Wei97], for details on the method. The dvfsf implementation is restricted to formulas that are linear in the quantified variables. The method is described in detail in [Stu00].
The acfsf quantifier elimination is based on comprehensive Groebner basis computation. There are no degree restrictions for this context [Wei92]. See Quantifier Elimination.
For geometric theorem proving it has turned out that these assumptions correspond to reasonable geometric non-degeneracy conditions [DSW98]. Generic quantifier elimination has turned out useful also for physical applications such as network analysis [Stu97]. There is no generic quantifier elimination available for dvfsf. See Generic Quantifier Elimination.
To avoid ambiguities with other packages, all redlog functions and
switches are prefixed by "rl". The remaining part of the name is
explained by the first sentence of the documentation of the single
functions and switches.
Some of the numerous switches of redlog have been introduced only for finding the right fine tuning of the functions, or for internal experiments. They should not be changed anymore, except for in very special situations. For an easier orientation the switches are divided into three categories for documentation:
At the beginning of each session redlog has to be loaded
explicitly. This is done by inputing the command load_package
redlog;
from within a reduce session.
Fixing a context reflects the mathematical fact that first-order formulas are defined over fixed languages specifying, e.g., valid function symbols and relation symbols (predicates). After selecting a language, fixing a theory such as "the theory of ordered fields", allows to assign a semantics to the formulas. Both language and theory make up a redlog context. In addition, a context determines the internal representation of terms.
As first-order formulas are not defined unless the language is known, and meaningless unless the theory is known, it is impossible to enter a first-order formula into redlog without specifying a context:
REDUCE 3.6, 15-Jul-95, patched to 30 Aug 98 ...
1: load_package redlog;
2: f := a=0 and b=0;
***** select a context
See Contexts, for a summary of the available contexts ofsf,
dvfsf,
acfsf,
pasf,
ibalp
and dcfsf.
A context can be selected by the rlset command:
Set current context. Valid choices for context are ofsf (ordered fields standard form), dvfsf (discretely valued fields standard form), acfsf (algebraically closed fields standard form), pasf (Presburger arithmetic standard form), ibalp (initial Boolean algebra Lisp prefix), and dcfsf. With ofsf, acfsf, pasf, ibalp, and dcfsf there are no further arguments. With dvfsf an optional dvf_class_specification can be passed, which defaults to
0.rlsetreturns the old setting as a list that can be saved to be passed torlsetlater. When called with no arguments (or the empty list),rlsetreturns the current setting.
Zero, or a possibly negative prime q.
For q=0 all computations are uniformly correct for all p-adic valuations. Both input and output then possibly involve a symbolic constant "p", which is being reserved.
For positive q, all computations take place wrt. the corresponding q-adic valuation.
For negative q, the "-" can be read as “up to”, i.e., all computations are performed in such a way that they are correct for all p-adic valuations with p <= q. In this case, the knowledge of an upper bound for p supports the quantifier elimination
rlqe/rlqea[Stu00]. See Quantifier Elimination.
The user will probably have a "favorite" context reflecting their
particular field of interest.
To save the explicit declaration of the
context with each session, redlog provides a global variable
rldeflang, which contains a default context. This variable can be
set already before loading redlog. This is typically done
within the .reducerc profile:
lisp (rldeflang!* := '(ofsf));
Notice that the Lisp list representation has to be used here.
Default language. This can be bound to a default context before loading redlog. More precisely,
rldeflang!*contains the arguments ofrlsetas a Lisp list. Ifrldeflang!*is non-nil,rlsetis automatically executed onrldeflang!*when loading redlog.
In addition, redlog evaluates an environment variable
RLDEFLANG. This allows to fix a default context within the shell
already before starting reduce. The syntax for setting environment
variables depends on the shell. For instance, in the gnu Bash or in
the csh shell one would say export RLDEFLANG=ofsf or
setenv RLDEFLANG ofsf, respectively.
Default language. This may be bound to a context in the sense of the first argument of
rlset. WithRLDEFLANGset, anyrldeflang!*binding is overloaded.
After loading redlog and selecting a context (see Loading and Context Selection), there are first-order formulas available as an additional type of symbolic expressions. That is, formulas are now subject to symbolic manipulation in the same way as, say, polynomials or matrices in conventional systems. There is nothing changed in the behavior of the builtin facilities and of other packages.
Though the operators and, or, and not are already
sufficient for representing boolean formulas, redlog provides a
variety of other boolean operators for the convenient mnemonic input of
boolean formulas.
The infix operator precedence is from strongest to weakest:
and,or,impl,repl,equiv.
See Extended Built-in Commands, for the description of extended
for-loop
actions that allow to comfortably input large systematic
conjunctions and disjunctions.
reduce expects the user to know about the precedence of and
over or. In analogy to + and *, there are thus no
parentheses output around conjunctions within disjunctions. The
following switch causes such subformulas to be bracketed anyway.
See Conventions, for the notion of a "fix switch".
Bracket all operators. By default this switch is on, which causes some private printing routines to be called for formulas: All subformulas are bracketed completely making the output more readable.
Besides the boolean operators introduced above, first-order logic includes the well-known existential quantifiers and universal quantifiers "exists" and "forall".
These are the quantifiers. The first argument is the quantified variable, the second one is the matrix formula. Optionally, one can input a list of variables as first argument. This list is expanded into several nested quantifiers.
See Closures, for automatically quantifying all variables except for an exclusion list.
These are the bounded quantifiers. The first argument is the quantified variable, the second one is the bound and the third one is the matrix formula. A bound is a quantifier-free formula, which contains only one variable and defines a finite set. Formulas with bounded quantifiers are only available in pasf.
For convenience, we also have boolean constants for the truth values.
These algebraic mode variables are reserved. They serve as truth values.
Universal closure. exceptionlist is a list of variables empty by default. Returns formula with all free variables universally quantified, except for those in exceptionlist.
Existential closure. exceptionlist is a list of variables empty by default. Returns formula with all free variables existentially quantified, except for those in exceptionlist.
The ofsf context implements ordered fields over the language of ordered rings. Proceeding this way is very common in model theory since one wishes to avoid functions which are only partially defined, such as division in the language of ordered fields. Note that the ofsf quantifier elimination procedures (see Quantifier Elimination and Variants) for non-linear formulas actually operate over real closed fields. See Contexts and Context Selection for details on contexts.
The above operators may also be written as
=,<>,<=,>=,<, and>, respectively. For ofsf there is specified that all right hand sides must be zero. Non-zero right hand sides in the input are hence subtracted immediately to the corresponding left hand sides. There is a facility to input chains of the above relations, which are also expanded immediately:a<>b<c>d=f => a-b <> 0 and b-c < 0 and c-d > 0 and d-f = 0Here, only adjacent terms are related to each other.
Though we use the language of ordered rings, the input of integer reciprocals is allowed and treated correctly interpreting them as constants for rational numbers. There are two switches that allow to input arbitrary reciprocals, which are then resolved into proper formulas in various reasonable ways. The user is welcome to experiment with switches like the following, which are not marked as fix switches. See Conventions, for the classification of redlog switches.
Non-zero/positive denominators. Both switches are off by default. If both
rlnzdenandrlposdenare on, the latter is active. Activating one of them, allows the input of reciprocal terms. Withrlnzdenon, these terms are assumed to be non-zero, and resolved by multiplication. When occurring with ordering relations the reciprocals are resolved by multiplication with their square preserving the sign.(a/b)+c=0 and (a/d)+c>0; 2 => a + b*c = 0 and a*d + c*d > 0Turning
rlposdenon, guarantees the reciprocals to be strictly positive which allows simple, i.e. non-square, multiplication also with ordering relations.(a/b)+c=0 and (a/d)+c>0; => a + b*c = 0 and a + c*d > 0
The non-zeroness or positivity assumptions made by using the above switches can be stored in a variable, and then later be passed as a theory (see theory) to certain redlog procedures. Optionally, the system can be forced to add them to the formula at the input stage:
Add condition. This is off by default. With
rladdcondon, non-zeroness and positivity assumptions made due to the switchesrlnzdenandrlposdenare added to the formula at the input stage. Withrladdcondandrlposdenon we get for instance:(a/b)+c=0 and (a/d)+c>0; => (b <> 0 and a + b*c = 0) and (d > 0 and a + c*d > 0)
Discretely valued fields are implemented as a one-sorted language using
the operators |, ||, ~, and /~, which encode
<=, <, =, and <>
in the value group, respectively. For details see
[Wei88], [Stu00], or [DS99].
The above operators may also be written as
=,<>,|,||,~, and/~, respectively. Integer reciprocals in the input are resolved correctly. dvfsf allows the input of chains in analogy to ofsf. See OFSF Operators, for details.
With the dvfsf operators there is no treatment of parametric denominators available.
The above operators may also be written as
=,<>. As for ofsf, it is specified that all right hand sides must be zero. In analogy to ofsf, acfsf allows also the input of chains and an appropriate treatment of parametric denominators in the input. See OFSF Operators, for details.
Note that the switch rlposden
(see OFSF Operators) makes no
sense for algebraically closed fields.
The above operators may also be written as
=,<>,<=,>=,<, and>, respectively. — Ternary Prefix operator: cong
— Ternary Prefix operator: ncong
The operators cong and ncong represent congruences with nonparametric modulus given by the third argument. The example below defines the set of even integers.
f := cong(x,0,2); => x ~2~ 0As for ofsf, it is specified that all right hand sides are transformed to be zero. In analogy to ofsf, pasf allows also the input of chains See OFSF Operators, for details.
The operator
bnotmay also be written as~. The operatorsbandandbormay also be written as&and|, resp. The operatorsbimpl,brepl, andbequivmay be written as->,<-, and<->, resp.
The operator
ddenotes (higher) derivatives in the sense of differential algebra. For instance, the differential equationx'^2 + x = 0is input as
x d 1 ** 2 + x = 0.dbinds stronger than all other operators.
The operator
equalmay also be written as=. The operatorneqmay also be written as<>.
Systematic conjunctions and disjunctions can be constructed in the
algebraic mode in analogy to, e.g., for ... sum ...:
Make and/or. Actions for the construction of large systematic conjunctions/disjunctions via for loops.
for i:=1:3 mkand for j:=1:3 mkor if j<>i then mkid(x,i)+mkid(x,j)=0; => true and (false or false or x1 + x2 = 0 or x1 + x3 = 0) and (false or x1 + x2 = 0 or false or x2 + x3 = 0) and (false or x1 + x3 = 0 or x2 + x3 = 0 or false)
Here the truth values
come into existence due to the internal
implementation of for-loops. They are always neutral in their
context, and can be easily removed via simplification (see function rlsimpl, see switch rlsimpl).
The reduce substitution command sub
can be applied to formulas using the usual syntax.
substitution_list is a list of equations each with a kernel left hand side.
Substitute. Returns the formula obtained from formula by applying the substitutions given by substitution_list.
sub(a=x,ex(x,x-a<0 and all(x,x-b>0 or ex(a,a-b<0)))); => ex x0 ( - x + x0 < 0 and all x0 ( - b + x0 > 0 or ex a (a - b < 0)))
subworks in such a way that equivalent formulas remain equivalent after substitution. In particular, quantifiers are treated correctly.
Extract a part. The
partof formula is implemented analogously to that for built-in types: in particular the 0th part is the operator.
See rlmatrix, for extracting the matrix part of a formula, i.e., removing all initial quantifiers.
Length of formula. This is the number of arguments to the top-level operator. The length is of particular interest with the n-ary operators
andandor. Notice thatpart(formula,length(formula))is the part of largest index.
There are three global switches that do not belong to certain procedures, but control the general behavior of redlog.
Simplify. By default this switch is off. With this switch on, the function
rlsimplis applied at the expression evaluation stage. See rlsimpl.
Automatically performing formula simplification at the evaluation stage is very similar to the treatment of polynomials or rational functions, which are converted to some normal form. For formulas, however, the simplified equivalent is by no means canonical.
Real time. By default this switch is off. If on it protocols the wall clock time needed for redlog commands in seconds. In contrast to the built-in
timeswitch, the time is printed above the result.
Verbose. By default this switch is off. It toggles verbosity output with some redlog procedures. The verbosity output itself is not documented.
Number of atomic formulas. Returns the number of atomic formulas contained in formula. Mind that truth values are not considered atomic formulas. In pasf the amount of atomic formulas in a bounded formula is computed syntactically without expanding the bounds.
A list of 2-element-lists containing an object and the number of its occurrences. Names of functions returning multiplicity_lists typically end on "ml".
List of atomic formulas. Returns the set of atomic formulas contained in formula as a list.
Multiplicity list of atomic formulas. Returns the atomic formulas contained in formula in a multiplicity_list.
List of irreducible factors. Returns the set of all irreducible factors of the nonzero terms occurring in formula.
rlifacl(x**2-1=0); => {x + 1,x - 1}
Multiplicity list of irreducible factors. Returns the set of all irreducible factors of the nonzero terms occurring in formula in a multiplicity_list.
List of terms. Returns the set of all nonzero terms occurring in formula.
Multiplicity list of terms. Returns the set of all nonzero terms occurring in formula in a multiplicity_list.
Variable lists. Returns both the list of variables occurring freely and that of the variables occurring boundly in formula in a two-element list. Notice that the two member lists are not necessarily disjoint.
Free variable list. Returns the variables occurring freely in formula as a list.
Bound variable list. Returns the variables occurring boundly in formula as a list.
Structure of a formula. kernel is
vby default. Returns a list{f,sl}.fis constructed from formula by replacing each occurrence of a term with a kernel constructed by concatenating a number to kernel. The substitution_listslcontains all substitutions to obtain formula fromf.rlstruct(x*y=0 and (x=0 or y>0),v); => {v1 = 0 and (v2 = 0 or v3 > 0), {v1 = x*y,v2 = x,v3 = y}}
Irreducible factor structure of a formula. kernel is
vby default. Returns a list{f,sl}.fis constructed from formula by replacing each occurrence of an irreducible factor with a kernel constructed by adding a number to kernel. The returned substitution_listslcontains all substitutions to obtain formula fromf.rlstruct(x*y=0 and (x=0 or y>0),v); => {v1*v2 = 0 and (v1 = 0 or v2 > 0), {v1 = x,v2 = y}}
The goal of simplifying a first-order formula is to obtain an equivalent formula over the same language that is somehow simpler. redlog knows three kinds of simplifiers that focus mainly on reducing the size of the given formula: The standard simplifier, tableau simplifiers, and Groebner simplifiers. The ofsf versions of these are described in [DS97].
The acfsf versions are the same as the ofsf versions except for techniques that are particular to ordered fields such as treatment of square sums in connection with ordering relations.
For dvfsf there is no Groebner simplifier available. The parts of the standard simplifier that are particular to valued fields are described in [DS99]. The tableau simplification is straightforwardly derived from the smart simplifications described there.
In pasf only the standard simplifier is available.
Besides reducing the size of formulas, it is a reasonable simplification goal, to reduce the degree of the quantified variables. Our method of decreasing the degree of quantified variables is described for ofsf in [DSW98]. A suitable variant is available also in acfsf but not in dvfsf.
The Standard Simplifier is a fast simplification algorithm that is
frequently called internally by other redlog algorithms. It can be
applied automatically at the expression evaluation stage by turning on
the switch rlsimpl
(see switch rlsimpl).
Simplify. formula is simplified recursively such that the result is equivalent under the assumption that theory holds. Default for theory is the empty theory
{}. Theory inconsistency may but need not be detected byrlsimpl. If theory is detected to be inconsistent, a corresponding error is raised. Note that under an inconsistent theory, any formula is equivalent to the input, i.e., the result is meaningless. theory should thus be chosen carefully.
The standard simplifier rlsimpl includes the following features
common to all contexts:
rlsiexpl,
rlsiexpla,
see General Standard Simplifier Switches). For
details on the simplification on the atomic formula level, see
OFSF-specific Simplifications, ACFSF-specific Simplifications, and DVFSF-specific Simplifications.
not.
not
operator with atomic formula arguments by changing
the relation of the atomic formula appropriately. The languages of all
contexts allow to do so.
repl
to impl.
rlsisort,
see General Standard Simplifier Switches).
rlsichk,
see General Standard Simplifier Switches).
rlsism,
rlsiidem,
see General Standard Simplifier Switches). The technique of implicit theories
used for this is described in detail in
[DS97],
for ofsf/acfsf,
and in
[DS99],
for dvfsf.
rlsism,
see General Standard Simplifier Switches). The
smart simplification
techniques used for this are beyond the scope of this manual. They are
described in detail in
[DS97],
for ofsf/acfsf,
and in
[DS99],
for dvfsf.
Simplify explode always. By default this switch is on. It is relevant with simplifications that allow to split one atomic formula into several simpler ones. Consider, e.g., the following simplification toggled by the switch
rlsipd(see OFSF-specific Standard Simplifier Switches). Withrlsiexplaon, we obtain:f := (a - 1)**3 * (a + 1)**4 >=0; 7 6 5 4 3 2 => a + a - 3*a - 3*a + 3*a + 3*a - a - 1 >= 0 rlsimpl f; => a - 1 >= 0 or a + 1 = 0With
rlsiexplaoff,fwill simplify as in the description of the switchrlsipd.rlsiexplais not used in the dvfsf context. The dvfsf simplifier behaves likerlsiexplaon.
Simplify explode. By default this switch is on. Its role is very similar to that of
rlsiexpla, but it considers the operator the scope of which the atomic formula occurs in: Withrlsiexplon7 6 5 4 3 2 a + a - 3*a - 3*a + 3*a + 3*a - a - 1 >= 0simplifies as in the description of the switch
rlsiexplawhenever it occurs in a disjunction, and it simplifies as in the description of the switchrlsipd(see OFSF-specific Standard Simplifier Switches) else.rlsiexplis not used in the dvfsf context. The dvfsf simplifier behaves likerlsiexplaon.
The user is not supposed to alter the settings of the following fix switches (see Conventions):
Simplify smart. By default this switch is on. See the description of the function
rlsimpl(see Standard Simplifier) for its effects.rlsimpl(x>0 and x+1<0); => false
Simplify check. By default this switch is on enabling checking for equal sibling subformulas:
rlsimpl((x>0 and x-1<0) or (x>0 and x-1<0)); => (x>0 and x-1<0)
Simplify idempotent. By default this switch is on. It is relevant only with switch
rlsismon. Its effect is thatrlsimpl(see Standard Simplifier) is idempotent in the very most cases, i.e., an application ofrlsimplto an already simplified formula yields the formula itself.
Simplify sort. By default this switch is on. It toggles the sorting of the atomic formulas on the single levels.
rlsimpl((a=0 and b=0) or (b=0 and a=0)); => a = 0 and b = 0
In the ofsf context, the atomic formula simplification includes the following:
rlsisqf,
see OFSF-specific Standard Simplifier Switches).
Additive splitting of trivial square sums (switch rlsitsqspl,
see OFSF-specific Standard Simplifier Switches).
rlsipd,
see OFSF-specific Standard Simplifier Switches) with the option to
split an atomic formula
multiplicatively into two simpler ones (switches
rlsiexpl and rlsiexpla,
see General Standard Simplifier Switches).
rlsiatdv,
see OFSF-specific Standard Simplifier Switches). Optionally, perform factorization
of equations and inequalities (switch rlsifac,
see OFSF-specific Standard Simplifier Switches, switches rlsiexpl and
rlsiexpla, see General Standard Simplifier Switches).
For further details on the simplification in ordered fields see the article [DS97].
Simplification prefer weak orderings. Prefers weak orderings in contrast to strict orderings with implicit theory simplification.
rlsipwis off by default, which leads to the following behavior:rlsimpl(a<>0 and (a>=0 or b=0)); => a <> 0 and (a > 0 or b = 0)This meets the simplification goal of small satisfaction sets for the atomic formulas. Turning on
rlsipwwill instead yield the following:rlsimpl(a<>0 and (a>0 or b=0)); => a <> 0 and (a >= 0 or b = 0)
Here we meet the simplification goal of convenient relations when strict orderings are considered inconvenient.
Simplification prefer orderings. Prefers orderings in contrast to inequalities with implicit theory simplification.
rlsipois on by default, which leads to the following behavior:rlsimpl(a>=0 and (a<>0 or b=0)); => a >= 0 and (a > 0 or b = 0)This meets the simplification goal of small satisfaction sets for the atomic formulas. Turning it on leads, e.g., to the following behavior:
rlsimpl(a>=0 and (a>0 or b=0)); => a >= 0 and (a <> 0 or b = 0)Here, we meet the simplification goal of convenient relations when orderings are considered inconvenient.
Simplify atomic formulas advanced. By default this switch is on. Enables sophisticated atomic formula simplifications based on squarefree part computations and recognition of trivial square sums.
rlsimpl(a**2 + 2*a*b + b**2 <> 0); => a+b <> 0 rlsimpl(a**2 + b**2 + 1 > 0); => trueFurthermore, splitting of trivial square sums (switch
rlsitsqspl), parity decompositions (switchrlsipd), and factorization of equations and inequalities (switchrlsifac) are enabled.
Simplify split trivial square sum. This is on by default. It is ignored with
rlsiadvoff. Trivial square sums are split additively depending onrlsiexplandrlsiexpla(see General Standard Simplifier Switches):rlsimpl(a**2+b**2>0); => a <> 0 or b <> 0
Simplify parity decomposition. By default this switch is on. It is ignored with
rlsiatadvoff.rlsipdtoggles the parity decomposition of terms occurring with ordering relations.f := (a - 1)**3 * (a + 1)**4 >= 0; 7 6 5 4 3 2 => a + a - 3*a - 3*a + 3*a + 3*a - a - 1 >= 0 rlsimpl f; 3 2 => a + a - a - 1 >= 0The atomic formula is possibly split into two parts according to the setting of the switches
rlsiexplandrlsiexpla(see General Standard Simplifier Switches).
Simplify factorization. By default this switch is on. It is ignored with
rlsiatadvoff. Splits equations and inequalities via factorization of their left hand side terms into a disjunction or a conjunction, respectively. This is done in dependence onrlsiexplandrlsiexpla(see General Standard Simplifier Switches).
In the acfsf case the atomic formula simplification includes the following:
rlsiatdv,
see OFSF-specific Standard Simplifier Switches). Optionally, perform
factorization
of equations and inequalities (switch rlsifac,
see OFSF-specific Standard Simplifier Switches, switches rlsiexpl
and rlsiexpla,
see General Standard Simplifier Switches).
For details see the description of the simplification for ordered fields in [DS97]. This can be easily adapted to algebraically closed fields.
The switches rlsiatadv
and rlsifac
have the same effects as in the ofsf
context (see OFSF-specific Standard Simplifier Switches).
In the dvfsf case the atomic formula simplification includes the following:
z ~
1 or z /~ 1, where z is an integer.
For details on simplification in p-adic fields see the article [DS99].
Atomic formulas of the form z ~ 1 or z /~ 1, where
z is an integer, can be split
into several ones via integer factorization.
This simplification is
often reasonable on final results. It explicitly discovers those primes
p for which the formula holds. There is a special function for this
simplification:
Explode atomic formulas. Factorize atomic formulas of the form
z ~ 1orz /~ 1, wherezis an integer.rlexplatsobeys the switchesrlsiexplaandrlsiexpl(see General Standard Simplifier Switches), but notrlsifac(see DVFSF-specific Standard Simplifier Switches).
The context dvfsf
knows no special simplifier switches, and ignores the general switches
rlsiexpla
and rlsiexpl
(see General Standard Simplifier Switches). It behaves like
rlsiexpla on. The simplifier contains numerous sophisticated
simplifications for atomic formulas in the style of rlsiatadv
on (see OFSF-specific Standard Simplifier Switches).
Simplify factorization. By default this switch is on. Toggles certain simplifications that require integer factorization. See DVFSF-specific Simplifications, for details.
Due to a simple term structure a lot simplification can be performed on pasf atomic formulas with the total goal of reducing the absolute summ of the coefficients. In the pasf context the atomic formula simplification includes the following:
f := cong(y+x+z,0,1);
rlsimpl f;
=> true
f := cong(7*x+5*y,11,3);
rlsimpl f;
=> x + 2*y - 2 ~3~ 0
f := cong(8*x + 4*y, 16, 4);
rlsimpl f;
=> true
f := 3 * x + 6 * y - 9 = 0
rlsimpl f;
=> x + 2 * y - 3 = 0
f := 3 * x + 6 * y - 7 < 0
rlsimpl f;
=> x + 2 * y - 2 <= 0
f := cong(3 * x + 6 * y - 3, 0, 9);
rlsimpl f;
=> x + 2 * y - 1 =~ 0 (3)
f := 3*k-1 = 0;
rlsimpl f;
=> false
Simplifies the output formula after the elimination of each quantifier. By default this switch is on.
Expands the output formula (with bounded quantifiers) after the elimination of each quantifier. This switch is off by default due to immense overhead of the expansion.
Turns the advanced PASF-speciefic simplification of atomic formulas on. For details see See PASF-specific Simplifications.
Beside the standard simplification pasf provides a powerfull standard simplifier extension based on the package susi. This feature uses special properties of pasf formulas to reduce the formula size using the concept of implicit theory.
Although our standard simplifier (see Standard Simplifier) already combines information located on different boolean levels, it preserves the basic boolean structure of the formula. The tableau methods, in contrast, provide a technique for changing the boolean structure of a formula by constructing case distinctions. Compared to the standard simplifier they are much slower. For details on tableau simplification see [DS97].
Case distinction list. This is a list of atomic formulas considered as a disjunction.
Tableau method. The result is a tableau wrt. cdl, i.e., a simplified equivalent of the disjunction over the specializations wrt. all atomic formulas in cdl.
rltab((a = 0 and (b = 0 or (d = 0 and e = 0))) or (a = 0 and c = 0),{a=0,a<>0}); => (a = 0 and (b = 0 or c = 0 or (d = 0 and e = 0)))
Automatic tableau method. Tableau steps wrt. a case distinction over the signs of all terms occurring in formula are computed and the best result, i.e., the result with the minimal number of atomic formulas is returned.
Iterative automatic tableau method. formula is simplified by iterative applications of
rlatab. The exact procedure depends on the switchrltabib.
Tableau iterate branch-wise. By default this switch is on. It controls the procedure
rlitab. Ifrltabibis off,rlatabis iteratively applied to the argument formula as long as shorter results can be obtained. In caserltabibis on, the corresponding next tableau step is not applied to the last tableau result but independently to each single branch. The iteration stops when the obtained formula is not smaller than the corresponding input.
The Groebner simplifier is not available in the dvfsf context. It considers order theoretical and algebraic simplification rules between the atomic formulas of the input formula. Currently the Groebner simplifier is not idempotent. The name is derived from the main mathematical tool used for simplification: Computing Groebner bases of certain subsets of terms occurring in the atomic formulas.
For calling the Groebner simplifier there are the following functions:
Groebner simplifier. formula is a quantifier-free formula. Default for theory is the empty theory
{}. The functions differ in the boolean normal form that is computed at the beginning.rlgsccomputes a conjunctive normal form,rlgsdcomputes a disjunctive normal form, andrlgsnheuristically decides for either a conjunctive or a disjunctive normal form depending on the structure of formula. After computing the corresponding normal form, the formula is simplified using Groebner simplification techniques. The returned formula is equivalent to the input formula wrt. theory.rlgsd(x=0 and ((y = 0 and x**2+2*y > 0) or (z=0 and x**3+z >= 0))); => x = 0 and z = 0rlgsc(x neq 0 or ((y neq 0 or x**2+2*x*y <= 0) and (z neq 0 or x**3+z < 0))); => x <> 0 or z <> 0
The heuristic used by rlgsn
is intended to find the smaller boolean normal form
among cnf an dnf. Note that, anyway, the simplification of the
smaller normal form can lead to a larger final result than that of the
larger one.
The Groebner simplifiers use the Groebner package of reduce to
compute the various Groebner bases. By default, the revgradlex
term order is used, and no optimizations of the order between the
variables are applied. The other switches and variables of the Groebner
package are not controlled by the Groebner simplifier. They can be
adjusted by the user.
In contrast to the standard simplifier rlsimpl
(see Standard Simplifier), the Groebner simplifiers can in general
produce formulas containing more atomic formulas than the input. This
cannot happen if the switches rlgsprod,
rlgsred,
and rlgssub
are off and the input formula is a simplified boolean normal form.
The functionality of the Groebner simplifiers rlgsc,
rlgsd,
and rlgsn
is controlled by numerous switches. In
most cases the default settings lead to a good simplification.
Groebner simplifier radical membership test. By default this switch is on. If the switch is on the Groebner simplifier does not only use ideal membership tests for simplification but also radical membership tests. This leads to better simplifications but takes considerably more time.
Groebner simplifier substitute. By default this switch is on. Certain subsets of atomic formulas are substituted by equivalent ones. Both the number of atomic formulas and the complexity of the terms may increase or decrease independently.
Groebner simplifier boolean normal form. By default this switch is on. Then the simplification starts with a boolean normal form computation. If the switch is off, the simplifiers expect a boolean normal form as the argument formula.
Groebner simplifier reduce polynomials. By default this switch is on. It controls the reduction of the terms wrt. the computed Groebner bases. The number of atomic formulas is never increased. Mind that by reduction the terms can become more complicated.
Groebner simplifier verbose. By default this switch is on. It toggles verbosity output of the Groebner simplifier. Verbosity output is given if and only if both
rlverbose(see Global Switches) andrlgsvbare on.
Groebner simplifier product. By default this switch is off. If this switch is on then conjunctions of inequalities and disjunctions of equations are contracted multiplicatively to one atomic formula. This reduces the number of atomic formulas but in most cases it raises the complexity of the terms. Most simplifications recognized by considering products are detected also with
rlgsprodoff.
Groebner simplifier evaluate reduced form. By default this switch is on. It controls the evaluation of the atomic formulas to truth values. If this switch is on, the standard simplifier (see Standard Simplifier) is used to evaluate atomic formulas. Otherwise atomic formulas are evaluated only if their left hand side is a domain element.
Groebner simplifier user defined term order. By default this switch is off. Then all Groebner basis computations and reductions are performed with respect to the
revgradlexterm order. If this switch is on, the Groebner simplifier minds the term order selected with thetorderstatement. For passing a variable list totorder, note thatrlgsradmemv!*is used as the tag variable for radical membership tests.
Radical membership test variable. This fluid contains the tag variable used for the radical membership test with switch
rlgsradon. It can be used to pass the variable explicitly totorderwith switchrlgsutordon.
The quantifier elimination procedures of redlog (see Quantifier Elimination) obey certain degree restrictions on the bound variables. For this reason, there are degree-decreasing simplifiers available, which are automatically applied by the corresponding quantifier elimination procedures. There is no degree decreaser for the dvfsf context available.
Decrease degrees. Returns a formula equivalent to formula, hopefully decreasing the degrees of the bound variables. In the ofsf context there are in general some sign conditions on the variables added, which slightly increases the number of contained atomic formulas.
rldecdeg ex({b,x},m*x**4711+b**8>0); => ex b (b >= 0 and ex x (b + m*x > 0))
Decrease degrees subroutine. This provides a low-level entry point to the degree decreaser. The variables to be decreased are not determined by regarding quantifiers but are explicitly given by varlist, where the empty varlist selects all free variables of
f. The return value is a list{f,l}.fis a formula, andlis a list{...,{v,d},...}, wherevis from varlist anddis an integer.fhas been obtained from formula by substitutingvforv**d. The sign conditions necessary with the ofsf context are not generated automatically, but have to be constructed by hand for the variablesvwith even degreedinl.rldecdeg1(m*x**4711+b**8>0,{b,x}); => {b + m*x > 0,{{x,4711},{b,8}}}
For computing small boolean normal forms,
see also the documentation of
the procedures rlgsc
and rlgsd
(Groebner Simplifier).
Conjunctive normal form. formula is a quantifier-free formula. Returns a conjunctive normal form of formula.
rlcnf(a = 0 and b = 0 or b = 0 and c = 0); => (a = 0 or c = 0) and b = 0
Disjunctive normal form. formula is a quantifier-free formula. Returns a disjunctive normal form of formula.
rldnf((a = 0 or b = 0) and (b = 0 or c = 0)); => (a = 0 and c = 0) or b = 0
Boolean normal form smart. By default this switch is off. If on, simplifier recognized implication (see [DS97]) is applied by
rlcnfandrldnf. This leads to smaller normal forms but is considerably time consuming.
Boolean normal forms subsumption and cut. By default this switch is on. With boolean normal form computation, subsumption and cut strategies are applied by
rlcnfandrldnfto decrease the number of clauses. We give an example:rldnf(x=0 and y<0 or x=0 and y>0 or x=0 and y<>0 and z=0); => (x = 0 and y <> 0)
Negation normal form. Returns a negation normal form of formula. This is an
and-or-combination of atomic formulas. Note that in all contexts, we use languages such that all negations can be encoded by relations (see Format and Handling of Formulas). We give an example:rlnnf(a = 0 equiv b > 0); => (a = 0 and b > 0) or (a <> 0 and b <= 0)
rlnnfaccepts formulas containing quantifiers, but it does not eliminate quantifiers.
Prenex normal form. Returns a prenex normal form of formula. The number of quantifier changes in the result is minimal among all prenex normal forms that can be obtained from formula by only moving quantifiers to the outside.
When formula contains two quantifiers with the same variable such as in
ex x (x = 0) and ex x (x <> 0)there occurs a name conflict. It is resolved according to the following rules:
- Every bound variable that stands in conflict with any other variable is renamed.
- Free variables are never renamed.
Hence
rlpnfapplied to the above example formula yieldsrlpnf(ex(x,x=0) and ex(x,x<>0)); => ex x0 ex x1 (x0 = 0 and x1 <> 0)
Anti-prenex normal form. Returns a formula equivalent to formula where all quantifiers are moved to the inside as far as possible.
rlapnf ex(x,all(y,x=0 or (y=0 and x=z))); => ex x (x = 0) or (all y (y = 0) and ex x (x - z = 0))
Term normal form. terml is a list of terms. This combines dnf computation with tableau ideas (see Tableau Simplifier). A typical choice for terml is
rltermlformula. If the switchrltnftis off, thenrltnf(formula,rltermlformula)returns a dnf.
Term normal form tree variant. By default this switch is on causing
rltnfto return a deeply nested formula.
Quantifier elimination computes quantifier-free equivalents for given first-order formulas.
For ofsf there are two methods available:
For dvfsf we use the virtual substitution method that is also available for ofsf. Here, the implementation is restricted to linear occurrences of the quantified variables. There are also heuristic strategies for coping with higher degrees included. The method is described in detail in [Stu00].
The acfsf quantifier elimination is based on comprehensive Groebner basis computation; there are no degree restrictions for this context [Wei92].
In pasf context the quantifier elimination is based on the fast method similar to elimination by virtual substitution introduced by Weispfenning. For more details see [Wei90]
Quantifier elimination by virtual substitution. Returns a quantifier-free equivalent of formula (wrt. theory). In the contexts ofsf and dvfsf, formula has to obey certain degree restrictions. There are various techniques for decreasing the degree of the input and of intermediate results built in. In case that not all variables can be eliminated, the resulting formula is not quantifier-free but still equivalent.
For degree decreasing
heuristics see, e.g., Degree Decreaser, or the switches
rlqeqsc/rlqesqsc.
A list of condition–solution pairs, i.e., a list of pairs consisting of a quantifier-free formula and a set of equations.
Quantifier elimination with answer. Returns an elimination_answer obtained the following way: formula is wlog. prenex. All quantifier blocks but the outermost one are eliminated. For this outermost block, the constructive information obtained by the elimination is saved:
- In case the considered block is existential, for each evaluation of the free variables we know the following: Whenever a condition holds, then formula is
trueunder the given evaluation, and the solution is one possible evaluation for the outer block variables satisfying the matrix.- The universally quantified case is dual: Whenever a condition is false, then formula is
false, and the solution is one possible counterexample.As an example we show how to find conditions and solutions for a system of two linear constraints:
rlqea ex(x,x+b1>=0 and a2*x+b2<=0); 2 - b2 => {{a2 *b1 - a2*b2 >= 0 and a2 <> 0,{x = -------}}, a2 {a2 < 0 or (a2 = 0 and b2 <= 0),{x = infinity1}}}The answer can contain constants named
infinityorepsilon, both indexed by a number: Allinfinity's are positive and infinite, and allepsilon's are positive and infinitesimal wrt. the considered field. Nothing is known about the ordering among theinfinity's andepsilon's though this can be relevant for the points to be solutions. With the switchroundedon, theepsilon's are evaluated to zero.rlqeais not available in the context acfsf.
Quantifier elimination (super) quadratic special case. By default these switches are off. They are relevant only in ofsf. If turned on, alternative elimination sets are used for certain special cases by
rlqe/rlqeaandrlgqe/rlgqea. (see Generic Quantifier Elimination). They will possibly avoid violations of the degree restrictions, but lead to larger results in general. Former versions of redlog without these switches behaved as ifrlqeqscwas on andrlqesqscwas off.
Quantifier elimination depth first search. By default this switch is off. It is also ignored in the acfsf context. It is ignored with the switch
rlqeheuon, which is the default for ofsf. Turningrlqedfson makesrlqe/rlqeaandrlgqe/rlgqea(see Generic Quantifier Elimination) work in a depth first search manner instead of breadth first search. This saves space, and with decision problems, where variable-free atomic formulas can be evaluated to truth values, it might save time. In general, it leads to larger results.
Quantifier elimination search heuristic. By default this switch is on in ofsf and off in dvfsf. It is ignored in acfsf. Turning
rlqeheuon causes the switchrlqedfsto be ignored.rlqe/rlqeaandrlgqe/rlgqea(see Generic Quantifier Elimination) will then decide between breadth first search and depth first search for each quantifier block, where dfs is chosen when the problem is a decision problem.
Quantifier elimination compute prenex normal form. By default this switch is on, which causes that
rlpnf(see Miscellaneous Normal Forms) is applied to formula before starting the elimination process. If the argument formula torlqe/rlqeaorrlgqe/rlgqea(see Generic Quantifier Elimination) is already prenex, this switch can be turned off. This may be useful with formulas containingequivsincerlpnfappliesrlnnf, (see Miscellaneous Normal Forms), and resolving equivalences can double the size of a formula.rlqepnfis ignored in acfsf, since nnf is necessary for elimination there.
Quantifier elimination separate roots. This is off by default. It is relevant only in ofsf for
rlqe/rlgqeand for all but the outermost quantifier block inrlqea/rlgqea. Forrlqeaandrlgqeasee Generic Quantifier Elimination. It affects the technique for substituting the two solutions of a quadratic constraint during elimination.
The following two functions rlqeipo
and rlqews
are experimental implementations. The idea there is to overcome the
obvious disadvantages of prenex normal forms with elimination set
methods. In most cases, however, the classical method rlqe
has turned out superior.
Quantifier elimination by virtual substitution in position. Returns a quantifier-free equivalent to formula by iteratively making formula anti-prenex (see Miscellaneous Normal Forms) and eliminating one quantifier.
Quantifier elimination by virtual substitution with selection. formula has to be prenex, if the switch
rlqepnfis off. Returns a quantifier-free equivalent to formula by iteratively selecting a quantifier from the innermost block, moving it inside as far as possible, and then eliminating it.rlqewsis not available in acfsf.
Cylindrical algebraic decomposition. Returns a quantifier-free equivalent of formula. Works only in context OFSF. There are no degree restrictions on formula.
Efficient projection order. Returns a list of variables. The first variable is eliminated first.
Guess the size of a full CAD wrt. the projection order the system would actually choose. The resulting value gives quickly an idea on how big the order of magnitude of the size of a full CAD is.
Trial evaluation, the first improvement to partial CAD. This is turned on by default.
Propagation below free variable space, the second improvement to partial CAD. This is turned on by default.
Full dimensional cells only. This is turned off by default. Only stacks over full dimensional cells are built. Such cells have rational sample points. To do this ist sound only in special cases as consistency problems (existenially quantified, strict inequalities).
Trim tree. This is turned on by default. Frees unused part of the constructed partial CAD-tree, and hence saves space. However, afterwards it is not possible anymore to find out how many cells were calculated beyond free variable space.
Raw formula. Turned off by default. If turned on, a variable-free DNF is returned (if simple solution formula construction succeeds). Otherwise, the raw result is simplified with
rldnf.
Isolate all roots. This is off by default. Turning this switch on allows to find out, how much time is consumed more without incremental root isolation.
Raw formula. Turned off by default. If turned on, a variable-free DNF is returned (if simple solution formula construction succeeds). Otherwise, the raw result is simplified with
rldnf.
Isolate all roots. This is off by default. Turning this switch on allows to find out, how much time is consumed more without incremental root isolation.
Augmented projection (always). By default,
rlcadaprojis turned on andrlcadaprojalwaysis turned off. Ifrlcadaprojis turned off, no augmented projection is performed. Otherwerwise, if turned on, augmented projection is performed always (ifrlcadaprojalwaysis turned on) or just for the free variable space (rlcadaprojalwaysturned off).
Hong projection. This is on by default. If turned on, Hong's improvement for the projection operator is used.
Verbose. This is off by default. With
rladverboseon, additional verbose information is displayed.
Debug. This is turned off by default. Performes a self-test at several places, if turned on.
Verbose. This is off by default. With
ranuexverboseon, additional verbose information is displayed. Not of much importance any more.
Different roots. Unused for the moment and maybe redundant soon.
Debug. This is off by default. Performes a self-test at several places, if turned on.
Pseudo remainder sequences. This is turned off by default. This switch decides, whether division or pseudo division is used for sturm chains.
GCD normalize. This is turned on by default. If turned on, the GCD is normalized to 1, if it is a constant polynomial.
Sign optimization. This is turned off by default. If turned on, it is tried to determine the sign of a constant polynomial by calculating a containment.
Hermitian quantifier elimination. Returns a quantifier-free equivalent of formula. Works only in context ofsf. There are no degree restrictions on formula.
The following variant of rlqe
(see Quantifier Elimination) enlarges the theory by inequalities,
i.e., <>-atomic formulas, wherever this supports the quantifier
elimination process. For geometric problems,
it has turned out that in most cases the additional assumptions made are
actually geometric non-degeneracy conditions.
The method has been described in detail in
[DSW98].
It has also turned out useful for physical problems
such as network
analysis, see [Stu97].
Generic quantifier elimination.
rlgqeis not available in acfsf and dvfsf. exceptionlist is a list of variables empty by default. Returns a list{th,f}such thatthis a superset of theory adding only inequalities, andfis a quantifier-free formula equivalent to formula assumingth. The added inequalities contain neither bound variables nor variables from exceptionlist. For restrictions and options, comparerlqe(see Quantifier Elimination).
Generic quantifier elimination with answer.
rlgqeais not available in acfsf and dvfsf. exceptionlist is a list of variables empty by default. Returns a list consisting of an extended theory and an elimination_answer. Comparerlqea/rlgqe(see Quantifier Elimination).
After applying generic quantifier elimination the user might feel that
the result is still too large while the theory is still quite weak. The
following function rlgentheo
simplifies a formula by making further assumptions.
Generate theory.
rlgentheois not available in dvfsf. formula is a quantifier-free formula; exceptionlist is a list of variables empty by default.rlgentheoextends theory with inequalities not containing any variables from exceptionlist as long as the simplification result is better wrt. this extended theory. Returns a list{extended theory, simplified formula}.
Quantifier elimination generate complex theory. This is on by default, which allows
rlgentheoto assume inequalities over non-monomial terms with the generic quantifier elimination.
Generic cylindrical algebraic decomposition.
rlgcadis available only for ofsf. Comparerlcad(see Quantifier Elimination) andrlgqe(see Generic Quantifier Elimination).
Generic Hermitian quantifier elimination.
rlghqeis available only for ofsf. Comparerlhqe(see Quantifier Elimination) andrlgqe(see Generic Quantifier Elimination).
In contrast to the generic quantifier elimination
(see Generic Quantifier Elimination)
the following variant of rlqe
(see Quantifier Elimination) enlarges the theory by arbitrary atomic formulas, wherever this supports the quantifier
elimination process. This is done in such a way that the theory holds
for the suggested point specified by the user.
The method has been described in detail in
[DW00].
Local quantifier elimination.
rllqeis not available in acfsf and dvfsf. suggestedpoint is a list of equationsvar=valuewherevaris a free variable andvalueis a rational number. Returns a list{th,f}such thatthis a superset of theory, andfis a quantifier-free formula equivalent to formula assumingth. The added inequalities contains exclusively variables occuring on the left hand sides of equiations in suggestedpoint. For restrictions and options, comparerlqe(see Quantifier Elimination).
In the context ofsf, there is a linear optimization method implemented, which uses quantifier elimination (see Quantifier Elimination) encoding the target function by an additional constraint including a dummy variable. This optimization technique has been described in [Wei94a].
Linear optimization.
rloptis available only in ofsf. constraints is a list of parameter-free atomic formulas built with=,<=, or>=; target is a polynomial over the rationals. target is minimized subject to constraints. The result is either "infeasible" or a two-element list, the first entry of which is the optimal value, and the second entry is a list of points—each one given as a substitution_list—where target takes this value. The point list does, however, not contain all such points. For unbound problems the result is{-infinity,{}}.
Optimization one solution. This is off by default.
rlopt1sis relevant only for ofsf. If on,rloptreturns at most one solution point.
Most of the references listed here are available on
all: First-order Operatorsand: First-order Operatorsassoc: DVFSF Operatorsball: First-order Operatorsband: IBALP Operatorsbequiv: IBALP Operatorsbex: First-order Operatorsbimpl: IBALP Operatorsbnot: IBALP Operatorsbor: IBALP Operatorsbrepl: IBALP Operatorscong: PASF Operatorsd: DCFSF Operatorsdiv: DVFSF Operatorsequal: PASF Operatorsequal: DCFSF Operatorsequal: IBALP Operatorsequal: OFSF Operatorsequal: DVFSF Operatorsequal: ACFSF Operatorsequiv: First-order Operatorsex: First-order Operatorsfor: Extended Built-in Commandsgeq: OFSF Operatorsgeq: PASF Operatorsgreaterp: PASF Operatorsgreaterp: OFSF Operatorsimpl: First-order Operatorslength: Extended Built-in Commandsleq: PASF Operatorsleq: OFSF Operatorslessp: PASF Operatorslessp: OFSF Operatorsmkand: Extended Built-in Commandsmkor: Extended Built-in Commandsnassoc: DVFSF Operatorsncong: PASF Operatorsneq: ACFSF Operatorsneq: PASF Operatorsneq: DVFSF Operatorsneq: OFSF Operatorsneq: DCFSF Operatorsnot: First-order Operatorsor: First-order Operatorspart: Extended Built-in Commandsrepl: First-order Operatorsrlall: Closuresrlapnf: Miscellaneous Normal Formsrlatab: Tableau Simplifierrlatl: Basic Functions on Formulasrlatml: Basic Functions on Formulasrlatnum: Basic Functions on Formulasrlbvarl: Basic Functions on Formulasrlcad: Quantifier Eliminationrlcadguessauto: Quantifier Eliminationrlcadporder: Quantifier Eliminationrlcnf: Boolean Normal Formsrldecdeg: Degree Decreaserrldecdeg1: Degree Decreaserrldnf: Boolean Normal Formsrlex: Closuresrlexplats: DVFSF-specific Simplificationsrlfvarl: Basic Functions on Formulasrlgcad: Generic Quantifier Eliminationrlgentheo: Generic Quantifier Eliminationrlghqe: Generic Quantifier Eliminationrlgqe: Generic Quantifier Eliminationrlgqea: Generic Quantifier Eliminationrlgsc: Groebner Simplifierrlgsd: Groebner Simplifierrlgsn: Groebner Simplifierrlhqe: Quantifier Eliminationrlifacl: Basic Functions on Formulasrlifacml: Basic Functions on Formulasrlifstruct: Basic Functions on Formulasrlitab: Tableau Simplifierrllqe: Local Quantifier Eliminationrlmatrix: Basic Functions on Formulasrlnnf: Miscellaneous Normal Formsrlopt: Linear Optimizationrlpnf: Miscellaneous Normal Formsrlqe: Quantifier Eliminationrlqea: Quantifier Eliminationrlqeipo: Quantifier Eliminationrlqews: Quantifier Eliminationrlset: Context Selectionrlsimpl: Standard Simplifierrlstruct: Basic Functions on Formulasrltab: Tableau Simplifierrlterml: Basic Functions on Formulasrltermml: Basic Functions on Formulasrltnf: Miscellaneous Normal Formsrlvarl: Basic Functions on Formulassdiv: DVFSF Operatorssub: Extended Built-in Commandsand: Extended Built-in Commandsequiv: Quantifier Eliminationfor: First-order Operatorsimpl: General Features of the Standard Simplifierload_package: Loading Redlognot: General Features of the Standard Simplifieror: Extended Built-in Commandspart: Extended Built-in Commandspart: Overviewrepl: General Features of the Standard Simplifierrlatab: Tableau Simplifierrlcnf: Boolean Normal Formsrldnf: Boolean Normal Formsrlgentheo: Generic Quantifier Eliminationrlgqe: Quantifier Eliminationrlgqe: Local Quantifier Eliminationrlgqe: Quantifier Eliminationrlgqea: Quantifier Eliminationrlgsc: Groebner Simplifierrlgsc: Boolean Normal Formsrlgsd: Boolean Normal Formsrlgsd: Groebner Simplifierrlgsn: Groebner Simplifierrlitab: Tableau Simplifierrlmatrix: Extended Built-in Commandsrlnnf: Quantifier Eliminationrlopt: Linear Optimizationrlpnf: Quantifier Eliminationrlqe: Quantifier Eliminationrlqe: Context Selectionrlqe: Local Quantifier Eliminationrlqe: Generic Quantifier Eliminationrlqe: Quantifier Eliminationrlqea: Quantifier Eliminationrlqea: Context Selectionrlqea: Quantifier Eliminationrlqeipo: Quantifier Eliminationrlqews: Quantifier Eliminationrlset: Context Selectionrlsimpl: General Standard Simplifier Switchesrlsimpl: Groebner Simplifierrlsimpl: PASF-specific Simplificationsrlsimpl: OFSF-specific Standard Simplifier Switchesrlsimpl: General Standard Simplifier Switchesrlsimpl: Global Switchesrlterml: Miscellaneous Normal Formssub: Extended Built-in Commandssub: Overviewtorder: Groebner Simplifierfalse: First-order Operatorsrladdcond: OFSF Operatorsrlanuexdebug: Quantifier Eliminationrlanuexdifferentroots: Quantifier Eliminationrlanuexgcdnormalize: Quantifier Eliminationrlanuexpsremseq: Quantifier Eliminationrlanuexsgnopt: Quantifier Eliminationrlanuexverbose: Quantifier Eliminationrlbnfsac: Boolean Normal Formsrlbnfsm: Boolean Normal Formsrlbrop: First-order Operatorsrlcadaproj: Quantifier Eliminationrlcadaprojalways: Quantifier Eliminationrlcadbaseonly: Quantifier Eliminationrlcaddebug: Quantifier Eliminationrlcadextonly: Quantifier Eliminationrlcadfac: Quantifier Eliminationrlcadfulldimonly: Quantifier Eliminationrlcadhongproj: Quantifier Eliminationrlcadisoallroots: Quantifier Eliminationrlcadpartial: Quantifier Eliminationrlcadpbfvs: Quantifier Eliminationrlcadprojonly: Quantifier Eliminationrlcadrawformula: Quantifier Eliminationrlcadte: Quantifier Eliminationrlcadtrimtree: Quantifier Eliminationrlcadverbose: Quantifier EliminationRLDEFLANG: Context Selectionrldeflang!*: Context Selectionrlgsbnf: Groebner Simplifierrlgserf: Groebner Simplifierrlgsprod: Groebner Simplifierrlgsrad: Groebner Simplifierrlgsradmemv!*: Groebner Simplifierrlgsred: Groebner Simplifierrlgssub: Groebner Simplifierrlgsutord: Groebner Simplifierrlgsvb: Groebner Simplifierrlnzden: OFSF Operatorsrlopt1s: Linear Optimizationrlpasfexpand: PASF-specific Standard Simplifier Switchesrlpasfsimplify: PASF-specific Standard Simplifier Switchesrlposden: OFSF Operatorsrlqedfs: Quantifier Eliminationrlqegenct: Generic Quantifier Eliminationrlqeheu: Quantifier Eliminationrlqepnf: Quantifier Eliminationrlqeqsc: Quantifier Eliminationrlqesqsc: Quantifier Eliminationrlqesr: Quantifier Eliminationrlrealtime: Global Switchesrlsiatadv: PASF-specific Standard Simplifier Switchesrlsiatadv: OFSF-specific Standard Simplifier Switchesrlsichk: General Standard Simplifier Switchesrlsiexpl: General Standard Simplifier Switchesrlsiexpla: General Standard Simplifier Switchesrlsifac: DVFSF-specific Standard Simplifier Switchesrlsifac: OFSF-specific Standard Simplifier Switchesrlsiidem: General Standard Simplifier Switchesrlsimpl: Global Switchesrlsipd: OFSF-specific Standard Simplifier Switchesrlsipo: OFSF-specific Standard Simplifier Switchesrlsipw: OFSF-specific Standard Simplifier Switchesrlsism: General Standard Simplifier Switchesrlsiso: General Standard Simplifier Switchesrlsitsqspl: OFSF-specific Standard Simplifier Switchesrlsusi: PASF-specific Standard Simplifier Switchesrltabib: Tableau Simplifierrltnft: Miscellaneous Normal Formsrlverbose: Global Switchestrue: First-order Operatorsfalse: Quantifier Eliminationrlanuexdebug: Quantifier Eliminationrlanuexdifferentroots: Quantifier Eliminationrlanuexgcdnormalize: Quantifier Eliminationrlanuexpsremseq: Quantifier Eliminationrlanuexsgnopt: Quantifier Eliminationrlanuexverbose: Quantifier Eliminationrlcad: Quantifier Eliminationrlcadaproj: Quantifier Eliminationrlcadaprojalways: Quantifier Eliminationrlcadbaseonly: Quantifier Eliminationrlcaddebug: Quantifier Eliminationrlcadextonly: Quantifier Eliminationrlcadfac: Quantifier Eliminationrlcadfulldimonly: Quantifier Eliminationrlcadguessauto: Quantifier Eliminationrlcadhongproj: Quantifier Eliminationrlcadisoallroots: Quantifier Eliminationrlcadpartial: Quantifier Eliminationrlcadporder: Quantifier Eliminationrlcadprojonly: Quantifier Eliminationrlcadrawformula: Quantifier Eliminationrlcadte: Quantifier Eliminationrlcadtrimtree: Quantifier Eliminationrlcadverbose: Quantifier Eliminationrldeflang!*: Context Selectionrlgsprod: Groebner Simplifierrlgsrad: Groebner Simplifierrlgsred: Groebner Simplifierrlgssub: Groebner Simplifierrlgsutord: Groebner Simplifierrlhqe: Quantifier Eliminationrlnzden: OFSF Operatorsrlposden: OFSF Operatorsrlposden: ACFSF Operatorsrlqedfs: Quantifier Eliminationrlqeheu: Quantifier Eliminationrlqepnf: Quantifier Eliminationrlqeqsc: Quantifier Eliminationrlqesqsc: Quantifier Eliminationrlsiadv: OFSF-specific Standard Simplifier Switchesrlsiatadv: OFSF-specific Standard Simplifier Switchesrlsiatadv: DVFSF-specific Standard Simplifier Switchesrlsiatadv: OFSF-specific Standard Simplifier Switchesrlsiatadv: ACFSF-specific Standard Simplifier Switchesrlsiatdv: OFSF-specific Simplificationsrlsiatdv: ACFSF-specific Simplificationsrlsichk: General Features of the Standard Simplifierrlsiexpl: OFSF-specific Standard Simplifier Switchesrlsiexpl: DVFSF-specific Standard Simplifier Switchesrlsiexpl: DVFSF-specific Simplificationsrlsiexpl: ACFSF-specific Simplificationsrlsiexpl: OFSF-specific Standard Simplifier Switchesrlsiexpl: OFSF-specific Simplificationsrlsiexpl: General Features of the Standard Simplifierrlsiexpla: OFSF-specific Standard Simplifier Switchesrlsiexpla: OFSF-specific Simplificationsrlsiexpla: General Standard Simplifier Switchesrlsiexpla: ACFSF-specific Simplificationsrlsiexpla: OFSF-specific Standard Simplifier Switchesrlsiexpla: DVFSF-specific Simplificationsrlsiexpla: OFSF-specific Standard Simplifier Switchesrlsiexpla: General Features of the Standard Simplifierrlsiexpla: DVFSF-specific Standard Simplifier Switchesrlsifac: ACFSF-specific Standard Simplifier Switchesrlsifac: DVFSF-specific Simplificationsrlsifac: OFSF-specific Standard Simplifier Switchesrlsifac: OFSF-specific Simplificationsrlsifac: ACFSF-specific Simplificationsrlsiidem: General Features of the Standard Simplifierrlsimpl: Standard Simplifierrlsipd: OFSF-specific Simplificationsrlsipd: General Standard Simplifier Switchesrlsipd: OFSF-specific Standard Simplifier Switchesrlsism: General Features of the Standard Simplifierrlsism: General Standard Simplifier Switchesrlsism: General Features of the Standard Simplifierrlsisort: General Features of the Standard Simplifierrlsisqf: OFSF-specific Simplificationsrlsitsqspl: OFSF-specific Simplificationsrlsitsqspl: OFSF-specific Standard Simplifier Switchesrltabib: Tableau Simplifierrltnft: Miscellaneous Normal Formsrlverbose: Groebner Simplifierrounded: Quantifier Eliminationtime: Global Switchestrue: Quantifier Eliminationcdl: Tableau Simplifierdvf_class_specification: Context Selectionelimination_answer: Quantifier Eliminationmultiplicity_list: Basic Functions on Formulassubstitution_list: Extended Built-in Commandstheory: Standard Simplifiercdl: Tableau Simplifierdvf_class_specification: Context Selectionelimination_answer: Generic Quantifier Eliminationelimination_answer: Quantifier Eliminationmultiplicity_list: Basic Functions on Formulassubstitution_list: Linear Optimizationsubstitution_list: Basic Functions on Formulassubstitution_list: Extended Built-in Commandstheory: Generic Quantifier Eliminationtheory: Quantifier Eliminationtheory: Groebner Simplifiertheory: Generic Quantifier Eliminationtheory: Standard Simplifiertheory: Local Quantifier Eliminationtheory: OFSF Operatorstheory: Generic Quantifier Eliminationtheory: Quantifier Eliminationepsilon: Quantifier Eliminationinfeasible: Linear Optimizationinfinity: Quantifier Eliminationnot: General Features of the Standard Simplifierrevgradlex: Groebner Simplifier
| 2009-04-01 | A.D. | T.S. | www@redlog.eu | redlog.dolzmann.de/doc/redlog.php | Validate |