We need some method of systematically showing that
. Since
the definition is inductive, we can resort to some standard
presentation method for membership in inductively defined types as
discussed in section 2 on Naive Type Theory. The result is a calculus
or logic for making what Martin-Löf calls membership judgments.
The form of this judgment is
![]()
which is read: we know that a belongs to type A.
The definition of

suggest that we also want hypothetical judgments, such as
.
In general, a sequent

means: if A1 is a type, x1 an element, A2 a type for x1
in
, then G is a type with element g.
Rules
We present the inductive definition in terms of rules for sequents. We organize them top-down, e. g.
Nuprl supports a problem-solving style that is top-down or
goal-driven (like Prolog and
Prolog [38]). In this style, the goals is
thought of as Rules in this style look like
by /TD>
|
The rule name Di means decompose hypothesis i or if i=0 decompose the conclusion.
Sample Proof
Extract
as element.
Proof Trees
In Nuprl, derivations are organized into proof trees. Here is a diagram.
![]()

![]()
We can define these trees inductively in Naive Type Theory as follows:
sequent = (term list)
term justification = {rule names} + ... proof = sequent
justification
proof list