0

As you know, to define a new type system, one way is that we need:

  1. Language syntax
  2. 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?

Marco Dinh
  • 332
  • 2
  • 15
  • Not sure what you mean by Rule Induction. All I find on Rule Induction is machine learning related. – aioobe Jun 24 '14 at 11:37

1 Answers1

1

You could show this by using structural induction but it would be quite unnecessary considering you wouldn't have to make use of the induction hypothesis in the inductive step.

To show n nat -> S S n nat you simply assume n nat and show S S n nat, which can be done as follows:

 _____ (By assumption)
 n nat
 _______ Succ
 S n nat
_________ Succ
S S n nat
aioobe
  • 413,195
  • 112
  • 811
  • 826