As you know, to define a new type system, one way is that we need:
- Language syntax
- Typing rules
And then we need to prove some theorems we believe that it is provable by using above typing rules. To prove these theorems, one way is that we can use Induction (Rule induction).
For example, we have a system like this:
nat n ::= 0 | S n
And we define 2 rules "Zero" and "Succ" like this:
n nat
_____ Zero _______ Succ
0 nat S n nat
Then, we propose a theorem, we believe this theorem is right, and we need to prove it.
If n nat, then S S n nat.
We can easily prove this theorem using defined rules. That is called Rule Induction.
So does anyone know sources that can help to practice Rule Induction?