The disjointness command is applicable to two names in a goal, where both names refer to elements or injections of a free type. It makes the disjointness constraint implied by the free type between the elements and injections available as an antecedent in the sub-goal.
Given the general form of a free type,
f1 ::= h1,1 ... h1,m1 | g1,1 ![]() ![]() ![]() ![]() |
& ... & |
fr ::= hr,1 ... hr,mr | gr,1 ![]() ![]() ![]() ![]() |
the disjointness constraint for two elements is
![]() |
the disjointness constraint for an element and an injection is
![]() ![]() ![]() |
the disjointness constraint for an injection and an element is
![]() ![]() ![]() |
and the disjointness constraint for two injections is
![]() ![]() ![]() |
"disjointness" e1 e2
This example applies the disjointness command to expressions e1 and e2.