
match :: D -> P -> boolean
match(d, p) = matchPat(d(1), p(1)) ^ matchPat(d(2), p(2)) ^ . . . ^ matchPat(d(n), p(n))
The combine function takes two punctuations and outputs a new punctuation
such that all data items that match both punctuations also match the output punctuation.
That is:
combine(p1, p2) = p | match(d, p1) ^ match(d, p2) <=> match(d, p).
Last modified by Pete Tucker on 26 August 2005.