src/ZF/UNITY/State.ML
author kleing
Tue, 13 May 2003 08:59:21 +0200
changeset 14024 213dcc39358f
parent 12195 ed2893765a08
child 14046 6616e6c53d48
permissions -rw-r--r--
HOL-Real -> HOL-Complex
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     1
(*  Title:      HOL/UNITY/State.ML
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     2
    ID:         $Id$
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     3
    Author:     Sidi O Ehmety, Computer Laboratory
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     4
    Copyright   2001  University of Cambridge
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     5
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     6
Formalizes UNITY-program states.
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     7
*)
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
     8
AddIffs [some_assume];
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     9
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    10
AddIs var.intrs;
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    11
Addsimps var.intrs;
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    12
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    13
Goalw [st_set_def] "st_set({x:state. P(x)})";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    14
by Auto_tac;
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    15
qed "st_set_Collect";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    16
AddIffs [st_set_Collect];
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    17
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    18
Goalw [st_set_def] "st_set(0)";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    19
by (Simp_tac 1);
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    20
qed "st_set_0";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    21
AddIffs [st_set_0];
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    22
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    23
Goalw [st_set_def] "st_set(state)";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    24
by (Simp_tac 1);
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    25
qed "st_set_state";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    26
AddIffs [st_set_state];
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    27
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    28
(* Union *)
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    29
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    30
Goalw [st_set_def] 
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    31
"st_set(A Un B) <-> st_set(A) & st_set(B)";
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    32
by Auto_tac;
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    33
qed "st_set_Un_iff";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    34
AddIffs [st_set_Un_iff];
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    35
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    36
Goalw [st_set_def] 
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    37
"st_set(Union(S)) <-> (ALL A:S. st_set(A))";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    38
by Auto_tac;
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    39
qed "st_set_Union_iff";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    40
AddIffs [st_set_Union_iff];
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    41
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    42
(* Intersection *)
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    43
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    44
Goalw [st_set_def] 
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    45
"st_set(A) | st_set(B) ==> st_set(A Int B)";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    46
by Auto_tac;
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    47
qed "st_set_Int";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    48
AddSIs [st_set_Int];
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    49
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    50
Goalw [st_set_def, Inter_def]
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    51
   "(S=0) | (EX A:S. st_set(A)) ==> st_set(Inter(S))";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    52
by Auto_tac;
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    53
qed "st_set_Inter";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    54
AddSIs [st_set_Inter];
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    55
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    56
(* Diff *)
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    57
Goalw [st_set_def]
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    58
"st_set(A) ==> st_set(A - B)";
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    59
by Auto_tac;
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    60
qed "st_set_DiffI";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    61
AddSIs [st_set_DiffI];
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    62
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    63
Goal "{s:state. P(s)} Int state = {s:state. P(s)}";
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    64
by Auto_tac;
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    65
qed "Collect_Int_state";
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    66
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    67
Goal "state Int {s:state. P(s)} = {s:state. P(s)}";
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    68
by Auto_tac;
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    69
qed "state_Int_Collect";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    70
AddIffs [Collect_Int_state, state_Int_Collect];
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    71
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    72
(* Introduction and destruction rules for st_set *)
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    73
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    74
Goalw [st_set_def]
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    75
 "A <= state ==> st_set(A)";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    76
by (assume_tac 1);
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    77
qed "st_setI";
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    78
12195
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    79
Goalw [st_set_def]
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    80
 "st_set(A) ==> A<=state";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    81
by (assume_tac 1);
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    82
qed "st_setD";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    83
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    84
Goalw [st_set_def]
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    85
"[| st_set(A); B<=A |] ==> st_set(B)";
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    86
by Auto_tac;
ed2893765a08 *** empty log message ***
ehmety
parents: 11479
diff changeset
    87
qed "st_set_subset";
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    88
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    89
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    90