void disjunct(RuleBody other)
VecOwn< ast::Clause > toClauseBodies() const
void conjunct(RuleBody other)
static RuleBody getFalse()
static bool equal(const literal &a, const literal &b)
friend std::ostream & operator<<(std::ostream &out, const RuleBody &body)
static RuleBody atom(Own< ast::Atom > atom)
RuleBody & operator=(RuleBody &&)=default
static void insert(clause &cl, literal &&lit)
std::vector< literal > clause
static RuleBody constraint(Own< ast::Constraint > constraint)
static RuleBody getTrue()
std::vector< clause > dnf
literal(bool negated, Own< ast::Literal > atom)
static bool isSubsetOf(const clause &a, const clause &b)