7.14 Generation of induction principles with Scheme

## 7.14 Generation of induction principles with `Scheme`

The `Scheme` command is a high-level tool for generating automatically (possibly mutual) induction principles for given types and sorts. Its syntax follows the schema:
`Scheme` ident`1``:= Induction for` ident`'``1``Sort` sort`1``
with
...
with` ident`m``:= Induction for` ident`'``m``Sort` sort`m`
ident'1 ... ident'm are different inductive type identifiers belonging to the same package of mutual inductive definitions. This command generates ident1... identm to be mutually recursive definitions. Each term identi proves a general principle of mutual induction for objects in type termi.
Variants:

1. `Scheme` ident`1``:= Minimality for` ident`'``1``Sort` sort`1``
   with
   ...
   with` ident`m``:= Minimality for` ident`'``m``Sort` sort`m`
   Same as before but defines a non-dependent elimination principle more natural in case of inductively defined relations.

See also: 8.3