Inductive-data-type Systems. F. Blanqui, J.-P. Jouannaud and M. Okada. TCS 272, 30 pages, 2002.
In a previous work ("Abstract Data Type Systems", TCS 173(2), 1997), the last two authors presented a combined language made of a (strongly normalizing) algebraic rewrite system and a typed lambda-calculus enriched by pattern-matching definitions following a certain format, called the "General Schema", which generalizes the usual recursor definitions for natural numbers and similar "basic inductive types". This combined language was shown to be strongly normalizing. The purpose of this paper is to reformulate and extend the General Schema in order to make it easily extensible, to capture a more general class of inductive types, called "strictly positive", and to ease the strong normalization proof of the resulting system. This result provides a computation model for the combination of an algebraic specification language based on abstract data types and of a strongly typed functional language with strictly positive inductive types.
"We showed that each 〚s〛 is the least fixpoint of the monotone functional Fs. This least fixpoint can be reached by transfinite iteration. Let Fsa be the a-th iterate of Fs over the empty set. Note that we need to go further than ω as it is shown by the following example. Consider the function i:nat→ord defined in Section 2.1.3. For all n, i(n) ∈ Fordn+1-Fordn. Thus, lim(λx.i(x)) ∈ Fordω+1-Fordω.
This provides us with a well-founded ordering on the computable terms of type s:
Definition 15 (Ordering on the arguments of a function symbol) The order of a term t ∈ 〚s〛 is the smallest ordinal a such that t ∈ Fsa. We say that t ∈ 〚s〛 is greater than u ∈ 〚s〛, t > u, if:
This is this ordering which allows us to treat the definitions on strictly positive types. This idea is already used by Mendler for proving the strong normalization of System F with recursors for positive inductive types [36] and by Werner for proving the strong normalization of the Calculus of Inductive Constructions with recursors for strictly positive types [51]. We apply this technique to a larger class of higher-order rewrite rules.
Let us see the example of the addition on Brouwer’s ordinals. If lim(f) is computable then, by definition of 〚ord〛, f is computable. This means that, for any n ∈ 〚nat〛, (f n) is computable. Therefore, lim(f) > (f n)."