src/HOLCF/IOA/meta_theory/TL.thy
author wenzelm
Wed, 02 Dec 2009 12:04:07 +0100
changeset 33930 6a973bd43949
parent 28524 644b62cf678f
child 35174 e15040ae75d7
permissions -rw-r--r--
slightly less ambitious settings, to avoid potential out-of-memory problem;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
     1
(*  Title:      HOLCF/IOA/meta_theory/TLS.thy
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
     2
    ID:         $Id$
12218
wenzelm
parents: 12114
diff changeset
     3
    Author:     Olaf Müller
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     4
*)
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
     5
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     6
header {* A General Temporal Logic *}
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
     7
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     8
theory TL
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     9
imports Pred Sequence
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    10
begin
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    11
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    12
defaultsort type
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    13
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    14
types
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    15
  'a temporal = "'a Seq predicate"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    16
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    17
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    18
consts
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    19
suffix     :: "'a Seq => 'a Seq => bool"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    20
tsuffix    :: "'a Seq => 'a Seq => bool"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    21
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    22
validT     :: "'a Seq predicate => bool"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    23
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    24
unlift     ::  "'a lift => 'a"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    25
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    26
Init         ::"'a predicate => 'a temporal"          ("<_>" [0] 1000)
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    27
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    28
Box          ::"'a temporal => 'a temporal"   ("[] (_)" [80] 80)
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    29
Diamond      ::"'a temporal => 'a temporal"   ("<> (_)" [80] 80)
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    30
Next         ::"'a temporal => 'a temporal"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    31
Leadsto      ::"'a temporal => 'a temporal => 'a temporal"  (infixr "~>" 22)
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    32
25131
2c8caac48ade modernized specifications ('definition', 'abbreviation', 'notation');
wenzelm
parents: 19741
diff changeset
    33
notation (xsymbols)
2c8caac48ade modernized specifications ('definition', 'abbreviation', 'notation');
wenzelm
parents: 19741
diff changeset
    34
  Box  ("\<box> (_)" [80] 80) and
2c8caac48ade modernized specifications ('definition', 'abbreviation', 'notation');
wenzelm
parents: 19741
diff changeset
    35
  Diamond  ("\<diamond> (_)" [80] 80) and
