equal
deleted
inserted
replaced
19 val ext = None |
19 val ext = None |
20 val sintrs = |
20 val sintrs = |
21 ["LNil : llist(A)", |
21 ["LNil : llist(A)", |
22 "[| a: A; l: llist(A) |] ==> LCons(a,l) : llist(A)"]; |
22 "[| a: A; l: llist(A) |] ==> LCons(a,l) : llist(A)"]; |
23 val monos = []; |
23 val monos = []; |
24 val type_intrs = co_data_typechecks |
24 val type_intrs = co_datatype_intrs |
25 val type_elims = []); |
25 val type_elims = []); |
26 |
26 |
27 val [LNilI, LConsI] = LList.intrs; |
27 val [LNilI, LConsI] = LList.intrs; |
28 |
28 |
29 (*An elimination rule, for type-checking*) |
29 (*An elimination rule, for type-checking*) |
47 [Transset_quniv, QPair_Int_quniv_in_quniv, Int_Vfrom_0_in_quniv, |
47 [Transset_quniv, QPair_Int_quniv_in_quniv, Int_Vfrom_0_in_quniv, |
48 zero_Int_in_quniv, one_Int_in_quniv, |
48 zero_Int_in_quniv, one_Int_in_quniv, |
49 QPair_Int_Vfrom_succ_in_quniv, QPair_Int_Vfrom_in_quniv]; |
49 QPair_Int_Vfrom_succ_in_quniv, QPair_Int_Vfrom_in_quniv]; |
50 |
50 |
51 val quniv_cs = ZF_cs addSIs in_quniv_rls |
51 val quniv_cs = ZF_cs addSIs in_quniv_rls |
52 addIs (Int_quniv_in_quniv::co_data_typechecks); |
52 addIs (Int_quniv_in_quniv::co_datatype_intrs); |
53 |
53 |
54 (*Keep unfolding the lazy list until the induction hypothesis applies*) |
54 (*Keep unfolding the lazy list until the induction hypothesis applies*) |
55 goal LList.thy |
55 goal LList.thy |
56 "!!i. i : nat ==> \ |
56 "!!i. i : nat ==> \ |
57 \ ALL l: llist(quniv(A)). l Int Vfrom(quniv(A), i) : quniv(A)"; |
57 \ ALL l: llist(quniv(A)). l Int Vfrom(quniv(A), i) : quniv(A)"; |