/** * Recursive */ @Override public ImmutableSet<ImmutableExpression> flattenAND() { return flatten(ExpressionOperation.AND); }
@Override public ImmutableList<? extends GroundTerm> getArguments() { return (ImmutableList<? extends GroundTerm>)super.getArguments(); }
@Override public ImmutableList<? extends GroundTerm> getTerms() { return (ImmutableList<? extends GroundTerm>)super.getTerms(); }
@Override public ImmutableSet<ImmutableExpression> flatten(OperationPredicate operator) { /** * Only flattens OR expressions. */ if (getFunctionSymbol().equals(operator)) { ImmutableSet.Builder<ImmutableExpression> setBuilder = ImmutableSet.builder(); for (ImmutableTerm subTerm : getTerms()) { /** * Recursive call */ if (subTerm instanceof ImmutableExpression) { setBuilder.addAll(((ImmutableExpression) subTerm).flatten(operator)); } else { throw new IllegalStateException("An AND-expression must be only composed of " + "ImmutableBooleanExpression(s), not of a " + subTerm); } } return setBuilder.build(); } else { return ImmutableSet.of(this); } } }
@Override public ImmutableSet<ImmutableExpression> flatten(OperationPredicate operator) { /** * Only flattens OR expressions. */ if (getFunctionSymbol().equals(operator)) { ImmutableSet.Builder<ImmutableExpression> setBuilder = ImmutableSet.builder(); for (ImmutableTerm subTerm : getArguments()) { /** * Recursive call */ if (subTerm instanceof ImmutableExpression) { setBuilder.addAll(((ImmutableExpression) subTerm).flatten(operator)); } else { throw new IllegalStateException("An AND-expression must be only composed of " + "ImmutableBooleanExpression(s), not of a " + subTerm); } } return setBuilder.build(); } else { return ImmutableSet.of(this); } } }
/** * Recursive */ @Override public ImmutableSet<ImmutableExpression> flattenAND() { return flatten(ExpressionOperation.AND); }
@Override public ImmutableSet<ImmutableExpression> flattenOR() { return flatten(ExpressionOperation.OR); }
@Override public ImmutableSet<ImmutableExpression> flattenOR() { return flatten(ExpressionOperation.OR); }