private boolean absorbII(final Set<ATermAppl> set) { for (final ATermAppl term : set) { final TermDefinition td = _tbox._Tu.getTD(term); boolean canAbsorb; if (td != null) canAbsorb = td.getEqClassAxioms().isEmpty(); else canAbsorb = term.getArity() == 0 && set.size() > 1; if (canAbsorb) { set.remove(term); final ATermList setlist = ATermUtils.makeList(set); ATermAppl conjunct = ATermUtils.makeAnd(setlist); conjunct = ATermUtils.makeNot(conjunct); final ATermAppl sub = ATermUtils.makeSub(term, ATermUtils.nnf(conjunct)); _tbox._Tu.addDef(sub); _subLogger.fine(() -> "Absorb named: " + ATermUtils.toString(sub)); _tbox.addAxiomExplanation(sub, _explanation); return true; } } return false; }
private boolean absorbII(final Set<ATermAppl> set) { for (final ATermAppl term : set) { final TermDefinition td = _tbox._Tu.getTD(term); boolean canAbsorb; if (td != null) canAbsorb = td.getEqClassAxioms().isEmpty(); else canAbsorb = term.getArity() == 0 && set.size() > 1; if (canAbsorb) { set.remove(term); final ATermList setlist = ATermUtils.makeList(set); ATermAppl conjunct = ATermUtils.makeAnd(setlist); conjunct = ATermUtils.makeNot(conjunct); final ATermAppl sub = ATermUtils.makeSub(term, ATermUtils.nnf(conjunct)); _tbox._Tu.addDef(sub); _subLogger.fine(() -> "Absorb named: " + ATermUtils.toString(sub)); _tbox.addAxiomExplanation(sub, _explanation); return true; } } return false; }
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); }