src/HOL/HOLCF/IOA/Abstraction.thy
author wenzelm
Sat, 27 Feb 2016 21:09:43 +0100
changeset 62441 e5e38e1f2dd4
parent 62195 799a5306e2ed
child 63549 b0d31c7def86
permissions -rw-r--r--
more symbols;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
62008
cbedaddc9351 clarified directory structure;
wenzelm
parents: 62003
diff changeset
     1
(*  Title:      HOL/HOLCF/IOA/Abstraction.thy
40945
b8703f63bfb2 recoded latin1 as utf8;
wenzelm
parents: 40774
diff changeset
     2
    Author:     Olaf Müller
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     3
*)
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
     4
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
     5
section \<open>Abstraction Theory -- tailored for I/O automata\<close>
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
     6
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     7
theory Abstraction
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     8
imports LiveIOA
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     9
begin
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    10
36452
d37c6eed8117 renamed command 'defaultsort' to 'default_sort';
wenzelm
parents: 32149
diff changeset
    11
default_sort type
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    12
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    13
definition cex_abs :: "('s1 \<Rightarrow> 's2) \<Rightarrow> ('a, 's1) execution \<Rightarrow> ('a, 's2) execution"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    14
  where "cex_abs f ex = (f (fst ex), Map (\<lambda>(a, t). (a, f t)) $ (snd ex))"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    15
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    16
text \<open>equals cex_abs on Sequences -- after ex2seq application\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    17
definition cex_absSeq ::
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    18
    "('s1 \<Rightarrow> 's2) \<Rightarrow> ('a option, 's1) transition Seq \<Rightarrow> ('a option, 's2)transition Seq"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    19
  where "cex_absSeq f = (\<lambda>s. Map (\<lambda>(s, a, t). (f s, a, f t)) $ s)"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    20
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    21
definition is_abstraction :: "('s1 \<Rightarrow> 's2) \<Rightarrow> ('a, 's1) ioa \<Rightarrow> ('a, 's2) ioa \<Rightarrow> bool"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    22
  where "is_abstraction f C A \<longleftrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    23
    ((\<forall>s \<in> starts_of C. f s \<in> starts_of A) \<and>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    24
    (\<forall>s t a. reachable C s \<and> s \<midarrow>a\<midarrow>C\<rightarrow> t \<longrightarrow> f s \<midarrow>a\<midarrow>A\<rightarrow> f t))"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    25
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    26
definition weakeningIOA :: "('a, 's2) ioa \<Rightarrow> ('a, 's1) ioa \<Rightarrow> ('s1 \<Rightarrow> 's2) \<Rightarrow> bool"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    27
  where "weakeningIOA A C h \<longleftrightarrow> (\<forall>ex. ex \<in> executions C \<longrightarrow> cex_abs h ex \<in> executions A)"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    28
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    29
definition temp_strengthening :: "('a, 's2) ioa_temp \<Rightarrow> ('a, 's1) ioa_temp \<Rightarrow> ('s1 \<Rightarrow> 's2) \<Rightarrow> bool"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    30
  where "temp_strengthening Q P h \<longleftrightarrow> (\<forall>ex. (cex_abs h ex \<TTurnstile> Q) \<longrightarrow> (ex \<TTurnstile> P))"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    31
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    32
definition temp_weakening :: "('a, 's2) ioa_temp \<Rightarrow> ('a, 's1) ioa_temp \<Rightarrow> ('s1 \<Rightarrow> 's2) \<Rightarrow> bool"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    33
  where "temp_weakening Q P h \<longleftrightarrow> temp_strengthening (\<^bold>\<not> Q) (\<^bold>\<not> P) h"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    34
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    35
definition state_strengthening :: "('a, 's2) step_pred \<Rightarrow> ('a, 's1) step_pred \<Rightarrow> ('s1 \<Rightarrow> 's2) \<Rightarrow> bool"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    36
  where "state_strengthening Q P h \<longleftrightarrow> (\<forall>s t a. Q (h s, a, h t) \<longrightarrow> P (s, a, t))"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    37
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    38
definition state_weakening :: "('a, 's2) step_pred \<Rightarrow> ('a, 's1) step_pred \<Rightarrow> ('s1 \<Rightarrow> 's2) \<Rightarrow> bool"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    39
  where "state_weakening Q P h \<longleftrightarrow> state_strengthening (\<^bold>\<not> Q) (\<^bold>\<not> P) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    40
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    41
definition is_live_abstraction :: "('s1 \<Rightarrow> 's2) \<Rightarrow> ('a, 's1) live_ioa \<Rightarrow> ('a, 's2) live_ioa \<Rightarrow> bool"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    42
  where "is_live_abstraction h CL AM \<longleftrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    43
    is_abstraction h (fst CL) (fst AM) \<and> temp_weakening (snd AM) (snd CL) h"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    44
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    45
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    46
(* thm about ex2seq which is not provable by induction as ex2seq is not continous *)
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
    47
