src/ZF/ex/data.ML
changeset 71 729fe026c5f3
parent 56 2caa6f49f06e
child 85 914270f33f2d
equal deleted inserted replaced
70:8a29f8b4aca1 71:729fe026c5f3
    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)";