Web Interface for CASS

Pattern completeness analysis

This analysis analyzes an operation for a pattern-complete definition. An operation is pattern complete if each pattern match is defined for all constructors.

For instance, the operation

not True  = False
not False = True

is pattern complete, whereas the operation

head (x:_) = x

is incomplete. If an operation is defined by overlapping rules, it is complete if there is one alternative with complete pattern matching. For instance, the operation

por True  x     = True
por x     True  = True
por False False = False

is not complete, since it corresponds to the following definition:

por x y = por1 x y ? por2 x y

por1 True  _     = True
por1 False False = True

por2 _     True  = True

Hence, each alternative is incomplete.