axiomatization where
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    48
  ex2seq_abs_cex: "ex2seq (cex_abs h ex) = cex_absSeq h (ex2seq ex)"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    49
5976
44290b71a85f tuning to assimiliate it with PhD;
mueller
parents: 4816
diff changeset
    50
(* analog to the proved thm strength_Box - proof skipped as trivial *)
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
    51
axiomatization where
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    52
  weak_Box: "temp_weakening P Q h \<Longrightarrow> temp_weakening (\<box>P) (\<box>Q) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    53
5976
44290b71a85f tuning to assimiliate it with PhD;
mueller
parents: 4816
diff changeset
    54
(* analog to the proved thm strength_Next - proof skipped as trivial *)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    55
axiomatization where
62441
e5e38e1f2dd4 more symbols;
wenzelm
parents: 62195
diff changeset
    56
  weak_Next: "temp_weakening P Q h \<Longrightarrow> temp_weakening (\<circle>P) (\<circle>Q) h"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents:
diff changeset
    57
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    58
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    59
subsection \<open>\<open>cex_abs\<close>\<close>
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
    60
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    61
lemma cex_abs_UU [simp]: "cex_abs f (s, UU) = (f s, UU)"
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    62
  by (simp add: cex_abs_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    63
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    64
lemma cex_abs_nil [simp]: "cex_abs f (s,nil) = (f s, nil)"
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    65
  by (simp add: cex_abs_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    66
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    67
lemma cex_abs_cons [simp]:
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    68
  "cex_abs f (s, (a, t) \<leadsto> ex) = (f s, (a, f t) \<leadsto> (snd (cex_abs f (t, ex))))"
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    69
  by (simp add: cex_abs_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    70
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
    71
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    72
subsection \<open>Lemmas\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    73
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    74
lemma temp_weakening_def2: "temp_weakening Q P h \<longleftrightarrow> (\<forall>ex. (ex \<TTurnstile> P) \<longrightarrow> (cex_abs h ex \<TTurnstile> Q))"
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    75
  apply (simp add: temp_weakening_def temp_strengthening_def NOT_def temp_sat_def satisfies_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    76
  apply auto
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    77
  done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    78
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    79
lemma state_weakening_def2: "state_weakening Q P h \<longleftrightarrow> (\<forall>s t a. P (s, a, t) \<longrightarrow> Q (h s, a, h t))"
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    80
  apply (simp add: state_weakening_def state_strengthening_def NOT_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    81
  apply auto
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
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    85
subsection \<open>Abstraction Rules for Properties\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    86
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
    87
lemma exec_frag_abstraction [rule_format]:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    88
  "is_abstraction h C A \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    89
    \<forall>s. reachable C s \<and> is_exec_frag C (s, xs) \<longrightarrow> is_exec_frag A (cex_abs h (s, xs))"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    90
  apply (simp add: cex_abs_def)
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
    91
  apply (pair_induct xs simp: is_exec_frag_def)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    92
  txt \<open>main case\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    93
  apply (auto dest: reachable.reachable_n simp add: is_abstraction_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    94
  done
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    95
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    96
lemma abs_is_weakening: "is_abstraction h C A \<Longrightarrow> weakeningIOA A C h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    97
  apply (simp add: weakeningIOA_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    98
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    99
  apply (simp add: executions_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   100
  txt \<open>start state\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   101
  apply (rule conjI)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   102
  apply (simp add: is_abstraction_def cex_abs_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   103
  txt \<open>is-execution-fragment\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   104
  apply (erule exec_frag_abstraction)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   105
  apply (simp add: reachable.reachable_0)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   106
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   107
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   108
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   109
lemma AbsRuleT1:
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   110
  "is_abstraction h C A \<Longrightarrow> validIOA A Q \<Longrightarrow> temp_strengthening Q P h \<Longrightarrow> validIOA C P"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   111
  apply (drule abs_is_weakening)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   112
  apply (simp add: weakeningIOA_def validIOA_def temp_strengthening_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   113
  apply (auto simp add: split_paired_all)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   114
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   115
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   116
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   117
lemma AbsRuleT2:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   118
  "is_live_abstraction h (C, L) (A, M) \<Longrightarrow> validLIOA (A, M) Q \<Longrightarrow> temp_strengthening Q P h
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   119
    \<Longrightarrow> validLIOA (C, L) P"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   120
  apply (unfold is_live_abstraction_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   121
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   122
  apply (drule abs_is_weakening)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   123
  apply (simp add: weakeningIOA_def temp_weakening_def2 validLIOA_def validIOA_def temp_strengthening_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   124
  apply (auto simp add: split_paired_all)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   125
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   126
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   127
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   128
lemma AbsRuleTImprove:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   129
  "is_live_abstraction h (C, L) (A, M) \<Longrightarrow> validLIOA (A,M) (H1 \<^bold>\<longrightarrow> Q) \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   130
    temp_strengthening Q P h \<Longrightarrow> temp_weakening H1 H2 h \<Longrightarrow> validLIOA (C, L) H2 \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   131
    validLIOA (C, L) P"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   132
  apply (unfold is_live_abstraction_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   133
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   134
  apply (drule abs_is_weakening)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   135
  apply (simp add: weakeningIOA_def temp_weakening_def2 validLIOA_def validIOA_def temp_strengthening_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   136
  apply (auto simp add: split_paired_all)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   137
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   138
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   139
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   140
subsection \<open>Correctness of safe abstraction\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   141
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   142
lemma abstraction_is_ref_map: "is_abstraction h C A \<Longrightarrow> is_ref_map h C A"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   143
  apply (auto simp: is_abstraction_def is_ref_map_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   144
  apply (rule_tac x = "(a,h t) \<leadsto>nil" in exI)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   145
  apply (simp add: move_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   146
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   147
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   148
lemma abs_safety: "inp C = inp A \<Longrightarrow> out C = out A \<Longrightarrow> is_abstraction h C A \<Longrightarrow> C =<| A"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   149
  apply (simp add: ioa_implements_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   150
  apply (rule trace_inclusion)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   151
  apply (simp (no_asm) add: externals_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   152
  apply (auto)[1]
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   153
  apply (erule abstraction_is_ref_map)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   154
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   155
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   156
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   157
subsection \<open>Correctness of life abstraction\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   158
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   159
text \<open>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   160
  Reduces to \<open>Filter (Map fst x) = Filter (Map fst (Map (\<lambda>(a, t). (a, x)) x)\<close>,
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   161
  that is to special Map Lemma.
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   162
\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   163
lemma traces_coincide_abs:
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   164
  "ext C = ext A \<Longrightarrow> mk_trace C $ xs = mk_trace A $ (snd (cex_abs f (s, xs)))"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   165
  apply (unfold cex_abs_def mk_trace_def filter_act_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   166
  apply simp
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   167
  apply (pair_induct xs)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   168
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   169
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   170
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   171
text \<open>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   172
  Does not work with \<open>abstraction_is_ref_map\<close> as proof of \<open>abs_safety\<close>, because
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   173
  \<open>is_live_abstraction\<close> includes \<open>temp_strengthening\<close> which is necessarily based
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   174
  on \<open>cex_abs\<close> and not on \<open>corresp_ex\<close>. Thus, the proof is redone in a more specific
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   175
  way for \<open>cex_abs\<close>.
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   176
\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   177
lemma abs_liveness:
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   178
  "inp C = inp A \<Longrightarrow> out C = out A \<Longrightarrow> is_live_abstraction h (C, M) (A, L) \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   179
    live_implements (C, M) (A, L)"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   180
  apply (simp add: is_live_abstraction_def live_implements_def livetraces_def liveexecutions_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   181
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   182
  apply (rule_tac x = "cex_abs h ex" in exI)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   183
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   184
  text \<open>Traces coincide\<close>
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   185
  apply (pair ex)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   186
  apply (rule traces_coincide_abs)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   187
  apply (simp (no_asm) add: externals_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   188
  apply (auto)[1]
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   189
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   190
  text \<open>\<open>cex_abs\<close> is execution\<close>
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   191
  apply (pair ex)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   192
  apply (simp add: executions_def)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   193
  text \<open>start state\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   194
  apply (rule conjI)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   195
  apply (simp add: is_abstraction_def cex_abs_def)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   196
  text \<open>\<open>is_execution_fragment\<close>\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   197
  apply (erule exec_frag_abstraction)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   198
  apply (simp add: reachable.reachable_0)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   199
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   200
  text \<open>Liveness\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   201
  apply (simp add: temp_weakening_def2)
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   202
   apply (pair ex)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   203
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   204
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   205
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   206
subsection \<open>Abstraction Rules for Automata\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   207
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   208
lemma AbsRuleA1:
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   209
  "inp C = inp A \<Longrightarrow> out C = out A \<Longrightarrow> inp Q = inp P \<Longrightarrow> out Q = out P \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   210
    is_abstraction h1 C A \<Longrightarrow> A =<| Q \<Longrightarrow> is_abstraction h2 Q P \<Longrightarrow> C =<| P"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   211
  apply (drule abs_safety)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   212
  apply assumption+
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   213
  apply (drule abs_safety)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   214
  apply assumption+
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   215
  apply (erule implements_trans)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   216
  apply (erule implements_trans)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   217
  apply assumption
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   218
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   219
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   220
lemma AbsRuleA2:
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   221
  "inp C = inp A \<Longrightarrow> out C = out A \<Longrightarrow> inp Q = inp P \<Longrightarrow> out Q = out P \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   222
    is_live_abstraction h1 (C, LC) (A, LA) \<Longrightarrow> live_implements (A, LA) (Q, LQ) \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   223
    is_live_abstraction h2 (Q, LQ) (P, LP) \<Longrightarrow> live_implements (C, LC) (P, LP)"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   224
  apply (drule abs_liveness)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   225
  apply assumption+
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   226
  apply (drule abs_liveness)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   227
  apply assumption+
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   228
  apply (erule live_implements_trans)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   229
  apply (erule live_implements_trans)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   230
  apply assumption
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   231
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   232
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   233
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   234
declare split_paired_All [simp del]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   235
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   236
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   237
subsection \<open>Localizing Temporal Strengthenings and Weakenings\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   238
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   239
lemma strength_AND:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   240
  "temp_strengthening P1 Q1 h \<Longrightarrow> temp_strengthening P2 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   241
    temp_strengthening (P1 \<^bold>\<and> P2) (Q1 \<^bold>\<and> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   242
  by (auto simp: temp_strengthening_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   243
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   244
lemma strength_OR:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   245
  "temp_strengthening P1 Q1 h \<Longrightarrow> temp_strengthening P2 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   246
    temp_strengthening (P1 \<^bold>\<or> P2) (Q1 \<^bold>\<or> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   247
  by (auto simp: temp_strengthening_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   248
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   249
lemma strength_NOT: "temp_weakening P Q h \<Longrightarrow> temp_strengthening (\<^bold>\<not> P) (\<^bold>\<not> Q) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   250
  by (auto simp: temp_weakening_def2 temp_strengthening_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   251
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   252
lemma strength_IMPLIES:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   253
  "temp_weakening P1 Q1 h \<Longrightarrow> temp_strengthening P2 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   254
    temp_strengthening (P1 \<^bold>\<longrightarrow> P2) (Q1 \<^bold>\<longrightarrow> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   255
  by (simp add: temp_weakening_def2 temp_strengthening_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   256
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   257
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   258
lemma weak_AND:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   259
  "temp_weakening P1 Q1 h \<Longrightarrow> temp_weakening P2 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   260
    temp_weakening (P1 \<^bold>\<and> P2) (Q1 \<^bold>\<and> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   261
  by (simp add: temp_weakening_def2)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   262
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   263
lemma weak_OR:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   264
  "temp_weakening P1 Q1 h \<Longrightarrow> temp_weakening P2 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   265
    temp_weakening (P1 \<^bold>\<or> P2) (Q1 \<^bold>\<or> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   266
  by (simp add: temp_weakening_def2)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   267
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   268
lemma weak_NOT:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   269
  "temp_strengthening P Q h \<Longrightarrow> temp_weakening (\<^bold>\<not> P) (\<^bold>\<not> Q) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   270
  by (auto simp add: temp_weakening_def2 temp_strengthening_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   271
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   272
lemma weak_IMPLIES:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   273
  "temp_strengthening P1 Q1 h \<Longrightarrow> temp_weakening P2 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   274
    temp_weakening (P1 \<^bold>\<longrightarrow> P2) (Q1 \<^bold>\<longrightarrow> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   275
  by (simp add: temp_weakening_def2 temp_strengthening_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   276
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   277
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   278
subsubsection \<open>Box\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   279
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   280
(* FIXME: should be same as nil_is_Conc2 when all nils are turned to right side! *)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   281
lemma UU_is_Conc: "(UU = x @@ y) = (((x::'a Seq)= UU) | (x = nil \<and> y = UU))"
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   282
  by (Seq_case_simp x)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   283
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   284
lemma ex2seqConc [rule_format]:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   285
  "Finite s1 \<longrightarrow> (\<forall>ex. (s \<noteq> nil \<and> s \<noteq> UU \<and> ex2seq ex = s1 @@ s) \<longrightarrow> (\<exists>ex'. s = ex2seq ex'))"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   286
  apply (rule impI)
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   287
  apply Seq_Finite_induct
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   288
  apply blast
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   289
  text \<open>main case\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   290
  apply clarify
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   291
  apply (pair ex)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   292
  apply (Seq_case_simp x2)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   293
  text \<open>\<open>UU\<close> case\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   294
  apply (simp add: nil_is_Conc)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   295
  text \<open>\<open>nil\<close> case\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   296
  apply (simp add: nil_is_Conc)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   297
  text \<open>cons case\<close>
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   298
  apply (pair aa)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   299
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   300
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   301
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   302
(* important property of ex2seq: can be shiftet, as defined "pointwise" *)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   303
lemma ex2seq_tsuffix: "tsuffix s (ex2seq ex) \<Longrightarrow> \<exists>ex'. s = (ex2seq ex')"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   304
  apply (unfold tsuffix_def suffix_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   305
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   306
  apply (drule ex2seqConc)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   307
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   308
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   309
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   310
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   311
(*important property of cex_absSeq: As it is a 1to1 correspondence,
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   312
  properties carry over *)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   313
lemma cex_absSeq_tsuffix: "tsuffix s t \<Longrightarrow> tsuffix (cex_absSeq h s) (cex_absSeq h t)"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   314
  apply (unfold tsuffix_def suffix_def cex_absSeq_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   315
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   316
  apply (simp add: Mapnil)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   317
  apply (simp add: MapUU)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   318
  apply (rule_tac x = "Map (% (s,a,t) . (h s,a, h t))$s1" in exI)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   319
  apply (simp add: Map2Finite MapConc)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   320
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   321
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   322
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   323
lemma strength_Box: "temp_strengthening P Q h \<Longrightarrow> temp_strengthening (\<box>P) (\<box>Q) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   324
  apply (unfold temp_strengthening_def state_strengthening_def temp_sat_def satisfies_def Box_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   325
  apply clarify
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   326
  apply (frule ex2seq_tsuffix)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   327
  apply clarify
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   328
  apply (drule_tac h = "h" in cex_absSeq_tsuffix)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   329
  apply (simp add: ex2seq_abs_cex)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   330
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   331
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   332
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   333
subsubsection \<open>Init\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   334
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   335
lemma strength_Init:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   336
  "state_strengthening P Q h \<Longrightarrow> temp_strengthening (Init P) (Init Q) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   337
  apply (unfold temp_strengthening_def state_strengthening_def
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   338
    temp_sat_def satisfies_def Init_def unlift_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   339
  apply auto
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   340
  apply (pair ex)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   341
  apply (Seq_case_simp x2)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   342
  apply (pair a)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   343
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   344
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   345
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   346
subsubsection \<open>Next\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   347
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   348
lemma TL_ex2seq_UU: "TL $ (ex2seq (cex_abs h ex)) = UU \<longleftrightarrow> TL $ (ex2seq ex) = UU"
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   349
  apply (pair ex)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   350
  apply (Seq_case_simp x2)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   351
  apply (pair a)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   352
  apply (Seq_case_simp s)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   353
  apply (pair a)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   354
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   355
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   356
lemma TL_ex2seq_nil: "TL $ (ex2seq (cex_abs h ex)) = nil \<longleftrightarrow> TL $ (ex2seq ex) = nil"
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   357
  apply (pair ex)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   358
  apply (Seq_case_simp x2)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   359
  apply (pair a)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   360
  apply (Seq_case_simp s)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   361
  apply (pair a)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   362
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   363
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   364
(*important property of cex_absSeq: As it is a 1to1 correspondence,
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   365
  properties carry over*)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   366
lemma cex_absSeq_TL: "cex_absSeq h (TL $ s) = TL $ (cex_absSeq h s)"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   367
  by (simp add: MapTL cex_absSeq_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   368
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   369
(* important property of ex2seq: can be shiftet, as defined "pointwise" *)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   370
lemma TLex2seq: "snd ex \<noteq> UU \<Longrightarrow> snd ex \<noteq> nil \<Longrightarrow> \<exists>ex'. TL$(ex2seq ex) = ex2seq ex'"
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   371
  apply (pair ex)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   372
  apply (Seq_case_simp x2)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   373
  apply (pair a)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   374
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   375
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   376
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   377
lemma ex2seqnilTL: "TL $ (ex2seq ex) \<noteq> nil \<longleftrightarrow> snd ex \<noteq> nil \<and> snd ex \<noteq> UU"
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   378
  apply (pair ex)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   379
  apply (Seq_case_simp x2)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   380
  apply (pair a)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   381
  apply (Seq_case_simp s)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   382
  apply (pair a)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   383
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   384
62441
e5e38e1f2dd4 more symbols;
wenzelm
parents: 62195
diff changeset
   385
lemma strength_Next: "temp_strengthening P Q h \<Longrightarrow> temp_strengthening (\<circle>P) (\<circle>Q) h"
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   386
  apply (unfold temp_strengthening_def state_strengthening_def temp_sat_def satisfies_def Next_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   387
  apply simp
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   388
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   389
  apply (simp add: TL_ex2seq_nil TL_ex2seq_UU)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   390
  apply (simp add: TL_ex2seq_nil TL_ex2seq_UU)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   391
  apply (simp add: TL_ex2seq_nil TL_ex2seq_UU)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   392
  apply (simp add: TL_ex2seq_nil TL_ex2seq_UU)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   393
  text \<open>cons case\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   394
  apply (simp add: TL_ex2seq_nil TL_ex2seq_UU ex2seq_abs_cex cex_absSeq_TL [symmetric] ex2seqnilTL)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   395
  apply (erule conjE)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   396
  apply (drule TLex2seq)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   397
  apply assumption
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   398
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   399
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   400
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   401
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   402
text \<open>Localizing Temporal Weakenings - 2\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   403
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   404
lemma weak_Init: "state_weakening P Q h \<Longrightarrow> temp_weakening (Init P) (Init Q) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   405
  apply (simp add: temp_weakening_def2 state_weakening_def2
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   406
    temp_sat_def satisfies_def Init_def unlift_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   407
  apply auto
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   408
  apply (pair ex)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   409
  apply (Seq_case_simp x2)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   410
  apply (pair a)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   411
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   412
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   413
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   414
text \<open>Localizing Temproal Strengthenings - 3\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   415
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   416
lemma strength_Diamond: "temp_strengthening P Q h \<Longrightarrow> temp_strengthening (\<diamond>P) (\<diamond>Q) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   417
  apply (unfold Diamond_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   418
  apply (rule strength_NOT)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   419
  apply (rule weak_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   420
  apply (erule weak_NOT)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   421
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   422
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   423
lemma strength_Leadsto:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   424
  "temp_weakening P1 P2 h \<Longrightarrow> temp_strengthening Q1 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   425
    temp_strengthening (P1 \<leadsto> Q1) (P2 \<leadsto> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   426
  apply (unfold Leadsto_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   427
  apply (rule strength_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   428
  apply (erule strength_IMPLIES)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   429
  apply (erule strength_Diamond)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   430
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   431
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   432
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   433
text \<open>Localizing Temporal Weakenings - 3\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   434
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   435
lemma weak_Diamond: "temp_weakening P Q h \<Longrightarrow> temp_weakening (\<diamond>P) (\<diamond>Q) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   436
  apply (unfold Diamond_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   437
  apply (rule weak_NOT)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   438
  apply (rule strength_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   439
  apply (erule strength_NOT)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   440
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   441
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   442
lemma weak_Leadsto:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   443
  "temp_strengthening P1 P2 h \<Longrightarrow> temp_weakening Q1 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   444
    temp_weakening (P1 \<leadsto> Q1) (P2 \<leadsto> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   445
  apply (unfold Leadsto_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   446
  apply (rule weak_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   447
  apply (erule weak_IMPLIES)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   448
  apply (erule weak_Diamond)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   449
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   450
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   451
lemma weak_WF:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   452
  "(\<And>s. Enabled A acts (h s) \<Longrightarrow> Enabled C acts s)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   453
    \<Longrightarrow> temp_weakening (WF A acts) (WF C acts) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   454
  apply (unfold WF_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   455
  apply (rule weak_IMPLIES)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   456
  apply (rule strength_Diamond)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   457
  apply (rule strength_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   458
  apply (rule strength_Init)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   459
  apply (rule_tac [2] weak_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   460
  apply (rule_tac [2] weak_Diamond)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   461
  apply (rule_tac [2] weak_Init)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   462
  apply (auto simp add: state_weakening_def state_strengthening_def
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   463
    xt2_def plift_def option_lift_def NOT_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   464
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   465
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   466
lemma weak_SF:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   467
  "(\<And>s. Enabled A acts (h s) \<Longrightarrow> Enabled C acts s)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   468
    \<Longrightarrow> temp_weakening (SF A acts) (SF C acts) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   469
  apply (unfold SF_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   470
  apply (rule weak_IMPLIES)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   471
  apply (rule strength_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   472
  apply (rule strength_Diamond)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   473
  apply (rule strength_Init)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   474
  apply (rule_tac [2] weak_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   475
  apply (rule_tac [2] weak_Diamond)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   476
  apply (rule_tac [2] weak_Init)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   477
  apply (auto simp add: state_weakening_def state_strengthening_def
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   478
    xt2_def plift_def option_lift_def NOT_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   479
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   480
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   481
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   482
lemmas weak_strength_lemmas =
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   483
  weak_OR weak_AND weak_NOT weak_IMPLIES weak_Box weak_Next weak_Init
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   484
  weak_Diamond weak_Leadsto strength_OR strength_AND strength_NOT
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   485
  strength_IMPLIES strength_Box strength_Next strength_Init
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   486
  strength_Diamond strength_Leadsto weak_WF weak_SF
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   487
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   488
ML \<open>
30607
c3d1590debd8 eliminated global SIMPSET, CLASET etc. -- refer to explicit context;
wenzelm
parents: 27208
diff changeset
   489
fun abstraction_tac ctxt =
42793
88bee9f6eec7 proper Proof.context for classical tactics;
wenzelm
parents: 42151
diff changeset
   490
  SELECT_GOAL (auto_tac
88bee9f6eec7 proper Proof.context for classical tactics;
wenzelm
parents: 42151
diff changeset
   491
    (ctxt addSIs @{thms weak_strength_lemmas}
51717
9e7d1c139569 simplifier uses proper Proof.context instead of historic type simpset;
wenzelm
parents: 42814
diff changeset
   492
      addsimps [@{thm state_strengthening_def}, @{thm state_weakening_def}]))
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   493
\<close>
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   494
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   495
method_setup abstraction = \<open>Scan.succeed (SIMPLE_METHOD' o abstraction_tac)\<close>
30607
c3d1590debd8 eliminated global SIMPSET, CLASET etc. -- refer to explicit context;
wenzelm
parents: 27208
diff changeset
   496
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   497
end