The aim of Typical is to do static type checking on logic programs. The software will check Prolog programs that are extended with type declarations. The type system includes subtyping and parametric polymorphism. A description of the general idea and of the techniques for type checking and type inferencing can be found in two technical reports (see below).
There is another instance of Typical, which is designed for first-order logic programs. More information is available on the companion page
Report `On the Use of Types in Logic Programming'
Report `Type Checking and Type Inferencing for Logic Programs with
Subtypes and Parametric Polymorphism'