Lecture 30: Structural induction

Inductively defined sets

An inductively defined set is a set where the elements are constructed by a finite number of applications of a given set of rules.

Examples:

BNF

Compact way of writing down inductively defined sets: BNF (Backus Naur Form)

Only the name of the set and the rules are written down; they are separated by a "::=", and the rules are separated by vertical bar ().

Examples (from above):

Here, the variables to the left of the  ∈  indicate metavariables. When the same characters appear in the rules on the right-hand side of the : :  = , they indicate an arbitrary element of the set being defined. For example, the r1 and r2 in the r1 + r2 rule could be arbitrary elements of the set RE, but  +  is just the symbol  + .

Inductively defined functions

If X is an inductively defined set, you can define a function from X to Y by defining the function on each of the types of elements of X; i.e. for each of the rules. In the inductive rules (i.e. the ones containing the metavariable being defined), you can assume the function is already defined on the subterms.

Examples:

Proofs by structural induction

If X is an inductively defined set, then you can prove statements of the form ∀ x ∈ X, P(x) by giving a separate proof for each rule. For the inductive/recursive rules (i.e. the ones containing metavariables), you can assume that P holds on all subexpressions of x.

Examples: