for (int i = 0; i < headTerms.size(); i++) { Term term = headTerms.get(i); Term newTerm = getFreshTerm(term, suff); headTerms.set(i, newTerm); for (int i = 0; i < atomTerms.size(); i++) { Term term = atomTerms.get(i); Term newTerm = getFreshTerm(term, suff); atomTerms.set(i, newTerm);
for (int i = 0; i < headTerms.size(); i++) { Term term = headTerms.get(i); Term newTerm = getFreshTerm(term, suff); headTerms.set(i, newTerm); for (int i = 0; i < atomTerms.size(); i++) { Term term = atomTerms.get(i); Term newTerm = getFreshTerm(term, suff); atomTerms.set(i, newTerm);
private Term getFreshTerm(Term term, int suff) { Term newTerm; if (term instanceof Variable) { Variable variable = (Variable) term; newTerm = termFactory.getVariable(variable.getName() + "_" + suff); } else if (term instanceof Function) { Function functionalTerm = (Function) term; List<Term> innerTerms = functionalTerm.getTerms(); List<Term> newInnerTerms = new LinkedList<>(); for (int j = 0; j < innerTerms.size(); j++) { Term innerTerm = innerTerms.get(j); newInnerTerms.add(getFreshTerm(innerTerm, suff)); } Predicate newFunctionSymbol = functionalTerm.getFunctionSymbol(); Function newFunctionalTerm = termFactory.getFunction(newFunctionSymbol, newInnerTerms); newTerm = newFunctionalTerm; } else if (term instanceof Constant) { newTerm = term.clone(); } else { throw new RuntimeException("Unsupported term: " + term); } return newTerm; }
private Term getFreshTerm(Term term, int suff) { Term newTerm; if (term instanceof Variable) { Variable variable = (Variable) term; newTerm = TERM_FACTORY.getVariable(variable.getName() + "_" + suff); } else if (term instanceof Function) { Function functionalTerm = (Function) term; List<Term> innerTerms = functionalTerm.getTerms(); List<Term> newInnerTerms = new LinkedList<>(); for (int j = 0; j < innerTerms.size(); j++) { Term innerTerm = innerTerms.get(j); newInnerTerms.add(getFreshTerm(innerTerm, suff)); } Predicate newFunctionSymbol = functionalTerm.getFunctionSymbol(); Function newFunctionalTerm = TERM_FACTORY.getFunction(newFunctionSymbol, newInnerTerms); newTerm = newFunctionalTerm; } else if (term instanceof Constant) { newTerm = term.clone(); } else { throw new RuntimeException("Unsupported term: " + term); } return newTerm; }