src/CCL/ex/Flag.ML
author wenzelm
Sat, 17 Sep 2005 17:35:26 +0200
changeset 17456 bcf7544875b2
parent 1459 d12da312eff4
permissions -rw-r--r--
converted to Isar theory format;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17456
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 1459
diff changeset
     1
(*  Title:      CCL/ex/Flag.ML
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     2
    ID:         $Id$
1459
d12da312eff4 expanded tabs
clasohm
parents: 0
diff changeset
     3
    Author:     Martin Coen, Cambridge University Computer Laboratory
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     4
    Copyright   1993  University of Cambridge
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     5
*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     6
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     7
(******)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     8
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     9
val flag_defs = [Colour_def,red_def,white_def,blue_def,ccase_def];
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    10
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    11
(******)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    12
17456
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 1459
diff changeset
    13
val ColourXH = mk_XH_tac (the_context ()) (simp_type_defs @flag_defs) [] 
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    14
          "a : Colour <-> (a=red | a=white | a=blue)";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    15
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    16
val Colour_case = XH_to_E ColourXH;
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    17
17456
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 1459
diff changeset
    18
val redT = mk_canT_tac (the_context ()) [ColourXH] "red : Colour";
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 1459
diff changeset
    19
val whiteT = mk_canT_tac (the_context ()) [ColourXH] "white : Colour";
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 1459
diff changeset
    20
val blueT = mk_canT_tac (the_context ()) [ColourXH] "blue : Colour";
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    21
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    22
17456
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 1459
diff changeset
    23
val ccaseT = mk_ncanT_tac (the_context ()) flag_defs case_rls case_rls
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    24
     "[| c:Colour; \
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    25
\        c=red ==> r : C(red); c=white ==> w : C(white); c=blue ==> b : C(blue) |] ==> \
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    26
\     ccase(c,r,w,b) : C(c)";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    27
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    28
(***)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    29
17456
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 1459
diff changeset
    30
val prems = goalw (the_context ()) [flag_def]
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    31
    "flag : List(Colour)->List(Colour)*List(Colour)*List(Colour)";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    32
by (typechk_tac [redT,whiteT,blueT,ccaseT] 1);
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    33
by clean_ccs_tac;
1459
d12da312eff4 expanded tabs
clasohm
parents: 0
diff changeset
    34
by (etac (ListPRI RS (ListPR_wf RS wfI)) 1);
d12da312eff4 expanded tabs
clasohm
parents: 0
diff changeset
    35
by (assume_tac 1);
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    36
result();
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    37
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    38
17456
bcf7544875b2 converted to Isar theory format;
wenzelm
parents: 1459
diff changeset
    39
val prems = goalw (the_context ()) [flag_def]
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    40
    "flag : PROD l:List(Colour).{x:List(Colour)*List(Colour)*List(Colour).FLAG(x,l)}";
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    41
by (gen_ccs_tac [redT,whiteT,blueT,ccaseT] 1);
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    42
by (REPEAT_SOME (ares_tac [ListPRI RS (ListPR_wf RS wfI)]));