minor changes e.g. datatype_elims
--- a/src/ZF/ex/Data.ML Thu Oct 28 11:30:35 1993 +0100
+++ b/src/ZF/ex/Data.ML Thu Oct 28 11:32:37 1993 +0100
@@ -11,17 +11,17 @@
(val thy = Univ.thy;
val rec_specs =
[("data", "univ(A Un B)",
- [(["Zero"], "i"),
- (["One"], "i=>i"),
- (["Two"], "[i,i]=>i"),
- (["Three"], "[i,i,i]=>i")])];
+ [(["Con0"], "i"),
+ (["Con1"], "i=>i"),
+ (["Con2"], "[i,i]=>i"),
+ (["Con3"], "[i,i,i]=>i")])];
val rec_styp = "[i,i]=>i";
val ext = None
val sintrs =
- ["Zero : data(A,B)",
- "[| a: A |] ==> One(a) : data(A,B)",
- "[| a: A; b: B |] ==> Two(a,b) : data(A,B)",
- "[| a: A; b: B; d: data(A,B) |] ==> Three(a,b,d) : data(A,B)"];
+ ["Con0 : data(A,B)",
+ "[| a: A |] ==> Con1(a) : data(A,B)",
+ "[| a: A; b: B |] ==> Con2(a,b) : data(A,B)",
+ "[| a: A; b: B; d: data(A,B) |] ==> Con3(a,b,d) : data(A,B)"];
val monos = [];
val type_intrs = datatype_intrs
val type_elims = datatype_elims);
--- a/src/ZF/ex/LList.ML Thu Oct 28 11:30:35 1993 +0100
+++ b/src/ZF/ex/LList.ML Thu Oct 28 11:32:37 1993 +0100
@@ -4,9 +4,6 @@
Copyright 1993 University of Cambridge
Co-Datatype definition of Lazy Lists
-
-Needs a "take-lemma" to prove llist_subset_quniv and to justify co-induction
-for proving equality
*)
structure LList = Co_Datatype_Fun
@@ -22,7 +19,7 @@
"[| a: A; l: llist(A) |] ==> LCons(a,l) : llist(A)"];
val monos = [];
val type_intrs = co_datatype_intrs
- val type_elims = []);
+ val type_elims = co_datatype_elims);
val [LNilI, LConsI] = LList.intrs;
--- a/src/ZF/ex/ListN.ML Thu Oct 28 11:30:35 1993 +0100
+++ b/src/ZF/ex/ListN.ML Thu Oct 28 11:32:37 1993 +0100
@@ -55,4 +55,7 @@
val listn_append = result();
val Nil_listn_case = ListN.mk_cases List.con_defs "<i,Nil> : listn(A)"
-and Cons_listn_case = ListN.mk_cases List.con_defs "<i,Cons(x,xs)> : listn(A)";
+and Cons_listn_case = ListN.mk_cases List.con_defs "<i,Cons(x,l)> : listn(A)";
+
+val zero_listn_case = ListN.mk_cases List.con_defs "<0,l> : listn(A)"
+and succ_listn_case = ListN.mk_cases List.con_defs "<succ(i),l> : listn(A)";
--- a/src/ZF/ex/data.ML Thu Oct 28 11:30:35 1993 +0100
+++ b/src/ZF/ex/data.ML Thu Oct 28 11:32:37 1993 +0100
@@ -11,17 +11,17 @@
(val thy = Univ.thy;
val rec_specs =
[("data", "univ(A Un B)",
- [(["Zero"], "i"),
- (["One"], "i=>i"),
- (["Two"], "[i,i]=>i"),
- (["Three"], "[i,i,i]=>i")])];
+ [(["Con0"], "i"),
+ (["Con1"], "i=>i"),
+ (["Con2"], "[i,i]=>i"),
+ (["Con3"], "[i,i,i]=>i")])];
val rec_styp = "[i,i]=>i";
val ext = None
val sintrs =
- ["Zero : data(A,B)",
- "[| a: A |] ==> One(a) : data(A,B)",
- "[| a: A; b: B |] ==> Two(a,b) : data(A,B)",
- "[| a: A; b: B; d: data(A,B) |] ==> Three(a,b,d) : data(A,B)"];
+ ["Con0 : data(A,B)",
+ "[| a: A |] ==> Con1(a) : data(A,B)",
+ "[| a: A; b: B |] ==> Con2(a,b) : data(A,B)",
+ "[| a: A; b: B; d: data(A,B) |] ==> Con3(a,b,d) : data(A,B)"];
val monos = [];
val type_intrs = datatype_intrs
val type_elims = datatype_elims);
--- a/src/ZF/ex/listn.ML Thu Oct 28 11:30:35 1993 +0100
+++ b/src/ZF/ex/listn.ML Thu Oct 28 11:32:37 1993 +0100
@@ -55,4 +55,7 @@
val listn_append = result();
val Nil_listn_case = ListN.mk_cases List.con_defs "<i,Nil> : listn(A)"
-and Cons_listn_case = ListN.mk_cases List.con_defs "<i,Cons(x,xs)> : listn(A)";
+and Cons_listn_case = ListN.mk_cases List.con_defs "<i,Cons(x,l)> : listn(A)";
+
+val zero_listn_case = ListN.mk_cases List.con_defs "<0,l> : listn(A)"
+and succ_listn_case = ListN.mk_cases List.con_defs "<succ(i),l> : listn(A)";
--- a/src/ZF/ex/llist.ML Thu Oct 28 11:30:35 1993 +0100
+++ b/src/ZF/ex/llist.ML Thu Oct 28 11:32:37 1993 +0100
@@ -4,9 +4,6 @@
Copyright 1993 University of Cambridge
Co-Datatype definition of Lazy Lists
-
-Needs a "take-lemma" to prove llist_subset_quniv and to justify co-induction
-for proving equality
*)
structure LList = Co_Datatype_Fun
@@ -22,7 +19,7 @@
"[| a: A; l: llist(A) |] ==> LCons(a,l) : llist(A)"];
val monos = [];
val type_intrs = co_datatype_intrs
- val type_elims = []);
+ val type_elims = co_datatype_elims);
val [LNilI, LConsI] = LList.intrs;