The negation of a conjunction: "no match satisfies all of these at once".
Never rewritten with De Morgan's law, because the conjuncts share existentially
quantified variables. {:nand, [{:order, x}, {:refund, x}]} means "there is no x
with both". The De Morgan form would mean "there are no orders at all, or no refunds
at all" instead — false whenever one x has an order and a different x has a
refund.
Rete.Compiler.Negation extracts this into a helper production whose RHS inserts a
marker fact. Nothing else in the pipeline can evaluate one. It binds nothing
downstream. But its inner conditions are still classified, because the helper needs
their join keys.
Summary
Types
@type t() :: %Rete.IR.CompoundNegation{conditions: [Rete.IR.condition()]}