src/HOL/TLA/Init.thy
author immler@in.tum.de
Thu, 26 Feb 2009 10:13:43 +0100
changeset 30151 629f3a92863e
parent 26304 02fbd0e7954a
child 35108 e384e27c229f
permissions -rw-r--r--
removed global ref dfg_format
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
     1
(*
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
     2
    File:        TLA/Init.thy
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
     3
    ID:          $Id$
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
     4
    Author:      Stephan Merz
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
     5
    Copyright:   1998 University of Munich
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
     6
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
     7
Introduces type of temporal formulas. Defines interface between
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
     8
temporal formulas and its "subformulas" (state predicates and actions).
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
     9
*)
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    10
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    11
theory Init
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    12
imports Action
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    13
begin
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    14
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    15
typedecl behavior
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    16
instance behavior :: world ..
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    17
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    18
types
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    19
  temporal = "behavior form"
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    20
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    21
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    22
consts
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    23
  Initial     :: "('w::world => bool) => temporal"
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    24
  first_world :: "behavior => ('w::world)"
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    25
  st1         :: "behavior => state"
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    26
  st2         :: "behavior => state"
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    27
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    28
syntax
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    29
  TEMP       :: "lift => 'a"                          ("(TEMP _)")
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    30
  "_Init"    :: "lift => lift"                        ("(Init _)"[40] 50)
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    31
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    32
translations
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    33
  "TEMP F"   => "(F::behavior => _)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    34
  "_Init"    == "Initial"
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    35
  "sigma |= Init F"  <= "_Init F sigma"
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    36
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    37
defs
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    38
  Init_def:    "sigma |= Init F  ==  (first_world sigma) |= F"
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    39
  fw_temp_def: "first_world == %sigma. sigma"
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    40
  fw_stp_def:  "first_world == st1"
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    41
  fw_act_def:  "first_world == %sigma. (st1 sigma, st2 sigma)"
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    42
21624
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    43
lemma const_simps [int_rewrite, simp]:
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    44
  "|- (Init #True) = #True"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    45
  "|- (Init #False) = #False"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    46
  by (auto simp: Init_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    47
26304
02fbd0e7954a avoid rebinding of existing facts;
wenzelm
parents: 21624
diff changeset
    48
lemma Init_simps1 [int_rewrite]:
21624
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    49
  "!!F. |- (Init ~F) = (~ Init F)"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    50
  "|- (Init (P --> Q)) = (Init P --> Init Q)"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    51
  "|- (Init (P & Q)) = (Init P & Init Q)"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    52
  "|- (Init (P | Q)) = (Init P | Init Q)"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    53
  "|- (Init (P = Q)) = ((Init P) = (Init Q))"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    54
  "|- (Init (!x. F x)) = (!x. (Init F x))"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    55
  "|- (Init (? x. F x)) = (? x. (Init F x))"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    56
  "|- (Init (?! x. F x)) = (?! x. (Init F x))"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    57
  by (auto simp: Init_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    58
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    59
lemma Init_stp_act: "|- (Init $P) = (Init P)"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    60
  by (auto simp add: Init_def fw_act_def fw_stp_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    61
26304
02fbd0e7954a avoid rebinding of existing facts;
wenzelm
parents: 21624
diff changeset
    62
lemmas Init_simps2 = Init_stp_act [int_rewrite] Init_simps1
21624
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    63
lemmas Init_stp_act_rev = Init_stp_act [int_rewrite, symmetric]
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    64
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    65
lemma Init_temp: "|- (Init F) = F"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    66
  by (auto simp add: Init_def fw_temp_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    67
26304
02fbd0e7954a avoid rebinding of existing facts;
wenzelm
parents: 21624
diff changeset
    68
lemmas Init_simps = Init_temp [int_rewrite] Init_simps2
21624
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    69
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    70
(* Trivial instances of the definitions that avoid introducing lambda expressions. *)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    71
lemma Init_stp: "(sigma |= Init P) = P (st1 sigma)"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    72
  by (simp add: Init_def fw_stp_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    73
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    74
lemma Init_act: "(sigma |= Init A) = A (st1 sigma, st2 sigma)"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    75
  by (simp add: Init_def fw_act_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    76
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    77
lemmas Init_defs = Init_stp Init_act Init_temp [int_use]
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 12338
diff changeset
    78
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents:
diff changeset
    79
end