6.1 Induction, in abstract
In this section, we prove a theorem on inductive constructions using a proof-irrelevant \( \mathsf{Prop}\).
Let \( I : \mathsf{Type}_u \) be a type with a well-founded transitive relation \( \prec \). Let \( A : I \to \mathsf{Type}_v \) be a family of types indexed by \( I \), and let
An inductive construction for \( (I, A, B) \) is a pair of functions
Let \( (F_A, F_B) \) be an inductive construction for \( (I, A, B) \), where \( w \) is \( 0 \). Then there are computable functions
such that for each \( i : I \),
Recall that \( \operatorname {\mathsf{Part}}\alpha \) denotes the type \( \sum _{p: \mathsf{Prop}} (p \to \alpha ) \). For \( i : I \), we define the hypothesis on data \( t : \prod _{j : I} j \prec i \to \operatorname {\mathsf{Part}}A_j \) to be the proposition
Now we define \( K : \prod _{i : I} \operatorname {\mathsf{Part}}A_i \) by
where \( \operatorname {\mathsf{fix}}_C \) is the fixed point function for \( \prec \) and induction motive \( C : I \to \mathsf{Type}_v \), with type
By definition of \( \operatorname {\mathsf{fix}} \), we obtain the equation
Further, if \( h_1 : \operatorname {\mathsf{pr}}_1(K_i) \), we have the equation
where \( h_2 : \operatorname {\mathsf{IH}}(i, j \_ \mapsto K_j) \) is obtained by casting from \( h_1 \) using the previous equation; this equation is derived from the extensionality principle of \( \operatorname {\mathsf{Part}}\), which states that
Using these two equations, we may now show directly by induction on \( i \) that \( D' : \prod _{i : I} \operatorname {\mathsf{pr}}_1(K_i) \). 1 From this, we may define \( G : \prod _{i : I} A_i \) by \( G_i = \operatorname {\mathsf{pr}}_2(K_i)\ D'_i \). We may then easily obtain \( H : \prod _{i : I}\ B\ i\ G_i\ (j \_ \mapsto G_j) \) by appealing to \( F_B \) and the two equations above. The required equality also easily follows from the two given equations.
Let \( (F_A, F_B) \) be an inductive construction for \( (I, A, B) \). Then there are noncomputable functions
such that for each \( i : I \),
Define
by \( C\ i\ x\ d = \operatorname {\mathsf{Nonempty}}(B\ i\ x\ d) \). We then define the inductive construction \( (F_A', F_B') \) for \( (I, A, C) \) by
where \( \langle -\rangle \) is the constructor and \( \operatorname {\mathsf{some}} \) is the noncomputable destructor of \( \operatorname {\mathsf{Nonempty}} \). The result is then direct from proposition 6.2.