2.8 Implicit Coercions

Coercions can be used to implicitly inject terms from one ``class'' in which they reside into another one. A class is either a sort (denoted by the keyword SORTCLASS), a product type (denoted by the keyword FUNCLASS), or a type constructor (denoted by its name), e.g. an inductive type or any constant with a type of the form (x1:A1)..(xn:An)s where s is a sort.

Then the user is able to apply an object that is not a function, but can be coerced to a function, and more generally to consider that a term of type A is of type B provided that there is a declared coercion between A and B.

More details and examples, and a description of commands related to coercions are provided in chapter 14.