Equality elimination: Brand transform etc.
Function or value | Description |
Full Usage:
modify_S cl
Parameters: Returns: formula<fol> list list
The list of all the clauses that arise from all the possible
combinations of forward and backward positive equations in the original
clause. If \(n\) is the number of positive equation in the input
clause, \(2^n\) clauses are returned.
|
It allows to eliminate the symmetry axiom of equality.
Example
Multiple items
module List from Microsoft.FSharp.Collections -------------------- type List<'T> = | op_Nil | op_ColonColon of Head: 'T * Tail: 'T list interface IReadOnlyList<'T> interface IReadOnlyCollection<'T> interface IEnumerable interface IEnumerable<'T> member GetReverseIndex: rank: int * offset: int -> int member GetSlice: startIndex: int option * endIndex: int option -> 'T list static member Cons: head: 'T * tail: 'T list -> 'T list member Head: 'T member IsEmpty: bool member Item: index: int -> 'T with get ... val map: mapping: ('T -> 'U) -> list: 'T list -> 'U list
Evaluates to
|
|
It allows to eliminate the transitivity axiom of equality.
Example
Evaluates to [`~t1 = w''`; `s1 = w''`; `~t2 = w'`; `s2 = w'`; `~t3 = w`; `s3 = w`; `~s1 = t1`; `~s2 = t2`] .
|
Function or value | Description | ||||
|
E-modification allows to eliminate the congruence axioms of equality.
The function repeatedly pulls out non-variable immediate subterms \(t\)
of function and predicate symbols (other than equality) using the
following formulas, which are equivalences in the presence of the
congruence and reflexivity axioms:
\begin{align*}
f (\ldots , t, \ldots) = s \ &\Leftrightarrow \ \forall w.\ t = w \Rightarrow f (\ldots , w, \ldots) = s, \\
s = f (\ldots , t, \ldots) \ &\Leftrightarrow \ \forall w.\ t = w \Rightarrow s = f (\ldots , w, \ldots), \\
P (\ldots , t, \ldots) \ &\Leftrightarrow \ \forall w.\ t = w \Rightarrow P(\ldots , w, \ldots).
\end{align*}
Example
Evaluates to [`~y * z = w'`; `~x * y = w`; `w * z = x * w'`] .
|
||||
|
Example
Evaluates to ``0`` .
Example
Throws System.Exception: findnvsubt .
Example
Throws System.Collections.Generic.KeyNotFoundException: An index satisfying the predicate was not found in the collection.
|
||||
|
Example
Evaluates to ``0`` .
Example
Evaluates to ``0`` .
Example
Throws System.ArgumentException: find_nvsubterm: not a literal
(Parameter 'fm')
Example
Throws System.Exception: tryfind .
|
||||
Full Usage:
is_nonvar tm
Parameters:
term
-
The input term.
Returns: bool
true, if the input is a non-variable term; otherwise, false.
|
Example
Evaluates to true .
Example
Evaluates to false .
|
||||
|
E-modification allows to eliminate the congruence axioms of equality.
The function repeatedly pulls out non-variable immediate subterms \(t\)
of function and predicate symbols (other than equality) using the
following formulas, which are equivalences in the presence of the
congruence and reflexivity axioms:
\begin{align*}
f (\ldots , t, \ldots) = s \ &\Leftrightarrow \ \forall w.\ t = w \Rightarrow f (\ldots , w, \ldots) = s, \\
s = f (\ldots , t, \ldots) \ &\Leftrightarrow \ \forall w.\ t = w \Rightarrow s = f (\ldots , w, \ldots), \\
P (\ldots , t, \ldots) \ &\Leftrightarrow \ \forall w.\ t = w \Rightarrow P(\ldots , w, \ldots).
\end{align*}
Example
Evaluates to [`~y * z = w'`; `~x * y = w`; `w * z = x * w'`] .
|
||||
Example
Evaluates to ``f(1,1) = 1`` .
|
|||||
Example
Evaluates to ``f(1,1)`` .
|
Function or value | Description |
Note
Prints the depth limits tried to the Example
Evaluates to [19] and prints to the stdout :
|
|
|
Note
Prints the depth limits tried to the Example
Evaluates to 1 and prints to the stdout :
|
Note
Prints the depth limits tried to the Example
Evaluates to [6] and prints to the stdout :
|