src/HOL/TLA/Memory/ProcedureInterface.ML
author wenzelm
Mon, 29 Nov 1999 15:52:49 +0100
changeset 8039 a901bafe4578
parent 6255 db63752140c7
child 9517 f58863b1406a
permissions -rw-r--r--
Goal: tuned pris;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     1
(* 
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     2
    File:        ProcedureInterface.ML
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     3
    Author:      Stephan Merz
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     4
    Copyright:   1997 University of Munich
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     5
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
     6
    Procedure interface (theorems and proofs)
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     7
*)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     8
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     9
Addsimps [slice_def];
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    10
val mem_css = (claset(), simpset());
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    11
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    12
(* ---------------------------------------------------------------------------- *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    13
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    14
val Procedure_defs = [caller_def, rtrner_def, Calling_def, 
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    15
                      Call_def, Return_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    16
		      PLegalCaller_def, LegalCaller_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    17
		      PLegalReturner_def, LegalReturner_def];
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    18
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    19
(* sample theorems (not used in the proof):
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    20
   1. calls and returns are mutually exclusive
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    21
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    22
qed_goal "CallNotReturn" ProcedureInterface.thy
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    23
     "|- Call ch p v --> ~ Return ch p w"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    24
  (fn prems => [ auto_tac (temp_css addsimps2 [Call_def,Return_def]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    25
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    26
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    27
  2. enabledness of calls and returns
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    28
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    29
qed_goal "Call_enabled" ProcedureInterface.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    30
   "!!p. basevars ((caller ch)!p) ==> |- ~ Calling ch p --> Enabled (Call ch p v)"
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
    31
   (fn _ => [action_simp_tac (simpset() addsimps [caller_def, Call_def]) 
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    32
                             [] [base_enabled,Pair_inject] 1
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    33
            ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    34
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    35
qed_goal "Call_enabled_rew" ProcedureInterface.thy
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    36
   "basevars ((caller ch)!p) ==> |- Enabled (Call ch p v) = (~Calling ch p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    37
   (fn [prem] => [auto_tac (mem_css addsimps2 [Call_def]),
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    38
                  force_tac (mem_css addsimps2 [enabled_def]) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    39
                  enabled_tac prem 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    40
                  action_simp_tac (simpset() addsimps [caller_def]) [] [Pair_inject] 1
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    41
            ]);
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    42
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    43
qed_goal "Return_enabled" ProcedureInterface.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    44
   "!!p. basevars ((rtrner ch)!p) ==> |- Calling ch p --> Enabled (Return ch p v)"
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
    45
   (fn _ => [action_simp_tac (simpset() addsimps [rtrner_def, Return_def]) 
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    46
                             [] [base_enabled,Pair_inject] 1
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    47
            ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    48
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    49
*)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    50
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    51
(* Calls and returns change their subchannel *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    52
qed_goal "Call_changed" ProcedureInterface.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    53
   "|- Call ch p v --> <Call ch p v>_((caller ch)!p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    54
   (fn _ => [ auto_tac (mem_css addsimps2 [angle_def,Call_def,caller_def,Calling_def]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    55
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    56
qed_goal "Return_changed" ProcedureInterface.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    57
   "|- Return ch p v --> <Return ch p v>_((rtrner ch)!p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    58
   (fn _ => [ auto_tac (mem_css addsimps2 [angle_def,Return_def,rtrner_def,Calling_def]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    59
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    60