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