.TH types 9 "September 7, 1994" .SH NAME Specifying type information in .I Progol. .SH DESCRIPTION .B Types have to be specified for every argument of all predicates to be used in constructing a hypothesis. This specification is done by a .I mode declaration. Type definitions can either be built-in to Prolog (for example, .I int/1 or .I float/1 or unary predicates in background knowledge. In addition to most standard Prolog built-in definitions .I Progol provides the following that could be of use in defining types: .TP .B any(X) any/1 is true for any term X. .TP .B float(X) float/1 is true if X is a floating point number. .TP .B int(X) int/1 is true if X is an integer. .TP .B nat(X) nat/1 succeeds when X is a natural number. .TP .B constant(X) constant/1 succeeds when X is a constant. .SH EXAMPLES Here is a type definition for a list of integers: .DS 3 1 list([]). list([H|T]):- int(H), list(T). .SH "SEE ALSO" mode/2