equal
deleted
inserted
replaced
21 ["Zero : data(A,B)", |
21 ["Zero : data(A,B)", |
22 "[| a: A |] ==> One(a) : data(A,B)", |
22 "[| a: A |] ==> One(a) : data(A,B)", |
23 "[| a: A; b: B |] ==> Two(a,b) : data(A,B)", |
23 "[| a: A; b: B |] ==> Two(a,b) : data(A,B)", |
24 "[| a: A; b: B; d: data(A,B) |] ==> Three(a,b,d) : data(A,B)"]; |
24 "[| a: A; b: B; d: data(A,B) |] ==> Three(a,b,d) : data(A,B)"]; |
25 val monos = []; |
25 val monos = []; |
26 val type_intrs = data_typechecks |
26 val type_intrs = datatype_intrs |
27 val type_elims = data_elims); |
27 val type_elims = datatype_elims); |
28 |
28 |
29 |
29 |
30 (** Lemmas to justify using "data" in other recursive type definitions **) |
30 (** Lemmas to justify using "data" in other recursive type definitions **) |
31 |
31 |
32 goalw Data.thy Data.defs "!!A B. [| A<=C; B<=D |] ==> data(A,B) <= data(C,D)"; |
32 goalw Data.thy Data.defs "!!A B. [| A<=C; B<=D |] ==> data(A,B) <= data(C,D)"; |