public class BoundVariableTools
extends java.lang.Object
| Modifier and Type | Field and Description | 
|---|---|
static BoundVariableTools | 
DEFAULT  | 
| Modifier | Constructor and Description | 
|---|---|
private  | 
BoundVariableTools()  | 
| Modifier and Type | Method and Description | 
|---|---|
boolean | 
consistentVariableArrays(ImmutableArray<QuantifiableVariable> ar0,
                        ImmutableArray<QuantifiableVariable> ar1)  | 
boolean | 
equalsModRenaming(ImmutableArray<QuantifiableVariable> vars0,
                 Term term0,
                 ImmutableArray<QuantifiableVariable> vars1,
                 Term term1,
                 TermServices services)  | 
Term[] | 
renameVariables(Term[] originalTerms,
               ImmutableArray<QuantifiableVariable> oldBoundVars,
               ImmutableArray<QuantifiableVariable> newBoundVars,
               TermServices services)  | 
Term | 
renameVariables(Term originalTerm,
               ImmutableArray<QuantifiableVariable> oldBoundVars,
               ImmutableArray<QuantifiableVariable> newBoundVars,
               TermServices services)
Compare the arrays  
oldBoundVars and
 newBoundVars component-wise, and in case of differences
 substitute variables from the former array with the ones of the latter
 array (in originalTerm) | 
boolean | 
resolveCollisions(ImmutableArray<QuantifiableVariable> oldVars,
                 QuantifiableVariable[] newVars,
                 ImmutableSet<QuantifiableVariable> criticalVars)
Replace all variables of  
oldVars that also turn up in
 criticalPairs with new variables (currently just with the
 same name). | 
boolean | 
resolveCollisions(Term originalTerm,
                 ImmutableSet<QuantifiableVariable> criticalVars,
                 ImmutableArray<QuantifiableVariable>[] newBoundVars,
                 Term[] newSubs,
                 TermServices services)
Ensure that none of the variables  
criticalVars is bound by
 the top-level operator of t (by bound renaming). | 
ImmutableArray<QuantifiableVariable> | 
unifyBoundVariables(ImmutableArray<QuantifiableVariable>[] boundVarsPerSub,
                   Term[] subs,
                   int subtermsBegin,
                   int subtermsEnd,
                   TermServices services)
Ensure that for the subterms with indexes [ 
subtermsBegin,
 subtermsEnd) the same variables are bound. | 
private ImmutableArray<QuantifiableVariable> | 
unifyVariableArrays(ImmutableArray<QuantifiableVariable> ar0,
                   ImmutableArray<QuantifiableVariable> ar1,
                   java.util.Map<QuantifiableVariable,QuantifiableVariable> variableRenaming)
Unify the given arrays be replacing variables with new ones, return the
 unifier 
 | 
public static final BoundVariableTools DEFAULT
public Term renameVariables(Term originalTerm, ImmutableArray<QuantifiableVariable> oldBoundVars, ImmutableArray<QuantifiableVariable> newBoundVars, TermServices services)
oldBoundVars and
 newBoundVars component-wise, and in case of differences
 substitute variables from the former array with the ones of the latter
 array (in originalTerm)services - the Servicespublic Term[] renameVariables(Term[] originalTerms, ImmutableArray<QuantifiableVariable> oldBoundVars, ImmutableArray<QuantifiableVariable> newBoundVars, TermServices services)
public boolean resolveCollisions(ImmutableArray<QuantifiableVariable> oldVars, QuantifiableVariable[] newVars, ImmutableSet<QuantifiableVariable> criticalVars)
oldVars that also turn up in
 criticalPairs with new variables (currently just with the
 same name).oldVars - variables to be checkednewVars - array in which either the original variables (if a variable is
            not an element of criticalVars) or newly
            created variables are storedcriticalVars - variables that must not turn up in the resulting array
            newVarstrue iff it was necessary to create at least one
         new variablepublic boolean resolveCollisions(Term originalTerm, ImmutableSet<QuantifiableVariable> criticalVars, ImmutableArray<QuantifiableVariable>[] newBoundVars, Term[] newSubs, TermServices services)
criticalVars is bound by
 the top-level operator of t (by bound renaming). The
 resulting subterms and arrays of bound variables are stored in
 newSubs and newBoundVars (resp.)services - TODOtrue if it was necessary to rename a variable,
         i.e. to changed anything in the term originalTermpublic ImmutableArray<QuantifiableVariable> unifyBoundVariables(ImmutableArray<QuantifiableVariable>[] boundVarsPerSub, Term[] subs, int subtermsBegin, int subtermsEnd, TermServices services)
subtermsBegin,
 subtermsEnd) the same variables are bound. In case of
 differences bound renaming is applied (existing variables are renamed to
 new ones)boundVarsPerSub - bound variables per subtermssubs - subterms (in which variables are renamed if necessary)subtermsBegin - first subterm that is supposed to be consideredsubtermsEnd - subterm after the last subterm to be consider
 
 PRE: subtermsEnd > subtermsBeginservices - TODOpublic boolean consistentVariableArrays(ImmutableArray<QuantifiableVariable> ar0, ImmutableArray<QuantifiableVariable> ar1)
true iff the two given arrays have the same size
         and the contained variables have the same sortspublic boolean equalsModRenaming(ImmutableArray<QuantifiableVariable> vars0, Term term0, ImmutableArray<QuantifiableVariable> vars1, Term term1, TermServices services)
services - TODOtrue iff the two arrays of variables are
         compatible (compatibleVariableArrays()) and the
         two given terms are equal modulo renaming after unification of
         the two arrays (of variables occurring free in the terms)private ImmutableArray<QuantifiableVariable> unifyVariableArrays(ImmutableArray<QuantifiableVariable> ar0, ImmutableArray<QuantifiableVariable> ar1, java.util.Map<QuantifiableVariable,QuantifiableVariable> variableRenaming)