Combination Algorithm Writer with Multiple Predicates (CAWMP) differs from CAWP because it writes algorithms which can contain calls to existing and new predicates from the current predicate name, invented from a list of numbers or from the rules or dictionary.
CAWMP verifies that predicates it writes contain no singletons, ensuring that all variables are useful and that each variable occurs at least twice.
CAWMP can insert a command, unique to CAWMP that can underscore or wild-card a variable, verify that it is an empty list or an empty string. Other CAWMP-specific commands are negation of equals, etc.
Timeout is used when verifying code written with CAWMP by running with List Prolog Interpreter in case of infinite loops.
An additional command caw000 (found in the verify file cawpverifya.pl) creates algorithms bottom up, taking less time than the top down default command.
CAWMP may write predicates with multiple inputs and outputs, rather than one output.
CAWMP may accept dictionary rules as an argument.
To overcome the problem of a specification for a clause not producing the desired results, giving multiple specifications produces the correct results.