/** * Get a substitution that we can apply to term, such that it will not use given * varsInUse. * * @param varsToBeMadeUnique * vars that have to be renamed if occurring iin the varsInUse list. * @param varsInUse * set of {@link Var}s that are in use * @return A substitution that will standardize apart variables. */ // TODO: Move this method to KR interface? #3430. This is quick fix. private Substitution makeTermVarsUnique(Set<Var> varsToBeMadeUnique, Set<Var> varsInUse) { Set<Var> varsToRename = getSharedVariables(varsToBeMadeUnique, varsInUse); Map<Var, Term> subst = new LinkedHashMap<>(varsToRename.size()); for (Var var : varsToRename) { subst.put(var, var.getVariant(varsInUse)); } return this.program.getKRInterface().getSubstitution(subst); }
public Substitution mgu(Action<?> other, KRInterface kri) { if (other == null || !getSignature().equals(other.getSignature()) || getParameters().size() != other.getParameters().size()) { return null; } else if (getParameters().isEmpty()) { return kri.getSubstitution(null); } else { // Get mgu for first parameter Substitution substitution = getParameters().get(0).mgu(other.getParameters().get(0)); // Get mgu's for remaining parameters for (int i = 1; i < getParameters().size() && substitution != null; i++) { Substitution mgu = getParameters().get(i).mgu(other.getParameters().get(i)); substitution = substitution.combine(mgu); } return substitution; } }
public Substitution mgu(Macro other, KRInterface kri) { if (other == null || !getSignature().equals(other.getSignature()) || getParameters().size() != other.getParameters().size()) { return null; } else if (getParameters().isEmpty()) { return kri.getSubstitution(null); } else { // Get mgu for first parameter Substitution substitution = getParameters().get(0).mgu(other.getParameters().get(0)); // Get mgu's for remaining parameters for (int i = 1; i < getParameters().size() && substitution != null; i++) { Substitution mgu = getParameters().get(i).mgu(other.getParameters().get(i)); substitution = substitution.combine(mgu); } return substitution; } }
result.add(this.owner.getKRInterface().getSubstitution(null)); } else { return new LinkedHashSet<>(0);