src/HOL/IMP/Denotation.ML
author nipkow
Wed, 11 Oct 2000 09:09:06 +0200
changeset 10186 499637e8f2c6
parent 5223 4cb05273f764
child 10202 9e8b4bebc940
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1465
5d7a7e439cec expanded tabs
clasohm
parents: 1266
diff changeset
     1
(*  Title:      HOL/IMP/Denotation.ML
924
806721cfbf46 new version of HOL/IMP with curried function application
clasohm
parents:
diff changeset
     2
    ID:         $Id$
1696
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
     3
    Author:     Heiko Loetzbeyer & Robert Sandner & Tobias Nipkow, TUM
924
806721cfbf46 new version of HOL/IMP with curried function application
clasohm
parents:
diff changeset
     4
    Copyright   1994 TUM
806721cfbf46 new version of HOL/IMP with curried function application
clasohm
parents:
diff changeset
     5
*)
806721cfbf46 new version of HOL/IMP with curried function application
clasohm
parents:
diff changeset
     6
806721cfbf46 new version of HOL/IMP with curried function application
clasohm
parents:
diff changeset
     7
(**** mono (Gamma(b,c)) ****)
806721cfbf46 new version of HOL/IMP with curried function application
clasohm
parents:
diff changeset
     8
806721cfbf46 new version of HOL/IMP with curried function application
clasohm
parents:
diff changeset
     9
qed_goalw "Gamma_mono" Denotation.thy [mono_def,Gamma_def]
1465
5d7a7e439cec expanded tabs
clasohm
parents: 1266
diff changeset
    10
        "mono (Gamma b c)"
1973
8c94c9a5be10 Converted proofs to use default clasets.
nipkow
parents: 1731
diff changeset
    11
     (fn _ => [Fast_tac 1]);
1481
03f096efa26d Modified datatype com.
nipkow
parents: 1465
diff changeset
    12
1696
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    13
5069
3ea049f7979d isatool fixgoal;
wenzelm
parents: 4477
diff changeset
    14
Goal "C(WHILE b DO c) = C(IF b THEN c;WHILE b DO c ELSE SKIP)";
2031
03a843f0f447 Ran expandshort
paulson
parents: 1973
diff changeset
    15
by (Simp_tac 1);
10186
499637e8f2c6 *** empty log message ***
nipkow
parents: 5223
diff changeset
    16
by (EVERY[stac (Gamma_mono RS lfp_unfold) 1,
1696
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    17
          stac (Gamma_def RS meta_eq_to_obj_eq RS fun_cong) 1,
2031
03a843f0f447 Ran expandshort
paulson
parents: 1973
diff changeset
    18
          Simp_tac 1,
03a843f0f447 Ran expandshort
paulson
parents: 1973
diff changeset
    19
          IF_UNSOLVED no_tac]);
1481
03f096efa26d Modified datatype com.
nipkow
parents: 1465
diff changeset
    20
qed "C_While_If";
03f096efa26d Modified datatype com.
nipkow
parents: 1465
diff changeset
    21
1696
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    22
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    23
(* Operational Semantics implies Denotational Semantics *)
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    24
5117
7b5efef2ca74 Removed leading !! in goals.
nipkow
parents: 5069
diff changeset
    25
Goal "<c,s> -c-> t ==> (s,t) : C(c)";
1696
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    26
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    27
(* start with rule induction *)
1731
2ad693c6cb13 Updated for new form of induction rules
paulson
parents: 1696
diff changeset
    28
by (etac evalc.induct 1);
4477
b3e5857d8d99 New Auto_tac (by Oheimb), and new syntax (without parens), and expandshort
paulson
parents: 4089
diff changeset
    29
by Auto_tac;
1696
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    30
(* while *)
2031
03a843f0f447 Ran expandshort
paulson
parents: 1973
diff changeset
    31
by (rewtac Gamma_def);
10186
499637e8f2c6 *** empty log message ***
nipkow
parents: 5223
diff changeset
    32
by (stac (rewrite_rule [Gamma_def] (Gamma_mono RS lfp_unfold)) 1);
1973
8c94c9a5be10 Converted proofs to use default clasets.
nipkow
parents: 1731
diff changeset
    33
by (Fast_tac 1);
10186
499637e8f2c6 *** empty log message ***
nipkow
parents: 5223
diff changeset
    34
by (stac (rewrite_rule [Gamma_def] (Gamma_mono RS lfp_unfold)) 1);
1973
8c94c9a5be10 Converted proofs to use default clasets.
nipkow
parents: 1731
diff changeset
    35
by (Fast_tac 1);
1696
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    36
1731
2ad693c6cb13 Updated for new form of induction rules
paulson
parents: 1696
diff changeset
    37
qed "com1";
1696
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    38
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    39
(* Denotational Semantics implies Operational Semantics *)
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    40
5069
3ea049f7979d isatool fixgoal;
wenzelm
parents: 4477
diff changeset
    41
Goal "!s t. (s,t):C(c) --> <c,s> -c-> t";
5183
89f162de39cf Adapted to new datatype package.
berghofe
parents: 5117
diff changeset
    42
by (induct_tac "c" 1);
1973
8c94c9a5be10 Converted proofs to use default clasets.
nipkow
parents: 1731
diff changeset
    43
2031
03a843f0f447 Ran expandshort
paulson
parents: 1973
diff changeset
    44
by (ALLGOALS Full_simp_tac);
03a843f0f447 Ran expandshort
paulson
parents: 1973
diff changeset
    45
by (ALLGOALS (TRY o Fast_tac));
1696
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    46
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    47
(* while *)
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    48
by (strip_tac 1);
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    49
by (etac (Gamma_mono RSN (2,induct)) 1);
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    50
by (rewtac Gamma_def);  
1973
8c94c9a5be10 Converted proofs to use default clasets.
nipkow
parents: 1731
diff changeset
    51
by (Fast_tac 1);
1696
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    52
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    53
qed_spec_mp "com2";
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    54
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    55
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    56
(**** Proof of Equivalence ****)
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    57
5069
3ea049f7979d isatool fixgoal;
wenzelm
parents: 4477
diff changeset
    58
Goal "(s,t) : C(c)  =  (<c,s> -c-> t)";
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3457
diff changeset
    59
by (fast_tac (claset() addEs [com2] addDs [com1]) 1);
1696
e84bff5c519b A completely new version of IMP.
nipkow
parents: 1481
diff changeset
    60
qed "denotational_is_natural";