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; } }
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; } }
tempResult.add(currentSubstitution.combine(answer));
generator); for (Substitution tempSubst : tempResult) { currentResults.add(subst.combine(tempSubst));
combination = combination.combine(mgu); } else { // fail: two different bindings for one and the same