 [det]must_be(+Type, 
@Term)
[det]must_be(+Type, 
@Term)atom, atomic, between, boolean, callable,
chars, codes, text, compound, constant, float,
integer, nonneg, positive_integer, negative_integer,
nonvar, number, oneof, list, list_or_partial_list,
symbol, var, rational, encoding, dict 
and string.
Most of these types are defined by an arity-1 built-in predicate of the same name. Below is a brief definition of the other types.
boolean one of trueorfalsechar Atom of length 1 code Representation Unicode code point chars Proper list of 1-character atoms codes Proper list of Unicode character codes text One of atom,string,charsorcodesbetween(IntL,IntU)Integer [IntL..IntU] between(FloatL,FloatU)Number [FloatL..FloatU] nonneg Integer >=0positive_integer Integer > 0 negative_integer Integer < 0 oneof(L)Ground term that is member of L encoding Valid name for a character encoding cyclic Cyclic term (rational tree) acyclic Acyclic term (tree) list(Type)Proper list with elements of Type list_or_partial_list A list or an open list (ending in a variable 
Note: The Windows version can only represent Unicode code points up 
to 2^16-1. Higher values cause a representation error on 
most text handling predicates.
- throws
- instantiation_error if Term is insufficiently instantiated 
and type_error(Type, Term)if Term is not of Type.