Equality elimination: Brand transform etc.
| Function or value | Description | 
| 
                
              
                  Full Usage: 
                   modify_S clParameters: Returns: formula<fol> list listThe 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 listEvaluates 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
 ThrowsSystem.Exception: findnvsubt.Example
 ThrowsSystem.Collections.Generic.KeyNotFoundException: An index satisfying the predicate was not found in the collection. | ||||
| 
                
               | 
 
 Example
 Evaluates to``0``.Example
 Evaluates to``0``.Example
 ThrowsSystem.ArgumentException: find_nvsubterm: not a literal 
 (Parameter 'fm')Example
 ThrowsSystem.Exception: tryfind. | ||||
| 
                
              
                  Full Usage: 
                   is_nonvar tmParameters: 
 term- 
                      The input term.Returns: booltrue, if the input is a non-variable term; otherwise, false. | 
 
 Example
 Evaluates totrue.Example
 Evaluates tofalse. | ||||
| 
                
               | 
                
 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 thestdout: | |
| 
                
               | 
 Note
                
 Prints the depth limits tried to the  Example
 Evaluates to1and prints to thestdout: | 
| 
 Note
                
 Prints the depth limits tried to the  Example
 Evaluates to[6]and prints to thestdout: |