src/HOL/BNF_Examples/Compat.thy
author blanchet
Mon, 01 Sep 2014 16:17:47 +0200
changeset 58124 c60617a84c1d
parent 58112 8081087096ad
child 58125 a2ba381607fb
permissions -rw-r--r--
added compatibility examples/tests
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
57634
blanchet
parents: 56488
diff changeset
     1
(*  Title:      HOL/BNF_Examples/Compat.thy
blanchet
parents: 56488
diff changeset
     2
    Author:     Jasmin Blanchette, TU Muenchen
blanchet
parents: 56488
diff changeset
     3
    Copyright   2014
blanchet
parents: 56488
diff changeset
     4
blanchet
parents: 56488
diff changeset
     5
Tests for compatibility with the old datatype package.
blanchet
parents: 56488
diff changeset
     6
*)
blanchet
parents: 56488
diff changeset
     7
blanchet
parents: 56488
diff changeset
     8
header {* Tests for Compatibility with the Old Datatype Package *}
blanchet
parents: 56488
diff changeset
     9
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    10
theory Compat
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    11
imports Main
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    12
begin
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    13
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    14
ML \<open>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    15
fun check_len n xs label =
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    16
  length xs = n orelse error ("Expected length " ^ string_of_int (length xs) ^ " for " ^ label);
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    17
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    18
fun check_lens (n1, n2, n3) (xs1, xs2, xs3) =
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    19
  check_len n1 xs1 "old" andalso check_len n2 xs2 "unfold" andalso check_len n3 xs3 "keep";
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    20
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    21
fun get_descrs thy lens T_name =
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    22
  (these (Option.map #descr (Old_Datatype_Data.get_info thy T_name)),
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    23
   these (Option.map #descr (BNF_LFP_Compat.get_info thy BNF_LFP_Compat.Unfold_Nesting T_name)),
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    24
   these (Option.map #descr (BNF_LFP_Compat.get_info thy BNF_LFP_Compat.Keep_Nesting T_name)))
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    25
  |> tap (check_lens lens);
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    26
\<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    27
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    28
datatype 'a old_lst = Old_Nl | Old_Cns 'a "'a old_lst"
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    29
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    30
ML \<open> get_descrs @{theory} (1, 1, 1) @{type_name old_lst} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    31
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    32
datatype_new 'a lst = Nl | Cns 'a "'a lst"
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    33
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    34
ML \<open> get_descrs @{theory} (0, 1, 1) @{type_name lst} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    35
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    36
datatype_compat lst
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    37
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    38
ML \<open> get_descrs @{theory} (1, 1, 1) @{type_name lst} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    39
56456
39281b3e4fac commented out example that triggers a bug
blanchet
parents: 56455
diff changeset
    40
datatype_new 'b w = W | W' "'b w \<times> 'b list"
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    41
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    42
(* no support for sums of products:
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    43
datatype_compat w
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    44
*)
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    45
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    46
ML \<open> get_descrs @{theory} (0, 1, 1) @{type_name w} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    47
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    48
datatype_new ('c, 'b) s = L 'c | R 'b
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    49
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    50
ML \<open> get_descrs @{theory} (0, 1, 1) @{type_name s} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    51
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    52
datatype_new 'd x = X | X' "('d x lst, 'd list) s"
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    53
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    54
ML \<open> get_descrs @{theory} (0, 1, 1) @{type_name x} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    55
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    56
datatype_compat s
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    57
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    58
ML \<open> get_descrs @{theory} (1, 1, 1) @{type_name s} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    59
ML \<open> get_descrs @{theory} (0, 3, 1) @{type_name x} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    60
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    61
datatype_compat x
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    62
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    63
ML \<open> get_descrs @{theory} (3, 3, 1) @{type_name x} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    64
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    65
datatype_new 'a tttre = TTTre 'a "'a tttre lst lst lst"
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    66
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    67
ML \<open> get_descrs @{theory} (0, 4, 1) @{type_name tttre} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    68
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    69
datatype_compat tttre
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    70
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    71
ML \<open> get_descrs @{theory} (4, 4, 1) @{type_name tttre} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    72
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    73
datatype_new 'a ftre = FEmp | FTre "'a \<Rightarrow> 'a ftre lst"
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    74
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    75
ML \<open> get_descrs @{theory} (0, 2, 1) @{type_name ftre} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    76
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    77
datatype_compat ftre
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    78
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    79
ML \<open> get_descrs @{theory} (2, 2, 1) @{type_name ftre} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    80
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    81
datatype_new 'a btre = BTre 'a "'a btre lst" "'a btre lst"
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    82
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    83
ML \<open> get_descrs @{theory} (0, 3, 1) @{type_name btre} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    84
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    85
datatype_compat btre
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    86
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    87
ML \<open> get_descrs @{theory} (3, 3, 1) @{type_name btre} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    88
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    89
datatype_new 'a foo = Foo | Foo' 'a "'a bar" and 'a bar = Bar | Bar' 'a "'a foo"
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    90
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    91
ML \<open> get_descrs @{theory} (0, 2, 2) @{type_name foo} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    92
ML \<open> get_descrs @{theory} (0, 2, 2) @{type_name bar} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    93
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    94
datatype_compat foo bar
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    95
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    96
ML \<open> get_descrs @{theory} (2, 2, 2) @{type_name foo} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    97
ML \<open> get_descrs @{theory} (2, 2, 2) @{type_name bar} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
    98
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
    99
datatype_new 'a tre = Tre 'a "'a tre lst"
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   100
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   101
ML \<open> get_descrs @{theory} (0, 2, 1) @{type_name tre} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   102
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   103
datatype_compat tre
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   104
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   105
ML \<open> get_descrs @{theory} (2, 2, 1) @{type_name tre} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   106
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   107
fun f_tre and f_tres where
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   108
  "f_tre (Tre a ts) = {a} \<union> f_tres ts"
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   109
| "f_tres Nl = {}"
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   110
| "f_tres (Cns t ts) = f_tres ts"
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   111
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   112
datatype_new 'a f = F 'a and 'a g = G 'a
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   113
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   114
ML \<open> get_descrs @{theory} (0, 2, 2) @{type_name f} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   115
ML \<open> get_descrs @{theory} (0, 2, 2) @{type_name g} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   116
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   117
datatype_new h = H "h f" | H'
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   118
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   119
ML \<open> get_descrs @{theory} (0, 1, 1) @{type_name h} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   120
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   121
datatype_compat f g
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   122
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   123
ML \<open> get_descrs @{theory} (2, 2, 2) @{type_name f} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   124
ML \<open> get_descrs @{theory} (2, 2, 2) @{type_name g} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   125
ML \<open> get_descrs @{theory} (0, 3, 1) @{type_name h} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   126
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   127
datatype_compat h
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   128
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   129
ML \<open> get_descrs @{theory} (3, 3, 1) @{type_name h} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   130
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   131
datatype_new myunit = MyUnity
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   132
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   133
ML \<open> get_descrs @{theory} (0, 1, 1) @{type_name myunit} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   134
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   135
datatype_compat myunit
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   136
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   137
ML \<open> get_descrs @{theory} (1, 1, 1) @{type_name myunit} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   138
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   139
datatype_new mylist = MyNil | MyCons nat mylist
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   140
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   141
ML \<open> get_descrs @{theory} (0, 1, 1) @{type_name mylist} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   142
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   143
datatype_compat mylist
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   144
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   145
ML \<open> get_descrs @{theory} (1, 1, 1) @{type_name mylist} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   146
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   147
fun f_mylist where
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   148
  "f_mylist MyNil = 0"
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   149
| "f_mylist (MyCons _ xs) = Suc (f_mylist xs)"
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   150
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   151
datatype_new foo' = FooNil | FooCons bar' foo' and bar' = Bar
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   152
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   153
ML \<open> get_descrs @{theory} (0, 2, 2) @{type_name foo'} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   154
ML \<open> get_descrs @{theory} (0, 2, 2) @{type_name bar'} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   155
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   156
datatype_compat bar' foo'
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   157
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   158
ML \<open> get_descrs @{theory} (2, 2, 2) @{type_name foo'} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   159
ML \<open> get_descrs @{theory} (2, 2, 2) @{type_name bar'} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   160
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   161
fun f_foo and f_bar where
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   162
  "f_foo FooNil = 0"
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   163
| "f_foo (FooCons bar foo) = Suc (f_foo foo) + f_bar bar"
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   164
| "f_bar Bar = Suc 0"
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   165
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   166
locale opt begin
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   167
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   168
datatype_new 'a opt = Non | Som 'a
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   169
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   170
ML \<open> get_descrs @{theory} (0, 1, 1) @{type_name opt} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   171
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   172
datatype_compat opt
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   173
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   174
ML \<open> get_descrs @{theory} (1, 1, 1) @{type_name opt} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   175
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   176
end
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   177
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   178
datatype funky = Funky "funky tre" | Funky'
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   179
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   180
ML \<open> get_descrs @{theory} (3, 3, 3) @{type_name funky} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   181
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   182
datatype fnky = Fnky "nat tre"
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   183
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   184
ML \<open> get_descrs @{theory} (1, 1, 1) @{type_name fnky} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   185
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   186
datatype_new tree = Tree "tree foo"
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   187
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   188
ML \<open> get_descrs @{theory} (0, 3, 1) @{type_name tree} \<close>
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   189
56488
535cfc7fc301 reintroduce example (cf. 39281b3e4fac)
traytel
parents: 56456
diff changeset
   190
datatype_compat tree
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   191
58124
c60617a84c1d added compatibility examples/tests
blanchet
parents: 58112
diff changeset
   192
ML \<open> get_descrs @{theory} (3, 3, 1) @{type_name tree} \<close>
56454
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   193
e9e82384e5a1 added 'datatype_compat' examples/tests
blanchet
parents:
diff changeset
   194
end