A constraint Psubsumes a constraint Q
if and only if,
for every disjunctive clause Pi
in the disjunctive normal form105
of P, Pi subsumes every conjunctive clause Qj
in the conjunctive normal form106
of Q, where
a disjunctive clause Pi subsumes a conjunctive clause Qj if and only
if there exists an atomic constraint Pia in Pi for which there exists
an atomic constraint Qjb in Qj such that Pia subsumes Qjb,
an atomic constraint A subsumes another atomic constraint
B if and only if A and B are identical using the
rules described in [temp.constr.atomic], and
a fold expanded constraint A subsumes
another fold expanded constraint B
if they are compatible for subsumption,
have the same fold-operator, and
the constraint of A subsumes that of B.
A declaration D1 is more constrained
than another declaration D2 when D1 is at least as
constrained as D2, and D2 is not at least as
constrained as D1.
A constraint is in disjunctive normal form when it is a disjunction of
clauses where each clause is a conjunction of fold expanded or atomic constraints.
For atomic constraints A, B, and C, the disjunctive normal form
of the constraint
A ∧ (B ∨ C)
is
(A ∧ B) ∨ (A ∧ C).
A constraint is in conjunctive normal form when it is a conjunction
of clauses where each clause is a disjunction of fold expanded or atomic constraints.
For atomic constraints A, B, and C, the constraint
A ∧ (B ∨ C) is in conjunctive normal form.