src/HOL/TLA/Action.thy
author berghofe
Thu, 10 Oct 2002 14:18:01 +0200
changeset 13635 c41e88151b54
parent 11703 6e5de8d4290a
child 17309 c43ed29bd197
permissions -rw-r--r--
Added functions Suml and Sumr which are useful for constructing datatypes involving function types.
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:	 TLA/Action.thy
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     3
    Author:      Stephan Merz
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
     4
    Copyright:   1998 University of Munich
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     5
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     6
    Theory Name: Action
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     7
    Logic Image: HOL
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
Define the action level of TLA as an Isabelle theory.
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    10
*)
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
Action  =  Intensional + Stfun +
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    13
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    14
(** abstract syntax **)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    15
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    16
types
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    17
  'a trfun = "(state * state) => 'a"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    18
  action   = bool trfun
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    19
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    20
instance
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    21
  "*" :: (world, world) world
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    22
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    23
consts
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    24
  (** abstract syntax **)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    25
  before        :: 'a stfun => 'a trfun
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    26
  after         :: 'a stfun => 'a trfun
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    27
  unch          :: 'a stfun => action
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    28
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    29
  SqAct         :: [action, 'a stfun] => action
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    30
  AnAct         :: [action, 'a stfun] => action
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    31
  enabled       :: action => stpred
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    32
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    33
(** concrete syntax **)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    34
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    35
syntax
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    36
  (* Syntax for writing action expressions in arbitrary contexts *)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    37
  "ACT"         :: lift => 'a                      ("(ACT _)")
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    38
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    39
  "_before"     :: lift => lift                    ("($_)"  [100] 99)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    40
  "_after"      :: lift => lift                    ("(_$)"  [100] 99)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    41
  "_unchanged"  :: lift => lift                    ("(unchanged _)" [100] 99)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    42
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    43
  (*** Priming: same as "after" ***)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    44
  "_prime"      :: lift => lift                    ("(_`)" [100] 99)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    45
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    46
  "_SqAct"      :: [lift, lift] => lift            ("([_]'_(_))" [0,1000] 99)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    47
  "_AnAct"      :: [lift, lift] => lift            ("(<_>'_(_))" [0,1000] 99)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    48
  "_Enabled"    :: lift => lift                    ("(Enabled _)" [100] 100)
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    49
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    50
translations
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    51
  "ACT A"            =>   "(A::state*state => _)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    52
  "_before"          ==   "before"
9517
f58863b1406a tuned version by Stephan Merz (unbatchified etc.);
wenzelm
parents: 6255
diff changeset
    53
  "_after"           ==   "after"
f58863b1406a tuned version by Stephan Merz (unbatchified etc.);
wenzelm
parents: 6255
diff changeset
    54
  "_prime"           =>   "_after"
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    55
  "_unchanged"       ==   "unch"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    56
  "_SqAct"           ==   "SqAct"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    57
  "_AnAct"           ==   "AnAct"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    58
  "_Enabled"         ==   "enabled"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    59
  "w |= [A]_v"       <=   "_SqAct A v w"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    60
  "w |= <A>_v"       <=   "_AnAct A v w"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    61
  "s |= Enabled A"   <=   "_Enabled A s"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    62
  "w |= unchanged f" <=   "_unchanged f w"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    63
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    64
rules
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    65
  unl_before    "(ACT $v) (s,t) == v s"
9517
f58863b1406a tuned version by Stephan Merz (unbatchified etc.);
wenzelm
parents: 6255
diff changeset
    66
  unl_after     "(ACT v$) (s,t) == v t"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    67
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    68
  unchanged_def "(s,t) |= unchanged v == (v t = v s)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    69
  square_def    "ACT [A]_v == ACT (A | unchanged v)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    70
  angle_def     "ACT <A>_v == ACT (A & ~ unchanged v)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    71
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    72
  enabled_def   "s |= Enabled A  ==  EX u. (s,u) |= A"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    73
end