2c8caac48ade modernized specifications ('definition', 'abbreviation', 'notation');
wenzelm
parents: 19741
diff changeset
    36
  Leadsto  (infixr "\<leadsto>" 22)
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    37
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    38
defs
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    39
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    40
unlift_def:
28524
644b62cf678f arbitrary is undefined
haftmann
parents: 27208
diff changeset
    41
  "unlift x == (case x of Def y   => y)"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    42
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    43
(* this means that for nil and UU the effect is unpredictable *)
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    44
Init_def:
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    45
  "Init P s ==  (P (unlift (HD$s)))"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    46
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    47
suffix_def:
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    48
  "suffix s2 s == ? s1. (Finite s1  & s = s1 @@ s2)"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    49
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    50
tsuffix_def:
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    51
  "tsuffix s2 s == s2 ~= nil & s2 ~= UU & suffix s2 s"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    52
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    53
Box_def:
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    54
  "([] P) s == ! s2. tsuffix s2 s --> P s2"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    55
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    56
Next_def:
10835
nipkow
parents: 5976
diff changeset
    57
  "(Next P) s == if (TL$s=UU | TL$s=nil) then (P s) else P (TL$s)"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    58
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    59
Diamond_def:
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    60
  "<> P == .~ ([] (.~ P))"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    61
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    62
Leadsto_def:
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    63
   "P ~> Q == ([] (P .--> (<> Q)))"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    64
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    65
validT_def:
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    66
  "validT P == ! s. s~=UU & s~=nil --> (s |= P)"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    67
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    68
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    69
lemma simple: "[] <> (.~ P) = (.~ <> [] P)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    70
apply (rule ext)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    71
apply (simp add: Diamond_def NOT_def Box_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    72
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    73
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    74
lemma Boxnil: "nil |= [] P"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    75
apply (simp add: satisfies_def Box_def tsuffix_def suffix_def nil_is_Conc)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    76
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    77
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    78
lemma Diamondnil: "~(nil |= <> P)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    79
apply (simp add: Diamond_def satisfies_def NOT_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    80
apply (cut_tac Boxnil)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    81
apply (simp add: satisfies_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    82
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    83
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    84
lemma Diamond_def2: "(<> F) s = (? s2. tsuffix s2 s & F s2)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    85
apply (simp add: Diamond_def NOT_def Box_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    86
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    87
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    88
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    89
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    90
subsection "TLA Axiomatization by Merz"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    91
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    92
lemma suffix_refl: "suffix s s"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    93
apply (simp add: suffix_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    94
apply (rule_tac x = "nil" in exI)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    95
apply auto
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    96
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    97
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    98
lemma reflT: "s~=UU & s~=nil --> (s |= [] F .--> F)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    99
apply (simp add: satisfies_def IMPLIES_def Box_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   100
apply (rule impI)+
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   101
apply (erule_tac x = "s" in allE)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   102
apply (simp add: tsuffix_def suffix_refl)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   103
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   104
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   105
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   106
lemma suffix_trans: "[| suffix y x ; suffix z y |]  ==> suffix z x"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   107
apply (simp add: suffix_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   108
apply auto
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   109
apply (rule_tac x = "s1 @@ s1a" in exI)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   110
apply auto
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   111
apply (simp (no_asm) add: Conc_assoc)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   112
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   113
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   114
lemma transT: "s |= [] F .--> [] [] F"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   115
apply (simp (no_asm) add: satisfies_def IMPLIES_def Box_def tsuffix_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   116
apply auto
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   117
apply (drule suffix_trans)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   118
apply assumption
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   119
apply (erule_tac x = "s2a" in allE)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   120
apply auto
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   121
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   122
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   123
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   124
lemma normalT: "s |= [] (F .--> G) .--> [] F .--> [] G"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   125
apply (simp (no_asm) add: satisfies_def IMPLIES_def Box_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   126
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   127
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   128
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   129
subsection "TLA Rules by Lamport"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   130
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   131
lemma STL1a: "validT P ==> validT ([] P)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   132
apply (simp add: validT_def satisfies_def Box_def tsuffix_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   133
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   134
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   135
lemma STL1b: "valid P ==> validT (Init P)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   136
apply (simp add: valid_def validT_def satisfies_def Init_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   137
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   138
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   139
lemma STL1: "valid P ==> validT ([] (Init P))"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   140
apply (rule STL1a)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   141
apply (erule STL1b)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   142
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   143
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   144
(* Note that unlift and HD is not at all used !!! *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   145
lemma STL4: "valid (P .--> Q)  ==> validT ([] (Init P) .--> [] (Init Q))"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   146
apply (simp add: valid_def validT_def satisfies_def IMPLIES_def Box_def Init_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   147
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   148
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   149
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   150
subsection "LTL Axioms by Manna/Pnueli"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   151
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   152
lemma tsuffix_TL [rule_format (no_asm)]: 
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   153
"s~=UU & s~=nil --> tsuffix s2 (TL$s) --> tsuffix s2 s"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   154
apply (unfold tsuffix_def suffix_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   155
apply auto
27208
5fe899199f85 proper context for tactics derived from res_inst_tac;
wenzelm
parents: 25131
diff changeset
   156
apply (tactic {* Seq_case_simp_tac @{context} "s" 1 *})
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   157
apply (rule_tac x = "a>>s1" in exI)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   158
apply auto
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   159
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   160
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   161
lemmas tsuffix_TL2 = conjI [THEN tsuffix_TL]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   162
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   163
declare split_if [split del]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   164
lemma LTL1: 
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   165
   "s~=UU & s~=nil --> (s |= [] F .--> (F .& (Next ([] F))))"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   166
apply (unfold Next_def satisfies_def NOT_def IMPLIES_def AND_def Box_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   167
apply auto
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   168
(* []F .--> F *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   169
apply (erule_tac x = "s" in allE)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   170
apply (simp add: tsuffix_def suffix_refl)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   171
(* []F .--> Next [] F *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   172
apply (simp split add: split_if)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   173
apply auto
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   174
apply (drule tsuffix_TL2)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   175
apply assumption+
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   176
apply auto
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   177
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   178
declare split_if [split]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   179
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   180
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   181
lemma LTL2a: 
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   182
    "s |= .~ (Next F) .--> (Next (.~ F))"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   183
apply (unfold Next_def satisfies_def NOT_def IMPLIES_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   184
apply simp
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   185
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   186
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   187
lemma LTL2b: 
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   188
    "s |= (Next (.~ F)) .--> (.~ (Next F))"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   189
apply (unfold Next_def satisfies_def NOT_def IMPLIES_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   190
apply simp
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   191
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   192
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   193
lemma LTL3: 
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   194
"ex |= (Next (F .--> G)) .--> (Next F) .--> (Next G)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   195
apply (unfold Next_def satisfies_def NOT_def IMPLIES_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   196
apply simp
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   197
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   198
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   199
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   200
lemma ModusPonens: "[| validT (P .--> Q); validT P |] ==> validT Q"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   201
apply (simp add: validT_def satisfies_def IMPLIES_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   202
done
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   203
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   204
end