src/HOL/HOLCF/IOA/Abstraction.thy
author wenzelm
Sat, 16 Jan 2016 23:24:50 +0100
changeset 62192 bdaa0eb0fc74
parent 62008 cbedaddc9351
child 62193 0826f6b6ba09
permissions -rw-r--r--
misc tuning and modernization;
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
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    56
  weak_Next: "temp_weakening P Q h \<Longrightarrow> temp_weakening (Next P) (Next 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)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    91
  apply (tactic \<open>pair_induct_tac @{context} "xs" [@{thm is_exec_frag_def}] 1\<close>)
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
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   117
(* FIXME: to TLS.thy *)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   118
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   119
lemma IMPLIES_temp_sat [simp]: "(ex \<TTurnstile> P \<^bold>\<longrightarrow> Q) \<longleftrightarrow> ((ex \<TTurnstile> P) \<longrightarrow> (ex \<TTurnstile> Q))"
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   120
  by (simp add: IMPLIES_def temp_sat_def satisfies_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   121
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   122
lemma AND_temp_sat [simp]: "(ex \<TTurnstile> P \<^bold>\<and> Q) \<longleftrightarrow> ((ex \<TTurnstile> P) \<and> (ex \<TTurnstile> Q))"
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   123
  by (simp add: AND_def temp_sat_def satisfies_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   124
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   125
lemma OR_temp_sat [simp]: "(ex \<TTurnstile> P \<^bold>\<or> Q) \<longleftrightarrow> ((ex \<TTurnstile> P) \<or> (ex \<TTurnstile> Q))"
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   126
  by (simp add: OR_def temp_sat_def satisfies_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   127
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   128
lemma NOT_temp_sat [simp]: "(ex \<TTurnstile> \<^bold>\<not> P) \<longleftrightarrow> (\<not> (ex \<TTurnstile> P))"
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   129
  by (simp add: NOT_def temp_sat_def satisfies_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   130
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   131
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   132
lemma AbsRuleT2:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   133
  "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
   134
    \<Longrightarrow> validLIOA (C, L) P"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   135
  apply (unfold is_live_abstraction_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   136
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   137
  apply (drule abs_is_weakening)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   138
  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
   139
  apply (auto simp add: split_paired_all)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   140
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   141
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   142
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   143
lemma AbsRuleTImprove:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   144
  "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
   145
    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
   146
    validLIOA (C, L) P"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   147
  apply (unfold is_live_abstraction_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   148
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   149
  apply (drule abs_is_weakening)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   150
  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
   151
  apply (auto simp add: split_paired_all)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   152
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   153
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   154
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   155
subsection \<open>Correctness of safe abstraction\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   156
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   157
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
   158
  apply (auto simp: is_abstraction_def is_ref_map_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   159
  apply (rule_tac x = "(a,h t) \<leadsto>nil" in exI)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   160
  apply (simp add: move_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   161
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   162
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   163
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
   164
  apply (simp add: ioa_implements_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   165
  apply (rule trace_inclusion)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   166
  apply (simp (no_asm) add: externals_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   167
  apply (auto)[1]
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   168
  apply (erule abstraction_is_ref_map)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   169
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   170
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   171
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   172
subsection \<open>Correctness of life abstraction\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   173
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   174
text \<open>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   175
  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
   176
  that is to special Map Lemma.
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   177
\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   178
lemma traces_coincide_abs:
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   179
  "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
   180
  apply (unfold cex_abs_def mk_trace_def filter_act_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   181
  apply simp
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   182
  apply (tactic \<open>pair_induct_tac @{context} "xs" [] 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   183
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   184
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   185
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   186
text \<open>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   187
  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
   188
  \<open>is_live_abstraction\<close> includes \<open>temp_strengthening\<close> which is necessarily based
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   189
  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
   190
  way for \<open>cex_abs\<close>.
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   191
\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   192
lemma abs_liveness:
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   193
  "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
   194
    live_implements (C, M) (A, L)"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   195
  apply (simp add: is_live_abstraction_def live_implements_def livetraces_def liveexecutions_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   196
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   197
  apply (rule_tac x = "cex_abs h ex" in exI)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   198
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   199
  text \<open>Traces coincide\<close>
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   200
  apply (tactic \<open>pair_tac @{context} "ex" 1\<close>)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   201
  apply (rule traces_coincide_abs)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   202
  apply (simp (no_asm) add: externals_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   203
  apply (auto)[1]
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   204
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   205
  text \<open>\<open>cex_abs\<close> is execution\<close>
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   206
  apply (tactic \<open>pair_tac @{context} "ex" 1\<close>)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   207
  apply (simp add: executions_def)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   208
  text \<open>start state\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   209
  apply (rule conjI)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   210
  apply (simp add: is_abstraction_def cex_abs_def)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   211
  text \<open>\<open>is_execution_fragment\<close>\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   212
  apply (erule exec_frag_abstraction)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   213
  apply (simp add: reachable.reachable_0)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   214
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   215
  text \<open>Liveness\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   216
  apply (simp add: temp_weakening_def2)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   217
   apply (tactic \<open>pair_tac @{context} "ex" 1\<close>)
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
(* FIXME: to Traces.thy *)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   221
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   222
lemma implements_trans: "A =<| B \<Longrightarrow> B =<| C \<Longrightarrow> A =<| C"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   223
  by (auto simp add: ioa_implements_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   224
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   225
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   226
subsection \<open>Abstraction Rules for Automata\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   227
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   228
lemma AbsRuleA1:
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   229
  "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
   230
    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
   231
  apply (drule abs_safety)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   232
  apply assumption+
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   233
  apply (drule abs_safety)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   234
  apply assumption+
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   235
  apply (erule implements_trans)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   236
  apply (erule implements_trans)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   237
  apply assumption
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   238
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   239
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   240
lemma AbsRuleA2:
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   241
  "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
   242
    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
   243
    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
   244
  apply (drule abs_liveness)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   245
  apply assumption+
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   246
  apply (drule abs_liveness)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   247
  apply assumption+
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   248
  apply (erule live_implements_trans)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   249
  apply (erule live_implements_trans)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   250
  apply assumption
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   251
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   252
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   253
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   254
declare split_paired_All [simp del]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   255
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   256
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   257
subsection \<open>Localizing Temporal Strengthenings and Weakenings\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   258
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   259
lemma strength_AND:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   260
  "temp_strengthening P1 Q1 h \<Longrightarrow> temp_strengthening P2 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   261
    temp_strengthening (P1 \<^bold>\<and> P2) (Q1 \<^bold>\<and> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   262
  by (auto simp: temp_strengthening_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   263
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   264
lemma strength_OR:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   265
  "temp_strengthening P1 Q1 h \<Longrightarrow> temp_strengthening P2 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   266
    temp_strengthening (P1 \<^bold>\<or> P2) (Q1 \<^bold>\<or> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   267
  by (auto simp: temp_strengthening_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   268
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   269
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
   270
  by (auto simp: 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 strength_IMPLIES:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   273
  "temp_weakening P1 Q1 h \<Longrightarrow> temp_strengthening P2 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   274
    temp_strengthening (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
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   278
lemma weak_AND:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   279
  "temp_weakening P1 Q1 h \<Longrightarrow> temp_weakening P2 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   280
    temp_weakening (P1 \<^bold>\<and> P2) (Q1 \<^bold>\<and> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   281
  by (simp add: temp_weakening_def2)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   282
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   283
lemma weak_OR:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   284
  "temp_weakening P1 Q1 h \<Longrightarrow> temp_weakening P2 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   285
    temp_weakening (P1 \<^bold>\<or> P2) (Q1 \<^bold>\<or> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   286
  by (simp add: temp_weakening_def2)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   287
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   288
lemma weak_NOT:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   289
  "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
   290
  by (auto simp add: temp_weakening_def2 temp_strengthening_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   291
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   292
lemma weak_IMPLIES:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   293
  "temp_strengthening P1 Q1 h \<Longrightarrow> temp_weakening P2 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   294
    temp_weakening (P1 \<^bold>\<longrightarrow> P2) (Q1 \<^bold>\<longrightarrow> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   295
  by (simp add: temp_weakening_def2 temp_strengthening_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   296
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   297
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   298
subsubsection \<open>Box\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   299
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   300
(* 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
   301
lemma UU_is_Conc: "(UU = x @@ y) = (((x::'a Seq)= UU) | (x = nil \<and> y = UU))"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   302
  by (tactic \<open>Seq_case_simp_tac @{context} "x" 1\<close>)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   303
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   304
lemma ex2seqConc [rule_format]:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   305
  "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
   306
  apply (rule impI)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   307
  apply (tactic \<open>Seq_Finite_induct_tac @{context} 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   308
  apply blast
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   309
  text \<open>main case\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   310
  apply clarify
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   311
  apply (tactic \<open>pair_tac @{context} "ex" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   312
  apply (tactic \<open>Seq_case_simp_tac @{context} "x2" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   313
  text \<open>\<open>UU\<close> case\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   314
  apply (simp add: nil_is_Conc)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   315
  text \<open>\<open>nil\<close> case\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   316
  apply (simp add: nil_is_Conc)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   317
  text \<open>cons case\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   318
  apply (tactic \<open>pair_tac @{context} "aa" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   319
  apply auto
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
(* important property of ex2seq: can be shiftet, as defined "pointwise" *)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   323
lemma ex2seq_tsuffix: "tsuffix s (ex2seq ex) \<Longrightarrow> \<exists>ex'. s = (ex2seq ex')"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   324
  apply (unfold tsuffix_def suffix_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   325
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   326
  apply (drule ex2seqConc)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   327
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   328
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   329
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   330
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   331
(* FIXME: to Sequence.thy *)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   332
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   333
lemma Mapnil: "Map f $ s = nil \<longleftrightarrow> s = nil"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   334
  by (tactic \<open>Seq_case_simp_tac @{context} "s" 1\<close>)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   335
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   336
lemma MapUU: "Map f $ s = UU \<longleftrightarrow> s = UU"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   337
  by (tactic \<open>Seq_case_simp_tac @{context} "s" 1\<close>)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   338
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   339
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   340
(*important property of cex_absSeq: As it is a 1to1 correspondence,
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   341
  properties carry over *)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   342
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
   343
  apply (unfold tsuffix_def suffix_def cex_absSeq_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   344
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   345
  apply (simp add: Mapnil)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   346
  apply (simp add: MapUU)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   347
  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
   348
  apply (simp add: Map2Finite MapConc)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   349
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   350
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   351
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   352
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
   353
  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
   354
  apply clarify
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   355
  apply (frule ex2seq_tsuffix)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   356
  apply clarify
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   357
  apply (drule_tac h = "h" in cex_absSeq_tsuffix)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   358
  apply (simp add: ex2seq_abs_cex)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   359
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   360
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   361
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   362
subsubsection \<open>Init\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   363
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   364
lemma strength_Init:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   365
  "state_strengthening P Q h \<Longrightarrow> temp_strengthening (Init P) (Init Q) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   366
  apply (unfold temp_strengthening_def state_strengthening_def
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   367
    temp_sat_def satisfies_def Init_def unlift_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   368
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   369
  apply (tactic \<open>pair_tac @{context} "ex" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   370
  apply (tactic \<open>Seq_case_simp_tac @{context} "x2" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   371
  apply (tactic \<open>pair_tac @{context} "a" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   372
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   373
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   374
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   375
subsubsection \<open>Next\<close>
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 TL_ex2seq_UU: "TL $ (ex2seq (cex_abs h ex)) = UU \<longleftrightarrow> TL $ (ex2seq ex) = UU"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   378
  apply (tactic \<open>pair_tac @{context} "ex" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   379
  apply (tactic \<open>Seq_case_simp_tac @{context} "x2" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   380
  apply (tactic \<open>pair_tac @{context} "a" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   381
  apply (tactic \<open>Seq_case_simp_tac @{context} "s" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   382
  apply (tactic \<open>pair_tac @{context} "a" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   383
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   384
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   385
lemma TL_ex2seq_nil: "TL $ (ex2seq (cex_abs h ex)) = nil \<longleftrightarrow> TL $ (ex2seq ex) = nil"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   386
  apply (tactic \<open>pair_tac @{context} "ex" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   387
  apply (tactic \<open>Seq_case_simp_tac @{context} "x2" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   388
  apply (tactic \<open>pair_tac @{context} "a" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   389
  apply (tactic \<open>Seq_case_simp_tac @{context} "s" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   390
  apply (tactic \<open>pair_tac @{context} "a" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   391
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   392
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   393
(* FIXME: put to Sequence Lemmas *)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   394
lemma MapTL: "Map f $ (TL $ s) = TL $ (Map f $ s)"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   395
  by (tactic \<open>Seq_induct_tac @{context} "s" [] 1\<close>)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   396
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   397
(*important property of cex_absSeq: As it is a 1to1 correspondence,
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   398
  properties carry over*)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   399
lemma cex_absSeq_TL: "cex_absSeq h (TL $ s) = TL $ (cex_absSeq h s)"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   400
  by (simp add: MapTL cex_absSeq_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   401
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   402
(* important property of ex2seq: can be shiftet, as defined "pointwise" *)
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   403
lemma TLex2seq: "snd ex \<noteq> UU \<Longrightarrow> snd ex \<noteq> nil \<Longrightarrow> \<exists>ex'. TL$(ex2seq ex) = ex2seq ex'"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   404
  apply (tactic \<open>pair_tac @{context} "ex" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   405
  apply (tactic \<open>Seq_case_simp_tac @{context} "x2" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   406
  apply (tactic \<open>pair_tac @{context} "a" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   407
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   408
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   409
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   410
lemma ex2seqnilTL: "TL $ (ex2seq ex) \<noteq> nil \<longleftrightarrow> snd ex \<noteq> nil \<and> snd ex \<noteq> UU"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   411
  apply (tactic \<open>pair_tac @{context} "ex" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   412
  apply (tactic \<open>Seq_case_simp_tac @{context} "x2" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   413
  apply (tactic \<open>pair_tac @{context} "a" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   414
  apply (tactic \<open>Seq_case_simp_tac @{context} "s" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   415
  apply (tactic \<open>pair_tac @{context} "a" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   416
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   417
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   418
lemma strength_Next: "temp_strengthening P Q h \<Longrightarrow> temp_strengthening (Next P) (Next Q) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   419
  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
   420
  apply simp
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   421
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   422
  apply (simp add: TL_ex2seq_nil TL_ex2seq_UU)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   423
  apply (simp add: TL_ex2seq_nil TL_ex2seq_UU)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   424
  apply (simp add: TL_ex2seq_nil TL_ex2seq_UU)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   425
  apply (simp add: TL_ex2seq_nil TL_ex2seq_UU)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   426
  text \<open>cons case\<close>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   427
  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
   428
  apply (erule conjE)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   429
  apply (drule TLex2seq)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   430
  apply assumption
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   431
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   432
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   433
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   434
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   435
text \<open>Localizing Temporal Weakenings - 2\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   436
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   437
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
   438
  apply (simp add: temp_weakening_def2 state_weakening_def2
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   439
    temp_sat_def satisfies_def Init_def unlift_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   440
  apply auto
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   441
  apply (tactic \<open>pair_tac @{context} "ex" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   442
  apply (tactic \<open>Seq_case_simp_tac @{context} "x2" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   443
  apply (tactic \<open>pair_tac @{context} "a" 1\<close>)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   444
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   445
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   446
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   447
text \<open>Localizing Temproal Strengthenings - 3\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   448
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   449
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
   450
  apply (unfold Diamond_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   451
  apply (rule strength_NOT)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   452
  apply (rule weak_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   453
  apply (erule weak_NOT)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   454
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   455
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   456
lemma strength_Leadsto:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   457
  "temp_weakening P1 P2 h \<Longrightarrow> temp_strengthening Q1 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   458
    temp_strengthening (P1 \<leadsto> Q1) (P2 \<leadsto> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   459
  apply (unfold Leadsto_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   460
  apply (rule strength_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   461
  apply (erule strength_IMPLIES)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   462
  apply (erule strength_Diamond)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   463
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   464
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   465
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   466
text \<open>Localizing Temporal Weakenings - 3\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   467
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   468
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
   469
  apply (unfold Diamond_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   470
  apply (rule weak_NOT)
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 (erule strength_NOT)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   473
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   474
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   475
lemma weak_Leadsto:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   476
  "temp_strengthening P1 P2 h \<Longrightarrow> temp_weakening Q1 Q2 h \<Longrightarrow>
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   477
    temp_weakening (P1 \<leadsto> Q1) (P2 \<leadsto> Q2) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   478
  apply (unfold Leadsto_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   479
  apply (rule weak_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   480
  apply (erule weak_IMPLIES)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   481
  apply (erule weak_Diamond)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   482
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   483
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   484
lemma weak_WF:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   485
  "(\<And>s. Enabled A acts (h s) \<Longrightarrow> Enabled C acts s)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   486
    \<Longrightarrow> temp_weakening (WF A acts) (WF C acts) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   487
  apply (unfold WF_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   488
  apply (rule weak_IMPLIES)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   489
  apply (rule strength_Diamond)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   490
  apply (rule strength_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   491
  apply (rule strength_Init)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   492
  apply (rule_tac [2] weak_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   493
  apply (rule_tac [2] weak_Diamond)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   494
  apply (rule_tac [2] weak_Init)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   495
  apply (auto simp add: state_weakening_def state_strengthening_def
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   496
    xt2_def plift_def option_lift_def NOT_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   497
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   498
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 23560
diff changeset
   499
lemma weak_SF:
62192
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   500
  "(\<And>s. Enabled A acts (h s) \<Longrightarrow> Enabled C acts s)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   501
    \<Longrightarrow> temp_weakening (SF A acts) (SF C acts) h"
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   502
  apply (unfold SF_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   503
  apply (rule weak_IMPLIES)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   504
  apply (rule strength_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   505
  apply (rule strength_Diamond)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   506
  apply (rule strength_Init)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   507
  apply (rule_tac [2] weak_Box)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   508
  apply (rule_tac [2] weak_Diamond)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   509
  apply (rule_tac [2] weak_Init)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   510
  apply (auto simp add: state_weakening_def state_strengthening_def
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   511
    xt2_def plift_def option_lift_def NOT_def)
bdaa0eb0fc74 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   512
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   513
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   514
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   515
lemmas weak_strength_lemmas =
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   516
  weak_OR weak_AND weak_NOT weak_IMPLIES weak_Box weak_Next weak_Init
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   517
  weak_Diamond weak_Leadsto strength_OR strength_AND strength_NOT
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   518
  strength_IMPLIES strength_Box strength_Next strength_Init
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   519
  strength_Diamond strength_Leadsto weak_WF weak_SF
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   520
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   521
ML \<open>
30607
c3d1590debd8 eliminated global SIMPSET, CLASET etc. -- refer to explicit context;
wenzelm
parents: 27208
diff changeset
   522
fun abstraction_tac ctxt =
42793
88bee9f6eec7 proper Proof.context for classical tactics;
wenzelm
parents: 42151
diff changeset
   523
  SELECT_GOAL (auto_tac
88bee9f6eec7 proper Proof.context for classical tactics;
wenzelm
parents: 42151
diff changeset
   524
    (ctxt addSIs @{thms weak_strength_lemmas}
51717
9e7d1c139569 simplifier uses proper Proof.context instead of historic type simpset;
wenzelm
parents: 42814
diff changeset
   525
      addsimps [@{thm state_strengthening_def}, @{thm state_weakening_def}]))
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   526
\<close>
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   527
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   528
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
   529
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   530
end