public boolean addIfUnfoldable(final ATermAppl term) { final ATermAppl name = (ATermAppl) term.getArgument(0); if (!ATermUtils.isPrimitive(name)) return false; TermDefinition td = getTD(name); if (td == null) td = new TermDefinition(); // Basic Check if (!td.isUnique(term)) return false; // Loop Checks final ATermAppl body = (ATermAppl) term.getArgument(1); final Set<ATermAppl> nameDependencies = td.getDependencies(); final Set<ATermAppl> bodyDependencies = ATermUtils.findPrimitives(body); if (!nameDependencies.containsAll(bodyDependencies)) { final Set<ATermAppl> seen = new IdentityHashSet<>(); // Identity hashSet because dependencies are manage on identity hash set for (final ATermAppl current : bodyDependencies) if (findTarget(current, name, seen)) return false; } return addDef(term); }
public boolean addIfUnfoldable(final ATermAppl term) { final ATermAppl name = (ATermAppl) term.getArgument(0); if (!ATermUtils.isPrimitive(name)) return false; TermDefinition td = getTD(name); if (td == null) td = new TermDefinition(); // Basic Check if (!td.isUnique(term)) return false; // Loop Checks final ATermAppl body = (ATermAppl) term.getArgument(1); final Set<ATermAppl> nameDependencies = td.getDependencies(); final Set<ATermAppl> bodyDependencies = ATermUtils.findPrimitives(body); if (!nameDependencies.containsAll(bodyDependencies)) { final Set<ATermAppl> seen = new IdentityHashSet<>(); // Identity hashSet because dependencies are manage on identity hash set for (final ATermAppl current : bodyDependencies) if (findTarget(current, name, seen)) return false; } return addDef(term); }