@Override
public void visit(P_OneOrMoreN p) {
p.getSubPath().visit(this);
List<Rule> rules = result;
Predicate basePred = resultMainPredicate;
Predicate newpred = new Predicate(idpPredicateGen.createNewVariable(), 2);
VariableExpr x = new VariableExpr("X");
VariableExpr y = new VariableExpr("Y");
VariableExpr z = new VariableExpr("Z");
rules.add(new Rule(new AtomicFormula(newpred, x, y), ruleid++, new AtomicFormula(basePred, x, y)));
if (rightRecursion) {
rules.add(new Rule(new AtomicFormula(newpred, x, y), ruleid++, new AtomicFormula(basePred, x, z), new AtomicFormula(newpred, z, y) ));
} else {
rules.add(new Rule(new AtomicFormula(newpred, x, y), ruleid++, new AtomicFormula(newpred, z, y), new AtomicFormula(basePred, x, z)));
}
result = rules;
resultMainPredicate = newpred;
}