packages feed

scyther-proof 0.8.0.0 → 0.10.0.0

raw patch · 56 files changed

+6828/−5465 lines, 56 filesdep +utf8-stringdep ~arraydep ~containersdep ~process

Dependencies added: utf8-string

Dependency ranges changed: array, containers, process, tagsoup, time

Files

CHANGES view
@@ -1,3 +1,8 @@+* 0.10.0.0+    - upgraded dependency on Isabelle to Isabelle2014+    - add support for explicit matching and non-matching steps in protocols+    - new protocol example for optimistic fair exchange+ * 0.8.0.0     - upgraded dependency on Isabelle to Isabelle-2013-2 
README.md view
@@ -1,10 +1,12 @@-README: The scyther-proof security protocol verification tool-=============================================================+The scyther-proof security protocol verification tool+===================================================== -Authors: Simon Meier <iridcode@gmail.com>-Creation Date: 2011-05-13-Last Updated:  2014-01-31 by Andreas Lochbihler <andreas.lochbihler@inf.ethz.ch>+![master branch build-status](https://travis-ci.org/meiersi/scyther-proof.svg?branch=master) +- Authors: Simon Meier <iridcode@gmail.com>, Andreas Lochbihler <andreas.lochbihler@inf.ethz.ch>+- Creation Date: 2011-05-13+- Last Updated:  2015-02-20 by Andreas Lochbihler+ 1. Introduction =============== @@ -55,55 +57,16 @@ 2.2 Installing the Isabelle/HOL theories ---------------------------------------- -Download and install full Isabelle2013-2 according to the installation+Download and install full Isabelle2014 according to the installation instructions at -    http://isabelle.in.tum.de/website-Isabelle2013-2/+    http://isabelle.in.tum.de/website-Isabelle2014/  The first time you call `scyther-proof` with the `--isabelle` flag it will build the logic image of the Isabelle/HOL theories formalizing the security protocol verification theory underlying `scyther-proof`. -If you wish to use ProofGeneral to interactively process the theory files-using our extensions to Isabelle's ISAR proof language, use one of the-following two variants. This is needed in order to make the new ISAR keywords-`role`, `protocol`, `sources`, and `prefix_close` available in the Emacs-frontend. If you are using the Isabelle/jEdit Prover IDE, the keywords are-automatically registered. --Variant a: Brute Force-------------------------Copy the Emacs keywords file provided with the ESPL distribution at--    $SCYTHER_PROOF_HOME/data/isabelle/src/isar-keywords.el--to your local Isabelle configuration in--    $ISABELLE_HOME_USER/etc--This will replace any custom keyword file that you have already-installed in that way. You can find out about $ISABELLE_HOME_USER-by running--    isabelle getenv ISABELLE_HOME_USER---Variant b: Elegance----------------------A more elegant way is to copy the keywords file provided with our-distribution to--    $ISABELLE_HOME_USER/etc/isar-keywords-ESPL.el--and start Isabelle using the -k switch as follows.--    isabelle emacs -k ESPL <your-theory-file.thy>--- 3. Usage ======== @@ -147,20 +110,6 @@    Note that in many case the easiest way to start with constructing    machine-checked proofs interactively is to use a proof script generated by    scyther-proof.--   Using ProofGeneral-   --------------------   In the directory output by scyther-proof, load the Tutorial on interactive-   proof construction using the following commands--        cd <theory-dir-output-by-scytherproof>/src-        isabelle emacs Tutorial.thy--    or if you've chosen the elegant variant for the keywords file--        isabelle emacs -k ESPL Tutorial.thy-     Using the Isabelle/jEdit Prover IDE    -----------------------------------
+ data/examples/classic/ASW_optimistic_contract.spthy view
@@ -0,0 +1,166 @@+theory ASW_optimistic_contract+begin++section{* Optimistic fair exchange following Asokan, Shoup, Waidner *}++text{*++We model the contract signing example from ++  N. Asokan, V. Shoup, and M. Waidner. Asynchronous protocols for optimistic+  fair exchange. In Proceedings of the IEEE Symposium on Research in Security+  and Privacy, pages 86--99. IEEE Computer Society Press, 1998. ++Since role scripts are linear, we model the non-deterministic choice to+abort as separate roles that share the same prefix with the non-aborting role.+The trusted party is therefore split into Ta and Tr which run only the+abort protocol or only the resolve protocol.++*}++protocol Contract+{+  00abort.   Ta ->    : {'bind', $T, n}sk($T)+  00resolve. Tr ->    : {'bind', $T, n}sk($T)++  0regular.  A  <-    : {'bind', $T, n}sk($T)+  1regular.  A  ->    : {$A, $B, $T, n, 'text', h(sA)}sk($A)+                -> B  : {$A, $B, $T, n, 'text', cA}sk($A)+  2regular.     <- B  : {{$A, $B, $T, n, 'text', cA}sk($A), h(sB)}sk($B)+             A  <-    : {{$A, $B, $T, n, 'text', h(sA)}sk($A), cB}sk($B)+  3regular.  A  -> B  : sA+  4regular.        B  : cA -> h(sA)+  5regular.  A  <- B  : sB+  6regular.  A        : cB -> h(sB)++  0abort.    Aa <-    : {'bind', $T, n}sk($T)+  1abort.    Aa ->    : {$A, $B, $T, n, 'text', h(sA)}sk($A)+  2abort.    Aa ->    : {'aborted', {$A, $B, $T, n, 'text', h(sA)}sk($A)}sk($A)+                -> Ta : {'aborted', {A, B, $T, n, 'text', cA}sk(A)}sk(A)+  3abort.       <- Ta : {'aborted', {'aborted', {A, B, $T, n, 'text', cA}sk(A)}sk(A)}sk($T)+             Aa <-    : {'aborted', {'aborted', {$A, $B, $T, n, 'text', h(sA)}sk($A)}sk($A)}sk($T)++  resolve1.     -> Tr : {A, B, $T, n, 'text', cA}sk(A), {{A, B, $T, n, 'text', cA}sk(A), cB}sk(B)+  resolve2.     <- Tr : {{A, B, $T, n, 'text', cA}sk(A), {{A, B, $T, n, 'text', cA}sk(A), cB}sk(B)}sk($T)++  verify.       -> V  : {A, B, $T, n, 'text', h(sA)}sk(A), sA,+                        {{A, B, $T, n, 'text', h(sA)}sk(A), h(sB)}sk(B), sB+  verifyr.      -> Vr : {{A, B, $T, n, 'text', cA}sk(A), {{A, B, $T, n, 'text', cA}sk(A), cB}sk(B)}sk($T)+}++subsection{* Security Properties *}++property (of Contract) Contract_typing:+  "n@A   :: Known(A_0regular) | n@Ta | n@Tr+   n@B   :: Known(B_1regular) | n@Ta | n@Tr+   cA@B  :: Known(B_1regular) | h(sA@A) | h(sA@Aa)+   cB@A  :: Known(A_2regular) | h(sB@B)+   sA@B  :: Known(B_3regular)+   sB@A  :: Known(A_5regular)++   n@Aa  :: Known(Aa_0abort) | n@Ta | n@Tr+   A@Ta  :: Known(Ta_2abort) | Agent+   B@Ta  :: Known(Ta_2abort) | Agent+   cA@Ta :: Known(Ta_2abort) | h(sA@A) | h(sA@Aa)++   A@Tr  :: Known(Tr_resolve1) | Agent+   B@Tr  :: Known(Tr_resolve1) | Agent+   cA@Tr :: Known(Tr_resolve1) | h(sA@A) | h(sA@Aa)+   cB@Tr :: Known(Tr_resolve1) | h(sB@B)++   A@V   :: Known(V_verify) | Agent+   B@V   :: Known(V_verify) | Agent+   n@V   :: Known(V_verify) | n@Ta | n@Tr+   sA@V  :: Known(V_verify) | sA@A+   sB@V  :: Known(V_verify) | sB@B++   A@Vr  :: Known(Vr_verifyr) | Agent+   B@Vr  :: Known(Vr_verifyr) | Agent+   n@Vr  :: Known(Vr_verifyr) | n@Ta | n@Tr+   cA@Vr :: Known(Vr_verifyr) | h(sA@A) | h(sA@Aa)+   cB@Vr :: Known(Vr_verifyr) | h(sB@B)+  "++properties (of Contract)+  regular_agree_A: iagree(A_6regular[A,B,T,n,sA,sB] -> B_5regular[A,B,T,n,sA,sB], {A,B})+  regular_agree_B: niagree(B_4regular[A,B,T,n,sA] -> A_3regular[A,B,T,n,sA], {A,B})++property (of Contract) regular_verified:+  premises+    "role(0) = V"+    "step(0, V_verify)"+    "uncompromised(A#0)"+    "uncompromised(B#0)"+  imply threads 1, 2 such that+    "role(1) = A &+     step(1, A_3regular) &++     role(2) = B &+     step(2, B_5regular) &++     A#0 = A#1 & A#0 = A#2 &+     B#0 = B#1 & B#0 = B#2 &+     T#0 = T#1 & T#0 = T#2 &++     n#0 = n#1 & n#0 = n#2 &+     sA#0 = sA#1 &+     sB#0 = sB#2+    "++property (of Contract) resolve_verified:+  premises+    "role(0) = Vr"+    "step(0, Vr_verifyr)"+    "uncompromised(A#0)"+    "uncompromised(B#0)"+    "uncompromised(T#0)"+  imply threads 1, 2 such that+    "( role(1) = A &+       step(1, A_1regular) &+       A#0 = A#1 &+       B#0 = B#1 &+       T#0 = T#1 &+       n#0 = n#1 &+       cA#0 = h(sA#1)+       |+       role(1) = Aa &+       step(1, Aa_1abort) &+       A#0 = A#1 &+       B#0 = B#1 &+       T#0 = T#1 &+       n#0 = n#1 &+       cA#0 = h(sA#1)+     ) &++     role(2) = B &+     step(2, B_2regular) &+     A#0 = A#2 &+     B#0 = B#2 &+     T#0 = T#2 &+     n#0 = n#2 &+     cB#0 = h(sB#2)+    "++property (of Contract) regular_verified_not_aborted:+  premises+    "role(0) = V"+    "step(0, V_verify)"+    "uncompromised(A#0)"+    "uncompromised(T#0)"+    // cA#0 should be replaced with a wildcard+    "knows({'aborted', {'aborted', {A#0, B#0, T#0, n#0, 'text', cA#0}sk(A#0)}sk(A#0)}sk(T#0))"+  imply+    "False"++property (of Contract) resolve_verified_not_aborted:+  premises+    "role(0) = Vr"+    "step(0, Vr_verifyr)"+    "uncompromised(A#0)"+    "uncompromised(T#0)"+    // cA#0 should be replaced with a wildcard+    "knows({'aborted', {'aborted', {A#0, B#0, T#0, n#0, 'text', cA#0}sk(A#0)}sk(A#0)}sk(T#0))"+  imply+    "False"++end
+ data/examples/classic/BrandsChaum.spthy view
@@ -0,0 +1,45 @@+theory BrandsChaum+begin++section{* Distance bounding following Brands, Chaum *}++text{*++We model the distance bounding protocol following Brands and Chaum++  Stefan Brands and David Chaum. Distance-Bounding Protocols. EUROCRYPT '93     +  Lecture Notes in Computer Science 765, pp. 344--359, Springer, 1993.++Since the Dolev-Yao model has no notion of time, we can only show that+the challenge-response steps have to happen in the right order.++*}++protocol BrandsChaum+{+  1. P ->   : P, {m}k+       -> V : P, c+  2. P <- V : a+  3. P ->   : h(a, m)+       -> V : b+  4. P ->   : m, k, {a, h(a, m)}sk(P)+       -> V : m, k, {a, b}sk(P)+  5.      V : c -> {m}k+  6.      V : b -> h(a, m)+}++property (of BrandsChaum) prover_recent:+  premises+    "role(0) = V"+    "step(0, V_6)"+    "uncompromised(P#0)"+  injectively imply a thread 1 such that+    "role(1) = P &+    P#0 = P#1 &+    m#0 = m#1 &+    k#0 = k#1 &+    a#0 = a#1 &+    St(1, P_1) < St(0, V_2) < St(1, P_3) < St(0, V_3)+    "++end
+ data/examples/classic/BrandsChaum_iterated.spthy view
@@ -0,0 +1,44 @@+theory BrandsChaum_iterated+begin++text{*++The same model of the Brands Chaum distance bounding protocol as in BrandsChaum.spthy+except that now two challenges are exchanged.++*}++protocol BrandsChaum+{+  1.  P ->   : P, {m1, m2}k+        -> V : P, c+  21. P <- V : a1+  31. P ->   : h(a1, m1)+        -> V : b1+  22. P <- V : a2+  32. P ->   : h(a2, m2)+        -> V : b2+  4.  P ->   : m1, m2, m3, k, {a1, h(a1, m1), a2, h(a2, m2)}sk(P)+        -> V : m1, m2, m3, k, {a1, b1, a2, b2}sk(P)+  5.       V : c -> {m1, m2}k+  61.      V : b1 -> h(a1, m1)+  62.      V : b2 -> h(a2, m2)+}++property (of BrandsChaum) prover_recent:+  premises+    "role(0) = V"+    "step(0, V_62)"+    "uncompromised(P#0)"+  injectively imply a thread 1 such that+    "role(1) = P &+    P#0 = P#1 &+    m1#0 = m1#1 & m2#0 = m2#1 &+    k#0 = k#1 &+    a1#0 = a1#1 & a2#0 = a2#1 &+    St(1, P_1) <+      St(0, V_21) < St(1, P_31) < St(0, V_31) <+      St(0, V_22) < St(1, P_32) < St(0, V_32)+    "++end
data/examples/iso9798/isabelle-parallel-proofs/isoiec-9798-2-bdkey_cert_auto.thy view
@@ -731,1075 +731,1217 @@   have "(t,r,s) : approx isoiec_9798_2_bdkey_composed_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_bdkey_composed_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_1_bdkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_1_bdkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_bdkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_1_bdkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_1_bdkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_bdkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_1_bdkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_1_bdkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_bdkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_1_bdkey_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_2_1_bdkey_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_bdkey_B_1_TNA+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_1_enc_1'', s(MV ''TNA'' tid0),                s(AV ''B'' tid0), s(MV ''Text1'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_1_bdkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_1_bdkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_bdkey_B_1_Text1+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_1_enc_1'', s(MV ''TNA'' tid0),                s(AV ''B'' tid0), s(MV ''Text1'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_1_bdkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_1_bdkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_bdkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_bdkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_bdkey_A_1_RB t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_A_1_RB t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_A_1_RB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_bdkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_bdkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_bdkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_bdkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_B_2_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_2_enc_2'', LN ''RB'' tid0, s(AV ''B'' tid0),                s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_2_bdkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_bdkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_bdkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_bdkey_A_2_TNB t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_A_2_TNB t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_A_2_TNB+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_2'', s(MV ''TNB'' tid0),                s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_bdkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_A_2_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_2'', s(MV ''TNB'' tid0),                s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_bdkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_bdkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_bdkey_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_B_1_TNA+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_1'', s(MV ''TNA'' tid0),                s(AV ''B'' tid0), s(MV ''Text1'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_bdkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_B_1_Text1+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_1'', s(MV ''TNA'' tid0),                s(AV ''B'' tid0), s(MV ''Text1'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_bdkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_bdkey_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_bdkey_B_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_B_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_B_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_A_1_RB t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_1_RB t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_1_RB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_3_Text4+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_4_enc_2'', s(MV ''RB'' tid0), LN ''RA'' tid0,                s(MV ''Text4'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(MV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_4_bdkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_B_2_RA t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_B_2_RA t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_B_2_RA+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_4_enc_1'', s(MV ''RA'' tid0), LN ''RB'' tid0,                s(AV ''B'' tid0), s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_4_bdkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_B_2_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_4_enc_1'', s(MV ''RA'' tid0), LN ''RB'' tid0,                s(AV ''B'' tid0), s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_4_bdkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_B_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_B_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_B_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_B_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_B_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_B_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_A_2_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_2_Kab t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_2_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_1'', LN ''TVPa'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_2_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_1'', LN ''TVPa'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_A_2_TokenPA_for_B t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_2_TokenPA_for_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_2_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_A_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_A_text_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_text_3_Text6 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_text_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_A_4_TNb t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_4_TNb t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_4_TNb+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_4'', s(MV ''TNb'' tid0),                s(AV ''A'' tid0), s(MV ''Text7'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_A_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_4_Text7+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_4'', s(MV ''TNb'' tid0),                s(AV ''A'' tid0), s(MV ''Text7'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_A_4_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_4_Text8 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_4_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_B_3_A t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_A t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_B_3_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_Kab t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_B_3_P t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_P t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_P+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_B_3_TNa t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_TNa t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_TNa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_3'', s(MV ''TNa'' tid0),                s(AV ''B'' tid0), s(MV ''Text5'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_B_3_TNp t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_TNp t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_TNp+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_B_3_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_B_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_Text5+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_3'', s(MV ''TNa'' tid0),                s(AV ''B'' tid0), s(MV ''Text5'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_B_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_Text6 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_B_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_B_text_4_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_text_4_Text8 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_text_4_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_1_A t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_1_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_1_TVPa t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_1_TVPa t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_1_TVPa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_3_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_3_Kab t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''B'' tid0),                s(MV ''Text4'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_3_Text4+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''B'' tid0),                s(MV ''Text4'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_3_TokenPA_for_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_3_TokenPA_for_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_3_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_text_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_text_4_Text6 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_text_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_5_Text8 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_5_Text8+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_5'', s(MV ''Rb'' tid0), LN ''Rpa'' tid0,                s(MV ''Text8'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_A_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_5_Text9 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_B_4_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_4_Kab t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_4_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_B_4_P t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_4_P t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_4_P+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_B_4_Rpa t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_4_Rpa t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_4_Rpa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_4'', s(MV ''Rpa'' tid0), LN ''Rb'' tid0,                s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_B_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_4_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_4_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_B_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_4_Text6 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_4_Text6+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_4'', s(MV ''Rpa'' tid0), LN ''Rb'' tid0,                s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_B_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_B_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_B_text_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_text_5_Text9 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_text_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_2_A t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_2_A t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_2_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_2_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_2_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_2_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_2_Ra t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_2_Ra t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_2_Rb t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_text_3_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_text_3_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_text_3_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_Kab t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_2_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_2_1'', LN ''TVPa'' tid0,                s(MV ''Kab'' tid0), s(AV ''B'' tid0), s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_2_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_2_1'', LN ''TVPa'' tid0,                s(MV ''Kab'' tid0), s(AV ''B'' tid0), s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_TokenPA_for_B t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_TokenPA_for_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_2_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_text_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_text_3_Text6 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_text_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_4_TNb t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_4_TNb t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_4_TNb+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_4'', s(MV ''TNb'' tid0),                s(AV ''A'' tid0), s(MV ''Text7'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_4_Text7+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_4'', s(MV ''TNb'' tid0),                s(AV ''A'' tid0), s(MV ''Text7'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_4_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_4_Text8 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_4_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_A t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_A t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Kab t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_P t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_P t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_P+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_TNa t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_TNa t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_TNa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_3'', s(MV ''TNa'' tid0),                s(AV ''B'' tid0), s(MV ''Text5'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_TNp t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_TNp t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_TNp+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_Text5+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_3'', s(MV ''TNa'' tid0),                s(AV ''B'' tid0), s(MV ''Text5'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Text6 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_text_4_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_text_4_Text8 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_text_4_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_A t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_TVPa t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_TVPa t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_1_TVPa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_Kab t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(MV ''B'' tid0), s(MV ''Text4'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_3_Text4+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(MV ''B'' tid0), s(MV ''Text4'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_TokenPA_for_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_TokenPA_for_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_3_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_text_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_text_4_Text6 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_text_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_5_Text8 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_5_Text8+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_5'', s(MV ''Rb'' tid0),                LN ''Rpa'' tid0, s(MV ''Text8'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_5_Text9 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Kab t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_4_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_P t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_P t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_4_P+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Rpa t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Rpa t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_4_Rpa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_4'', s(MV ''Rpa'' tid0),                LN ''Rb'' tid0, s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_4_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Text6 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_4_Text6+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_4'', s(MV ''Rpa'' tid0),                LN ''Rb'' tid0, s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_text_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_text_5_Text9 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_text_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_A t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_A t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_2_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_2_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_Ra t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_Ra t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_Rb t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_bdkey_composed_typing_state t r s" by unfold_locales auto@@ -1880,11 +2022,11 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''A'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_1_bdkey_A_1_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_2_bdkey_B_injective_agreement:@@ -1919,11 +2061,11 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_2_bdkey_A_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1960,11 +2102,11 @@                        |}                        ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_3_bdkey_B_2_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_3_bdkey_B_non_injective_agreement:@@ -1990,11 +2132,11 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''A'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_3_bdkey_A_1_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_4_bdkey_A_injective_agreement:@@ -2029,7 +2171,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(MV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_4_bdkey_B_3_enc tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''A'' tid1) )@@ -2043,11 +2185,11 @@                                |}                                ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid1) ) ) ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_2_4_bdkey_A_2_enc tid2) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         next           case swapped note_unified facts = this facts           thus ?thesis proof(sources! "@@ -2056,13 +2198,13 @@                                |}                                ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''A'' tid1) ) ) ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_2_4_bdkey_A_2_enc tid2) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2108,11 +2250,11 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_4_bdkey_A_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2136,11 +2278,11 @@   shows "False" using facts proof(sources! " LN ''Kab'' tid0 ")   case isoiec_9798_2_5_bdkey_P_2_Kab note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)+  thus ?thesis by (auto dest!: ltk_secrecy) next   case isoiec_9798_2_5_bdkey_P_2_Kab_1 note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)-qed (insert facts, fastforce+)?+  thus ?thesis by (auto dest!: ltk_secrecy)+qed (safe?, simp_all?, insert facts, (fastforce+)?)  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_5_bdkey_A_secret_Kab:   assumes facts:@@ -2160,11 +2302,11 @@                        |}                        ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_bdkey_P_2_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: isoiec_9798_2_5_bdkey_P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_5_bdkey_B_secret_Kab:@@ -2185,11 +2327,11 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_bdkey_P_2_enc_1 tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: isoiec_9798_2_5_bdkey_P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_5_bdkey_A_injective_agreement_B:@@ -2228,7 +2370,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_5_bdkey_P_2_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2268,11 +2410,11 @@               next                 case (isoiec_9798_2_5_bdkey_P_2_enc tid4) note_unified facts = this facts                 thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-              qed (insert facts, fastforce+)?-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+              qed (safe?, simp_all?, insert facts, (fastforce+)?)+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2311,7 +2453,7 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_bdkey_P_2_enc_1 tid1) note_unified facts = this facts     thus ?thesis proof(sources! "@@ -2333,9 +2475,9 @@       next         case (isoiec_9798_2_5_bdkey_P_2_enc tid3) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?-    qed (insert facts, fastforce+)?-  qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)+    qed (safe?, simp_all?, insert facts, (fastforce+)?)+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_5_bdkey_A_injective_agreement_P:@@ -2372,11 +2514,11 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_5_bdkey_P_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2415,11 +2557,11 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_bdkey_P_2_enc_1 tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_6_bdkey_P_secret_Kab:@@ -2432,11 +2574,11 @@   shows "False" using facts proof(sources! " LN ''Kab'' tid0 ")   case isoiec_9798_2_6_bdkey_P_3_Kab note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)+  thus ?thesis by (auto dest!: ltk_secrecy) next   case isoiec_9798_2_6_bdkey_P_3_Kab_1 note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)-qed (insert facts, fastforce+)?+  thus ?thesis by (auto dest!: ltk_secrecy)+qed (safe?, simp_all?, insert facts, (fastforce+)?)  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_6_bdkey_A_secret_Kab:   assumes facts:@@ -2456,11 +2598,11 @@                        |}                        ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_6_bdkey_P_3_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: isoiec_9798_2_6_bdkey_P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_6_bdkey_B_secret_Kab:@@ -2481,11 +2623,11 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_6_bdkey_P_3_enc_1 tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: isoiec_9798_2_6_bdkey_P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_6_bdkey_A_injective_agreement_B:@@ -2524,7 +2666,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_bdkey_P_3_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2555,10 +2697,10 @@             next               case (isoiec_9798_2_6_bdkey_A_4_enc tid3) note_unified facts = this facts               thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2608,7 +2750,7 @@                            |}                            ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_bdkey_P_3_enc_1 tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2630,9 +2772,9 @@           next             case (isoiec_9798_2_6_bdkey_P_3_enc tid3) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2680,11 +2822,11 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_bdkey_P_3_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2732,11 +2874,11 @@                            |}                            ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_bdkey_P_3_enc_1 tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2761,11 +2903,11 @@   shows "False" using facts proof(sources! " LN ''Kab'' tid0 ")   case isoiec_9798_2_5_special_TTP_bdkey_P_2_Kab note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)+  thus ?thesis by (auto dest!: ltk_secrecy) next   case isoiec_9798_2_5_special_TTP_bdkey_P_2_Kab_1 note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)-qed (insert facts, fastforce+)?+  thus ?thesis by (auto dest!: ltk_secrecy)+qed (safe?, simp_all?, insert facts, (fastforce+)?)  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_5_special_TTP_bdkey_A_secret_Kab:   assumes facts:@@ -2784,7 +2926,7 @@                        |}                        ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc tid1) note_unified facts = this facts     hence "Kbd ( s(AV ''P'' tid1) )@@ -2797,7 +2939,7 @@       case swapped note_unified facts = this facts       thus ?thesis by (fastforce dest: isoiec_9798_2_5_special_TTP_bdkey_P_secret_Kab intro: event_predOrdI)     qed (fastforce+)?-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_5_special_TTP_bdkey_B_secret_Kab:@@ -2817,7 +2959,7 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc_1 tid1) note_unified facts = this facts     hence "Kbd ( s(AV ''P'' tid1) )@@ -2830,7 +2972,7 @@       case swapped note_unified facts = this facts       thus ?thesis by (fastforce dest: isoiec_9798_2_5_special_TTP_bdkey_P_secret_Kab intro: event_predOrdI)     qed (fastforce+)?-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_5_special_TTP_bdkey_A_injective_agreement_B:@@ -2868,7 +3010,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''P'' tid1) )@@ -2916,12 +3058,12 @@                 next                   case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc_1 tid3) note_unified facts = this facts                   thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-                qed (insert facts, fastforce+)?-              qed (insert facts, fastforce+)?-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?+                qed (safe?, simp_all?, insert facts, (fastforce+)?)+              qed (safe?, simp_all?, insert facts, (fastforce+)?)+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2985,14 +3127,14 @@                              |}                              ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc_1 tid3) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)       qed (fastforce+)?-    qed (insert facts, fastforce+)?-  qed (insert facts, fastforce+)?+    qed (safe?, simp_all?, insert facts, (fastforce+)?)+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_5_special_TTP_bdkey_A_injective_agreement_P:@@ -3028,7 +3170,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''P'' tid1) )@@ -3041,7 +3183,7 @@           case swapped note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3079,7 +3221,7 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc_1 tid1) note_unified facts = this facts     hence "Kbd ( s(AV ''P'' tid1) )@@ -3106,13 +3248,13 @@         next           case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc tid3) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     next       case swapped note_unified facts = this facts       thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)     qed (fastforce+)?-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  @@ -3127,11 +3269,11 @@   shows "False" using facts proof(sources! " LN ''Kab'' tid0 ")   case isoiec_9798_2_6_special_TTP_bdkey_P_3_Kab note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)+  thus ?thesis by (auto dest!: ltk_secrecy) next   case isoiec_9798_2_6_special_TTP_bdkey_P_3_Kab_1 note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)-qed (insert facts, fastforce+)?+  thus ?thesis by (auto dest!: ltk_secrecy)+qed (safe?, simp_all?, insert facts, (fastforce+)?)  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_6_special_TTP_bdkey_A_secret_Kab:   assumes facts:@@ -3150,7 +3292,7 @@                        |}                        ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_6_special_TTP_bdkey_P_3_enc tid1) note_unified facts = this facts     hence "Kbd ( s(AV ''P'' tid1) )@@ -3163,7 +3305,7 @@       case swapped note_unified facts = this facts       thus ?thesis by (fastforce dest: isoiec_9798_2_6_special_TTP_bdkey_P_secret_Kab intro: event_predOrdI)     qed (fastforce+)?-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_6_special_TTP_bdkey_B_secret_Kab:@@ -3183,7 +3325,7 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_6_special_TTP_bdkey_P_3_enc_1 tid1) note_unified facts = this facts     hence "Kbd ( s(AV ''P'' tid1) )@@ -3196,7 +3338,7 @@       case swapped note_unified facts = this facts       thus ?thesis by (fastforce dest: isoiec_9798_2_6_special_TTP_bdkey_P_secret_Kab intro: event_predOrdI)     qed (fastforce+)?-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_6_special_TTP_bdkey_A_injective_agreement_B:@@ -3234,7 +3376,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_special_TTP_bdkey_P_3_enc tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''P'' tid1) )@@ -3281,12 +3423,12 @@                 next                   case (isoiec_9798_2_6_special_TTP_bdkey_A_4_enc tid3) note_unified facts = this facts                   thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-                qed (insert facts, fastforce+)?+                qed (safe?, simp_all?, insert facts, (fastforce+)?)               qed (fastforce+)?-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3335,7 +3477,7 @@                            |}                            ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_special_TTP_bdkey_P_3_enc_1 tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''P'' tid1) )@@ -3374,10 +3516,10 @@                 case swapped note_unified facts = this facts                 thus ?thesis by (fastforce dest: isoiec_9798_2_6_special_TTP_bdkey_different_actors_A_P intro: event_predOrdI)               qed (fastforce+)?-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3424,7 +3566,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_special_TTP_bdkey_P_3_enc tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''P'' tid1) )@@ -3437,7 +3579,7 @@           case swapped note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3484,7 +3626,7 @@                            |}                            ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_special_TTP_bdkey_P_3_enc_1 tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''P'' tid1) )@@ -3497,7 +3639,7 @@           case swapped note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this
data/examples/iso9798/isabelle-parallel-proofs/isoiec-9798-2-udkey_cert_auto.thy view
@@ -441,667 +441,756 @@   have "(t,r,s) : approx isoiec_9798_2_bdkey_composed_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_bdkey_composed_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_1_udkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_1_udkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_udkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_1_udkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_1_udkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_udkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_1_udkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_1_udkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_udkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_1_udkey_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_2_1_udkey_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_udkey_B_1_TNA+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_1_enc_1'', s(MV ''TNA'' tid0),                s(MV ''Text1'' tid0)             |}             ( K ( s(MV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_1_udkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_1_udkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_udkey_B_1_Text1+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_1_enc_1'', s(MV ''TNA'' tid0),                s(MV ''Text1'' tid0)             |}             ( K ( s(MV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_1_udkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_1_udkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_udkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_udkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_udkey_A_1_RB t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_A_1_RB t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_A_1_RB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_udkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_udkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_udkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_udkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_B_2_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_2_enc_2'', LN ''RB'' tid0, s(MV ''Text2'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_2_udkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_udkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_udkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_udkey_A_2_TNB t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_A_2_TNB t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_A_2_TNB+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_2'', s(MV ''TNB'' tid0),                s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(AV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_udkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_A_2_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_2'', s(MV ''TNB'' tid0),                s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(AV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_udkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_udkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_udkey_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_B_1_TNA+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_1'', s(MV ''TNA'' tid0),                s(MV ''Text1'' tid0)             |}             ( K ( s(MV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_udkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_B_1_Text1+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_1'', s(MV ''TNA'' tid0),                s(MV ''Text1'' tid0)             |}             ( K ( s(MV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_udkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_udkey_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_udkey_B_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_B_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_B_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_A_1_RB t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_1_RB t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_1_RB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_3_Text4+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_4_enc_2'', s(MV ''RB'' tid0), LN ''RA'' tid0,                s(MV ''Text4'' tid0)             |}             ( K ( s(MV ''B'' tid0) ) ( s(AV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_4_udkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_B_2_RA t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_B_2_RA t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_B_2_RA+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_4_enc_1'', s(MV ''RA'' tid0), LN ''RB'' tid0,                s(MV ''Text2'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_4_udkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_B_2_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_4_enc_1'', s(MV ''RA'' tid0), LN ''RB'' tid0,                s(MV ''Text2'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_4_udkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_B_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_B_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_B_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_B_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_B_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_B_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_A_2_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_2_Kab t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_2_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_1'', LN ''TVPa'' tid0,                s(MV ''Kab'' tid0), s(AV ''B'' tid0), s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_2_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_1'', LN ''TVPa'' tid0,                s(MV ''Kab'' tid0), s(AV ''B'' tid0), s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_A_2_TokenPA_for_B t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_2_TokenPA_for_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_2_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_A_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_A_text_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_text_3_Text6 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_text_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_A_4_TNb t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_4_TNb t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_4_TNb+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_4'', s(MV ''TNb'' tid0),                s(AV ''A'' tid0), s(MV ''Text7'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_A_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_4_Text7+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_4'', s(MV ''TNb'' tid0),                s(AV ''A'' tid0), s(MV ''Text7'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_A_4_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_4_Text8 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_4_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_B_3_A t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_A t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_B_3_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_Kab t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(MV ''Text2'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_B_3_P t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_P t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_P+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_B_3_TNa t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_TNa t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_TNa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_3'', s(MV ''TNa'' tid0),                s(AV ''B'' tid0), s(MV ''Text5'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_B_3_TNp t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_TNp t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_TNp+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(MV ''Text2'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_B_3_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(MV ''Text2'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_B_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_Text5+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_3'', s(MV ''TNa'' tid0),                s(AV ''B'' tid0), s(MV ''Text5'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_B_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_Text6 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_B_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_B_text_4_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_text_4_Text8 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_text_4_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_1_A t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_1_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_1_TVPa t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_1_TVPa t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_1_TVPa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_3_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_3_Kab t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(MV ''B'' tid0), s(MV ''Text4'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_3_Text4+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(MV ''B'' tid0), s(MV ''Text4'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_3_TokenPA_for_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_3_TokenPA_for_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_3_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_text_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_text_4_Text6 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_text_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_5_Text8 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_5_Text8+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_5'', s(MV ''Rb'' tid0), LN ''Rpa'' tid0,                s(MV ''Text8'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_A_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_5_Text9 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_B_4_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_4_Kab t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_4_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_B_4_P t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_4_P t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_4_P+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_B_4_Rpa t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_4_Rpa t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_4_Rpa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_4'', s(MV ''Rpa'' tid0), LN ''Rb'' tid0,                s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_B_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_4_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_4_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_B_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_4_Text6 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_4_Text6+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_4'', s(MV ''Rpa'' tid0), LN ''Rb'' tid0,                s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_B_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_B_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_B_text_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_text_5_Text9 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_text_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_2_A t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_2_A t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_2_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_2_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_2_B t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_2_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_2_Ra t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_2_Ra t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_2_Rb t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_text_3_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_text_3_Text3 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_text_3_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_bdkey_composed_typing_state t r s" by unfold_locales auto@@ -1182,11 +1271,11 @@                        |}                        ( K ( s(MV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_1_udkey_A_1_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_2_udkey_B_injective_agreement:@@ -1220,11 +1309,11 @@                            |}                            ( K ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_2_udkey_A_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1261,11 +1350,11 @@                        |}                        ( K ( s(AV ''B'' tid0) ) ( s(AV ''A'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_3_udkey_B_2_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_3_udkey_B_non_injective_agreement:@@ -1291,11 +1380,11 @@                        |}                        ( K ( s(MV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_3_udkey_A_1_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_4_udkey_A_injective_agreement:@@ -1330,7 +1419,7 @@                            |}                            ( K ( s(MV ''B'' tid0) ) ( s(AV ''A'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_4_udkey_B_3_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -1339,12 +1428,12 @@                              |}                              ( K ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid1) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_2_4_udkey_A_2_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1390,11 +1479,11 @@                            |}                            ( K ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_4_udkey_A_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1418,11 +1507,11 @@   shows "False" using facts proof(sources! " LN ''Kab'' tid0 ")   case isoiec_9798_2_5_udkey_P_2_Kab note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)+  thus ?thesis by (auto dest!: ltk_secrecy) next   case isoiec_9798_2_5_udkey_P_2_Kab_1 note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)-qed (insert facts, fastforce+)?+  thus ?thesis by (auto dest!: ltk_secrecy)+qed (safe?, simp_all?, insert facts, (fastforce+)?)  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_5_udkey_A_secret_Kab:   assumes facts:@@ -1441,11 +1530,11 @@                        |}                        ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_udkey_P_2_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: isoiec_9798_2_5_udkey_P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_5_udkey_B_secret_Kab:@@ -1465,11 +1554,11 @@                        |}                        ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_udkey_P_2_enc_1 tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: isoiec_9798_2_5_udkey_P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_5_udkey_A_injective_agreement_B:@@ -1507,7 +1596,7 @@                            |}                            ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_5_udkey_P_2_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -1547,11 +1636,11 @@               next                 case (isoiec_9798_2_5_udkey_P_2_enc tid4) note_unified facts = this facts                 thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-              qed (insert facts, fastforce+)?-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+              qed (safe?, simp_all?, insert facts, (fastforce+)?)+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1589,7 +1678,7 @@                        |}                        ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_udkey_P_2_enc_1 tid1) note_unified facts = this facts     thus ?thesis proof(sources! "@@ -1611,9 +1700,9 @@       next         case (isoiec_9798_2_5_udkey_P_2_enc tid3) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?-    qed (insert facts, fastforce+)?-  qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)+    qed (safe?, simp_all?, insert facts, (fastforce+)?)+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_5_udkey_A_injective_agreement_P:@@ -1649,11 +1738,11 @@                            |}                            ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_5_udkey_P_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1691,11 +1780,11 @@                        |}                        ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_udkey_P_2_enc_1 tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_6_udkey_P_secret_Kab:@@ -1708,11 +1797,11 @@   shows "False" using facts proof(sources! " LN ''Kab'' tid0 ")   case isoiec_9798_2_6_udkey_P_3_Kab note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)+  thus ?thesis by (auto dest!: ltk_secrecy) next   case isoiec_9798_2_6_udkey_P_3_Kab_1 note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)-qed (insert facts, fastforce+)?+  thus ?thesis by (auto dest!: ltk_secrecy)+qed (safe?, simp_all?, insert facts, (fastforce+)?)  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_6_udkey_A_secret_Kab:   assumes facts:@@ -1731,11 +1820,11 @@                        |}                        ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_6_udkey_P_3_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: isoiec_9798_2_6_udkey_P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_6_udkey_B_secret_Kab:@@ -1755,11 +1844,11 @@                        |}                        ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_6_udkey_P_3_enc_1 tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: isoiec_9798_2_6_udkey_P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_bdkey_state) isoiec_9798_2_6_udkey_A_injective_agreement_B:@@ -1797,7 +1886,7 @@                            |}                            ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_udkey_P_3_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -1828,10 +1917,10 @@             next               case (isoiec_9798_2_6_udkey_A_4_enc tid3) note_unified facts = this facts               thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1880,7 +1969,7 @@                            |}                            ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_udkey_P_3_enc_1 tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -1902,9 +1991,9 @@           next             case (isoiec_9798_2_6_udkey_P_3_enc tid3) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1951,11 +2040,11 @@                            |}                            ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_udkey_P_3_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2002,11 +2091,11 @@                            |}                            ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_udkey_P_3_enc_1 tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this
data/examples/iso9798/isabelle-parallel-proofs/isoiec-9798-3_cert_auto.thy view
@@ -686,352 +686,410 @@   have "(t,r,s) : approx isoiec_9798_3_composed_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_3_composed_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_3_1_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_1_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_1_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_1_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_1_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_1_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_1_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_3_1_B_1_A t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_1_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_1_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_3_1_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_1_B_1_TNA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_1_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_1_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_1_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_1_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_1_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_1_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_3_2_A_1_B t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_2_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_2_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_2_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_2_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_B_2_Ra t r s tid0) note facts = this+    case (isoiec_9798_3_2_B_2_Ra t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_B_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_2_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_B_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_2_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_3_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_3_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_A_2_TNB t r s tid0) note facts = this+    case (isoiec_9798_3_3_A_2_TNB t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_A_2_TNB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_3_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_A_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_3_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_3_3_B_1_A t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_3_3_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_B_1_TNA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_3_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_3_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_3_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_B_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_3_B_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_B_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_1_B t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_A_1_RB t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_1_RB t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_1_RB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_B_2_RA t r s tid0) note facts = this+    case (isoiec_9798_3_4_B_2_RA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_B_2_RA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_4_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_B_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_4_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_B_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_4_B_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_B_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_B_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_4_B_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_B_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_A_2_RB t r s tid0) note facts = this+    case (isoiec_9798_3_5_A_2_RB t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_A_2_RB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_A_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_5_A_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_A_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_5_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_A_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_5_A_3_Text6 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_A_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_A_text_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_5_A_text_4_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_A_text_4_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_A_text_4_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_5_A_text_4_Text4 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_A_text_4_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_1_A t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_1_RA t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_1_RA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_1_RA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_text_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_text_3_Text6 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_text_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_4_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_4_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_4_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_4_Text4 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_4_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_2_Rb t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_2_TokenBA t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_2_TokenBA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_2_TokenBA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_4_Text6 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_4_Text7 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_4_TokenTA_for_B t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_4_TokenTA_for_B t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_4_TokenTA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_4_pkB t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_4_pkB t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_4_pkB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_check_4_in_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_check_4_in_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_check_4_in_Text2+    thus ?case     proof(sources! "         Enc {| LC ''check_4'',                {| LC ''isoiec_9798_3_6_opt_1_sig_2'', s(AV ''B'' tid0), LN ''Ra'' tid0,@@ -1043,168 +1101,195 @@                    ( inv(s(MV ''pkB'' tid0)) )             |}             ( LN ''check_nonce_4'' tid0 ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_3_6_1_A_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_text_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_text_5_Text9 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_text_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_1_A t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_1_Ra t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_1_Ra t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_1_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_5_T t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_5_T t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_5_T+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_5_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_5_Text5 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_5_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_5_Text9 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_5_pkA t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_5_pkA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_5_pkA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_3_A t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_3_A t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_3_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_3_B t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_3_B t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_3_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_3_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_3_Rb t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_3_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_3_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_3_Rpa t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_3_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_3_Text4 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_text_4_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_text_4_Text5 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_text_4_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_text_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_text_4_Text6 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_text_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_2_Rb t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_2_TokenBA t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_2_TokenBA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_2_TokenBA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_4_Text7 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_4_TokenTA t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_4_TokenTA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_4_TokenTA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_4_pkB t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_4_pkB t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_4_pkB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_check_4_in_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_check_4_in_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_check_4_in_Text2+    thus ?case     proof(sources! "         Enc {| LC ''check_4'',                {| {| LC ''isoiec_9798_3_6_opt_2_sig_4'', LN ''Rpa'' tid0,@@ -1226,12 +1311,13 @@                    ( inv(s(MV ''pkB'' tid0)) )             |}             ( LN ''check_nonce_4'' tid0 ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_3_6_2_A_check_4_in_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_check_4_in_Text5 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_check_4_in_Text5+    thus ?case     proof(sources! "         Enc {| LC ''check_4'',                {| {| LC ''isoiec_9798_3_6_opt_2_sig_4'', LN ''Rpa'' tid0,@@ -1253,12 +1339,13 @@                    ( inv(s(MV ''pkB'' tid0)) )             |}             ( LN ''check_nonce_4'' tid0 ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_3_6_2_A_check_4_in_pkA t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_check_4_in_pkA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_check_4_in_pkA+    thus ?case     proof(sources! "         Enc {| LC ''check_4'',                {| {| LC ''isoiec_9798_3_6_opt_2_sig_4'', LN ''Rpa'' tid0,@@ -1280,336 +1367,391 @@                    ( inv(s(MV ''pkB'' tid0)) )             |}             ( LN ''check_nonce_4'' tid0 ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_3_6_2_A_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_text_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_text_5_Text9 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_text_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_1_A t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_1_Ra t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_1_Ra t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_1_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_Rpa t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_T t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_T t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_T+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_Text5 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_Text9 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_pkA t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_pkA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_pkA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_pkB t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_pkB t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_pkB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_3_A t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_3_A t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_3_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_3_B t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_3_B t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_3_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_3_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_3_Rb t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_3_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_3_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_3_Rpa t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_3_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_3_Text4 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_text_4_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_text_4_Text5 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_text_4_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_1_B t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_3_TokenTA_for_B t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_3_TokenTA_for_B t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_3_TokenTA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_3_pkB t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_3_pkB t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_3_pkB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_text_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_text_4_Text6 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_text_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_5_Text9 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_Ra t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_Ra t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_Rpa t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_T t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_T t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_T+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_Text6 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_Text9 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_pkA t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_pkA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_pkA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_2_A t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_2_A t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_2_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_2_B t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_2_B t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_2_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_2_Rb t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_2_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_2_Rpa t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_2_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_text_3_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_text_3_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_text_3_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_1_B t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_3_TokenTA t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_3_TokenTA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_3_TokenTA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_3_pkB t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_3_pkB t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_3_pkB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_check_3_in_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_check_3_in_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_check_3_in_Text3+    thus ?case     proof(sources! "         Enc {| LC ''check_4'',                {| LC ''isoiec_9798_3_7_opt_2_sig_3'', LN ''Rpa'' tid0,@@ -1623,12 +1765,13 @@                    ( SK ( s(AV ''T'' tid0) ) )             |}             ( LN ''check_nonce_4'' tid0 ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_3_7_2_A_check_3_in_pkA t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_check_3_in_pkA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_check_3_in_pkA+    thus ?case     proof(sources! "         Enc {| LC ''check_4'',                {| LC ''isoiec_9798_3_7_opt_2_sig_3'', LN ''Rpa'' tid0,@@ -1642,126 +1785,146 @@                    ( SK ( s(AV ''T'' tid0) ) )             |}             ( LN ''check_nonce_4'' tid0 ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_3_7_2_A_text_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_text_4_Text6 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_text_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_5_Text9 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_Ra t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_Ra t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_Rpa t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_T t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_T t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_T+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_Text6 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_Text9 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_pkA t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_pkA t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_pkA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_pkB t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_pkB t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_pkB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_2_A t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_2_A t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_2_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_2_B t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_2_B t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_2_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_2_Rb t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_2_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_2_Rpa t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_2_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_text_3_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_text_3_Text3 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_text_3_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_3_composed_typing_state t r s" by unfold_locales auto@@ -1841,11 +2004,11 @@                        |}                        ( SK ( s(MV ''A'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_3_1_A_1_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_3_state) isoiec_9798_3_2_B_injective_agreement:@@ -1879,11 +2042,11 @@                            |}                            ( SK ( s(AV ''A'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_2_A_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1919,11 +2082,11 @@                        |}                        ( SK ( s(AV ''B'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_3_3_B_2_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_3_state) isoiec_9798_3_3_B_non_injective_agreement:@@ -1948,11 +2111,11 @@                        |}                        ( SK ( s(MV ''A'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_3_3_A_1_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_3_state) isoiec_9798_3_4_A_injective_agreement:@@ -1987,7 +2150,7 @@                            |}                            ( SK ( s(MV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_4_B_3_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -1996,12 +2159,12 @@                              |}                              ( SK ( s(AV ''A'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_4_A_2_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2046,11 +2209,11 @@                            |}                            ( SK ( s(AV ''A'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_4_A_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2095,11 +2258,11 @@                            |}                            ( SK ( s(AV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_5_B_3_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2145,7 +2308,7 @@                            |}                            ( SK ( s(MV ''A'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_5_A_4_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2154,12 +2317,12 @@                              |}                              ( SK ( s(AV ''B'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_5_B_3_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2212,7 +2375,7 @@                            ( LN ''check_nonce_4'' tid0 ) ")         case fake note_unified facts = this facts         thus ?thesis proof(sources! " LN ''check_nonce_4'' tid0 ")-        qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)       next         case (isoiec_9798_3_6_1_A_check_4_out_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2227,16 +2390,16 @@                                |}                                ( SK ( s(AV ''T'' tid0) ) ) ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_3_6_1_T_4_enc tid1) note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)-          qed (insert facts, fastforce+)?+            thus ?thesis by (auto dest!: ltk_secrecy)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         next           case (isoiec_9798_3_6_1_B_2_enc tid1) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2282,7 +2445,7 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_6_1_T_4_enc_1 tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2292,12 +2455,12 @@                              |}                              ( SK ( s(MV ''A'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_6_1_A_5_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2342,11 +2505,11 @@                            |}                            ( SK ( s(AV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_6_1_T_4_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2391,11 +2554,11 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_6_1_T_4_enc_1 tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2458,7 +2621,7 @@                            ( LN ''check_nonce_4'' tid0 ) ")         case fake note_unified facts = this facts         thus ?thesis proof(sources! " LN ''check_nonce_4'' tid0 ")-        qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)       next         case (isoiec_9798_3_6_2_A_check_4_out_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2474,16 +2637,16 @@                                |}                                ( SK ( s(AV ''T'' tid0) ) ) ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_3_6_2_T_4_enc tid1) note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)-          qed (insert facts, fastforce+)?+            thus ?thesis by (auto dest!: ltk_secrecy)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         next           case (isoiec_9798_3_6_2_B_2_enc tid1) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2530,7 +2693,7 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_6_2_T_4_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2540,12 +2703,12 @@                              |}                              ( SK ( s(MV ''A'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_6_2_A_5_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2609,7 +2772,7 @@                            ( LN ''check_nonce_4'' tid0 ) ")         case fake note_unified facts = this facts         thus ?thesis proof(sources! " LN ''check_nonce_4'' tid0 ")-        qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)       next         case (isoiec_9798_3_6_2_A_check_4_out_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2619,12 +2782,12 @@                              |}                              ( SK ( s(AV ''T'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_6_2_T_4_enc tid1) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2672,11 +2835,11 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_6_2_T_4_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2722,7 +2885,7 @@                            |}                            ( SK ( s(AV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_7_1_T_3_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2732,12 +2895,12 @@                              |}                              ( SK ( s(MV ''B'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_7_1_B_5_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2783,7 +2946,7 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_7_1_T_3_enc_1 tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2793,12 +2956,12 @@                              |}                              ( SK ( s(AV ''A'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_7_1_A_4_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2843,11 +3006,11 @@                            |}                            ( SK ( s(AV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_7_1_T_3_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2892,11 +3055,11 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_7_1_T_3_enc_1 tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2951,7 +3114,7 @@                            ( LN ''check_nonce_4'' tid0 ) ")         case fake note_unified facts = this facts         thus ?thesis proof(sources! " LN ''check_nonce_4'' tid0 ")-        qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)       next         case (isoiec_9798_3_7_2_A_check_3_out_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2961,7 +3124,7 @@                              |}                              ( SK ( s(AV ''T'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_7_2_T_3_enc tid1) note_unified facts = this facts           thus ?thesis proof(sources! "@@ -2971,13 +3134,13 @@                                |}                                ( SK ( s(MV ''B'' tid0) ) ) ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_3_7_2_B_5_enc tid2) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3024,7 +3187,7 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_7_2_T_3_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -3034,12 +3197,12 @@                              |}                              ( SK ( s(AV ''A'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_7_2_A_4_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3095,7 +3258,7 @@                            ( LN ''check_nonce_4'' tid0 ) ")         case fake note_unified facts = this facts         thus ?thesis proof(sources! " LN ''check_nonce_4'' tid0 ")-        qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)       next         case (isoiec_9798_3_7_2_A_check_3_out_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -3105,12 +3268,12 @@                              |}                              ( SK ( s(AV ''T'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_7_2_T_3_enc tid1) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3158,11 +3321,11 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_7_2_T_3_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this
data/examples/iso9798/isabelle-parallel-proofs/isoiec-9798-4-bdkey_cert_auto.thy view
@@ -210,220 +210,256 @@   have "(t,r,s) : approx isoiec_9798_4_bdkey_composed_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_4_bdkey_composed_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_4_1_bdkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_1_bdkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_bdkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_bdkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_1_bdkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_bdkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_bdkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_4_1_bdkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_bdkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_bdkey_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_4_1_bdkey_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_bdkey_B_1_TNA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_bdkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_1_bdkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_bdkey_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_bdkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_1_bdkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_bdkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_bdkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_bdkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_bdkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_bdkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_bdkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_bdkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_B_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_bdkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_A_2_TNb t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_A_2_TNb t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_A_2_TNb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_A_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_B_1_TNa t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_B_1_TNa t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_B_1_TNa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_B_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_B_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_B_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_B_2_Ra t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_B_2_Ra t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_B_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_B_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_B_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_B_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_B_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_B_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_B_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_4_bdkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_B_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_4_bdkey_composed_typing_state t r s" by unfold_locales auto@@ -504,11 +540,11 @@                            s(MV ''Text1'' tid0)                         |} ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_4_1_bdkey_A_1_hash tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_4_bdkey_state) isoiec_9798_4_2_bdkey_B_injective_agreement:@@ -543,11 +579,11 @@                                s(MV ''Text2'' tid0)                             |} ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_4_2_bdkey_A_2_hash tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -584,11 +620,11 @@                            s(MV ''Text3'' tid0)                         |} ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_4_3_bdkey_B_2_hash tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_4_bdkey_state) isoiec_9798_4_3_bdkey_B_non_injective_agreement:@@ -614,11 +650,11 @@                            s(MV ''Text1'' tid0)                         |} ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_4_3_bdkey_A_1_hash tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_4_bdkey_state) isoiec_9798_4_4_bdkey_A_injective_agreement:@@ -653,7 +689,7 @@                                s(MV ''Text4'' tid0)                             |} ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_4_4_bdkey_B_3_hash tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''A'' tid1) )@@ -667,11 +703,11 @@                                    s(AV ''B'' tid1), s(MV ''Text2'' tid1)                                 |} ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_4_4_bdkey_A_2_hash tid2) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         next           case swapped note_unified facts = this facts           thus ?thesis proof(sources! "@@ -680,13 +716,13 @@                                    s(AV ''A'' tid0), s(MV ''Text2'' tid1)                                 |} ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_4_4_bdkey_A_2_hash tid2) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -732,11 +768,11 @@                                s(AV ''B'' tid0), s(MV ''Text2'' tid0)                             |} ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_4_4_bdkey_A_2_hash tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this
data/examples/iso9798/isabelle-parallel-proofs/isoiec-9798-4-udkey_cert_auto.thy view
@@ -208,220 +208,256 @@   have "(t,r,s) : approx isoiec_9798_4_udkey_composed_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_4_udkey_composed_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_4_1_udkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_1_udkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_udkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_udkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_1_udkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_udkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_udkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_4_1_udkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_udkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_udkey_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_4_1_udkey_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_udkey_B_1_TNA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_udkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_1_udkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_udkey_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_udkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_1_udkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_udkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_udkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_udkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_udkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_udkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_udkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_udkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_B_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_udkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_A_2_TNb t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_A_2_TNb t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_A_2_TNb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_A_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_B_1_TNa t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_B_1_TNa t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_B_1_TNa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_B_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_B_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_B_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_B_2_Ra t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_B_2_Ra t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_B_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_B_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_B_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_B_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_B_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_B_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_B_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_4_udkey_composed_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_B_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_4_udkey_composed_typing_state t r s" by unfold_locales auto@@ -501,11 +537,11 @@                            LC ''isoiec_9798_4_1_ccf_1'', s(MV ''TNA'' tid0), s(MV ''Text1'' tid0)                         |} ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_4_1_udkey_A_1_hash tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_4_udkey_state) isoiec_9798_4_2_udkey_B_injective_agreement:@@ -539,11 +575,11 @@                                LC ''isoiec_9798_4_2_ccf_2'', LN ''Rb'' tid0, s(MV ''Text2'' tid0)                             |} ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_4_2_udkey_A_2_hash tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -579,11 +615,11 @@                            LC ''isoiec_9798_4_3_ccf_2'', s(MV ''TNb'' tid0), s(MV ''Text3'' tid0)                         |} ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_4_3_udkey_B_2_hash tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_4_udkey_state) isoiec_9798_4_3_udkey_B_non_injective_agreement:@@ -608,11 +644,11 @@                            LC ''isoiec_9798_4_3_ccf_1'', s(MV ''TNa'' tid0), s(MV ''Text1'' tid0)                         |} ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_4_3_udkey_A_1_hash tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_4_udkey_state) isoiec_9798_4_4_udkey_A_injective_agreement:@@ -647,7 +683,7 @@                                s(MV ''Text4'' tid0)                             |} ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_4_4_udkey_B_3_hash tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -656,12 +692,12 @@                                  s(MV ''Text2'' tid1)                               |} ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_4_4_udkey_A_2_hash tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -707,11 +743,11 @@                                s(MV ''Text2'' tid0)                             |} ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_4_4_udkey_A_2_hash tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this
data/examples/iso9798/isabelle-proofs/isoiec-9798-2-bdkey_cert_auto.thy view
@@ -51,50 +51,56 @@   have "(t,r,s) : approx isoiec_9798_2_1_bdkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_1_bdkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_1_bdkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_1_bdkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_1_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_bdkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_1_bdkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_1_bdkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_1_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_bdkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_1_bdkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_1_bdkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_2_1_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_bdkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_1_bdkey_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_2_1_bdkey_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_2_1_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_bdkey_B_1_TNA+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_1_enc_1'', s(MV ''TNA'' tid0),                s(AV ''B'' tid0), s(MV ''Text1'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_1_bdkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_1_bdkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_1_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_bdkey_B_1_Text1+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_1_enc_1'', s(MV ''TNA'' tid0),                s(AV ''B'' tid0), s(MV ''Text1'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_1_bdkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_1_bdkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_1_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_bdkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_1_bdkey_msc_typing_state t r s" by unfold_locales auto@@ -175,11 +181,11 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''A'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_1_bdkey_A_1_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  role isoiec_9798_2_2_bdkey_A@@ -234,51 +240,58 @@   have "(t,r,s) : approx isoiec_9798_2_2_bdkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_2_bdkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_2_bdkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_bdkey_A_1_RB t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_A_1_RB t r s tid0)     then interpret state: isoiec_9798_2_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_A_1_RB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_bdkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_bdkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_bdkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_bdkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_B_2_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_2_enc_2'', LN ''RB'' tid0, s(AV ''B'' tid0),                s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_2_bdkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_2_bdkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_bdkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_2_bdkey_msc_typing_state t r s" by unfold_locales auto@@ -368,11 +381,11 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_2_bdkey_A_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -458,90 +471,101 @@   have "(t,r,s) : approx isoiec_9798_2_3_bdkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_3_bdkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_3_bdkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_bdkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_bdkey_A_2_TNB t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_A_2_TNB t r s tid0)     then interpret state: isoiec_9798_2_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_A_2_TNB+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_2'', s(MV ''TNB'' tid0),                s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_bdkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_A_2_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_2'', s(MV ''TNB'' tid0),                s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_bdkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_bdkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_2_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_bdkey_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_2_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_B_1_TNA+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_1'', s(MV ''TNA'' tid0),                s(AV ''B'' tid0), s(MV ''Text1'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_bdkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_B_1_Text1+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_1'', s(MV ''TNA'' tid0),                s(AV ''B'' tid0), s(MV ''Text1'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_bdkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_bdkey_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_bdkey_B_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_3_bdkey_B_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_bdkey_B_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_3_bdkey_msc_typing_state t r s" by unfold_locales auto@@ -622,11 +646,11 @@                        |}                        ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_3_bdkey_B_2_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_3_bdkey_state) B_non_injective_agreement:@@ -652,11 +676,11 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''A'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_3_bdkey_A_1_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  role isoiec_9798_2_4_bdkey_A@@ -735,91 +759,103 @@   have "(t,r,s) : approx isoiec_9798_2_4_bdkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_4_bdkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_4_bdkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_A_1_RB t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_1_RB t r s tid0)     then interpret state: isoiec_9798_2_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_1_RB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_3_Text4+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_4_enc_2'', s(MV ''RB'' tid0), LN ''RA'' tid0,                s(MV ''Text4'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(MV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_4_bdkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_B_2_RA t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_B_2_RA t r s tid0)     then interpret state: isoiec_9798_2_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_B_2_RA+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_4_enc_1'', s(MV ''RA'' tid0), LN ''RB'' tid0,                s(AV ''B'' tid0), s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_4_bdkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_B_2_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_4_enc_1'', s(MV ''RA'' tid0), LN ''RB'' tid0,                s(AV ''B'' tid0), s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_4_bdkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_B_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_B_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_B_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_bdkey_B_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_4_bdkey_B_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_bdkey_B_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_4_bdkey_msc_typing_state t r s" by unfold_locales auto@@ -909,7 +945,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(MV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_4_bdkey_B_3_enc tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''A'' tid1) )@@ -923,11 +959,11 @@                                |}                                ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid1) ) ) ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_2_4_bdkey_A_2_enc tid2) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         next           case swapped note_unified facts = this facts           thus ?thesis proof(sources! "@@ -936,13 +972,13 @@                                |}                                ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''A'' tid1) ) ) ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_2_4_bdkey_A_2_enc tid2) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -988,11 +1024,11 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_4_bdkey_A_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1144,210 +1180,236 @@   have "(t,r,s) : approx isoiec_9798_2_5_bdkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_5_bdkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_5_bdkey_A_2_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_2_Kab t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_2_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_1'', LN ''TVPa'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_2_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_1'', LN ''TVPa'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_A_2_TokenPA_for_B t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_2_TokenPA_for_B t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_2_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_A_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_A_text_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_text_3_Text6 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_text_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_A_4_TNb t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_4_TNb t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_4_TNb+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_4'', s(MV ''TNb'' tid0),                s(AV ''A'' tid0), s(MV ''Text7'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_A_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_4_Text7+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_4'', s(MV ''TNb'' tid0),                s(AV ''A'' tid0), s(MV ''Text7'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_A_4_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_A_4_Text8 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_A_4_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_B_3_A t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_A t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_B_3_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_Kab t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_B_3_P t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_P t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_P+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_B_3_TNa t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_TNa t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_TNa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_3'', s(MV ''TNa'' tid0),                s(AV ''B'' tid0), s(MV ''Text5'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_B_3_TNp t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_TNp t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_TNp+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_B_3_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_Text2 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_B_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_Text5+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_3'', s(MV ''TNa'' tid0),                s(AV ''B'' tid0), s(MV ''Text5'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_bdkey_B_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_3_Text6 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_B_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_B_text_4_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_B_text_4_Text8 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_B_text_4_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_1_A t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_1_B t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_1_TVPa t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_1_TVPa t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_1_TVPa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_bdkey_P_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_5_bdkey_P_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_5_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_bdkey_P_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_5_bdkey_msc_typing_state t r s" by unfold_locales auto@@ -1415,11 +1477,11 @@   shows "False" using facts proof(sources! " LN ''Kab'' tid0 ")   case isoiec_9798_2_5_bdkey_P_2_Kab note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)+  thus ?thesis by (auto dest!: ltk_secrecy) next   case isoiec_9798_2_5_bdkey_P_2_Kab_1 note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)-qed (insert facts, fastforce+)?+  thus ?thesis by (auto dest!: ltk_secrecy)+qed (safe?, simp_all?, insert facts, (fastforce+)?)  lemma (in restricted_isoiec_9798_2_5_bdkey_state) A_secret_Kab:   assumes facts:@@ -1439,11 +1501,11 @@                        |}                        ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_bdkey_P_2_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_5_bdkey_state) B_secret_Kab:@@ -1464,11 +1526,11 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_bdkey_P_2_enc_1 tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_5_bdkey_state) A_injective_agreement_B:@@ -1507,7 +1569,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_5_bdkey_P_2_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -1547,11 +1609,11 @@               next                 case (isoiec_9798_2_5_bdkey_P_2_enc tid4) note_unified facts = this facts                 thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-              qed (insert facts, fastforce+)?-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+              qed (safe?, simp_all?, insert facts, (fastforce+)?)+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1590,7 +1652,7 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_bdkey_P_2_enc_1 tid1) note_unified facts = this facts     thus ?thesis proof(sources! "@@ -1612,9 +1674,9 @@       next         case (isoiec_9798_2_5_bdkey_P_2_enc tid3) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?-    qed (insert facts, fastforce+)?-  qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)+    qed (safe?, simp_all?, insert facts, (fastforce+)?)+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_5_bdkey_state) A_injective_agreement_P:@@ -1651,11 +1713,11 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_5_bdkey_P_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1694,11 +1756,11 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_bdkey_P_2_enc_1 tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  role isoiec_9798_2_6_bdkey_A@@ -1840,205 +1902,232 @@   have "(t,r,s) : approx isoiec_9798_2_6_bdkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_6_bdkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_6_bdkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_3_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_3_Kab t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''B'' tid0),                s(MV ''Text4'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_3_Text4+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''B'' tid0),                s(MV ''Text4'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_3_TokenPA_for_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_3_TokenPA_for_B t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_3_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_text_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_text_4_Text6 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_text_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_A_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_5_Text8 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_5_Text8+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_5'', s(MV ''Rb'' tid0), LN ''Rpa'' tid0,                s(MV ''Text8'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_A_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_A_5_Text9 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_A_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_B_4_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_4_Kab t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_4_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_B_4_P t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_4_P t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_4_P+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_B_4_Rpa t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_4_Rpa t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_4_Rpa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_4'', s(MV ''Rpa'' tid0), LN ''Rb'' tid0,                s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_B_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_4_Text3 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_4_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(AV ''B'' tid0),                s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_B_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_4_Text6 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_4_Text6+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_4'', s(MV ''Rpa'' tid0), LN ''Rb'' tid0,                s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_bdkey_B_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_B_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_B_text_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_B_text_5_Text9 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_B_text_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_2_A t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_2_A t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_2_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_2_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_2_B t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_2_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_2_Ra t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_2_Ra t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_2_Rb t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_text_3_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_text_3_Text3 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_text_3_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_bdkey_P_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_6_bdkey_P_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_6_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_bdkey_P_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_6_bdkey_msc_typing_state t r s" by unfold_locales auto@@ -2106,11 +2195,11 @@   shows "False" using facts proof(sources! " LN ''Kab'' tid0 ")   case isoiec_9798_2_6_bdkey_P_3_Kab note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)+  thus ?thesis by (auto dest!: ltk_secrecy) next   case isoiec_9798_2_6_bdkey_P_3_Kab_1 note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)-qed (insert facts, fastforce+)?+  thus ?thesis by (auto dest!: ltk_secrecy)+qed (safe?, simp_all?, insert facts, (fastforce+)?)  lemma (in restricted_isoiec_9798_2_6_bdkey_state) A_secret_Kab:   assumes facts:@@ -2130,11 +2219,11 @@                        |}                        ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_6_bdkey_P_3_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_6_bdkey_state) B_secret_Kab:@@ -2155,11 +2244,11 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_6_bdkey_P_3_enc_1 tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_6_bdkey_state) A_injective_agreement_B:@@ -2198,7 +2287,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_bdkey_P_3_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2229,10 +2318,10 @@             next               case (isoiec_9798_2_6_bdkey_A_4_enc tid3) note_unified facts = this facts               thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2282,7 +2371,7 @@                            |}                            ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_bdkey_P_3_enc_1 tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2304,9 +2393,9 @@           next             case (isoiec_9798_2_6_bdkey_P_3_enc tid3) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2354,11 +2443,11 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_bdkey_P_3_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2406,11 +2495,11 @@                            |}                            ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_bdkey_P_3_enc_1 tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2572,205 +2661,231 @@   have "(t,r,s) : approx isoiec_9798_2_5_special_TTP_bdkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_5_special_TTP_bdkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_Kab t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_2_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_2_1'', LN ''TVPa'' tid0,                s(MV ''Kab'' tid0), s(AV ''B'' tid0), s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_2_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_2_1'', LN ''TVPa'' tid0,                s(MV ''Kab'' tid0), s(AV ''B'' tid0), s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_TokenPA_for_B t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_2_TokenPA_for_B t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_2_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_text_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_text_3_Text6 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_text_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_4_TNb t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_4_TNb t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_4_TNb+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_4'', s(MV ''TNb'' tid0),                s(AV ''A'' tid0), s(MV ''Text7'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_4_Text7+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_4'', s(MV ''TNb'' tid0),                s(AV ''A'' tid0), s(MV ''Text7'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_A_4_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_A_4_Text8 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_A_4_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_A t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_A t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Kab t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_P t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_P t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_P+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_TNa t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_TNa t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_TNa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_3'', s(MV ''TNa'' tid0),                s(AV ''B'' tid0), s(MV ''Text5'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_TNp t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_TNp t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_TNp+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Text2 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(MV ''Text2'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_Text5+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_special_TTP_enc_3'', s(MV ''TNa'' tid0),                s(AV ''B'' tid0), s(MV ''Text5'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_3_Text6 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_B_text_4_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_B_text_4_Text8 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_B_text_4_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_A t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_B t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_TVPa t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_TVPa t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_1_TVPa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_special_TTP_bdkey_P_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_5_special_TTP_bdkey_msc_typing_state t r s" by unfold_locales auto@@ -2839,11 +2954,11 @@   shows "False" using facts proof(sources! " LN ''Kab'' tid0 ")   case isoiec_9798_2_5_special_TTP_bdkey_P_2_Kab note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)+  thus ?thesis by (auto dest!: ltk_secrecy) next   case isoiec_9798_2_5_special_TTP_bdkey_P_2_Kab_1 note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)-qed (insert facts, fastforce+)?+  thus ?thesis by (auto dest!: ltk_secrecy)+qed (safe?, simp_all?, insert facts, (fastforce+)?)  lemma (in restricted_isoiec_9798_2_5_special_TTP_bdkey_state) A_secret_Kab:   assumes facts:@@ -2862,7 +2977,7 @@                        |}                        ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc tid1) note_unified facts = this facts     hence "Kbd ( s(AV ''P'' tid1) )@@ -2875,7 +2990,7 @@       case swapped note_unified facts = this facts       thus ?thesis by (fastforce dest: P_secret_Kab intro: event_predOrdI)     qed (fastforce+)?-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_5_special_TTP_bdkey_state) B_secret_Kab:@@ -2895,7 +3010,7 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc_1 tid1) note_unified facts = this facts     hence "Kbd ( s(AV ''P'' tid1) )@@ -2908,7 +3023,7 @@       case swapped note_unified facts = this facts       thus ?thesis by (fastforce dest: P_secret_Kab intro: event_predOrdI)     qed (fastforce+)?-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_5_special_TTP_bdkey_state) A_injective_agreement_B:@@ -2946,7 +3061,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''P'' tid1) )@@ -2994,12 +3109,12 @@                 next                   case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc_1 tid3) note_unified facts = this facts                   thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-                qed (insert facts, fastforce+)?-              qed (insert facts, fastforce+)?-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?+                qed (safe?, simp_all?, insert facts, (fastforce+)?)+              qed (safe?, simp_all?, insert facts, (fastforce+)?)+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3063,14 +3178,14 @@                              |}                              ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc_1 tid3) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)       qed (fastforce+)?-    qed (insert facts, fastforce+)?-  qed (insert facts, fastforce+)?+    qed (safe?, simp_all?, insert facts, (fastforce+)?)+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_5_special_TTP_bdkey_state) A_injective_agreement_P:@@ -3106,7 +3221,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''P'' tid1) )@@ -3119,7 +3234,7 @@           case swapped note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3157,7 +3272,7 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc_1 tid1) note_unified facts = this facts     hence "Kbd ( s(AV ''P'' tid1) )@@ -3184,13 +3299,13 @@         next           case (isoiec_9798_2_5_special_TTP_bdkey_P_2_enc tid3) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     next       case swapped note_unified facts = this facts       thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)     qed (fastforce+)?-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  role isoiec_9798_2_6_special_TTP_bdkey_A@@ -3351,201 +3466,228 @@   have "(t,r,s) : approx isoiec_9798_2_6_special_TTP_bdkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_6_special_TTP_bdkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_6_special_TTP_bdkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_Kab t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(MV ''B'' tid0), s(MV ''Text4'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_3_Text4+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(MV ''B'' tid0), s(MV ''Text4'' tid0)             |}             ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_TokenPA_for_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_3_TokenPA_for_B t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_3_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_text_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_text_4_Text6 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_text_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_5_Text8 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_5_Text8+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_5'', s(MV ''Rb'' tid0),                LN ''Rpa'' tid0, s(MV ''Text8'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_A_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_A_5_Text9 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_A_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Kab t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_4_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_P t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_P t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_4_P+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Rpa t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Rpa t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_4_Rpa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_4'', s(MV ''Rpa'' tid0),                LN ''Rb'' tid0, s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Text3 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_4_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Text6 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_4_Text6+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_special_TTP_enc_4'', s(MV ''Rpa'' tid0),                LN ''Rb'' tid0, s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_B_text_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_B_text_5_Text9 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_B_text_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_A t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_A t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_2_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_B t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_2_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_Ra t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_Ra t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_Rb t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text3 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_special_TTP_bdkey_P_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_6_special_TTP_bdkey_msc_typing_state t r s" by unfold_locales auto@@ -3615,11 +3757,11 @@   shows "False" using facts proof(sources! " LN ''Kab'' tid0 ")   case isoiec_9798_2_6_special_TTP_bdkey_P_3_Kab note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)+  thus ?thesis by (auto dest!: ltk_secrecy) next   case isoiec_9798_2_6_special_TTP_bdkey_P_3_Kab_1 note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)-qed (insert facts, fastforce+)?+  thus ?thesis by (auto dest!: ltk_secrecy)+qed (safe?, simp_all?, insert facts, (fastforce+)?)  lemma (in restricted_isoiec_9798_2_6_special_TTP_bdkey_state) A_secret_Kab:   assumes facts:@@ -3638,7 +3780,7 @@                        |}                        ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_6_special_TTP_bdkey_P_3_enc tid1) note_unified facts = this facts     hence "Kbd ( s(AV ''P'' tid1) )@@ -3651,7 +3793,7 @@       case swapped note_unified facts = this facts       thus ?thesis by (fastforce dest: P_secret_Kab intro: event_predOrdI)     qed (fastforce+)?-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_6_special_TTP_bdkey_state) B_secret_Kab:@@ -3671,7 +3813,7 @@                        |}                        ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_6_special_TTP_bdkey_P_3_enc_1 tid1) note_unified facts = this facts     hence "Kbd ( s(AV ''P'' tid1) )@@ -3684,7 +3826,7 @@       case swapped note_unified facts = this facts       thus ?thesis by (fastforce dest: P_secret_Kab intro: event_predOrdI)     qed (fastforce+)?-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_6_special_TTP_bdkey_state) A_injective_agreement_B:@@ -3722,7 +3864,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_special_TTP_bdkey_P_3_enc tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''P'' tid1) )@@ -3769,12 +3911,12 @@                 next                   case (isoiec_9798_2_6_special_TTP_bdkey_A_4_enc tid3) note_unified facts = this facts                   thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-                qed (insert facts, fastforce+)?+                qed (safe?, simp_all?, insert facts, (fastforce+)?)               qed (fastforce+)?-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3823,7 +3965,7 @@                            |}                            ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_special_TTP_bdkey_P_3_enc_1 tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''P'' tid1) )@@ -3862,10 +4004,10 @@                 case swapped note_unified facts = this facts                 thus ?thesis by (fastforce dest: different_actors_A_P intro: event_predOrdI)               qed (fastforce+)?-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3912,7 +4054,7 @@                            |}                            ( Kbd ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_special_TTP_bdkey_P_3_enc tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''P'' tid1) )@@ -3925,7 +4067,7 @@           case swapped note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3972,7 +4114,7 @@                            |}                            ( Kbd ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_special_TTP_bdkey_P_3_enc_1 tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''P'' tid1) )@@ -3985,7 +4127,7 @@           case swapped note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this
data/examples/iso9798/isabelle-proofs/isoiec-9798-2-udkey_cert_auto.thy view
@@ -47,50 +47,56 @@   have "(t,r,s) : approx isoiec_9798_2_1_udkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_1_udkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_1_udkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_1_udkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_1_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_udkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_1_udkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_1_udkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_1_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_udkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_1_udkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_1_udkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_2_1_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_udkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_1_udkey_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_2_1_udkey_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_2_1_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_udkey_B_1_TNA+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_1_enc_1'', s(MV ''TNA'' tid0),                s(MV ''Text1'' tid0)             |}             ( K ( s(MV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_1_udkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_1_udkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_1_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_udkey_B_1_Text1+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_1_enc_1'', s(MV ''TNA'' tid0),                s(MV ''Text1'' tid0)             |}             ( K ( s(MV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_1_udkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_1_udkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_1_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_1_udkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_1_udkey_msc_typing_state t r s" by unfold_locales auto@@ -171,11 +177,11 @@                        |}                        ( K ( s(MV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_1_udkey_A_1_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  role isoiec_9798_2_2_udkey_A@@ -227,50 +233,57 @@   have "(t,r,s) : approx isoiec_9798_2_2_udkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_2_udkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_2_udkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_udkey_A_1_RB t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_A_1_RB t r s tid0)     then interpret state: isoiec_9798_2_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_A_1_RB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_udkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_udkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_udkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_2_udkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_B_2_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_2_enc_2'', LN ''RB'' tid0, s(MV ''Text2'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_2_udkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_2_udkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_2_udkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_2_udkey_msc_typing_state t r s" by unfold_locales auto@@ -359,11 +372,11 @@                            |}                            ( K ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_2_udkey_A_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -441,90 +454,101 @@   have "(t,r,s) : approx isoiec_9798_2_3_udkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_3_udkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_3_udkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_udkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_udkey_A_2_TNB t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_A_2_TNB t r s tid0)     then interpret state: isoiec_9798_2_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_A_2_TNB+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_2'', s(MV ''TNB'' tid0),                s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(AV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_udkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_A_2_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_2'', s(MV ''TNB'' tid0),                s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(AV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_udkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_udkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_2_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_udkey_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_2_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_B_1_TNA+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_1'', s(MV ''TNA'' tid0),                s(MV ''Text1'' tid0)             |}             ( K ( s(MV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_udkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_B_1_Text1+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_3_enc_1'', s(MV ''TNA'' tid0),                s(MV ''Text1'' tid0)             |}             ( K ( s(MV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_3_udkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_2_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_udkey_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_3_udkey_B_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_3_udkey_B_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_3_udkey_B_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_3_udkey_msc_typing_state t r s" by unfold_locales auto@@ -605,11 +629,11 @@                        |}                        ( K ( s(AV ''B'' tid0) ) ( s(AV ''A'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_3_udkey_B_2_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_3_udkey_state) B_non_injective_agreement:@@ -635,11 +659,11 @@                        |}                        ( K ( s(MV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_3_udkey_A_1_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  role isoiec_9798_2_4_udkey_A@@ -718,91 +742,103 @@   have "(t,r,s) : approx isoiec_9798_2_4_udkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_4_udkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_4_udkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_A_1_RB t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_1_RB t r s tid0)     then interpret state: isoiec_9798_2_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_1_RB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_3_Text4+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_4_enc_2'', s(MV ''RB'' tid0), LN ''RA'' tid0,                s(MV ''Text4'' tid0)             |}             ( K ( s(MV ''B'' tid0) ) ( s(AV ''A'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_4_udkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_B_2_RA t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_B_2_RA t r s tid0)     then interpret state: isoiec_9798_2_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_B_2_RA+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_4_enc_1'', s(MV ''RA'' tid0), LN ''RB'' tid0,                s(MV ''Text2'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_4_udkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_B_2_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_4_enc_1'', s(MV ''RA'' tid0), LN ''RB'' tid0,                s(MV ''Text2'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_4_udkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_B_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_B_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_B_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_4_udkey_B_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_4_udkey_B_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_4_udkey_B_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_4_udkey_msc_typing_state t r s" by unfold_locales auto@@ -892,7 +928,7 @@                            |}                            ( K ( s(MV ''B'' tid0) ) ( s(AV ''A'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_4_udkey_B_3_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -901,12 +937,12 @@                              |}                              ( K ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid1) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_2_4_udkey_A_2_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -952,11 +988,11 @@                            |}                            ( K ( s(AV ''A'' tid0) ) ( s(AV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_4_udkey_A_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1108,205 +1144,231 @@   have "(t,r,s) : approx isoiec_9798_2_5_udkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_5_udkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_5_udkey_A_2_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_2_Kab t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_2_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_1'', LN ''TVPa'' tid0,                s(MV ''Kab'' tid0), s(AV ''B'' tid0), s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_2_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_1'', LN ''TVPa'' tid0,                s(MV ''Kab'' tid0), s(AV ''B'' tid0), s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_A_2_TokenPA_for_B t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_2_TokenPA_for_B t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_2_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_A_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_A_text_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_text_3_Text6 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_text_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_A_4_TNb t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_4_TNb t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_4_TNb+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_4'', s(MV ''TNb'' tid0),                s(AV ''A'' tid0), s(MV ''Text7'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_A_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_4_Text7+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_4'', s(MV ''TNb'' tid0),                s(AV ''A'' tid0), s(MV ''Text7'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_A_4_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_A_4_Text8 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_A_4_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_B_3_A t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_A t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_B_3_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_Kab t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(MV ''Text2'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_B_3_P t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_P t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_P+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_B_3_TNa t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_TNa t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_TNa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_3'', s(MV ''TNa'' tid0),                s(AV ''B'' tid0), s(MV ''Text5'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_B_3_TNp t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_TNp t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_TNp+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(MV ''Text2'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_B_3_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_Text2 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_Text2+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_2_2'', s(MV ''TNp'' tid0),                s(MV ''Kab'' tid0), s(MV ''A'' tid0), s(MV ''Text2'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_B_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_Text5+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_5_enc_3'', s(MV ''TNa'' tid0),                s(AV ''B'' tid0), s(MV ''Text5'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_5_udkey_B_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_3_Text6 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_B_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_B_text_4_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_B_text_4_Text8 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_B_text_4_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_1_A t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_1_A t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_1_B t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_1_TVPa t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_1_TVPa t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_1_TVPa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_5_udkey_P_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_5_udkey_P_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_2_5_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_5_udkey_P_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_5_udkey_msc_typing_state t r s" by unfold_locales auto@@ -1374,11 +1436,11 @@   shows "False" using facts proof(sources! " LN ''Kab'' tid0 ")   case isoiec_9798_2_5_udkey_P_2_Kab note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)+  thus ?thesis by (auto dest!: ltk_secrecy) next   case isoiec_9798_2_5_udkey_P_2_Kab_1 note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)-qed (insert facts, fastforce+)?+  thus ?thesis by (auto dest!: ltk_secrecy)+qed (safe?, simp_all?, insert facts, (fastforce+)?)  lemma (in restricted_isoiec_9798_2_5_udkey_state) A_secret_Kab:   assumes facts:@@ -1397,11 +1459,11 @@                        |}                        ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_udkey_P_2_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_5_udkey_state) B_secret_Kab:@@ -1421,11 +1483,11 @@                        |}                        ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_udkey_P_2_enc_1 tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_5_udkey_state) A_injective_agreement_B:@@ -1463,7 +1525,7 @@                            |}                            ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_5_udkey_P_2_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -1503,11 +1565,11 @@               next                 case (isoiec_9798_2_5_udkey_P_2_enc tid4) note_unified facts = this facts                 thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-              qed (insert facts, fastforce+)?-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+              qed (safe?, simp_all?, insert facts, (fastforce+)?)+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1545,7 +1607,7 @@                        |}                        ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_udkey_P_2_enc_1 tid1) note_unified facts = this facts     thus ?thesis proof(sources! "@@ -1567,9 +1629,9 @@       next         case (isoiec_9798_2_5_udkey_P_2_enc tid3) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?-    qed (insert facts, fastforce+)?-  qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)+    qed (safe?, simp_all?, insert facts, (fastforce+)?)+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_5_udkey_state) A_injective_agreement_P:@@ -1605,11 +1667,11 @@                            |}                            ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_5_udkey_P_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1647,11 +1709,11 @@                        |}                        ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_5_udkey_P_2_enc_1 tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  role isoiec_9798_2_6_udkey_A@@ -1793,201 +1855,228 @@   have "(t,r,s) : approx isoiec_9798_2_6_udkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_2_6_udkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_2_6_udkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_3_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_3_Kab t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(MV ''B'' tid0), s(MV ''Text4'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_3_Text4+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(MV ''B'' tid0), s(MV ''Text4'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_3_TokenPA_for_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_3_TokenPA_for_B t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_3_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_text_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_text_4_Text6 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_text_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_A_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_5_Text8 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_5_Text8+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_5'', s(MV ''Rb'' tid0), LN ''Rpa'' tid0,                s(MV ''Text8'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_A_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_A_5_Text9 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_A_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_B_4_Kab t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_4_Kab t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_4_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_B_4_P t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_4_P t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_4_P+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_B_4_Rpa t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_4_Rpa t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_4_Rpa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_4'', s(MV ''Rpa'' tid0), LN ''Rb'' tid0,                s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_B_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_4_Text3 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_4_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_B_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_4_Text6 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_4_Text6+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_4'', s(MV ''Rpa'' tid0), LN ''Rb'' tid0,                s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_2_6_udkey_B_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_4_Text7 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_B_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_B_text_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_B_text_5_Text9 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_B_text_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_2_A t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_2_A t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_2_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_2_B t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_2_B t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_2_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_2_Ra t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_2_Ra t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_2_Rb t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_2_Text2 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_text_3_Text3 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_text_3_Text3 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_text_3_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_2_6_udkey_P_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_2_6_udkey_P_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_2_6_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_2_6_udkey_P_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_2_6_udkey_msc_typing_state t r s" by unfold_locales auto@@ -2055,11 +2144,11 @@   shows "False" using facts proof(sources! " LN ''Kab'' tid0 ")   case isoiec_9798_2_6_udkey_P_3_Kab note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)+  thus ?thesis by (auto dest!: ltk_secrecy) next   case isoiec_9798_2_6_udkey_P_3_Kab_1 note_unified facts = this facts-  thus ?thesis by (fastforce dest!: ltk_secrecy)-qed (insert facts, fastforce+)?+  thus ?thesis by (auto dest!: ltk_secrecy)+qed (safe?, simp_all?, insert facts, (fastforce+)?)  lemma (in restricted_isoiec_9798_2_6_udkey_state) A_secret_Kab:   assumes facts:@@ -2078,11 +2167,11 @@                        |}                        ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_6_udkey_P_3_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_6_udkey_state) B_secret_Kab:@@ -2102,11 +2191,11 @@                        |}                        ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_2_6_udkey_P_3_enc_1 tid1) note_unified facts = this facts     thus ?thesis by (fastforce dest: P_secret_Kab intro: event_predOrdI)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_2_6_udkey_state) A_injective_agreement_B:@@ -2144,7 +2233,7 @@                            |}                            ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_udkey_P_3_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2175,10 +2264,10 @@             next               case (isoiec_9798_2_6_udkey_A_4_enc tid3) note_unified facts = this facts               thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-            qed (insert facts, fastforce+)?-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+            qed (safe?, simp_all?, insert facts, (fastforce+)?)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2227,7 +2316,7 @@                            |}                            ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_udkey_P_3_enc_1 tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2249,9 +2338,9 @@           next             case (isoiec_9798_2_6_udkey_P_3_enc tid3) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2298,11 +2387,11 @@                            |}                            ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_udkey_P_3_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2349,11 +2438,11 @@                            |}                            ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_2_6_udkey_P_3_enc_1 tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this
data/examples/iso9798/isabelle-proofs/isoiec-9798-3_cert_auto.thy view
@@ -45,40 +45,46 @@   have "(t,r,s) : approx isoiec_9798_3_1_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_3_1_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_3_1_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_1_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_1_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_1_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_1_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_3_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_1_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_1_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_3_1_B_1_A t r s tid0)     then interpret state: isoiec_9798_3_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_1_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_1_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_3_1_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_3_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_1_B_1_TNA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_1_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_1_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_1_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_1_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_1_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_3_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_1_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_3_1_msc_typing_state t r s" by unfold_locales auto@@ -158,11 +164,11 @@                        |}                        ( SK ( s(MV ''A'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_3_1_A_1_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  role isoiec_9798_3_2_A@@ -212,52 +218,60 @@   have "(t,r,s) : approx isoiec_9798_3_2_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_3_2_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_3_2_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_3_2_A_1_B t r s tid0)     then interpret state: isoiec_9798_3_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_2_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_3_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_2_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_2_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_2_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_B_2_Ra t r s tid0) note facts = this+    case (isoiec_9798_3_2_B_2_Ra t r s tid0)     then interpret state: isoiec_9798_3_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_B_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_2_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_B_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_2_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_2_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_2_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_3_2_msc_typing_state t r s" by unfold_locales auto@@ -346,11 +360,11 @@                            |}                            ( SK ( s(AV ''A'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_2_A_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -425,70 +439,81 @@   have "(t,r,s) : approx isoiec_9798_3_3_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_3_3_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_3_3_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_3_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_3_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_3_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_3_3_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_A_2_TNB t r s tid0) note facts = this+    case (isoiec_9798_3_3_A_2_TNB t r s tid0)     then interpret state: isoiec_9798_3_3_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_A_2_TNB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_3_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_3_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_A_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_3_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_3_3_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_3_3_B_1_A t r s tid0)     then interpret state: isoiec_9798_3_3_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_3_3_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_3_3_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_B_1_TNA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_3_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_3_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_3_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_3_3_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_3_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_3_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_3_B_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_3_B_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_3_3_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_3_B_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_3_3_msc_typing_state t r s" by unfold_locales auto@@ -568,11 +593,11 @@                        |}                        ( SK ( s(AV ''B'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_3_3_B_2_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_3_3_state) B_non_injective_agreement:@@ -597,11 +622,11 @@                        |}                        ( SK ( s(MV ''A'' tid0) ) ) ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_3_3_A_1_enc tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  role isoiec_9798_3_4_A@@ -668,76 +693,88 @@   have "(t,r,s) : approx isoiec_9798_3_4_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_3_4_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_3_4_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_1_B t r s tid0)     then interpret state: isoiec_9798_3_4_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_A_1_RB t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_1_RB t r s tid0)     then interpret state: isoiec_9798_3_4_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_1_RB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_4_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_4_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_4_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_3_4_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_4_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_4_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_B_2_RA t r s tid0) note facts = this+    case (isoiec_9798_3_4_B_2_RA t r s tid0)     then interpret state: isoiec_9798_3_4_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_B_2_RA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_4_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_4_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_B_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_4_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_4_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_B_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_4_B_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_3_4_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_B_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_4_B_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_4_B_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_4_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_4_B_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_3_4_msc_typing_state t r s" by unfold_locales auto@@ -827,7 +864,7 @@                            |}                            ( SK ( s(MV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_4_B_3_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -836,12 +873,12 @@                              |}                              ( SK ( s(AV ''A'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_4_A_2_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -886,11 +923,11 @@                            |}                            ( SK ( s(AV ''A'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_4_A_2_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -973,82 +1010,95 @@   have "(t,r,s) : approx isoiec_9798_3_5_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_3_5_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_3_5_A_2_RB t r s tid0) note facts = this+    case (isoiec_9798_3_5_A_2_RB t r s tid0)     then interpret state: isoiec_9798_3_5_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_A_2_RB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_A_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_5_A_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_5_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_A_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_5_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_5_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_A_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_5_A_3_Text6 t r s tid0)     then interpret state: isoiec_9798_3_5_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_A_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_A_text_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_5_A_text_4_Text3 t r s tid0)     then interpret state: isoiec_9798_3_5_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_A_text_4_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_A_text_4_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_5_A_text_4_Text4 t r s tid0)     then interpret state: isoiec_9798_3_5_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_A_text_4_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_1_A t r s tid0)     then interpret state: isoiec_9798_3_5_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_1_RA t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_1_RA t r s tid0)     then interpret state: isoiec_9798_3_5_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_1_RA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_5_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_5_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_text_3_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_text_3_Text6 t r s tid0)     then interpret state: isoiec_9798_3_5_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_text_3_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_4_Text3 t r s tid0)     then interpret state: isoiec_9798_3_5_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_4_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_5_B_4_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_5_B_4_Text4 t r s tid0)     then interpret state: isoiec_9798_3_5_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_5_B_4_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_3_5_msc_typing_state t r s" by unfold_locales auto@@ -1137,11 +1187,11 @@                            |}                            ( SK ( s(AV ''B'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_5_B_3_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1187,7 +1237,7 @@                            |}                            ( SK ( s(MV ''A'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_5_A_4_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -1196,12 +1246,12 @@                              |}                              ( SK ( s(AV ''B'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_5_B_3_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1344,52 +1394,60 @@   have "(t,r,s) : approx isoiec_9798_3_6_1_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_3_6_1_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_3_6_1_A_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_2_Rb t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_2_TokenBA t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_2_TokenBA t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_2_TokenBA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_4_Text6 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_4_Text7 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_4_TokenTA_for_B t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_4_TokenTA_for_B t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_4_TokenTA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_4_pkB t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_4_pkB t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_4_pkB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_check_4_in_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_check_4_in_Text2 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_check_4_in_Text2+    thus ?case     proof(sources! "         Enc {| LC ''check_4'',                {| LC ''isoiec_9798_3_6_opt_1_sig_2'', s(AV ''B'' tid0), LN ''Ra'' tid0,@@ -1401,126 +1459,146 @@                    ( inv(s(MV ''pkB'' tid0)) )             |}             ( LN ''check_nonce_4'' tid0 ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_3_6_1_A_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_A_text_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_A_text_5_Text9 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_A_text_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_1_A t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_1_Ra t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_1_Ra t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_1_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_5_T t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_5_T t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_5_T+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_5_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_5_Text5 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_5_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_5_Text9 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_B_5_pkA t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_B_5_pkA t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_B_5_pkA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_3_A t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_3_A t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_3_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_3_B t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_3_B t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_3_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_3_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_3_Rb t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_3_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_3_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_3_Rpa t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_3_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_3_Text4 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_text_4_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_text_4_Text5 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_text_4_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_text_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_text_4_Text6 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_text_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_1_T_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_3_6_1_T_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_3_6_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_1_T_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_3_6_1_msc_typing_state t r s" by unfold_locales auto@@ -1617,7 +1695,7 @@                            ( LN ''check_nonce_4'' tid0 ) ")         case fake note_unified facts = this facts         thus ?thesis proof(sources! " LN ''check_nonce_4'' tid0 ")-        qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)       next         case (isoiec_9798_3_6_1_A_check_4_out_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -1632,16 +1710,16 @@                                |}                                ( SK ( s(AV ''T'' tid0) ) ) ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_3_6_1_T_4_enc tid1) note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)-          qed (insert facts, fastforce+)?+            thus ?thesis by (auto dest!: ltk_secrecy)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         next           case (isoiec_9798_3_6_1_B_2_enc tid1) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1687,7 +1765,7 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_6_1_T_4_enc_1 tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -1697,12 +1775,12 @@                              |}                              ( SK ( s(MV ''A'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_6_1_A_5_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1747,11 +1825,11 @@                            |}                            ( SK ( s(AV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_6_1_T_4_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1796,11 +1874,11 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_6_1_T_4_enc_1 tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -1945,46 +2023,53 @@   have "(t,r,s) : approx isoiec_9798_3_6_2_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_3_6_2_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_3_6_2_A_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_2_Rb t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_2_TokenBA t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_2_TokenBA t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_2_TokenBA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_4_Text7 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_4_TokenTA t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_4_TokenTA t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_4_TokenTA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_4_pkB t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_4_pkB t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_4_pkB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_check_4_in_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_check_4_in_Text2 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_check_4_in_Text2+    thus ?case     proof(sources! "         Enc {| LC ''check_4'',                {| {| LC ''isoiec_9798_3_6_opt_2_sig_4'', LN ''Rpa'' tid0,@@ -2006,12 +2091,13 @@                    ( inv(s(MV ''pkB'' tid0)) )             |}             ( LN ''check_nonce_4'' tid0 ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_3_6_2_A_check_4_in_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_check_4_in_Text5 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_check_4_in_Text5+    thus ?case     proof(sources! "         Enc {| LC ''check_4'',                {| {| LC ''isoiec_9798_3_6_opt_2_sig_4'', LN ''Rpa'' tid0,@@ -2033,12 +2119,13 @@                    ( inv(s(MV ''pkB'' tid0)) )             |}             ( LN ''check_nonce_4'' tid0 ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_3_6_2_A_check_4_in_pkA t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_check_4_in_pkA t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_check_4_in_pkA+    thus ?case     proof(sources! "         Enc {| LC ''check_4'',                {| {| LC ''isoiec_9798_3_6_opt_2_sig_4'', LN ''Rpa'' tid0,@@ -2060,132 +2147,153 @@                    ( inv(s(MV ''pkB'' tid0)) )             |}             ( LN ''check_nonce_4'' tid0 ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_3_6_2_A_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_A_text_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_A_text_5_Text9 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_A_text_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_1_A t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_1_Ra t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_1_Ra t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_1_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_Rpa t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_T t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_T t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_T+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_Text5 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_Text9 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_pkA t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_pkA t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_pkA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_B_5_pkB t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_B_5_pkB t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_B_5_pkB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_3_A t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_3_A t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_3_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_3_B t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_3_B t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_3_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_3_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_3_Rb t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_3_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_3_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_3_Rpa t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_3_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_3_Text4 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_text_4_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_text_4_Text5 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_text_4_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_6_2_T_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_3_6_2_T_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_3_6_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_6_2_T_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_3_6_2_msc_typing_state t r s" by unfold_locales auto@@ -2292,7 +2400,7 @@                            ( LN ''check_nonce_4'' tid0 ) ")         case fake note_unified facts = this facts         thus ?thesis proof(sources! " LN ''check_nonce_4'' tid0 ")-        qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)       next         case (isoiec_9798_3_6_2_A_check_4_out_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2308,16 +2416,16 @@                                |}                                ( SK ( s(AV ''T'' tid0) ) ) ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_3_6_2_T_4_enc tid1) note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)-          qed (insert facts, fastforce+)?+            thus ?thesis by (auto dest!: ltk_secrecy)+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         next           case (isoiec_9798_3_6_2_B_2_enc tid1) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2364,7 +2472,7 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_6_2_T_4_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2374,12 +2482,12 @@                              |}                              ( SK ( s(MV ''A'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_6_2_A_5_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2443,7 +2551,7 @@                            ( LN ''check_nonce_4'' tid0 ) ")         case fake note_unified facts = this facts         thus ?thesis proof(sources! " LN ''check_nonce_4'' tid0 ")-        qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)       next         case (isoiec_9798_3_6_2_A_check_4_out_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2453,12 +2561,12 @@                              |}                              ( SK ( s(AV ''T'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_6_2_T_4_enc tid1) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2506,11 +2614,11 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_6_2_T_4_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2645,166 +2753,193 @@   have "(t,r,s) : approx isoiec_9798_3_7_1_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_3_7_1_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_3_7_1_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_1_B t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_3_TokenTA_for_B t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_3_TokenTA_for_B t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_3_TokenTA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_3_pkB t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_3_pkB t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_3_pkB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_text_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_text_4_Text6 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_text_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_A_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_A_5_Text9 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_A_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_Ra t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_Ra t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_Rpa t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_T t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_T t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_T+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_Text3 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_Text6 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_Text9 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_4_pkA t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_4_pkA t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_4_pkA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_B_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_B_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_B_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_2_A t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_2_A t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_2_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_2_B t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_2_B t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_2_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_2_Rb t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_2_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_2_Rpa t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_2_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_text_3_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_text_3_Text3 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_text_3_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_1_T_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_7_1_T_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_7_1_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_1_T_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_3_7_1_msc_typing_state t r s" by unfold_locales auto@@ -2894,7 +3029,7 @@                            |}                            ( SK ( s(AV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_7_1_T_3_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2904,12 +3039,12 @@                              |}                              ( SK ( s(MV ''B'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_7_1_B_5_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -2955,7 +3090,7 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_7_1_T_3_enc_1 tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -2965,12 +3100,12 @@                              |}                              ( SK ( s(AV ''A'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_7_1_A_4_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3015,11 +3150,11 @@                            |}                            ( SK ( s(AV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_7_1_T_3_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3064,11 +3199,11 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_7_1_T_3_enc_1 tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3208,46 +3343,53 @@   have "(t,r,s) : approx isoiec_9798_3_7_2_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_3_7_2_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_3_7_2_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_1_B t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_3_TokenTA t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_3_TokenTA t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_3_TokenTA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_3_pkB t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_3_pkB t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_3_pkB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_check_3_in_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_check_3_in_Text3 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_check_3_in_Text3+    thus ?case     proof(sources! "         Enc {| LC ''check_4'',                {| LC ''isoiec_9798_3_7_opt_2_sig_3'', LN ''Rpa'' tid0,@@ -3261,12 +3403,13 @@                    ( SK ( s(AV ''T'' tid0) ) )             |}             ( LN ''check_nonce_4'' tid0 ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_3_7_2_A_check_3_in_pkA t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_check_3_in_pkA t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_check_3_in_pkA+    thus ?case     proof(sources! "         Enc {| LC ''check_4'',                {| LC ''isoiec_9798_3_7_opt_2_sig_3'', LN ''Rpa'' tid0,@@ -3280,126 +3423,146 @@                    ( SK ( s(AV ''T'' tid0) ) )             |}             ( LN ''check_nonce_4'' tid0 ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (isoiec_9798_3_7_2_A_text_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_text_4_Text6 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_text_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_text_4_Text7 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_text_4_Text7 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_text_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_A_5_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_A_5_Text9 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_A_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_Ra t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_Ra t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_Rpa t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_T t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_T t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_T+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_Text3 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_Text6 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_Text6 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_Text9 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_Text9 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_pkA t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_pkA t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_pkA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_4_pkB t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_4_pkB t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_4_pkB+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_B_text_5_Text8 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_B_text_5_Text8 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_B_text_5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_2_A t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_2_A t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_2_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_2_B t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_2_B t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_2_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_2_Rb t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_2_Rb t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_2_Rpa t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_2_Rpa t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_2_Rpa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_2_Text2 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_text_3_Text3 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_text_3_Text3 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_text_3_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_3_7_2_T_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_3_7_2_T_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_3_7_2_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_3_7_2_T_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_3_7_2_msc_typing_state t r s" by unfold_locales auto@@ -3498,7 +3661,7 @@                            ( LN ''check_nonce_4'' tid0 ) ")         case fake note_unified facts = this facts         thus ?thesis proof(sources! " LN ''check_nonce_4'' tid0 ")-        qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)       next         case (isoiec_9798_3_7_2_A_check_3_out_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -3508,7 +3671,7 @@                              |}                              ( SK ( s(AV ''T'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_7_2_T_3_enc tid1) note_unified facts = this facts           thus ?thesis proof(sources! "@@ -3518,13 +3681,13 @@                                |}                                ( SK ( s(MV ''B'' tid0) ) ) ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_3_7_2_B_5_enc tid2) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3571,7 +3734,7 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_7_2_T_3_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -3581,12 +3744,12 @@                              |}                              ( SK ( s(AV ''A'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_7_2_A_4_enc tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3642,7 +3805,7 @@                            ( LN ''check_nonce_4'' tid0 ) ")         case fake note_unified facts = this facts         thus ?thesis proof(sources! " LN ''check_nonce_4'' tid0 ")-        qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)       next         case (isoiec_9798_3_7_2_A_check_3_out_enc tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -3652,12 +3815,12 @@                              |}                              ( SK ( s(AV ''T'' tid0) ) ) ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_3_7_2_T_3_enc tid1) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -3705,11 +3868,11 @@                            |}                            ( SK ( s(MV ''T'' tid0) ) ) ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_3_7_2_T_3_enc tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this
data/examples/iso9798/isabelle-proofs/isoiec-9798-4-bdkey_cert_auto.thy view
@@ -51,40 +51,46 @@   have "(t,r,s) : approx isoiec_9798_4_1_bdkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_4_1_bdkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_4_1_bdkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_1_bdkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_1_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_bdkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_bdkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_1_bdkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_1_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_bdkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_bdkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_4_1_bdkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_4_1_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_bdkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_bdkey_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_4_1_bdkey_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_4_1_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_bdkey_B_1_TNA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_bdkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_1_bdkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_1_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_bdkey_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_bdkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_1_bdkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_1_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_bdkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_4_1_bdkey_msc_typing_state t r s" by unfold_locales auto@@ -165,11 +171,11 @@                            s(MV ''Text1'' tid0)                         |} ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_4_1_bdkey_A_1_hash tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  role isoiec_9798_4_2_bdkey_A@@ -225,46 +231,53 @@   have "(t,r,s) : approx isoiec_9798_4_2_bdkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_4_2_bdkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_4_2_bdkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_4_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_bdkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_4_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_bdkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_bdkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_bdkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_bdkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_B_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_bdkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_2_bdkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_2_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_bdkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_4_2_bdkey_msc_typing_state t r s" by unfold_locales auto@@ -354,11 +367,11 @@                                s(MV ''Text2'' tid0)                             |} ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_4_2_bdkey_A_2_hash tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -444,70 +457,81 @@   have "(t,r,s) : approx isoiec_9798_4_3_bdkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_4_3_bdkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_4_3_bdkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_A_2_TNb t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_A_2_TNb t r s tid0)     then interpret state: isoiec_9798_4_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_A_2_TNb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_A_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_4_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_4_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_B_1_TNa t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_B_1_TNa t r s tid0)     then interpret state: isoiec_9798_4_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_B_1_TNa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_bdkey_B_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_3_bdkey_B_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_4_3_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_bdkey_B_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_4_3_bdkey_msc_typing_state t r s" by unfold_locales auto@@ -588,11 +612,11 @@                            s(MV ''Text3'' tid0)                         |} ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_4_3_bdkey_B_2_hash tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_4_3_bdkey_state) B_non_injective_agreement:@@ -618,11 +642,11 @@                            s(MV ''Text1'' tid0)                         |} ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_4_3_bdkey_A_1_hash tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  role isoiec_9798_4_4_bdkey_A@@ -700,76 +724,88 @@   have "(t,r,s) : approx isoiec_9798_4_4_bdkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_4_4_bdkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_4_4_bdkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_4_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_4_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_4_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_4_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_B_2_Ra t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_B_2_Ra t r s tid0)     then interpret state: isoiec_9798_4_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_B_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_B_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_B_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_B_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_4_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_B_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_bdkey_B_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_4_4_bdkey_B_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_4_4_bdkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_bdkey_B_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_4_4_bdkey_msc_typing_state t r s" by unfold_locales auto@@ -859,7 +895,7 @@                                s(MV ''Text4'' tid0)                             |} ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_4_4_bdkey_B_3_hash tid1) note_unified facts = this facts         hence "Kbd ( s(AV ''A'' tid1) )@@ -873,11 +909,11 @@                                    s(AV ''B'' tid1), s(MV ''Text2'' tid1)                                 |} ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_4_4_bdkey_A_2_hash tid2) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         next           case swapped note_unified facts = this facts           thus ?thesis proof(sources! "@@ -886,13 +922,13 @@                                    s(AV ''A'' tid0), s(MV ''Text2'' tid1)                                 |} ")             case fake note_unified facts = this facts-            thus ?thesis by (fastforce dest!: ltk_secrecy)+            thus ?thesis by (auto dest!: ltk_secrecy)           next             case (isoiec_9798_4_4_bdkey_A_2_hash tid2) note_unified facts = this facts             thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-          qed (insert facts, fastforce+)?+          qed (safe?, simp_all?, insert facts, (fastforce+)?)         qed (fastforce+)?-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -938,11 +974,11 @@                                s(AV ''B'' tid0), s(MV ''Text2'' tid0)                             |} ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_4_4_bdkey_A_2_hash tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this
data/examples/iso9798/isabelle-proofs/isoiec-9798-4-udkey_cert_auto.thy view
@@ -51,40 +51,46 @@   have "(t,r,s) : approx isoiec_9798_4_1_udkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_4_1_udkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_4_1_udkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_1_udkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_1_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_udkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_udkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_1_udkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_1_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_udkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_udkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_4_1_udkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_4_1_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_udkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_udkey_B_1_TNA t r s tid0) note facts = this+    case (isoiec_9798_4_1_udkey_B_1_TNA t r s tid0)     then interpret state: isoiec_9798_4_1_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_udkey_B_1_TNA+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_udkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_1_udkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_1_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_udkey_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_1_udkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_1_udkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_1_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_1_udkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_4_1_udkey_msc_typing_state t r s" by unfold_locales auto@@ -164,11 +170,11 @@                            LC ''isoiec_9798_4_1_ccf_1'', s(MV ''TNA'' tid0), s(MV ''Text1'' tid0)                         |} ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_4_1_udkey_A_1_hash tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  role isoiec_9798_4_2_udkey_A@@ -224,46 +230,53 @@   have "(t,r,s) : approx isoiec_9798_4_2_udkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_4_2_udkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_4_2_udkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_4_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_udkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_4_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_udkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_udkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_udkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_udkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_B_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_2_udkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_2_udkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_2_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_2_udkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_4_2_udkey_msc_typing_state t r s" by unfold_locales auto@@ -352,11 +365,11 @@                                LC ''isoiec_9798_4_2_ccf_2'', LN ''Rb'' tid0, s(MV ''Text2'' tid0)                             |} ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_4_2_udkey_A_2_hash tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -442,70 +455,81 @@   have "(t,r,s) : approx isoiec_9798_4_3_udkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_4_3_udkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_4_3_udkey_A_text_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_A_text_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_A_text_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_A_text_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_A_text_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_A_text_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_A_2_TNb t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_A_2_TNb t r s tid0)     then interpret state: isoiec_9798_4_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_A_2_TNb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_A_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_A_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_A_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_A_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_A_2_Text4 t r s tid0)     then interpret state: isoiec_9798_4_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_A_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_B_1_A t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_B_1_A t r s tid0)     then interpret state: isoiec_9798_4_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_B_1_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_B_1_TNa t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_B_1_TNa t r s tid0)     then interpret state: isoiec_9798_4_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_B_1_TNa+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_B_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_B_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_B_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_B_1_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_B_1_Text2 t r s tid0)     then interpret state: isoiec_9798_4_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_B_1_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_B_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_B_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_B_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_3_udkey_B_text_2_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_3_udkey_B_text_2_Text4 t r s tid0)     then interpret state: isoiec_9798_4_3_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_3_udkey_B_text_2_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_4_3_udkey_msc_typing_state t r s" by unfold_locales auto@@ -585,11 +609,11 @@                            LC ''isoiec_9798_4_3_ccf_2'', s(MV ''TNb'' tid0), s(MV ''Text3'' tid0)                         |} ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_4_3_udkey_B_2_hash tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  lemma (in restricted_isoiec_9798_4_3_udkey_state) B_non_injective_agreement:@@ -614,11 +638,11 @@                            LC ''isoiec_9798_4_3_ccf_1'', s(MV ''TNa'' tid0), s(MV ''Text1'' tid0)                         |} ")     case fake note_unified facts = this facts-    thus ?thesis by (fastforce dest!: ltk_secrecy)+    thus ?thesis by (auto dest!: ltk_secrecy)   next     case (isoiec_9798_4_3_udkey_A_1_hash tid1) note_unified facts = this facts     thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-  qed (insert facts, fastforce+)?+  qed (safe?, simp_all?, insert facts, (fastforce+)?) qed  role isoiec_9798_4_4_udkey_A@@ -694,76 +718,88 @@   have "(t,r,s) : approx isoiec_9798_4_4_udkey_msc_typing"   proof(cases rule: reachable_in_approxI_ext         [OF isoiec_9798_4_4_udkey_msc_typing.monoTyp, completeness_cases_rule])-    case (isoiec_9798_4_4_udkey_A_1_B t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_1_B t r s tid0)     then interpret state: isoiec_9798_4_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_A_1_Rb t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_1_Rb t r s tid0)     then interpret state: isoiec_9798_4_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_A_1_Text1 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_1_Text1 t r s tid0)     then interpret state: isoiec_9798_4_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_A_text_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_text_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_text_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_A_text_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_text_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_text_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_A_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_3_Text4 t r s tid0)     then interpret state: isoiec_9798_4_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_A_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_A_3_Text5 t r s tid0)     then interpret state: isoiec_9798_4_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_B_2_Ra t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_B_2_Ra t r s tid0)     then interpret state: isoiec_9798_4_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_B_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_B_2_Text2 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_B_2_Text2 t r s tid0)     then interpret state: isoiec_9798_4_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_B_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_B_2_Text3 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_B_2_Text3 t r s tid0)     then interpret state: isoiec_9798_4_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_B_2_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_B_text_3_Text4 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_B_text_3_Text4 t r s tid0)     then interpret state: isoiec_9798_4_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_B_text_3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (isoiec_9798_4_4_udkey_B_text_3_Text5 t r s tid0) note facts = this+    case (isoiec_9798_4_4_udkey_B_text_3_Text5 t r s tid0)     then interpret state: isoiec_9798_4_4_udkey_msc_typing_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = isoiec_9798_4_4_udkey_B_text_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "isoiec_9798_4_4_udkey_msc_typing_state t r s" by unfold_locales auto@@ -853,7 +889,7 @@                                s(MV ''Text4'' tid0)                             |} ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_4_4_udkey_B_3_hash tid1) note_unified facts = this facts         thus ?thesis proof(sources! "@@ -862,12 +898,12 @@                                  s(MV ''Text2'' tid1)                               |} ")           case fake note_unified facts = this facts-          thus ?thesis by (fastforce dest!: ltk_secrecy)+          thus ?thesis by (auto dest!: ltk_secrecy)         next           case (isoiec_9798_4_4_udkey_A_2_hash tid2) note_unified facts = this facts           thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-        qed (insert facts, fastforce+)?-      qed (insert facts, fastforce+)?+        qed (safe?, simp_all?, insert facts, (fastforce+)?)+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this@@ -913,11 +949,11 @@                                s(MV ''Text2'' tid0)                             |} ")         case fake note_unified facts = this facts-        thus ?thesis by (fastforce dest!: ltk_secrecy)+        thus ?thesis by (auto dest!: ltk_secrecy)       next         case (isoiec_9798_4_4_udkey_A_2_hash tid1) note_unified facts = this facts         thus ?thesis by (fastforce intro: event_predOrdI split: if_splits)-      qed (insert facts, fastforce+)?+      qed (safe?, simp_all?, insert facts, (fastforce+)?)     qed   }   note niagree = this
data/examples/iso9798/isabelle-proofs/isoiec-9798_cert_auto.thy view
@@ -219,402 +219,456 @@   have "(t,r,s) : approx typing_2_6"   proof(cases rule: reachable_in_approxI_ext         [OF typing_2_6.monoTyp, completeness_cases_rule])-    case (A_1_B t r s tid0) note facts = this+    case (A_1_B t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = A_1_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (A_1_Rb t r s tid0) note facts = this+    case (A_1_Rb t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = A_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (A_1_Text1 t r s tid0) note facts = this+    case (A_1_Text1 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = A_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (A_3_Kab t r s tid0) note facts = this+    case (A_3_Kab t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = A_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(MV ''B'' tid0), s(MV ''Text4'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (A_3_Text4 t r s tid0) note facts = this+    case (A_3_Text4 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = A_3_Text4+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(MV ''B'' tid0), s(MV ''Text4'' tid0)             |}             ( K ( s(AV ''A'' tid0) ) ( s(AV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (A_3_Text5 t r s tid0) note facts = this+    case (A_3_Text5 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = A_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (A_3_TokenPA_for_B t r s tid0) note facts = this+    case (A_3_TokenPA_for_B t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = A_3_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (A_text4_Text6 t r s tid0) note facts = this+    case (A_text4_Text6 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = A_text4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (A_text4_Text7 t r s tid0) note facts = this+    case (A_text4_Text7 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = A_text4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (A_5_Text8 t r s tid0) note facts = this+    case (A_5_Text8 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = A_5_Text8+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_5'', s(MV ''Rb'' tid0), LN ''Rpa'' tid0,                s(MV ''Text8'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (A_5_Text9 t r s tid0) note facts = this+    case (A_5_Text9 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = A_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Abd_1_Bbd t r s tid0) note facts = this+    case (Abd_1_Bbd t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Abd_1_Bbd+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Abd_1_Rb t r s tid0) note facts = this+    case (Abd_1_Rb t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Abd_1_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Abd_1_Text1 t r s tid0) note facts = this+    case (Abd_1_Text1 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Abd_1_Text1+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Abd_3_Kab t r s tid0) note facts = this+    case (Abd_3_Kab t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Abd_3_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(AV ''Abd'' tid0), s(MV ''Bbd'' tid0),                s(MV ''Text4'' tid0)             |}             ( Kbd ( s(AV ''Abd'' tid0) ) ( s(AV ''Pbd'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (Abd_3_Text4 t r s tid0) note facts = this+    case (Abd_3_Text4 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Abd_3_Text4+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_1'', LN ''Ra'' tid0,                s(MV ''Kab'' tid0), s(AV ''Abd'' tid0), s(MV ''Bbd'' tid0),                s(MV ''Text4'' tid0)             |}             ( Kbd ( s(AV ''Abd'' tid0) ) ( s(AV ''Pbd'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (Abd_3_Text5 t r s tid0) note facts = this+    case (Abd_3_Text5 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Abd_3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Abd_3_TokenPA_for_B t r s tid0) note facts = this+    case (Abd_3_TokenPA_for_B t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Abd_3_TokenPA_for_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Abd_text4_Text6 t r s tid0) note facts = this+    case (Abd_text4_Text6 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Abd_text4_Text6+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Abd_text4_Text7 t r s tid0) note facts = this+    case (Abd_text4_Text7 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Abd_text4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Abd_5_Text8 t r s tid0) note facts = this+    case (Abd_5_Text8 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Abd_5_Text8+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_5'', s(MV ''Rb'' tid0), LN ''Rpa'' tid0,                s(MV ''Text8'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (Abd_5_Text9 t r s tid0) note facts = this+    case (Abd_5_Text9 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Abd_5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (B_4_Kab t r s tid0) note facts = this+    case (B_4_Kab t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = B_4_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (B_4_P t r s tid0) note facts = this+    case (B_4_P t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = B_4_P+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (B_4_Rpa t r s tid0) note facts = this+    case (B_4_Rpa t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = B_4_Rpa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_4'', s(MV ''Rpa'' tid0), LN ''Rb'' tid0,                s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (B_4_Text3 t r s tid0) note facts = this+    case (B_4_Text3 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = B_4_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''A'' tid0), s(MV ''Text3'' tid0)             |}             ( K ( s(AV ''B'' tid0) ) ( s(MV ''P'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (B_4_Text6 t r s tid0) note facts = this+    case (B_4_Text6 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = B_4_Text6+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_4'', s(MV ''Rpa'' tid0), LN ''Rb'' tid0,                s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (B_4_Text7 t r s tid0) note facts = this+    case (B_4_Text7 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = B_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (B_text5_Text8 t r s tid0) note facts = this+    case (B_text5_Text8 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = B_text5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (B_text5_Text9 t r s tid0) note facts = this+    case (B_text5_Text9 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = B_text5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Bbd_4_Kab t r s tid0) note facts = this+    case (Bbd_4_Kab t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Bbd_4_Kab+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''Abd'' tid0), s(AV ''Bbd'' tid0),                s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''Bbd'' tid0) ) ( s(MV ''Pbd'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (Bbd_4_Pbd t r s tid0) note facts = this+    case (Bbd_4_Pbd t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Bbd_4_Pbd+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Bbd_4_Rpa t r s tid0) note facts = this+    case (Bbd_4_Rpa t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Bbd_4_Rpa+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_4'', s(MV ''Rpa'' tid0), LN ''Rb'' tid0,                s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (Bbd_4_Text3 t r s tid0) note facts = this+    case (Bbd_4_Text3 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Bbd_4_Text3+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_3_2'', LN ''Rb'' tid0,                s(MV ''Kab'' tid0), s(AV ''Abd'' tid0), s(AV ''Bbd'' tid0),                s(MV ''Text3'' tid0)             |}             ( Kbd ( s(AV ''Bbd'' tid0) ) ( s(MV ''Pbd'' tid0) ) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (Bbd_4_Text6 t r s tid0) note facts = this+    case (Bbd_4_Text6 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Bbd_4_Text6+    thus ?case     proof(sources! "         Enc {| LC ''isoiec_9798_2_6_enc_4'', s(MV ''Rpa'' tid0), LN ''Rb'' tid0,                s(MV ''Text6'' tid0)             |}             ( s(MV ''Kab'' tid0) ) ")-    qed (insert facts, ((fastforce intro: event_predOrdI split: if_splits))+)?+    qed (safe?, simp_all?, insert facts, (((fastforce intro: event_predOrdI split: if_splits))+)?)   next-    case (Bbd_4_Text7 t r s tid0) note facts = this+    case (Bbd_4_Text7 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Bbd_4_Text7+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Bbd_text5_Text8 t r s tid0) note facts = this+    case (Bbd_text5_Text8 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Bbd_text5_Text8+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Bbd_text5_Text9 t r s tid0) note facts = this+    case (Bbd_text5_Text9 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Bbd_text5_Text9+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (P_2_A t r s tid0) note facts = this+    case (P_2_A t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = P_2_A+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (P_2_B t r s tid0) note facts = this+    case (P_2_B t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = P_2_B+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (P_2_Ra t r s tid0) note facts = this+    case (P_2_Ra t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = P_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (P_2_Rb t r s tid0) note facts = this+    case (P_2_Rb t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = P_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (P_2_Text2 t r s tid0) note facts = this+    case (P_2_Text2 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = P_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (P_text3_Text3 t r s tid0) note facts = this+    case (P_text3_Text3 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = P_text3_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (P_text3_Text4 t r s tid0) note facts = this+    case (P_text3_Text4 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = P_text3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (P_text3_Text5 t r s tid0) note facts = this+    case (P_text3_Text5 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = P_text3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Pbd_2_Abd t r s tid0) note facts = this+    case (Pbd_2_Abd t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Pbd_2_Abd+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Pbd_2_Bbd t r s tid0) note facts = this+    case (Pbd_2_Bbd t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Pbd_2_Bbd+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Pbd_2_Ra t r s tid0) note facts = this+    case (Pbd_2_Ra t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Pbd_2_Ra+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Pbd_2_Rb t r s tid0) note facts = this+    case (Pbd_2_Rb t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Pbd_2_Rb+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Pbd_2_Text2 t r s tid0) note facts = this+    case (Pbd_2_Text2 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Pbd_2_Text2+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Pbd_text3_Text3 t r s tid0) note facts = this+    case (Pbd_text3_Text3 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Pbd_text3_Text3+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Pbd_text3_Text4 t r s tid0) note facts = this+    case (Pbd_text3_Text4 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Pbd_text3_Text4+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   next-    case (Pbd_text3_Text5 t r s tid0) note facts = this+    case (Pbd_text3_Text5 t r s tid0)     then interpret state: typing_2_6_state t r s       by unfold_locales auto-    show ?case using facts+    note_prefix_closed (state) facts = Pbd_text3_Text5+    thus ?case     by (fastforce intro: event_predOrdI split: if_splits)   qed   thus "typing_2_6_state t r s" by unfold_locales auto
data/isabelle/README view
@@ -1,10 +1,12 @@-README: The scyther-proof security protocol verification tool-=============================================================+The scyther-proof security protocol verification tool+===================================================== -Authors: Simon Meier <iridcode@gmail.com>-Creation Date: 2011-05-13-Last Updated:  2014-01-31 by Andreas Lochbihler <andreas.lochbihler@inf.ethz.ch>+![master branch build-status](https://travis-ci.org/meiersi/scyther-proof.svg?branch=master) +- Authors: Simon Meier <iridcode@gmail.com>, Andreas Lochbihler <andreas.lochbihler@inf.ethz.ch>+- Creation Date: 2011-05-13+- Last Updated:  2015-02-20 by Andreas Lochbihler+ 1. Introduction =============== @@ -55,55 +57,16 @@ 2.2 Installing the Isabelle/HOL theories ---------------------------------------- -Download and install full Isabelle2013-2 according to the installation+Download and install full Isabelle2014 according to the installation instructions at -    http://isabelle.in.tum.de/website-Isabelle2013-2/+    http://isabelle.in.tum.de/website-Isabelle2014/  The first time you call `scyther-proof` with the `--isabelle` flag it will build the logic image of the Isabelle/HOL theories formalizing the security protocol verification theory underlying `scyther-proof`. -If you wish to use ProofGeneral to interactively process the theory files-using our extensions to Isabelle's ISAR proof language, use one of the-following two variants. This is needed in order to make the new ISAR keywords-`role`, `protocol`, `sources`, and `prefix_close` available in the Emacs-frontend. If you are using the Isabelle/jEdit Prover IDE, the keywords are-automatically registered. --Variant a: Brute Force-------------------------Copy the Emacs keywords file provided with the ESPL distribution at--    $SCYTHER_PROOF_HOME/data/isabelle/src/isar-keywords.el--to your local Isabelle configuration in--    $ISABELLE_HOME_USER/etc--This will replace any custom keyword file that you have already-installed in that way. You can find out about $ISABELLE_HOME_USER-by running--    isabelle getenv ISABELLE_HOME_USER---Variant b: Elegance----------------------A more elegant way is to copy the keywords file provided with our-distribution to--    $ISABELLE_HOME_USER/etc/isar-keywords-ESPL.el--and start Isabelle using the -k switch as follows.--    isabelle emacs -k ESPL <your-theory-file.thy>--- 3. Usage ======== @@ -147,20 +110,6 @@    Note that in many case the easiest way to start with constructing    machine-checked proofs interactively is to use a proof script generated by    scyther-proof.--   Using ProofGeneral-   --------------------   In the directory output by scyther-proof, load the Tutorial on interactive-   proof construction using the following commands--        cd <theory-dir-output-by-scytherproof>/src-        isabelle emacs Tutorial.thy--    or if you've chosen the elegant variant for the keywords file--        isabelle emacs -k ESPL Tutorial.thy-     Using the Isabelle/jEdit Prover IDE    -----------------------------------
data/isabelle/document/root.tex view
@@ -1,46 +1,25 @@ \documentclass[11pt,a4paper]{article} \usepackage{isabelle,isabellesym} -% further packages required for unusual symbols (see also-% isabellesym.sty), use only when needed--%\usepackage{amssymb}-  %for \<leadsto>, \<box>, \<diamond>, \<sqsupset>, \<mho>, \<Join>,-  %\<lhd>, \<lesssim>, \<greatersim>, \<lessapprox>, \<greaterapprox>,-  %\<triangleq>, \<yen>, \<lozenge>--%\usepackage[greek,english]{babel}-  %option greek for \<euro>-  %option english (default language) for \<guillemotleft>, \<guillemotright>--%\usepackage[latin1]{inputenc}-  %for \<onesuperior>, \<onequarter>, \<twosuperior>, \<onehalf>,-  %\<threesuperior>, \<threequarters>, \<degree>--%\usepackage[only,bigsqcap]{stmaryrd}-  %for \<Sqinter>--%\usepackage{eufrak}-  %for \<AA> ... \<ZZ>, \<aa> ... \<zz> (also included in amssymb)--%\usepackage{textcomp}-  %for \<cent>, \<currency>--% this should be the last package used \usepackage{pdfsetup}  % urls in roman style, theory text in math-similar italics \urlstyle{rm} \isabellestyle{it} -% for uniform font size-%\renewcommand{\isastyle}{\isastyleminor}+\renewcommand{\isamarkupchapter}[1]{\section{#1}}+\renewcommand{\isamarkupsection}[1]{\subsection{#1}}+\renewcommand{\isamarkupsubsection}[1]{\subsubsection{#1}}+\renewcommand{\isamarkupsubsubsection}[1]{\subsubsection{#1}}+\renewcommand{\isamarkupsect}[1]{\subsection{#1}}+\renewcommand{\isamarkupsubsect}[1]{\subsubsection{#1}}+\renewcommand{\isamarkupsubsubsect}[1]{\subsubsubsection{#1}}   \begin{document} -\title{ESPL}-\author{By simon}+\title{Embedded Security Protocol Logic}+\author{Simon Meier} \maketitle  \tableofcontents
data/isabelle/src/ESPLogic/Automation.thy view
@@ -31,7 +31,7 @@ method_setup sources =   {* ESPL_Methods.sourcesP >>         (fn ((minimal, msg_t), opt_rule) => fn ctxt =>-         METHOD_CASES (fn facts => +         METHOD_CASES (fn facts =>            Seq.DETERM (HEADGOAL (             ESPL_Methods.sources_tac ctxt               minimal msg_t opt_rule facts))))
data/isabelle/src/ESPLogic/Capabilities.thy view
@@ -27,10 +27,10 @@   "unionPart P1 P2 q = P1 q \<union> P2 q"   notation (xsymbols)-  unionPart (infix "\<union>\<^isub>P" 65)+  unionPart (infix "\<union>\<^sub>P" 65)  lemma union_unionPart_conv:-  "(a \<in> ((P1 \<union>\<^isub>P P2) q)) = (a \<in> (P1 q \<union> P2 q))"+  "(a \<in> ((P1 \<union>\<^sub>P P2) q)) = (a \<in> (P1 q \<union> P2 q))" by (fastforce simp add: unionPart_def)  @@ -90,21 +90,21 @@   "interCap C1 C2 = (\<lambda> q. C1 q \<inter> C2 q)"  notation (xsymbols)-  interCap  (infix "\<inter>\<^isub>C" 65)+  interCap  (infix "\<inter>\<^sub>C" 65)  definition unionCap :: "capability \<Rightarrow> capability \<Rightarrow> capability" (infix "UNC" 65) where   "unionCap C1 C2 = (\<lambda> q. C1 q \<union> C2 q)"   notation (xsymbols)-  unionCap  (infix "\<union>\<^isub>C" 65)+  unionCap  (infix "\<union>\<^sub>C" 65)  lemma union_unionCap_conv:-  "(a \<in> ((C1 \<union>\<^isub>C C2) q)) = (a \<in> (C1 q \<union> C2 q))"+  "(a \<in> ((C1 \<union>\<^sub>C C2) q)) = (a \<in> (C1 q \<union> C2 q))" by (fastforce simp add: unionCap_def)  lemma inter_interCap_conv:-  "(a \<in> ((C1 \<inter>\<^isub>C C2) q)) = (a \<in> (C1 q \<inter> C2 q))"+  "(a \<in> ((C1 \<inter>\<^sub>C C2) q)) = (a \<in> (C1 q \<inter> C2 q))" by (fastforce simp add: interCap_def)  
data/isabelle/src/ESPLogic/DistinctList.thy view
@@ -95,7 +95,7 @@ qed  -text{* Specialized instances of nextRel_rev for Snoc appends *}+text{* Specialized instances of @{text "nextRel_rev"} for Snoc appends *} lemma nextRel_Snoc_simps:   "nextRel (xs@[a])   x y = nextRel (a#rev xs)   y x"   "nextRel (xs@[a,b]) x y = nextRel (b#a#rev xs) y x"
data/isabelle/src/ESPLogic/ExecMessage.thy view
@@ -11,7 +11,8 @@  * All rights reserved. See file LICENCE for more information.  ******************************************************************************) theory ExecMessage-imports +imports+  HOL_ext   Protocol begin @@ -87,15 +88,15 @@    (Kbd a b = Kbd x y) = (a = x \<and> b = y \<or> a = y \<and> b = x)"   apply(clarsimp simp: Kbd_def Agent_def agents_def set_eq_iff)    apply(rule iffI)-  apply(rename_tac a b x y)+  apply(rename_tac a' b' x' y')   apply(safe)-  apply(drule_tac x="a" in spec)+  apply(drule_tac x="a'" in spec)   apply(simp)-  apply(drule_tac x="y" in spec)+  apply(drule_tac x="y'" in spec)   apply(simp)-  apply(drule_tac x="x" in spec)+  apply(drule_tac x="x'" in spec)   apply(simp)-  apply(drule_tac x="b" in spec)+  apply(drule_tac x="b'" in spec)   apply(simp)   done @@ -128,6 +129,7 @@  type_synonym store = "varid \<times> tid \<Rightarrow> execmsg" +text{* Key inversion *} fun inv :: "execmsg \<Rightarrow> execmsg" where   "inv (PK m)  = SK m"@@ -138,34 +140,8 @@   "\<lbrakk> a \<in> Agent; b \<in> Agent \<rbrakk> \<Longrightarrow> inv (Kbd a b) = Kbd a b"   by(auto simp: Kbd_def) -(* TODO: Move *)-fun opt_map2 :: "('a \<Rightarrow> 'b \<Rightarrow> 'c) \<Rightarrow> 'a option \<Rightarrow> 'b option \<Rightarrow> 'c option"-where-  "opt_map2 f (Some x) (Some y) = Some (f x y)"-| "opt_map2 f _        _        = None" -lemma Some_opt_map2 [simp]:-  "(Some x = opt_map2 f a b) =-   (\<exists> y z. x = f y z \<and> Some y = a \<and> Some z = b)"-  "(opt_map2 f a b = Some x) =-   (\<exists> y z. x = f y z \<and> Some y = a \<and> Some z = b)"-  by (cases a, simp, cases b, simp_all add: eq_commute)+--lemma Some_if_pushL [simp]:-  "(Some x = (if b then Some y else None)) = (b \<and> x = y)"-  "((if b then Some y else None) = Some x) = (b \<and> x = y)"-  by (auto split: if_splits)--lemma Some_if_pushR [simp]:-  "(Some x = (if b then None else Some y)) = (\<not>b \<and> x = y)"-  "((if b then None else Some y) = Some x) = (\<not>b \<and> x = y)"-  by (auto split: if_splits)--lemma Some_Option_map [simp]:-  "(Some x = Option.map f a) = (\<exists>y. x = f y \<and> Some y = a)"-  "(Option.map f a = Some x) = (\<exists>y. x = f y \<and> Some y = a)"-  by (cases a, auto)+-+text{* Instantiating a pattern *} fun inst :: "store \<Rightarrow> tid \<Rightarrow> pattern \<Rightarrow> execmsg option" where   "inst s i (PConst c)   = Some (Lit (EConst c))"@@ -175,16 +151,36 @@ | "inst s i (PEnc m k)   = opt_map2 Enc (inst s i m) (inst s i k)" | "inst s i (PSign m k)  =       opt_map2 Tup (inst s i m) -         (opt_map2 Enc  (inst s i m) (Option.map inv (inst s i k)))"-| "inst s i (PHash m)    = Option.map Hash (inst s i m)"+         (opt_map2 Enc  (inst s i m) (map_option inv (inst s i k)))"+| "inst s i (PHash m)    = map_option Hash (inst s i m)" | "inst s i (PSymK a b)  = opt_map2   K    (inst s i a) (inst s i b)"-| "inst s i (PAsymPK a)  = Option.map PK   (inst s i a)"-| "inst s i (PAsymSK a)  = Option.map SK   (inst s i a)"+| "inst s i (PAsymPK a)  = map_option PK   (inst s i a)"+| "inst s i (PAsymSK a)  = map_option SK   (inst s i a)" | "inst s i (PShrK V)    =       (if   (\<forall> v \<in> V. s (v, i) \<in> Agent)       then Some (KShr (agents {s (v, i) | v. v \<in> V}))        else None)"+| "inst s i (PAny)       = None" +text{* Instantiate a pattern and export wildcards *}+fun any_inst :: "store \<Rightarrow> tid \<Rightarrow> pattern \<Rightarrow> (execmsg, execmsg option) varfun"+where+  "any_inst s i (PConst c)  = Val (Some (Lit (EConst c)))"+| "any_inst s i (PFresh n)  = Val (Some (Lit (ENonce n i)))"+| "any_inst s i (PVar v)    = Val (Some (s (v, i)))"+| "any_inst s i (PTup x y)  = var_lift2 (opt_map2 Tup) (any_inst s i x) (any_inst s i y)"+| "any_inst s i (PEnc m k)  = var_lift2 (opt_map2 Enc) (any_inst s i m) (any_inst s i k)"+| "any_inst s i (PSign m k) = var_lift2+    (\<lambda>m' k'. opt_map2 Tup m' (opt_map2 Enc m' (map_option inv k')))+    (any_inst s i m) (any_inst s i k)"+| "any_inst s i (PHash m)   = var_map (map_option Hash) (any_inst s i m)"+| "any_inst s i (PSymK a b) = var_lift2 (opt_map2 K) (any_inst s i a) (any_inst s i b)"+| "any_inst s i (PAsymPK a) = var_map (map_option PK) (any_inst s i a)"+| "any_inst s i (PAsymSK a) = var_map (map_option SK) (any_inst s i a)"+| "any_inst s i (PShrK V)   = Val (inst s i (PShrK V))"+| "any_inst s i (PAny)      = Fun (\<lambda>m. Val (Some m))"++ text{* We assume that recipients making use of shared keys look them up        in a table. This lookup only succeeds if agent identities are         given.@@ -304,8 +300,6 @@ lemma inv_inj [iff]:   "(inv x = inv y) = (x = y)"   by (auto) (induct x, auto)--   subsubsection{* @{term subterms}  *}
data/isabelle/src/ESPLogic/ExplicitModel.thy view
@@ -111,6 +111,11 @@  type_synonym state = "explicit_trace \<times> threadpool \<times> store" ++definition exec_match :: "store \<Rightarrow> tid \<Rightarrow> varid \<Rightarrow> pattern \<Rightarrow> bool"+where+  "exec_match s i v pt = var_fold Ex (var_map (op = (Some (s (v, i)))) (any_inst s i pt))"+ inductive_set    reachable :: "proto \<Rightarrow> state set"    for P     :: "proto"@@ -149,6 +154,12 @@           \<rbrakk>           \<Longrightarrow> (t @ [Step (i, Recv l pt)], r(i \<mapsto> (done @ [Recv l pt], todo, skipped)), s) \<in> reachable P" +| match: "\<lbrakk> (t, r, s) \<in> reachable P;+            r i = Some (done, Match l eq mv pt # todo, skipped);+            exec_match s i mv pt = eq+          \<rbrakk>+          \<Longrightarrow> (t @ [Step (i, Match l eq mv pt)], r(i \<mapsto> (done @ [Match l eq mv pt], todo, skipped)), s) \<in> reachable P"+ | hash:  "\<lbrakk> (t, r, s) \<in> reachable P;             m \<in> knows t;             Hash m \<notin> knows t@@ -169,7 +180,6 @@           \<rbrakk>           \<Longrightarrow> (t @ [Learns {Enc m k}], r, s) \<in> reachable P" - | decr:  "\<lbrakk> (t, r, s) \<in> reachable P;             Enc m k \<in> knows t;             inv k \<in> knows t@@ -187,7 +197,7 @@     [ OF reachable     , rule_format     , consumes 0-    , case_names init compr skip lkr send recv hash tuple encr decr+    , case_names init compr skip lkr send recv match hash tuple encr decr     ] end @@ -342,6 +352,11 @@   "Recv l pt \<notin> skipped"  by (auto dest!: note_in_skipped) +lemma match_notin_skipped [iff]:+  "Match l eq mv pt \<notin> skipped"+  by (auto dest!: note_in_skipped)++ lemma in_steps_conv_done_skipped:   "(i, step) \<in> steps t =     (step \<in> set done \<and> step \<notin> skipped)"@@ -372,13 +387,23 @@       using recv `i = i'` by fastforce   qed auto next+  case (match t r s i "done" l eq mv pt todo skipped i' done' todo' skipped')+  thus ?case+  proof(cases "i = i'")+    case True+    then interpret thread:+        reachable_thread P t r s i "done" "Match l eq mv pt # todo" skipped'+        using match by unfold_locales auto+      show ?thesis using match `i = i'` by fastforce+  qed auto+next   case (compr t r s i "done" l ty pt todo skipped m i' done' todo' skipped')     thus ?case   proof(cases "i = i'")     case True     thus ?thesis using compr `i = i'`     proof(cases "step = Note l ty pt")-       case True+      case True       interpret thread:         reachable_thread P t r s i "done" "Note l ty pt # todo" skipped'         using compr  `i = i'` by unfold_locales auto@@ -417,11 +442,27 @@     thus "?case" by fastforce qed ((unfold map_upd_Some_unfold)?, auto)+ +lemma in_steps_match:+  "((Match l eq mv pt) \<in> set done) = ((i, Match l eq mv pt) \<in> steps t)"+using thread_exists+proof(induct arbitrary: i "done" todo skipped rule rule: reachable_induct)+  case init+    thus ?case by fastforce+qed ((unfold map_upd_Some_unfold)?, auto)++ lemmas send_steps_in_done [elim!] = iffD1[OF in_steps_send, rule_format] lemmas send_done_in_steps [elim!] = iffD2[OF in_steps_send, rule_format] lemmas recv_steps_in_done [elim!] = iffD1[OF in_steps_recv, rule_format] lemmas recv_done_in_steps [elim!] = iffD2[OF in_steps_recv, rule_format]+lemmas match_steps_in_done [elim!] = iffD1[OF in_steps_match, rule_format]+lemmas match_done_in_steps [elim!] = iffD2[OF in_steps_match, rule_format] +lemma not_note_done_in_steps:+  assumes "step \<in> set done"+      and "\<not> noteStep step"+    shows "(i, step) \<in> steps t"+using assms+by (cases step, auto)  lemma in_steps_eq_in_done:   "step \<notin> skipped \<Longrightarrow> ((i, step) \<in> steps t) = (step \<in> set done)" @@ -462,13 +503,16 @@   shows      "step \<in> set done" proof(cases step)-  case (Send l pt)+  case Send     thus ?thesis using inSteps by (fastforce dest: in_steps_send[THEN iffD2]) next-  case (Recv l pt)+  case Recv     thus ?thesis using inSteps by (fastforce dest: in_steps_recv[THEN iffD2]) next-  case (Note l ty pt)+  case Match+    thus ?thesis using inSteps by (fastforce dest: in_steps_match[THEN iffD2])+next+  case Note     thus ?thesis using inSteps by (fastforce simp add: in_steps_conv_done_skipped) qed @@ -533,6 +577,16 @@           by fastforce   qed fastforce next+  case (match t r s i "done" l eq mv pt todo skipped i' done' todo' skipped')+  from match show ?case +  proof(cases "i = i'")+    case True+      interpret this_thread:+          reachable_thread P t r s i' "done" "Match l eq mv pt # todo'" skipped'+          using match `i = i'` by unfold_locales auto+       show ?thesis using match `i = i'` by fastforce+  qed fastforce+next   case (compr t r s i "done" l ty msg todo skipped m i' done' todo' skipped')   from compr show ?case    proof(cases "i = i'")@@ -576,6 +630,16 @@ using facts by(auto dest: in_set_listOrd1 todo_notin_doneD listOrd_done_imp_listOrd_trace in_set_listOrd2  listOrd_append[THEN iffD1] in_steps_conv_done_skipped[THEN iffD1]) +lemma listOrd_match_role_imp_listOrd_trace:+  assumes facts:+    "(i, step) \<in> steps t"+    "listOrd (done @ todo) (Match l eq mv pt) step"+  shows+    "listOrd t (Step (i, Match l eq mv pt)) (Step (i, step))"+using distinct+using facts+by(auto dest: in_set_listOrd1 todo_notin_doneD listOrd_done_imp_listOrd_trace in_set_listOrd2  listOrd_append[THEN iffD1] in_steps_conv_done_skipped[THEN iffD1])+ lemma roleOrd_notSkipped_imp_listOrd_trace:   assumes facts:     "(i, step) \<in> steps t"@@ -613,44 +677,29 @@  end (* reachable_state *) -lemma (in reachable_state) send_step_FV:-  assumes thread_exists: "r i = Some (done, Send l msg # todo, skipped)"-  and FV: "MVar n \<in> FV msg"-  shows "\<exists> l' msg'. (i, Recv l' msg') \<in> steps t \<and>  MVar n \<in> FV msg'"-proof --  interpret this_thread: reachable_thread P t r s i "done" "Send l msg # todo" skipped-    using thread_exists by unfold_locales auto-  let ?role = "done @ Send l msg # todo"-  have "Send l msg \<in> set ?role" by simp-  then obtain l' msg' -    where "listOrd ?role (Recv l' msg') (Send l msg)"-    and "MVar n \<in> FV msg'"-    using FV by(fast dest!: this_thread.Send_FV)-  thus ?thesis using this_thread.distinct-    by(auto dest: in_set_listOrd1 in_set_listOrd2)-qed--lemma (in reachable_state) note_step_FV:-  assumes thread_exists: "r i = Some (done, Note l ty msg # todo, skipped)"-  and FV: "MVar n \<in> FV msg"-  shows "\<exists> l' msg'. (i, Recv l'  msg') \<in> steps t \<and>  MVar n \<in> FV msg'"+lemma (in reachable_state) source_step:+  assumes thread_exists: "r i = Some (done, ustep # todo, skipped)"+      and useV: "v \<in> used_vars ustep"+    shows "\<exists> sstep. (i, sstep) \<in> steps t \<and> v \<in> sourced_vars sstep" proof --  interpret this_thread: reachable_thread P t r s i "done" "Note l ty msg # todo" skipped+  interpret this_thread: reachable_thread P t r s i "done" "ustep # todo" skipped     using thread_exists by unfold_locales auto-  let ?role = "done @ Note l ty msg # todo"-  have "Note l ty msg \<in> set ?role" by simp-  then obtain l' msg' -    where "listOrd ?role (Recv l' msg') (Note l ty msg)"-    and "MVar n \<in> FV msg'"-    using FV by(fast dest!: this_thread.Note_FV)-  thus ?thesis using this_thread.distinct-    by(auto dest: in_set_listOrd1 in_set_listOrd2)+  let ?role = "done @ ustep # todo"+  have "ustep \<in> set ?role" by simp+  then obtain sstep+    where "listOrd ?role sstep ustep"+    and is_source: "v \<in> sourced_vars sstep"+    using useV by (fast dest!: this_thread.source_use_ord)+  hence "sstep \<in> set done" using this_thread.distinct+    by (auto dest: in_set_listOrd1 in_set_listOrd2)+  moreover have "\<not> noteStep sstep" using is_source by auto+  ultimately show ?thesis using is_source+    by (auto intro: this_thread.not_note_done_in_steps) qed -+(* subsubsection{* The Effect of a Step on the Intruder Knowledge *} - context reachable_state begin @@ -661,7 +710,7 @@ qed auto  end-+*)  subsection{* Almost Distinct Traces *} @@ -697,6 +746,13 @@   show ?case using  `distinct' t` this_thread.distinct     by(fastforce dest: this_thread.in_steps_in_done) next+  case (match t r s i "done" l eq mv pt todo skipped)+  then interpret this_thread:+    reachable_thread P t r s i "done" "Match l eq mv pt # todo" skipped+    by unfold_locales auto+  show ?case using `distinct' t` this_thread.distinct+    by (fastforce dest: this_thread.in_steps_in_done)+next   case (send t r s i "done" l msg todo skipped m)   then interpret this_thread:      reachable_thread P t r s i "done" "Send l msg # todo" skipped@@ -910,40 +966,40 @@     next       case (Cons e xs) thus ?case       proof(cases e)-	case (Step st) thus ?thesis-	proof(cases "x = St st")-	  case True hence "?decomp (e#xs) [e] xs" -	    using Step Cons by auto-	  thus ?thesis by blast-	next-	  case False-	  hence "predOrd xs x y"-	    using Step Cons by auto-	  then obtain ys zs where "?decomp xs ys zs"-	    using Cons by blast-	  hence "?decomp (e#xs) (e#ys) zs"-	    using Step Cons by auto-	  thus ?thesis by blast-	qed+        case (Step st) thus ?thesis+        proof(cases "x = St st")+          case True hence "?decomp (e#xs) [e] xs"+            using Step Cons by auto+          thus ?thesis by blast+        next+          case False+          hence "predOrd xs x y"+            using Step Cons by auto+          then obtain ys zs where "?decomp xs ys zs"+            using Cons by blast+          hence "?decomp (e#xs) (e#ys) zs"+            using Step Cons by auto+          thus ?thesis by blast+        qed       next-	case (Learns M) thus ?thesis-	proof(cases "\<exists> m \<in> M. x = Ln m")-	  case True -	  then obtain m where "m \<in> M" and "x = Ln m"-	    by auto-	  hence "?decomp (e#xs) [e] xs" -	    using Learns Cons by auto-	  thus ?thesis by blast-	next-	  case False-	  hence "predOrd xs x y"-	    using Learns Cons by auto-	  then obtain ys zs where "?decomp xs ys zs"-	    using Cons by blast-	  hence "?decomp (e#xs) (e#ys) zs"-	    using Learns Cons by auto-	  thus ?thesis by blast-	qed+        case (Learns M) thus ?thesis+        proof(cases "\<exists> m \<in> M. x = Ln m")+          case True+          then obtain m where "m \<in> M" and "x = Ln m"+            by auto+          hence "?decomp (e#xs) [e] xs"+            using Learns Cons by auto+          thus ?thesis by blast+        next+          case False+          hence "predOrd xs x y"+            using Learns Cons by auto+          then obtain ys zs where "?decomp xs ys zs"+            using Cons by blast+          hence "?decomp (e#xs) (e#ys) zs"+            using Learns Cons by auto+          thus ?thesis by blast+        qed       next         case (LKReveal a) thus ?thesis         proof(cases "x = LKR (Lit (EAgent a))")@@ -970,46 +1026,46 @@     next       case (Cons e xs)       then obtain ys zs where decomp1: "?decomp (e#xs) ys zs"-	by blast+        by fast       hence "ys = [] \<and> e # xs = zs \<or> (\<exists>ys'. e # ys' = ys \<and> xs = ys' @ zs)"-	(is "?nil \<or> ?non_nil")-	by (simp add: Cons_eq_append_conv)+        (is "?nil \<or> ?non_nil")+        by (simp add: Cons_eq_append_conv)       moreover       { assume ?nil hence ?case using decomp1 by auto }       moreover       { assume ?non_nil-	then obtain ys' where decomp2: "ys = e # ys'" and "xs = ys' @ zs"-	  by auto-	hence ?case-	proof(cases e)-	  case (Step st) thus ?thesis-	  proof(cases "x = St st")-	    case True thus ?thesis-	      using Step decomp1 decomp2 by auto-	  next-	    case False-	    hence "?decomp xs ys' zs"-	      using Step decomp1 decomp2 by auto-	    hence "predOrd xs x y"-	      using Cons by auto-	    thus ?thesis-	      using Step by auto-	  qed-	next-	  case (Learns M) thus ?thesis-	  proof(cases "\<exists> m \<in> M. x = Ln m")-	    case True thus ?thesis-	      using Learns decomp1 decomp2 by auto-	  next-	    case False-	    hence "?decomp xs ys' zs"-	      using Learns decomp1 decomp2 by auto-	    hence "predOrd xs x y"-	      using Cons by auto-	    thus ?thesis-	      using Learns by auto-	  qed+        then obtain ys' where decomp2: "ys = e # ys'" and "xs = ys' @ zs"+          by auto+        hence ?case+        proof(cases e)+          case (Step st) thus ?thesis+          proof(cases "x = St st")+            case True thus ?thesis+              using Step decomp1 decomp2 by auto+          next+            case False+            hence "?decomp xs ys' zs"+              using Step decomp1 decomp2 by auto+            hence "predOrd xs x y"+              using Cons by auto+            thus ?thesis+              using Step by auto+          qed         next+          case (Learns M) thus ?thesis+          proof(cases "\<exists> m \<in> M. x = Ln m")+            case True thus ?thesis+              using Learns decomp1 decomp2 by auto+          next+            case False+            hence "?decomp xs ys' zs"+              using Learns decomp1 decomp2 by auto+            hence "predOrd xs x y"+              using Cons by auto+            thus ?thesis+              using Learns by auto+          qed+        next           case (LKReveal a) thus ?thesis           proof(cases "x = LKR (Lit (EAgent a))")             case True thus ?thesis@@ -1023,7 +1079,7 @@             thus ?thesis                using LKReveal by auto           qed-	qed+        qed       }       ultimately show ?case by fast     qed@@ -1102,6 +1158,12 @@   from recv show ?case     by (fastforce dest: s1.rev_knows_pairParts_closedD) next+  case (match t r s i "done" l eq mv pt todo)+  then interpret s1: reachable_state P t r s+    by unfold_locales+  from match show ?case+    by (fastforce dest: s1.rev_knows_pairParts_closedD)+next   case (init r s) thus ?case by simp next   case (lkr t r s a)@@ -1142,6 +1204,14 @@ text{* Three of the lemmas for the reasoning technique. *} lemmas Input = Ln_before_inp +lemma match_eq_rule:+  "(i, Match l True v pt) \<in> steps t \<Longrightarrow> exec_match s i v pt"+by (induct rule: reachable_induct) (fastforce+)++lemma not_match_rule:+  "(i, Match l False v pt) \<in> steps t \<Longrightarrow> \<not> exec_match s i v pt"+by (induct rule: reachable_induct) (fastforce+)+ lemma split_before:   "Ln (Tup m m') \<prec> y \<Longrightarrow> Ln m \<prec> y \<and> Ln m' \<prec> y"   by (fastforce intro: pairParts_before)@@ -1262,12 +1332,12 @@     { assume "?tup"  hence "?thesis" by fastforce } moreover     { assume "?chain t r s"       hence "?chain (t@t') r s" -	by (fastforce intro!: decrChain_append)+        by (fastforce intro!: decrChain_append)       hence "?thesis" by blast     } moreover     { assume "?note t r s"       hence "?note (t@t') r s" -	by (fastforce intro!: decrChain_append)+        by (fastforce intro!: decrChain_append)       hence "?thesis" by blast     } moreover     { assume "?keys" hence "?thesis" by auto }@@ -1287,7 +1357,7 @@       using hash by fastforce     moreover     { assume "?new" hence ?case -	using `m \<in> knows t` by fastforce +        using `m \<in> knows t` by fastforce     }     moreover     { assume "?old" @@ -1302,7 +1372,7 @@       using encr by fastforce     moreover     { assume "?new" hence ?case -	using `m \<in> knows t` and `k \<in> knows t` by fastforce +        using `m \<in> knows t` and `k \<in> knows t` by fastforce     }     moreover     { assume "?old" @@ -1317,7 +1387,7 @@       using tuple by fastforce     moreover     { assume "?new" hence ?case -	using `x \<in> knows t` and `y \<in> knows t` by fastforce +        using `x \<in> knows t` and `y \<in> knows t` by fastforce     }     moreover     { assume "?old" @@ -1380,6 +1450,61 @@     }     ultimately show ?case by fastforce   next+    case (match t r s i "done" l eq mv pt todo skipped)+    hence "?cases m' t r s" +      (is "?ik0 \<or> ?hash \<or> ?enc \<or> ?tup \<or> ?chain t r s \<or> ?note t r s \<or> ?keys")+      by clarsimp+    moreover+    { assume "?ik0"   hence "?case" by blast    } moreover+    { assume "?hash"  hence "?case" by fastforce } moreover+    { assume "?enc"   hence "?case" by fastforce } moreover+    { assume "?keys"  hence "?case" by fastforce } moreover+    { assume "?tup"   hence "?case" by fastforce } moreover+    { let ?t' = "t@[Step (i, Match l eq mv pt)]"+      and ?r' = "r(i \<mapsto> (done @ [Match l eq mv pt], todo, skipped))"+      assume "?chain t r s" then+      obtain i' done' todo' l' pt' skipped' m+        where thread': "r i' = Some (done', todo', skipped')"+        and send: "Send l' pt' \<in> set done'"+        and msg:  "Some m = inst s i' pt'"+        and chain:"decrChain [] t {St (i', Send l' pt')} m m'"+        by auto+      then interpret th1: reachable_thread P t r s i' done' todo' skipped'+        using match by unfold_locales auto+        obtain done'' todo'' skipped''+        where "Send l' pt' \<in> set done''"+        and "?r' i' = Some (done'', todo'', skipped'')"+        using `r i = Some (done, Match l eq mv pt # todo, skipped)` thread' send+        by (cases "i = i'") (fastforce+)+      hence "?chain ?t' ?r' s"+        using chain msg+        by (fast intro!: decrChain_append)+      hence "?case" by auto+    } moreover+    { let ?t' = "t@[Step (i, Match l eq mv pt)]"+      and ?r' = "r(i \<mapsto> (done @ [Match l eq mv pt], todo, skipped))"+      assume "?note t r s" then+      obtain i' done' todo' skipped' l' ty' pt' m+        where thread': "r i' = Some (done', todo', skipped')"+        and inDone: "Note l' ty' pt' \<in> set done'"+        and notSkipped: "Note l' ty' pt' \<notin> skipped'"+        and msg: "Some m = inst s i' pt'"+        and chain: "decrChain [] t {St (i', Note l' ty' pt')} m m'"+        by auto+      then interpret th1: reachable_thread P t r s i' done' todo' skipped'+        using match by unfold_locales auto+      obtain done'' todo'' skipped''+        where "Note l' ty' pt' \<in> set done''"+        and "Note l' ty' pt' \<notin> skipped'' "+        and "?r' i' = Some (done'', todo'', skipped'')"+        using `r i = Some (done, Match l eq mv pt # todo, skipped)` thread' inDone notSkipped+        by (cases "i = i'") (fastforce+)+      hence "?note ?t' ?r' s" using msg chain notSkipped inDone+        by (fast intro!: decrChain_append)+      hence "?case" by auto+    }+    ultimately show ?case by fastforce+  next     case (send t r s i "done" l pt todo skipped m)     then interpret th1:        reachable_thread P t r s i "done" "Send l pt # todo" skipped@@ -1392,10 +1517,10 @@     moreover     { assume "?new"       hence "decrChain [] ?t' {St (i, Send l pt)} m m'"-	by (fastforce intro!: decrChain_unpair)+        by (fastforce intro!: decrChain_unpair)       moreover       have "?r' i = Some (done @ [Send l pt], todo, skipped)"-	using th1.thread_exists by auto+        using th1.thread_exists by auto       ultimately       have ?case using `Some m = inst s i pt`         apply-@@ -1405,13 +1530,13 @@         apply(rule disjI2)         apply(rule disjI1)         apply(fastforce)-	done+        done     }     moreover     { assume "?old"        hence "?cases m' t r s"          (is "?ik0 \<or> ?hash \<or> ?enc \<or> ?tup \<or> ?chain t r s \<or> ?note t r s \<or> ?keys")-	using send by clarsimp+        using send by clarsimp       moreover       { assume "?ik0"   hence "?case" by blast    } moreover       { assume "?hash"  hence "?case" by fastforce } moreover@@ -1419,38 +1544,38 @@       { assume "?keys"  hence "?case" by fastforce } moreover       { assume "?tup"   hence "?case" by fastforce } moreover       { assume "?chain t r s" then-	obtain i' done' todo' l' pt' skipped' m-	  where thread': "r i' = Some (done', todo',skipped')"-	  and send: "Send l' pt' \<in> set done'"-          and msg:  "Some m = inst s i' pt'"-	  and chain: "decrChain [] t {St (i', Send l' pt')} m m'"-	  by auto-	obtain done'' todo'' skipped''-	  where "Send l' pt' \<in> set done''"-	  and "(r(i \<mapsto> (done @ [Send l pt], todo, skipped))) i' = Some (done'', todo'',skipped'')"-	  using `r i = Some (done, Send l pt # todo, skipped)` thread' send-	  by (cases "i = i'") (fastforce+)-	hence "?chain ?t' ?r' s"-	  using chain msg-          by (fast intro!: decrChain_append)-	hence "?case" by auto+        obtain i' done' todo' l' pt' skipped' m+          where thread': "r i' = Some (done', todo',skipped')"+          and send: "Send l' pt' \<in> set done'"+                and msg:  "Some m = inst s i' pt'"+          and chain: "decrChain [] t {St (i', Send l' pt')} m m'"+          by auto+        obtain done'' todo'' skipped''+          where "Send l' pt' \<in> set done''"+          and "(r(i \<mapsto> (done @ [Send l pt], todo, skipped))) i' = Some (done'', todo'',skipped'')"+          using `r i = Some (done, Send l pt # todo, skipped)` thread' send+          by (cases "i = i'") (fastforce+)+        hence "?chain ?t' ?r' s"+          using chain msg+                by (fast intro!: decrChain_append)+        hence "?case" by auto       } moreover       { assume "?note t r s" then         obtain i' done' todo' skipped' l' ty' pt' m-	  where thread': "r i' = Some (done', todo', skipped')"-	  and inDone: "Note l' ty' pt' \<in> set done'"+          where thread': "r i' = Some (done', todo', skipped')"+          and inDone: "Note l' ty' pt' \<in> set done'"           and notSkipped: "Note l' ty' pt' \<notin> skipped'"           and msg: "Some m = inst s i' pt'"-	  and chain: "decrChain [] t {St (i', Note l' ty' pt')} m m'"+          and chain: "decrChain [] t {St (i', Note l' ty' pt')} m m'"           by auto         obtain done'' todo'' skipped''-	  where "Note l' ty' pt' \<in> set done''"+          where "Note l' ty' pt' \<in> set done''"           and "Note l' ty' pt' \<notin> skipped'' "-	  and "?r' i' = Some (done'', todo'', skipped'')"-	  using `r i = Some (done, Send l pt # todo, skipped)` thread' inDone notSkipped-	  by (cases "i = i'") (fastforce+)+          and "?r' i' = Some (done'', todo'', skipped'')"+          using `r i = Some (done, Send l pt # todo, skipped)` thread' inDone notSkipped+          by (cases "i = i'") (fastforce+)         hence "?note ?t' ?r' s" using chain notSkipped inDone msg- 	  by(fast intro!: decrChain_append)+          by(fast intro!: decrChain_append)         hence "?case" by auto        }       ultimately have ?case by fast@@ -1469,53 +1594,53 @@     { assume "?new"       hence "m' \<in> pairParts m" and "m' \<notin> knows t" by auto       hence -	"(predOrd t (Ln m) (Ln (Enc m k)) \<and> predOrd t (Ln k) (Ln (Enc m k))) \<or>+        "(predOrd t (Ln m) (Ln (Enc m k)) \<and> predOrd t (Ln k) (Ln (Enc m k))) \<or>          ((\<exists>i done todo skipped. r i = Some (done, todo,skipped) \<and>           (\<exists>l pt ms. Send l pt \<in> set done \<and> Some ms = inst s i pt \<and> -                    decrChain [] t {St (i, Send l pt)} ms (Enc m k)))) \<or>+                     decrChain [] t {St (i, Send l pt)} ms (Enc m k)))) \<or>          ((\<exists>i done todo skipped. r i = Some (done, todo,skipped) \<and>           (\<exists>l ty pt ms. Note l ty pt \<in> set done \<and> Note l ty pt \<notin> skipped \<and>-                       Some ms = inst s i pt \<and> -                  decrChain [] t {St (i, Note l ty pt)} ms (Enc m k))))"-	(is "?fake_enc \<or> ?decchain t (Enc m k) \<or> ?notechain t (Enc m k)")-	using IH[OF `Enc m k \<in> knows t`] by auto+                        Some ms = inst s i pt \<and>+                        decrChain [] t {St (i, Note l ty pt)} ms (Enc m k))))"+        (is "?fake_enc \<or> ?decchain t (Enc m k) \<or> ?notechain t (Enc m k)")+        using IH[OF `Enc m k \<in> knows t`] by auto       moreover       { assume "?fake_enc"-	hence "?case" using `?new`-	  by (auto dest!: in_knows_predOrd1 s1.rev_knows_pairParts_closedD)+        hence "?case" using `?new`+          by (auto dest!: in_knows_predOrd1 s1.rev_knows_pairParts_closedD)       }       moreover       { assume "?decchain t (Enc m k)" then-	obtain i' done' todo' l' pt' skipped' ms-	  where thread': "r i' = Some (done', todo',skipped')"-	  and send: "Send l' pt' \<in> set done'"-          and msg:  "Some ms = inst s i' pt'"-	  and chain: "decrChain [] t {St (i', Send l' pt')} ms (Enc m k)"-	  by auto-	moreover-	hence "decrChain [] ?t' {St (i', Send l' pt')} ms m'"-	  using `?new` `Enc m k \<in> knows t` `inv k \<in> knows t`-	  by (fastforce intro!: decrChain_decrypt)-	ultimately-	have "?decchain ?t' m'" by fastforce-	hence "?case" by blast+        obtain i' done' todo' l' pt' skipped' ms+          where thread': "r i' = Some (done', todo',skipped')"+          and send: "Send l' pt' \<in> set done'"+                and msg:  "Some ms = inst s i' pt'"+          and chain: "decrChain [] t {St (i', Send l' pt')} ms (Enc m k)"+          by auto+        moreover+        hence "decrChain [] ?t' {St (i', Send l' pt')} ms m'"+          using `?new` `Enc m k \<in> knows t` `inv k \<in> knows t`+          by (fastforce intro!: decrChain_decrypt)+        ultimately+        have "?decchain ?t' m'" by fastforce+        hence "?case" by blast       }       moreover       { assume "?notechain t (Enc m k)" then-	obtain i' done' todo' l' ty' pt' skipped' ms-	  where thread': "r i' = Some (done', todo',skipped')"-	  and inDone: "Note l' ty' pt' \<in> set done'"-          and notSkipped: "Note l' ty' pt' \<notin>  skipped'"-          and msg:   "Some ms = inst s i' pt'"-	  and chain: "decrChain [] t {St (i', Note l' ty' pt')} ms (Enc m k)"-	  by auto-	moreover-	hence "decrChain [] ?t' {St (i', Note l' ty' pt')} ms m'"-	  using `?new` `Enc m k \<in> knows t` `inv k \<in> knows t`-	  by (fastforce intro!: decrChain_decrypt)-	ultimately-	have "?notechain ?t' m'" by fastforce-	hence "?case" by blast+        obtain i' done' todo' l' ty' pt' skipped' ms+          where thread': "r i' = Some (done', todo',skipped')"+          and inDone: "Note l' ty' pt' \<in> set done'"+                and notSkipped: "Note l' ty' pt' \<notin>  skipped'"+                and msg:   "Some ms = inst s i' pt'"+          and chain: "decrChain [] t {St (i', Note l' ty' pt')} ms (Enc m k)"+          by auto+        moreover+        hence "decrChain [] ?t' {St (i', Note l' ty' pt')} ms m'"+          using `?new` `Enc m k \<in> knows t` `inv k \<in> knows t`+          by (fastforce intro!: decrChain_decrypt)+        ultimately+        have "?notechain ?t' m'" by fastforce+        hence "?case" by blast       }       ultimately have ?case by fast     }@@ -1545,61 +1670,63 @@     }     ultimately show "?case" by fast   next-   case (skip t r s i "done" l ty pt todo skipped)-   then interpret this_thread:  reachable_thread P t r s i "done" "Note l ty pt # todo" skipped  by unfold_locales-   let ?r' = "r(i \<mapsto> (done @ [Note l ty pt], todo, insert (Note l ty pt) skipped))"-   have "m' \<in> knows t" using skip by fastforce-   hence "?cases m' t r s" -     (is "?ik0 \<or> ?hash \<or> ?enc \<or> ?tup \<or> ?chain t r s \<or> ?note t r s \<or> ?keys")-     using skip by clarsimp-   moreover-   { assume "?ik0"   hence "?case" by blast    } moreover-   { assume "?hash"  hence "?case" by fastforce } moreover-   { assume "?enc"   hence "?case" by fastforce } moreover-   { assume "?keys"  hence "?case" by fastforce } moreover-   { assume "?tup"   hence "?case" by fastforce } moreover-   { assume "?chain t r s" then-     obtain i' done' todo' l' pt' skipped' m+    case (skip t r s i "done" l ty pt todo skipped)+    then interpret this_thread:+      reachable_thread P t r s i "done" "Note l ty pt # todo" skipped+      by unfold_locales+    let ?r' = "r(i \<mapsto> (done @ [Note l ty pt], todo, insert (Note l ty pt) skipped))"+    have "m' \<in> knows t" using skip by fastforce+    hence "?cases m' t r s"+      (is "?ik0 \<or> ?hash \<or> ?enc \<or> ?tup \<or> ?chain t r s \<or> ?note t r s \<or> ?keys")+      using skip by clarsimp+    moreover+    { assume "?ik0"   hence "?case" by blast    } moreover+    { assume "?hash"  hence "?case" by fastforce } moreover+    { assume "?enc"   hence "?case" by fastforce } moreover+    { assume "?keys"  hence "?case" by fastforce } moreover+    { assume "?tup"   hence "?case" by fastforce } moreover+    { assume "?chain t r s" then+      obtain i' done' todo' l' pt' skipped' m        where thread': "r i' = Some (done', todo',skipped')"        and send: "Send l' pt' \<in> set done'"        and msg: "Some m = inst s i' pt'"        and chain: "decrChain [] t {St (i', Send l' pt')} m m'"        by auto-     obtain done'' todo'' skipped''+      obtain done'' todo'' skipped''        where "Send l' pt' \<in> set done''"        and "?r' i' = Some (done'', todo'',skipped'')"        using skip(3) thread' send        by (cases "i = i'") (fastforce+)-     hence "?chain t ?r'  s"+      hence "?chain t ?r'  s"        using chain msg by fast-     hence "?case" by auto-   }-   moreover-   { assume "?note t r s" then-     obtain i' done' todo' skipped' l' ty' pt' m-       where thread': "r i' = Some (done', todo', skipped')"-       and inDone: "Note l' ty' pt' \<in> set done'"-       and notSkipped: "Note l' ty' pt' \<notin> skipped'"-       and msg:   "Some m = inst s i' pt'"-       and chain: "decrChain [] t {St (i', Note l' ty' pt')} m m'"-       by auto+      hence "?case" by auto+    }+    moreover+    { assume "?note t r s" then+      obtain i' done' todo' skipped' l' ty' pt' m+        where thread': "r i' = Some (done', todo', skipped')"+        and inDone: "Note l' ty' pt' \<in> set done'"+        and notSkipped: "Note l' ty' pt' \<notin> skipped'"+        and msg:   "Some m = inst s i' pt'"+        and chain: "decrChain [] t {St (i', Note l' ty' pt')} m m'"+        by auto       obtain done'' todo'' skipped''-       where "Note l' ty' pt' \<in> set done''"-       and "Note l' ty' pt' \<notin> skipped'' "-       and "?r' i' = Some (done'', todo'', skipped'')"-       using `r i = Some (done, Note l ty pt # todo, skipped)` thread' inDone notSkipped-       by (cases "i = i'") (force dest: this_thread.done_notin_todoD)+-     hence "?note t ?r' s" +        where "Note l' ty' pt' \<in> set done''"+        and "Note l' ty' pt' \<notin> skipped'' "+        and "?r' i' = Some (done'', todo'', skipped'')"+        using `r i = Some (done, Note l ty pt # todo, skipped)` thread' inDone notSkipped+        by (cases "i = i'") (force dest: this_thread.done_notin_todoD)++      hence "?note t ?r' s"        using chain notSkipped inDone msg        by fast      hence "?case" by auto-   } moreover-   { assume "?keys" hence "?case" by fastforce }-   ultimately  -   show  "?case" by fastforce+    } moreover+    { assume "?keys" hence "?case" by fastforce }+    ultimately+    show  "?case" by fastforce   next-   case(compr t r s i "done" l ty pt todo skipped m m')-   then interpret th1: +    case(compr t r s i "done" l ty pt todo skipped m m')+    then interpret th1:       reachable_thread P t r s i "done" "Note l ty pt # todo" skipped       by unfold_locales     let ?r' = "r(i \<mapsto> (done @ [Note l ty pt], todo, skipped))"@@ -1609,12 +1736,8 @@       using compr by fastforce     moreover     { assume "?new"-  (*-        hence "m' \<in> pairParts (inst s i pt)" and "m' \<notin> knows t" using `m = inst s i pt` -      by auto-*)-        hence "decrChain [] ?t' {St (i, Note l ty pt)} m m'" -          by (fastforce intro!: decrChain_unpair)+      hence "decrChain [] ?t' {St (i, Note l ty pt)} m m'"+        by (fastforce intro!: decrChain_unpair)       moreover         have "?r' i = Some (done @ [Note l ty pt], todo, skipped)"            using th1.thread_exists by auto@@ -1625,7 +1748,7 @@           by (fastforce dest: th1.todo_notin_skippedD)       ultimately       have ?case using `Some m = inst s i pt`-	apply-+        apply-         apply(rule disjI2)         apply(rule disjI2)         apply(rule disjI2)@@ -1638,7 +1761,7 @@     { assume "?old"        hence "?cases m' t r s"          (is "?ik0 \<or> ?hash \<or> ?enc \<or> ?tup \<or> ?chain t r s \<or> ?note t r s \<or> ?keys")-	using compr by clarsimp+        using compr by clarsimp       moreover       { assume "?ik0"   hence "?case" by blast    } moreover       { assume "?hash"  hence "?case" by fastforce } moreover@@ -1646,35 +1769,35 @@       { assume "?keys"  hence "?case" by fastforce } moreover       { assume "?tup"   hence "?case" by fastforce } moreover       { assume "?chain t r s" then-	obtain i' done' todo' l' pt' skipped' m-	  where thread': "r i' = Some (done', todo',skipped')"-	  and send: "Send l' pt' \<in> set done'"-          and msg:  "Some m = inst s i' pt'"-	  and chain: "decrChain [] t {St (i', Send l' pt')} m m'"-	  by auto-	obtain done'' todo'' skipped''-	  where "Send l' pt' \<in> set done''"-	  and "(r(i \<mapsto> (done @ [Note l ty pt], todo, skipped))) i' = Some (done'', todo'',skipped'')"-	  using compr(3) thread' send-	  by (cases "i = i'") (fastforce+)-	hence "?chain ?t' ?r' s" using chain msg-          by(fast intro!: decrChain_append)-	hence "?case"  by auto+        obtain i' done' todo' l' pt' skipped' m+          where thread': "r i' = Some (done', todo',skipped')"+          and send: "Send l' pt' \<in> set done'"+                and msg:  "Some m = inst s i' pt'"+          and chain: "decrChain [] t {St (i', Send l' pt')} m m'"+          by auto+        obtain done'' todo'' skipped''+          where "Send l' pt' \<in> set done''"+          and "(r(i \<mapsto> (done @ [Note l ty pt], todo, skipped))) i' = Some (done'', todo'',skipped'')"+          using compr(3) thread' send+          by (cases "i = i'") (fastforce+)+        hence "?chain ?t' ?r' s" using chain msg+                by(fast intro!: decrChain_append)+        hence "?case"  by auto       } moreover       { assume "?note t r s" then         obtain i' done' todo' skipped' l' ty' pt' m-	  where thread': "r i' = Some (done', todo', skipped')"-	  and inDone: "Note l' ty' pt' \<in> set done'"+          where thread': "r i' = Some (done', todo', skipped')"+          and inDone: "Note l' ty' pt' \<in> set done'"           and notSkipped: "Note l' ty' pt' \<notin> skipped'"           and msg:   "Some m = inst s i' pt'"-	  and chain: "decrChain [] t {St (i', Note l' ty' pt')} m m'"+          and chain: "decrChain [] t {St (i', Note l' ty' pt')} m m'"           by auto         obtain done'' todo'' skipped''-	  where "Note l' ty' pt' \<in> set done''"+          where "Note l' ty' pt' \<in> set done''"           and "Note l' ty' pt' \<notin> skipped'' "-	  and "?r' i' = Some (done'', todo'', skipped'')"-	  using `r i = Some (done, Note l ty pt # todo, skipped)` thread' inDone notSkipped-	  by (cases "i = i'") (fastforce+)+          and "?r' i' = Some (done'', todo'', skipped'')"+          using `r i = Some (done, Note l ty pt # todo, skipped)` thread' inDone notSkipped+          by (cases "i = i'") (fastforce+)         hence "?note ?t' ?r' s"           using chain notSkipped inDone msg           by(fast intro!: decrChain_append)
data/isabelle/src/ESPLogic/HOL_ext.thy view
@@ -29,6 +29,70 @@   "\<lbrakk> \<And> x y. m x = Some y \<Longrightarrow> m' x = Some y \<rbrakk> \<Longrightarrow>  m \<subseteq>\<^sub>m m'"   by(force simp: map_le_def) ++section{* Option *}++fun opt_map2 :: "('a \<Rightarrow> 'b \<Rightarrow> 'c) \<Rightarrow> 'a option \<Rightarrow> 'b option \<Rightarrow> 'c option"+where+  "opt_map2 f (Some x) (Some y) = Some (f x y)"+| "opt_map2 f _        _        = None"++lemma Some_opt_map2 [simp]:+  "(Some x = opt_map2 f a b) =+   (\<exists> y z. x = f y z \<and> Some y = a \<and> Some z = b)"+  "(opt_map2 f a b = Some x) =+   (\<exists> y z. x = f y z \<and> Some y = a \<and> Some z = b)"+  by (cases a, simp, cases b, simp_all add: eq_commute)+++lemma Some_if_pushL [simp]:+  "(Some x = (if b then Some y else None)) = (b \<and> x = y)"+  "((if b then Some y else None) = Some x) = (b \<and> x = y)"+  by (auto split: if_splits)++lemma Some_if_pushR [simp]:+  "(Some x = (if b then None else Some y)) = (\<not>b \<and> x = y)"+  "((if b then None else Some y) = Some x) = (\<not>b \<and> x = y)"+  by (auto split: if_splits)++lemma Some_Option_map [simp]:+  "(Some x = map_option f a) = (\<exists>y. x = f y \<and> Some y = a)"+  "(map_option f a = Some x) = (\<exists>y. x = f y \<and> Some y = a)"+  by (cases a, auto)++++section{* Variadic Functions *}++datatype ('a, 'b) varfun = Val 'b | Fun "'a \<Rightarrow> ('a, 'b) varfun"++primrec var_map :: "('b \<Rightarrow> 'c) \<Rightarrow> ('a, 'b) varfun \<Rightarrow> ('a, 'c) varfun"+where+  "var_map f (Val x) = Val (f x)"+| "var_map f (Fun g) = Fun (\<lambda>x. var_map f (g x))"++primrec var_apply :: "('a, 'b \<Rightarrow> 'c) varfun \<Rightarrow> ('a, 'b) varfun \<Rightarrow> ('a, 'c) varfun"+where+  "var_apply (Val f) v = var_map f v"+| "var_apply (Fun g) v = Fun (\<lambda>x. var_apply (g x) v)"++abbreviation var_lift2 :: "('b \<Rightarrow> 'c \<Rightarrow> 'd) \<Rightarrow> ('a, 'b) varfun \<Rightarrow> ('a, 'c) varfun \<Rightarrow> ('a, 'd) varfun"+where "var_lift2 f v1 v2 \<equiv> var_apply (var_map f v1) v2"++primrec var_fold :: "(('a \<Rightarrow> 'b) \<Rightarrow> 'b) \<Rightarrow> ('a, 'b) varfun \<Rightarrow> 'b"+where+  "var_fold f (Val x) = x"+| "var_fold f (Fun g) = f (\<lambda>x. var_fold f (g x))"+++lemma var_map_map [simp]: "var_map f (var_map g v) = var_map (f o g) v"+by (induct v) (auto)++lemma var_fold_not_all: "(\<not> var_fold All v) = var_fold Ex (var_map Not v)"+by (induct v) (auto)++lemma var_fold_not_ex: "(\<not> var_fold Ex v) = var_fold All (var_map Not v)"+by (induct v) (auto)++ section{* Finite Sets *}  text{* 
data/isabelle/src/ESPLogic/Hints.thy view
@@ -79,7 +79,7 @@     val hint_ct = mk_hint name t |> HOLogic.mk_Trueprop                                  |> Thm.cterm_of (Proof_Context.theory_of ctxt);   in-    Goal.prove_internal [] hint_ct (K (ALLGOALS (remove_all_hints_tac ctxt)))+    Goal.prove_internal ctxt [] hint_ct (K (ALLGOALS (remove_all_hints_tac ctxt)))   end;  end;
data/isabelle/src/ESPLogic/InferenceRules.thy view
@@ -75,6 +75,8 @@   (\<forall> st st'.        (nextRel (filter (\<lambda> x. \<not> (noteStep x)) (takeWhile (\<lambda> x. x \<noteq> step) R) @ [step]) st st') \<longrightarrow>       ((recvStep st \<longrightarrow> (\<exists> m. Some m = inst s i (stepPat st) \<and> predOrd t (Ln m) (St (i, st)))) \<and>+       (matchEqStep st \<longrightarrow> exec_match s i (matchVar st) (stepPat st)) \<and>+       (notMatchStep st \<longrightarrow> \<not> exec_match s i (matchVar st) (stepPat st)) \<and>        predOrd t (St (i, st)) (St (i, st')))    )" @@ -232,6 +234,14 @@     \<lbrakk> nextRel (filter (\<lambda> x. \<not> (noteStep x)) (takeWhile (\<lambda> x. x \<noteq> step) R) @ [step]) st st';       recvStep st     \<rbrakk> \<Longrightarrow> \<exists> m. Some m = inst s i (stepPat st) \<and> Ln m \<prec> St (i, st)"+  and "\<And> st st'.+    \<lbrakk> nextRel (filter (\<lambda> x. \<not> (noteStep x)) (takeWhile (\<lambda> x. x \<noteq> step) R) @ [step]) st st';+      matchEqStep st+    \<rbrakk> \<Longrightarrow> exec_match s i (matchVar st) (stepPat st)"+  and "\<And> st st'.+    \<lbrakk> nextRel (filter (\<lambda> x. \<not> (noteStep x)) (takeWhile (\<lambda> x. x \<noteq> step) R) @ [step]) st st';+      notMatchStep st+    \<rbrakk> \<Longrightarrow> \<not> exec_match s i (matchVar st) (stepPat st)"   and "\<And> st st'.      \<lbrakk> nextRel (filter (\<lambda> x. \<not> (noteStep x)) (takeWhile (\<lambda> x. x \<noteq> step) R) @ [step]) st st'     \<rbrakk> \<Longrightarrow> St (i, st) \<prec> St (i, st')"@@ -246,7 +256,7 @@   from role_exists   obtain "done" todo skipped     where R_split: "R = done @ todo"-    and "r i = Some (done, todo,skipped)"+    and thread_state: "r i = Some (done, todo,skipped)"     by (auto elim!: roleMap_SomeE)   moreover   then interpret this_thread:@@ -285,12 +295,23 @@       by(fastforce dest!: this_thread.note_in_skipped note_filtered_revRole)     hence steps: "(i, st) \<in> steps t" "(i, st') \<in> steps t"       by(auto dest: this_thread.in_steps_conv_done_skipped[THEN iffD1])-    { assume "recvStep st" then-      obtain l pt where "st = Recv l pt" by (cases st) auto+    { assume "recvStep st"       hence "\<exists> m. Some m = inst s i (stepPat st) \<and> Ln m \<prec> St (i, st)"-	using steps by(auto intro!: Ln_before_inp)+        using steps by (auto dest!: recvStepD Ln_before_inp)     }     note input = this+    {+      assume "matchEqStep st"+      hence "exec_match s i (matchVar st) (stepPat st)"+        using steps by (auto dest!: matchEqStepD match_eq_rule)+    }+    note match_eq = this+    {+      assume "notMatchStep st"+      hence "\<not> exec_match s i (matchVar st) (stepPat st)"+        using steps by (auto dest!: notMatchStepD not_match_rule)+    }+    note not_match = this      have "listOrd R st st'"        using nextRel and R_split and done_split@@ -300,7 +321,7 @@       apply -       apply(drule this_thread.in_steps_conv_done_skipped[THEN iffD1])       by(fastforce dest!: this_thread.roleOrd_notSkipped_imp_listOrd_trace dest:listOrd_imp_predOrd)+-    note input and this+    note input and match_eq and not_match and this   }   ultimately show ?thesis     by (auto simp: prefixClose_def)@@ -310,15 +331,18 @@  lemma ext_prefixClose:    "\<lbrakk> (i, step) \<in> steps t; roleMap r i = Some R \<rbrakk> \<Longrightarrow>-   prefixClose s t R step i \<and> -   (recvStep step \<longrightarrow> (\<exists> m. Some m = inst s i (stepPat step) \<and> Ln m \<prec> St (i, step)))"-  by (cases step) (fastforce intro!: prefixCloseI Ln_before_inp)++   prefixClose s t R step i \<and>+   (recvStep step \<longrightarrow> (\<exists> m. Some m = inst s i (stepPat step) \<and> Ln m \<prec> St (i, step))) \<and>+   (matchEqStep step \<longrightarrow> exec_match s i (matchVar step) (stepPat step)) \<and>+   (notMatchStep step \<longrightarrow> \<not> exec_match s i (matchVar step) (stepPat step))"+by (cases step)+   (auto dest: prefixCloseI Ln_before_inp matchEqStepD match_eq_rule notMatchStepD not_match_rule)  text{*    Used for prefix closing assumptions corresponding to a case of   an annotation completeness induction proof. *}-lemma thread_prefixClose: +lemma thread_prefixClose:   assumes thread_exists: "r i = Some (step#done, todo, skipped)"       and not_skipped:   "step \<notin> skipped"     shows @@ -326,21 +350,29 @@       ((recvStep st \<longrightarrow>            (\<exists> m. Some m = inst s i (stepPat st) \<and> predOrd t (Ln m) (St (i, st)))         ) \<and>-        predOrd t (St (i, st)) (St (i, st')))+       (matchEqStep st \<longrightarrow> exec_match s i (matchVar st) (stepPat st)) \<and>+       (notMatchStep st \<longrightarrow> \<not> exec_match s i (matchVar st) (stepPat st)) \<and>+       predOrd t (St (i, st)) (St (i, st')))     ) \<and>     (recvStep (last (step#done)) \<longrightarrow>-       (\<exists> m. Some m = inst s i (stepPat (last (step#done))) \<and> +       (\<exists> m. Some m = inst s i (stepPat (last (step#done))) \<and>              predOrd t (Ln m) (St (i, (last (step#done))))        )+    ) \<and>+    (matchEqStep (last (step#done)) \<longrightarrow>+        exec_match s i (matchVar (last (step#done))) (stepPat (last (step#done)))+    ) \<and>+    (notMatchStep (last (step#done)) \<longrightarrow>+        \<not> exec_match s i (matchVar (last (step#done))) (stepPat (last (step#done)))     )"-  (is "?prefix \<and> ?inp_last")+  (is "?prefix \<and> ?inp_last \<and> ?match_eq_last \<and> ?not_match_last") proof -   interpret this_thread: reachable_thread P t r s i "step#done" todo skipped     using thread_exists by unfold_locales auto   {     assume recv: "recvStep (last (step#done))"     hence last_step: "(i, last (step#done)) \<in> steps t"-      proof+      proof -         obtain l pt           where recv_eq: "(Recv l pt) = (last (step # done))"           using recv by (fastforce dest!: recvStepD)@@ -349,10 +381,39 @@           using thread_exists recv_eq           by(fastforce dest!: this_thread.in_steps_recv[THEN iffD1])         qed-    hence "?inp_last"-      by (cases "last (step # done)") (fastforce dest!: Ln_before_inp)++    hence "?inp_last" by (fastforce dest: recvStepD Ln_before_inp)   }   moreover+  {+    assume match: "matchEqStep (last (step#done))"+    hence last_step: "(i, last (step#done)) \<in> steps t"+      proof -+        obtain l v pt+          where match_eq: "(Match l True v pt) = (last (step # done))"+          using match by (fastforce dest!: matchEqStepD)+        hence "Match l True v pt \<in> set (step # done)" by auto+        thus ?thesis+          using thread_exists match_eq+          by(fastforce dest!: this_thread.in_steps_recv[THEN iffD1])+        qed+     hence "?match_eq_last" by (fastforce dest: matchEqStepD match_eq_rule)+  }+  moreover+  {+    assume match: "notMatchStep (last (step#done))"+    hence last_step: "(i, last (step#done)) \<in> steps t"+      proof -+        obtain l v pt+          where match_eq: "(Match l False v pt) = (last (step # done))"+          using match by (fastforce dest!: notMatchStepD)+        hence "Match l False v pt \<in> set (step # done)" by auto+        thus ?thesis+          using thread_exists match_eq+          by(fastforce dest!: this_thread.in_steps_recv[THEN iffD1])+        qed+     hence "?not_match_last" by (fastforce dest: notMatchStepD not_match_rule)+  }+  moreover   {      fix st st'     assume "nextRel (step # (filter (\<lambda> x. \<not> (noteStep x)) done)) st st'"@@ -403,19 +464,25 @@     hence recv: "recvStep st \<Longrightarrow>                   \<exists> m. Some m = inst s i (stepPat st) \<and> predOrd t (Ln m) (St (i, st))"       using this_thread.roleMap-      by (cases st) (auto intro!: Ln_before_inp dest: in_steps_predOrd1)-    note step_ord recv+      by (cases st) (auto dest: Ln_before_inp in_steps_predOrd1)+    from step_ord have matchEq:+        "matchEqStep st \<Longrightarrow> exec_match s i (matchVar st) (stepPat st)"+      by (cases st) (auto dest: in_steps_predOrd1 matchEqStepD match_eq_rule)+    from step_ord have notMatch:+        "notMatchStep st \<Longrightarrow> \<not> exec_match s i (matchVar st) (stepPat st)"+      by (cases st) (auto dest: in_steps_predOrd1 notMatchStepD not_match_rule)+    note step_ord recv matchEq notMatch   }   ultimately-  show ?thesis by fast+  show ?thesis by blast qed  end -text{* +(*   TODO: Find the right place for this lemma. It is used only in   the "prefix\_close" command.-*}+*) lemma steps_in_steps: "(i,step) \<in> steps t \<Longrightarrow> (i,step) \<in> steps t"   by auto 
data/isabelle/src/ESPLogic/Protocol.thy view
@@ -30,15 +30,16 @@   | PFresh   id   | PVar     varid   | PHash    pattern-  | PTup     pattern pattern -  | PEnc     pattern pattern +  | PTup     pattern pattern+  | PEnc     pattern pattern   | PSign    pattern pattern-  | PSymK    pattern pattern -  | PShrK    "varid set"  (* variables denoting a set of agents sharing a key *)-  | PAsymPK  pattern         -  | PAsymSK  pattern         +  | PSymK    pattern pattern+  | PShrK    "varid set"  --{* variables denoting a set of agents sharing a key *}+  | PAsymPK  pattern+  | PAsymSK  pattern+  | PAny     --{* wildcard for matching *} -(* bi-directional keys between two agents referenced by variables *)+text{* Bi-directional keys between two agents referenced by variables *} definition sKbd :: "varid \<Rightarrow> varid \<Rightarrow> pattern" where "sKbd a b = PShrK {a, b}" @@ -79,6 +80,7 @@   by (auto simp: sKbd_def)  +text{* Free agent variables *} fun FAV :: "pattern \<Rightarrow> id set" where   "FAV (PVar (AVar a)) = {a}"@@ -97,13 +99,19 @@   by (auto simp: sKbd_def)  -subsubsection{* Roles *}+subsubsection{* Role Steps *}  text{*-  Roles are non-empty lists of unique send and receive steps -  such that no long-term keys are used in message texts and all +  Roles are non-empty lists of unique send and receive steps+  such that no long-term keys are used in message texts and all   nonce variables are received before they are sent.+  Additionally, match steps can be used to express local constraints+  on variables and messages. Matching may be positive (equality+  must hold in order to execute the step) or negative. +  Note steps indicate possible points of dynamic information+  leakage.+   The labels allow to make steps with identical message unique.   They are currently defaulted to strings, but could be anything. *}@@ -112,33 +120,105 @@  datatype notetype = RandGen | State | SessKey -datatype rolestep = Send lbl pattern | Recv lbl pattern | Note lbl notetype pattern+datatype rolestep = Send lbl pattern+| Recv lbl pattern+| Match lbl bool varid pattern+| Note lbl notetype pattern +text {*+  Free message variables guaranteed to be instantiated (having+  a semantic source) after a role step was executed.+*}+fun sourced_vars :: "rolestep \<Rightarrow> id set"+where+  "sourced_vars (Recv  lbl        pt) = FMV pt"+| "sourced_vars (Match lbl True v pt) = FMV pt"+| "sourced_vars _ = {}"++text {*+  Free message variables which must have been obtained previously+  when performing a role step.+*}+fun used_vars :: "rolestep \<Rightarrow> id set"+where+  "used_vars (Send  lbl         msg) = FMV msg"+| "used_vars (Recv  lbl         pt)  = {}"+| "used_vars (Match lbl True  v pt)  = {m. v = MVar m}"+| "used_vars (Match lbl False v pt)  = {m. v = MVar m} \<union> FMV pt"+| "used_vars (Note  lbl ty      msg) = FMV msg"++text {* Free variables of a role step *}+fun FV_rolestep :: "rolestep \<Rightarrow> varid set"+where+  "FV_rolestep (Send  lbl      pt) = FV pt"+| "FV_rolestep (Recv  lbl      pt) = FV pt"+| "FV_rolestep (Match lbl eq v pt) = {v} \<union> FV pt"+| "FV_rolestep (Note  lbl ty   pt) = FV pt"++text {* Free agent variables of a role step *}+fun FAV_rolestep :: "rolestep \<Rightarrow> id set"+where+  "FAV_rolestep (Send  lbl      pt) = FAV pt"+| "FAV_rolestep (Recv  lbl      pt) = FAV pt"+| "FAV_rolestep (Match lbl eq v pt) = {a. v = AVar a} \<union> FAV pt"+| "FAV_rolestep (Note  lbl ty   pt) = FAV pt"++text {* The pattern of a rolestep *} fun stepPat :: "rolestep \<Rightarrow> pattern" where-  "stepPat (Send lbl msg)    = msg"-| "stepPat (Recv lbl msg)    = msg"-| "stepPat (Note lbl ty msg) = msg"+  "stepPat (Send  lbl      pt) = pt"+| "stepPat (Recv  lbl      pt) = pt"+| "stepPat (Match lbl eq v pt) = pt"+| "stepPat (Note  lbl ty   pt) = pt" +text {* The variable to match with (or not) *}+fun matchVar :: "rolestep \<Rightarrow> varid"+where+  "matchVar (Match l eq v pt) = v"+| "matchVar _                 = undefined"++text {* The type of possible information leakage *} fun noteType :: "rolestep \<Rightarrow> notetype" where   "noteType (Note l ty pt) = ty"+| "noteType _              = undefined" ++text {* Predicates for step types *}+ fun sendStep :: "rolestep \<Rightarrow> bool" where-  "sendStep (Send lbl    msg) = True"-| "sendStep (Recv lbl    msg) = False"-| "sendStep (Note lbl ty msg) = False"+  "sendStep (Send lbl pt) = True"+| "sendStep _             = False"  fun noteStep :: "rolestep \<Rightarrow> bool" where-  "noteStep (Send lbl    msg) = False"-| "noteStep (Recv lbl    msg) = False"-| "noteStep (Note lbl ty msg) = True"+  "noteStep (Note lbl ty pt) = True"+| "noteStep _                = False" +fun recvStep :: "rolestep \<Rightarrow> bool"+where+  "recvStep (Recv lbl pt) = True"+| "recvStep _             = False" -abbreviation recvStep where "recvStep x \<equiv> \<not>sendStep x \<and> \<not> noteStep x"+fun matchStep :: "rolestep \<Rightarrow> bool"+where+  "matchStep (Match lbl eq v pt) = True"+| "matchStep _                   = False" +text {* Distinguishing positive and negative match steps *}++fun matchEqStep :: "rolestep \<Rightarrow> bool"+where+  "matchEqStep (Match lbl True v pt) = True"+| "matchEqStep _                     = False"++fun notMatchStep :: "rolestep \<Rightarrow> bool"+where+  "notMatchStep (Match lbl False v pt) = True"+| "notMatchStep _                      = False"++ lemma sendStepD [simp]:   assumes inStep: "sendStep step"   shows "\<exists> l pt. step = (Send l pt)"@@ -148,11 +228,36 @@  lemma recvStepD [simp]:   assumes inStep: "recvStep step"-  shows "\<exists> l pt. step = (Recv l pt)"+  shows "\<exists> l v. step = (Recv l v)" using inStep proof(cases step) qed auto +lemma matchStepD [simp]:+  assumes inStep: "matchStep step"+  shows "\<exists> l eq v pt. step = (Match l eq v pt)"+using inStep+proof (cases step)+qed auto++lemma matchEqStepD [simp]:+  assumes inStep: "matchEqStep step"+  shows "\<exists> l v pt. step = (Match l True v pt)"+using inStep+proof (cases step)+  case (Match lbl eq v pt)+  thus ?thesis using inStep by (cases eq, auto)+qed auto++lemma notMatchStepD [simp]:+  assumes inStep: "notMatchStep step"+  shows "\<exists> l v pt. step = (Match l False v pt)"+using inStep+proof (cases step)+  case (Match lbl eq v pt)+  thus ?thesis using inStep by (cases eq, auto)+qed auto+ lemma noteStepD [simp]:   assumes inStep: "noteStep step"   shows "\<exists> l ty pt. step = (Note l ty pt)"@@ -161,24 +266,28 @@ qed auto  +subsubsection{* Roles *}+ type_synonym "role" = "rolestep list" -fun recv_before :: "id set \<Rightarrow> role \<Rightarrow> bool"+text{*+  Message variables whose values are semantically used in a+  role step, i.e., sent or matched against, must have been+  instantiated in an earlier step of the role.+*}+fun source_before_use :: "id set \<Rightarrow> role \<Rightarrow> bool" where-  "recv_before bound []                = True"-| "recv_before bound (Recv _ msg # xs) = -     recv_before (bound \<union> FMV msg) xs"-| "recv_before bound (Note _ _ msg # xs) =-     ((\<forall> v. v \<in> FMV msg \<longrightarrow> v \<in> bound) \<and>  recv_before bound xs)"-| "recv_before bound (Send _ msg # xs) =-     ((\<forall> v. v \<in> FMV msg \<longrightarrow> v \<in> bound) \<and>  recv_before bound xs)"+  "source_before_use bound [] = True"+| "source_before_use bound (step # xs) =+    ((used_vars step \<subseteq> bound)+    \<and> source_before_use (bound \<union> sourced_vars step) xs)"   locale wf_role =   distinct_list R for R :: "role" +-  assumes recv_msgVar_first [iff]: "recv_before {} R"+  assumes source_msgVar_first [iff]: "source_before_use {} R" -  + subsubsection{* Protocols *}  type_synonym proto = "role set"@@ -192,80 +301,44 @@  subsubsection{* Well-Formed Roles *} -lemma recv_before_sent_distinct_Send_FV:-  "\<lbrakk>  recv_before V (R@ Send lbl pt # R'); -      distinct (R @ Send lbl pt # R');-      v \<in> FMV pt; v \<notin> V +lemma source_before_use_distinct:+  "\<lbrakk>  source_before_use V (R @ step # R');+      distinct (R @ step # R');+      v \<in> used_vars step; v \<notin> V    \<rbrakk> \<Longrightarrow>-   \<exists> lbl' pt'. Recv lbl' pt' \<in> set R \<and> v \<in> FMV pt'"-proof(induct R arbitrary: V)-  case (Cons step R) note IH = this show ?case-    proof(cases step)-      case (Send lbl pt) thus ?thesis using IH by auto-    next-      case (Recv lbl pt) thus ?thesis using IH by (auto, fast)+   (\<exists> step'. step' \<in> set R \<and> v \<in> sourced_vars step')"+proof (induct R arbitrary: V)+  case (Cons step R)+    note IH = this show ?case+    proof (cases step)+      case Send thus ?thesis using IH by fastforce     next-      case (Note lbl ty pt) thus ?thesis using IH by auto-    qed-qed simp--lemma recv_before_note_distinct_Note_FV:-  "\<lbrakk>  recv_before V (R@ Note lbl ty pt # R'); -      distinct (R @ Note lbl ty pt # R');-      v \<in> FMV pt; v \<notin> V -   \<rbrakk> \<Longrightarrow>-   \<exists> lbl' pt'. Recv lbl' pt' \<in> set R \<and> v \<in> FMV pt'"-proof(induct R arbitrary: V)-  case (Cons Note R) -  note IH = this show ?case-    proof(cases Note)-      case (Send lbl pt) thus ?thesis using IH by auto+      case Recv thus ?thesis using IH by fastforce     next-      case (Recv lbl pt) thus ?thesis using IH by (auto, fast)+      case Match thus ?thesis using IH by fastforce     next-      case (Note lbl ty pt) thus ?thesis using IH by auto+      case Note thus ?thesis using IH by fastforce     qed-qed simp-+qed auto -lemma (in wf_role) Send_FV:-  assumes Send: "Send lbl pt \<in> set R" (is "?send \<in> set R")-      and FV:   "v \<in> FMV pt"-  shows "\<exists> lbl' pt'. listOrd R (Recv lbl' pt') (Send lbl pt) \<and> v \<in> FMV pt'" -using Send +lemma (in wf_role) source_use_ord:+  assumes useR: "ustep \<in> set R"+      and useV: "v \<in> used_vars ustep"+    shows "\<exists> sstep. v \<in> sourced_vars sstep \<and> listOrd R sstep ustep" (is "\<exists> sstep. ?source sstep")+using useR proof --  let ?send = "Send lbl pt"-    and "\<exists> lbl' pt'. ?received lbl' pt'" = ?thesis-  assume "?send \<in> set R" then-  obtain ys zs -    where split: "R = ys @ ?send # zs" by (blast dest!: split_list)-  moreover have "distinct R" and "recv_before {} R" by auto-  ultimately obtain lbl' pt' where "Recv lbl' pt' \<in> set ys" -                                and "v \<in> FMV pt'"-             by (fastforce dest!: recv_before_sent_distinct_Send_FV intro!: FV)-  hence "?received lbl' pt'" using split by auto+  assume "ustep \<in> set R"+  then obtain ys zs +    where split: "R = ys @ ustep # zs" by (blast dest!: split_list)+  moreover have "distinct R" and "source_before_use {} R" by auto+  ultimately obtain sstep where "v \<in> sourced_vars sstep" and "sstep \<in> set ys"+             by (fastforce dest!: source_before_use_distinct intro!: useV)+  hence "?source sstep" using split by fastforce   thus ?thesis by blast qed  -lemma (in wf_role) Note_FV:-  assumes Note: "Note lbl ty pt \<in> set R" (is "?note \<in> set R")-      and FV:   "v \<in> FMV pt"-  shows "\<exists> lbl' pt'. listOrd R (Recv lbl' pt') (Note lbl ty pt) \<and> v \<in> FMV pt'" -using Note-proof --  let ?send = "Note lbl ty pt"-    and "\<exists> lbl' pt'. ?received lbl' pt'" = ?thesis-  assume "?note \<in> set R" then-  obtain ys zs -    where split: "R = ys @ ?note # zs" by (blast dest!: split_list)-  moreover have "distinct R" and "recv_before {} R" by auto-  ultimately obtain lbl' pt' where "Recv lbl' pt' \<in> set ys" -                                and "v \<in> FMV pt'"-             by (fastforce dest!: recv_before_note_distinct_Note_FV intro!: FV)-  hence "?received lbl' pt'" using split by auto-  thus ?thesis by blast-qed+subsubsection{* Auxiliary Lemmas *}  lemma FV_FAV_conv[iff]:   "(a \<in> FAV pt) = ((AVar a) \<in> FV pt)"@@ -283,11 +356,30 @@     by(cases vid) auto qed auto +lemma sourced_imp_FV[dest]:+  "v \<in> sourced_vars st \<Longrightarrow> MVar v \<in> FV_rolestep st"+proof (cases st)+  case (Match lbl eq mv pt)+  assume "v \<in> sourced_vars st"+  thus ?thesis using Match by (cases eq, auto)+qed auto +lemma used_imp_FV[dest]:+  "v \<in> used_vars st \<Longrightarrow> MVar v \<in> FV_rolestep st"+proof (cases st)+  case (Match lbl eq mv pt)+  assume "v \<in> used_vars st"+  thus ?thesis using Match by (cases eq, auto)+qed auto +lemma source_noteD[dest]:+  "\<lbrakk> v \<in> sourced_vars st; noteStep st \<rbrakk> \<Longrightarrow> False"+by (auto dest: noteStepD)++ definition aVars:: "role \<Rightarrow> varid set" where-  "aVars role = foldr (\<lambda> st se. (AVar ` FAV (stepPat st)) \<union> se) role {}"+  "aVars role = foldr (\<lambda> st se. (AVar ` FAV_rolestep st) \<union> se) role {}"  lemma aVars_singleton[iff]:   "AVar a \<notin> aVars []"@@ -296,11 +388,11 @@ lemma aVars_Nil [iff]: "aVars [] = {}"   by (auto simp: aVars_def) -lemma aVars_Cons [simp]: "aVars (s#xs) = (AVar ` FAV (stepPat s) \<union> aVars xs)"+lemma aVars_Cons [simp]: "aVars (s#xs) = (AVar ` FAV_rolestep s \<union> aVars xs)"   by (auto simp: aVars_def)  lemma aVars_FAV_conv:-  "(AVar a \<in> aVars R) = (\<exists> s \<in> set R. \<exists> pt. (stepPat s = pt \<and> a \<in> FAV pt))"+  "(AVar a \<in> aVars R) = (\<exists> s \<in> set R. a \<in> FAV_rolestep s)" by (induct R) ( fastforce simp add: aVars_def)+  @@ -347,8 +439,6 @@   )" proof (cases "[s\<leftarrow>xs . \<not> noteStep s]") qed (fastforce simp add: firstComStep_def)+ --   end
data/isabelle/src/ESPLogic/Syntax.thy view
@@ -29,7 +29,7 @@  subsubsection{* General Cryptographic Messages *} -notation (xsymbols) ExecMessage.inv  ("[_]\<^isup>-\<^isup>1" [60] 58)+notation (xsymbols) ExecMessage.inv  ("[_]\<^sup>-\<^sup>1" [60] 58)   subsubsection{* Specification Messages *}@@ -63,6 +63,12 @@ translations   "<|x, y, z|>"   == "<|x, <|y, z|> |>"   "<|x, y|>"      == "CONST PTup x y"+++subsubsection{* Protocol Role Steps *}++abbreviation "MatchEq" where "MatchEq lbl \<equiv> Match lbl True"+abbreviation "NotMatch" where "NotMatch lbl \<equiv> Match lbl False"   subsubsection{* Execution Messages *}
data/isabelle/src/ESPLogic/Unify.thy view
@@ -205,7 +205,7 @@     (* TODO: Remove hack by using Named_Thms data functor. *)     val thm_by_name = Proof_Context.get_thm ctxt;     val ss = ctxt -      delsimps map thm_by_name ["tid_eq_commute", "reorient_store_eq_store"];+      delsimps map thm_by_name ["tid_eq_commute"];      (* substitute an equality theorem in the given list of 'done' and         'todo' theorems. The changed theorems from 'done' are readded@@ -316,10 +316,15 @@ local   fun define_cmd name info f =     Outer_Syntax.command name info-    (Parse_Spec.name_facts >> (Toplevel.print oo (Toplevel.proof o (note_modified_thmss f))));+    (Parse_Spec.name_facts >> (Toplevel.proof o (note_modified_thmss f)));++  fun define_qualified_cmd name info f =+    Outer_Syntax.command name info+    (Parse.parname -- Parse_Spec.name_facts >> (fn (qualifier, args) =>+      args |> note_modified_thmss (f qualifier) |> Toplevel.proof)); in   val _ = -    define_cmd @{command_spec "note_prefix_closed"} +    define_qualified_cmd @{command_spec "note_prefix_closed"}       "prefix close facts and store them under the given name"       ESPL_Methods.prefix_close_thms; 
data/isabelle/src/ESPLogic/WeakTyping.thy view
@@ -43,7 +43,7 @@ where "approx typing \<equiv> {q. case q of (t,r,s) \<Rightarrow>   \<forall> (i,step) \<in> steps t.      \<forall> R. roleMap r i = Some R \<longrightarrow>-      (\<forall> n. MVar n \<in> FV (stepPat step) \<longrightarrow>+      (\<forall> n. MVar n \<in> FV_rolestep step \<longrightarrow>          s (MVar n, i) \<in> typing (R, n) i (t,r,s)       )}" @@ -63,7 +63,7 @@   "((t,r,s) \<in> approx typing) =     (\<forall> (i,step) \<in> steps t.        \<forall> R. roleMap r i = Some R \<longrightarrow>-        (\<forall> n. MVar n \<in> FV (stepPat step) \<longrightarrow>+        (\<forall> n. MVar n \<in> FV_rolestep step \<longrightarrow>            s (MVar n, i) \<in> typing (R, n) i (t,r,s)))" by (auto simp: approx_def) @@ -72,7 +72,7 @@     "\<And> i step R n.      \<lbrakk> (i,step) \<in> steps t;        roleMap r i = Some R;-       MVar n \<in> FV (stepPat step)+       MVar n \<in> FV_rolestep step      \<rbrakk>        \<Longrightarrow> s (MV n i) \<in> typing (R, n) i (t,r,s)"   shows "(t,r,s) \<in> approx typing"@@ -82,7 +82,7 @@   assumes approx: "(t,r,s) \<in> approx typing"   and asms: "(i,step) \<in> steps t"             "roleMap r i = Some R"-            "MVar n \<in> FV (stepPat step)"+            "MVar n \<in> FV_rolestep step"   shows "s (MV n i) \<in> typing (R, n) i (t,r,s)" using approx asms by (auto simp: approx_unfold)@@ -247,23 +247,70 @@   by (rule monoTyp_freeD) auto  +lemma (in reachable_thread) step_done_typing:+  assumes typ_rule:+    "\<And> step.+     \<lbrakk> (i, step) \<in> steps t;+       MVar v \<in> FV_rolestep step+     \<rbrakk> \<Longrightarrow> s (MV v i) \<in> typing (done @ todo, v) i (t, r, s)"+  and step_done: "step \<in> set done"+  and step_var: "MVar v \<in> FV_rolestep step"+  shows "s (MV v i) \<in> typing (done @ todo, v) i (t, r, s)"+proof (cases "step \<in> skipped")+  case False+  thus ?thesis using assms by auto+next+  case True+  note inSkipped = this+  then obtain l ty pt+    where noteEq: "(Note l ty pt) = step"+    by(auto dest!: note_in_skipped)+  hence "\<exists> step'. listOrd (done@todo) step' (Note l ty pt) \<and> v \<in> sourced_vars step'"+    using inSkipped step_done step_var+    apply -+    apply(subgoal_tac "v \<in> used_vars step")+      apply(subgoal_tac "Note l ty pt \<in> set (done@todo)")+        apply(drule source_use_ord)+    by auto+  then obtain step'+    where roleBefore: "listOrd (done@todo) step' (Note l ty pt)"+    and varSourced: "v \<in> sourced_vars step'"+    by auto+  have notNote: "\<not> noteStep step'" using varSourced by auto+  have "step' \<in> set done" +    using roleBefore step_done noteEq+    apply -+    apply(drule listOrd_append[THEN iffD1])+    apply(case_tac "listOrd done step' (Note l ty pt)")+      apply(fastforce dest: in_set_listOrd1)+    apply(case_tac "listOrd todo step' (Note l ty pt)")+      apply(fastforce dest: in_set_listOrd2 done_notin_todoD)+    apply(case_tac "step' \<in> set done \<and> Note l ty pt \<in> set todo")+    by(auto dest: done_notin_todoD)+  hence "(i, step') \<in> steps t" using notNote by (cases step', auto)+  thus ?thesis+    using varSourced by (auto intro!: typ_rule thread_exists)+qed++ lemma (in reachable_state) reachable_in_approxI:   assumes monoTyp: "monoTyp typing"-  and recv_case:+  and source_case:     "\<And> t r s i done todo skipped m R step n.      \<lbrakk> R \<in> P;         roleMap r i = Some R;        (done, step # todo) \<in> set (splits R);-       recvStep step;-       MVar n \<in> FV (stepPat step);-       \<forall> step' \<in> set done. MVar n \<notin> FV (stepPat step');+       \<not> sendStep step; \<not> noteStep step;+       n \<in> sourced_vars step;+       \<forall> step' \<in> set done. MVar n \<notin> FV_rolestep step';        hint ''completenessCase'' (step, n);                (t,r,s) \<in> reachable P;        (t,r,s) \<in> approx typing;        r i = Some (done, step # todo, skipped);-       Some m = inst s i (stepPat step);-       m \<in> knows t+       +       recvStep step \<Longrightarrow> Some m = inst s i (stepPat step) \<and> m \<in> knows t;+       matchEqStep step \<Longrightarrow> exec_match s i (matchVar step) (stepPat step)      \<rbrakk> \<Longrightarrow>          s (MV n i) \<in> typing (R, n) i (t @ [Step (i, step)], r(i \<mapsto> (done @ [step], todo, skipped)), s)"   shows "(t,r,s) \<in> approx typing"@@ -272,34 +319,33 @@     have      "\<lbrakk> r i = Some (done, todo, skipped);         (i,step) \<in> steps t;-        MVar n \<in> FV (stepPat step)+        MVar n \<in> FV_rolestep step       \<rbrakk> \<Longrightarrow> s (MV n i) \<in> typing (done@todo, n) i (t,r,s)"     proof(induct arbitrary: i "done" todo step n skipped rule: reachable_induct)       case (send t r s i "done" l pt todo skipped m i' done' todo' step n skipped')       then interpret th1: -	reachable_thread P t r s i "done" "Send l pt # todo" skipped-	by unfold_locales auto+        reachable_thread P t r s i "done" "Send l pt # todo" skipped+        by unfold_locales auto       from send        have "(i', step) \<in> steps t \<or> (i' = i) \<and> step = Send l pt"-	(is "?old \<or> ?new") by auto+        (is "?old \<or> ?new") by auto       moreover       { assume ?old-	hence "s(MV n i') \<in> typing (done'@todo', n) i' (t,r,s)"-	  using send by (auto split: if_splits)-	hence ?case-	proof(rule monoTyp_freeD[OF monoTyp])-	qed (auto simp: th1.thread_exists)+        hence "s(MV n i') \<in> typing (done'@todo', n) i' (t,r,s)"+          using send by (auto split: if_splits)+        hence ?case+        proof(rule monoTyp_freeD[OF monoTyp])+        qed (auto simp: th1.thread_exists)       }       moreover       { let ?role = "done @ Send l pt # todo"-	note IH = send(2)-	assume "?new"-        hence "MVar n \<in> FV pt"-          using send by auto-        then obtain l' msg' -          where "(i, Recv l' msg') \<in> steps t" -                "MVar n \<in> FV msg'"-          by (fastforce dest!: th1.send_step_FV[OF th1.thread_exists])+        note IH = send(2)+        assume "?new"+        moreover hence "n \<in> used_vars step" using send by auto+        ultimately obtain step' +          where "(i, step') \<in> steps t" +                "n \<in> sourced_vars step'"   +          by (fastforce dest!: th1.source_step[OF th1.thread_exists])         hence typed: "s (MV n i) \<in> typing (?role, n) i (t, r, s)"           by (auto dest: IH[OF th1.thread_exists])         have "done'@todo' = ?role"@@ -313,16 +359,16 @@     next       case (recv t r s i "done" l pt todo skipped m i' done' todo' step n skipped') then       interpret th1: -	reachable_thread P t r s i "done" "Recv l pt # todo" skipped-	by unfold_locales auto+        reachable_thread P t r s i "done" "Recv l pt # todo" skipped+        by unfold_locales auto       from recv       have "(i', step) \<in> steps t \<or> (i' = i) \<and> step = Recv l pt"-	(is "?old \<or> ?new") by auto+        (is "?old \<or> ?new") by auto       moreover       { assume ?old-	hence "s(MV n i') \<in> typing (done'@todo', n) i' (t,r,s)"-	  using recv by (auto split: if_splits)-	hence ?case using `?old`+        hence "s(MV n i') \<in> typing (done'@todo', n) i' (t,r,s)"+          using recv by (auto split: if_splits)+        hence ?case using `?old`           apply -           apply(rule monoTyp_freeD[OF monoTyp])           apply(auto simp: th1.thread_exists)@@ -331,86 +377,31 @@       moreover       { let ?role = "done @ Recv l pt # todo"         note IH = recv(2)-	assume "?new"+        assume "?new"         hence cur_thread: "?role = done' @ todo'" "i = i'"            using recv by auto         have ?case-        proof(cases "\<exists> step' \<in> set done.  MVar n \<in> FV (stepPat step')")+        proof(cases "\<exists> step' \<in> set done. MVar n \<in> FV_rolestep step'")           case True           with recv-          obtain step'' -            where FV: "MVar n \<in> FV (stepPat step'')" -            and step'': "step'' \<in> set done"+          obtain step'+            where FV: "MVar n \<in> FV_rolestep step'" +            and step': "step' \<in> set done"             by auto-          thus ?thesis -          proof(cases "step'' \<in> skipped")-            case False-            then obtain step' -              where FV: "MVar n \<in> FV (stepPat step')" -              and notinSkipped: "step' \<notin> skipped"-              and step': "(i,step') \<in> steps t"-              using FV step''-              by(auto simp add: th1.in_steps_conv_done_skipped)-            hence "s (MV n i) \<in> typing (?role, n) i (t, r, s)"-              by (auto intro!: IH th1.thread_exists)-            hence "s (MV n i') \<in> typing (done'@todo', n) i' (t, r, s)"-              using cur_thread by simp-            thus ?thesis-              apply --              apply(rule monoTyp_freeD[OF monoTyp])-              apply(auto simp: th1.thread_exists)-              done-          next-            case True-            then obtain step'-              where FV: "MVar n \<in> FV (stepPat step')" -              and inSkipped: "step' \<in> skipped"-              and inDone: "step' \<in> set done"-              using FV step''-              by auto-            then obtain l' ty' pt'-              where noteEq: "(Note l' ty' pt') = step'"-              by(auto dest!: th1.note_in_skipped)--            hence "\<exists> l'' pt''. listOrd ?role (Recv l'' pt'') (Note l' ty' pt') \<and> MVar n \<in> FV (stepPat (Recv l'' pt''))"-              using FV inSkipped inDone -              apply --              apply(drule FV_FMV_conv[THEN iffD2])-              apply(subgoal_tac "Note l' ty' pt' \<in> set ?role")-                apply(drule th1.Note_FV)-              by (auto dest: FV_FMV_conv[THEN iffD1])-            then obtain l'' pt''-              where roleBefore: "listOrd ?role (Recv l'' pt'') (Note l' ty' pt')"-              and varOfRecv: "MVar n \<in> FV (stepPat (Recv l'' pt''))"-              by  auto-            hence "Recv l'' pt'' \<in> set done" -              using inDone noteEq-              apply --              apply(drule listOrd_append[THEN iffD1])-              apply(case_tac "listOrd done (Recv l'' pt'') (Note l' ty' pt')")-                apply(fastforce dest: in_set_listOrd1)-              apply(case_tac "listOrd (Recv l pt # todo) (Recv l'' pt'') (Note l' ty' pt')")-                apply(fastforce dest: in_set_listOrd2 th1.done_notin_todoD)-              apply(case_tac "Recv l'' pt'' \<in> set done \<and> Note l' ty' pt' \<in> set (Recv l pt # todo)")-              by(auto dest: th1.done_notin_todoD)-            hence "(i, Recv l'' pt'') \<in> steps t" by auto--            hence "s (MV n i) \<in> typing (?role, n) i (t, r, s)"-              using varOfRecv by (auto intro!: IH th1.thread_exists)-            hence "s (MV n i') \<in> typing (done'@todo', n) i' (t, r, s)"-              using cur_thread by simp-            thus ?thesis-              apply --              apply(rule monoTyp_freeD[OF monoTyp])-              apply(auto simp: th1.thread_exists)-              done-          qed+          hence "s (MV n i) \<in> typing (done'@todo', n) i (t, r, s)"+            using th1.thread_exists cur_thread IH+            by (metis th1.step_done_typing)+          thus ?thesis using `?new`+            apply -+            apply(rule monoTyp_freeD[OF monoTyp])+            apply(auto simp: th1.thread_exists)+            done         next           case False             moreover have "(t, r, s) \<in> approx typing"               by (auto simp: approx_unfold dest!: IH roleMap_SomeD)-            moreover have "MVar n \<in> FV pt" -              using `MVar n \<in> FV (stepPat step)` `?new` by auto+            moreover note `?new`+            moreover note `MVar n \<in> FV_rolestep step`             moreover note `Some m = inst s i pt`             moreover note `m \<in> knows t`             moreover note cur_thread[symmetric]@@ -418,9 +409,9 @@             ultimately show ?thesis               apply -               apply(clarsimp simp del: fun_upd_apply)-              apply(rule recv_case)+              apply(rule source_case)               apply(simp_all add: th1.role_in_P th1.roleMap th1.thread_exists -                                in_set_splits_conv remove_hints)+                                  in_set_splits_conv remove_hints)               done          qed       }@@ -428,30 +419,31 @@     next       case (compr t r s i "done" l ty pt todo skipped m i' done' todo' step n skipped')       then interpret th1: -	reachable_thread P t r s i "done" "Note l ty pt # todo" skipped-	by unfold_locales auto+        reachable_thread P t r s i "done" "Note l ty pt # todo" skipped+        by unfold_locales auto       from compr       have "(i', step) \<in> steps t \<or> (i' = i) \<and> step = Note l ty pt"-	(is "?old \<or> ?new") by auto+        (is "?old \<or> ?new") by auto       moreover       { assume ?old-	hence "s(MV n i') \<in> typing (done'@todo', n) i' (t,r,s)"-	  using compr by (auto split: if_splits)-	hence ?case-	proof(rule monoTyp_freeD[OF monoTyp])-	qed (auto simp: th1.thread_exists)+        hence "s(MV n i') \<in> typing (done'@todo', n) i' (t,r,s)"+          using compr by (auto split: if_splits)+        hence ?case+        proof(rule monoTyp_freeD[OF monoTyp])+        qed (auto simp: th1.thread_exists)       }       moreover       { let ?role = "done @ Note l ty pt # todo"-	note IH = compr(2)-	assume "?new"-        hence "MVar n \<in> FV pt"+        note IH = compr(2)+        assume "?new"+        hence "n \<in> used_vars (Note l ty pt)"           using compr by auto-        then obtain l' msg' -          where "(i, Recv l' msg') \<in> steps t" -                "MVar n \<in> FV msg'"-          by (fastforce dest!: th1.note_step_FV[OF th1.thread_exists])-        hence typed: "s (MV n i) \<in> typing (?role, n) i (t, r, s)"+        then obtain step' +          where "(i, step') \<in> steps t" +                "n \<in> sourced_vars step'"+          by (fastforce dest!: th1.source_step[OF th1.thread_exists])+        moreover hence "MVar n \<in> FV_rolestep step'" by auto+        ultimately have typed: "s (MV n i) \<in> typing (?role, n) i (t, r, s)"           by (auto dest: IH[OF th1.thread_exists])         have "done'@todo' = ?role"           using compr `?new` by auto@@ -464,15 +456,110 @@     next       case (skip t r s i "done" l ty pt todo skipped i' done' todo' step n skipped')       then interpret th1: -	reachable_thread P t r s i "done" "Note l ty pt # todo" skipped-	by unfold_locales auto+        reachable_thread P t r s i "done" "Note l ty pt # todo" skipped+        by unfold_locales auto       from skip       have "(i', step) \<in> steps t" (is "?old") by auto-	hence "s(MV n i') \<in> typing (done'@todo', n) i' (t,r,s)"-	  using skip by (auto split: if_splits)-	thus ?case-	proof(rule monoTyp_freeD[OF monoTyp])-	qed (auto simp: th1.thread_exists)+      hence "s(MV n i') \<in> typing (done'@todo', n) i' (t,r,s)"+        using skip by (auto split: if_splits)+      thus ?case+      proof(rule monoTyp_freeD[OF monoTyp])+      qed (auto simp: th1.thread_exists)+    next+      case (match t r s i "done" l eq mv pt todo skipped i' done' todo' step n skipped') then+      interpret th1:+        reachable_thread P t r s i "done" "Match l eq mv pt # todo" skipped+        by unfold_locales auto+      from match+      have "(i', step) \<in> steps t \<or> (i' = i) \<and> step = Match l eq mv pt"+        (is "?old \<or> ?new") by auto+      moreover+      { assume ?old+        hence "s (MV n i') \<in> typing (done'@todo', n) i' (t,r,s)"+          using match by (auto split: if_splits)+        hence ?case+        proof (rule monoTyp_freeD[OF monoTyp])+        qed (auto simp: th1.thread_exists)+      }+      moreover+      { let ?role = "done @ Match l eq mv pt # todo"+        note IH = match(2)+        assume "?new"+        have ?case proof (cases eq)+          case True+          note eq_case = this+          hence cur_thread: "?role = done' @ todo'" "i = i'" and+                match_FV: "n \<in> used_vars step \<or> n \<in> sourced_vars step"+          using `?new` match by auto+          from match_FV show ?thesis proof+            assume "n \<in> used_vars step"+            with `?new` obtain step'+              where "(i, step') \<in> steps t"+                    "n \<in> sourced_vars step'"+              by (fastforce dest!: th1.source_step[OF th1.thread_exists])+            hence typed: "s (MV n i) \<in> typing (?role, n) i (t, r, s)"+              by (auto dest: IH[OF th1.thread_exists])+            thus ?thesis using `?new` cur_thread(1)+              apply -+              apply(rule monoTyp_freeD[OF monoTyp])+              by (auto intro!: typed simp: th1.thread_exists)+          next+            assume "n \<in> sourced_vars step"+            thus ?thesis+            proof (cases "\<exists> step' \<in> set done. MVar n \<in> FV_rolestep step'")+              case True+              with match+              obtain step'+                where FV: "MVar n \<in> FV_rolestep step'"+                and step': "step' \<in> set done"+                by auto+              hence "s (MV n i) \<in> typing (done'@todo', n) i (t, r, s)"+                using th1.thread_exists cur_thread IH+                by (metis th1.step_done_typing)+              thus ?thesis using `?new`+                apply -+                apply(rule monoTyp_freeD[OF monoTyp])+                apply(auto simp: th1.thread_exists)+                done+            next+              case False+                moreover have "(t, r, s) \<in> approx typing"+                  by (auto simp: approx_unfold dest!: IH roleMap_SomeD)+                moreover note `?new`+                moreover note `n \<in> sourced_vars step`+                moreover have "exec_match s i mv pt"+                  using match eq_case by simp+                moreover note cur_thread[symmetric]++                ultimately show ?thesis+                  apply -+                  apply(clarsimp simp del: fun_upd_apply)+                  apply(rule source_case)+                  apply(simp_all add: th1.role_in_P th1.roleMap th1.thread_exists+                                      in_set_splits_conv remove_hints)+                  done+            qed+          qed++        next+          case False note notMatch = this+          moreover note `?new`+          moreover hence "n \<in> used_vars step" using match notMatch by auto+          ultimately obtain step'+            where "(i, step') \<in> steps t" +                  "n \<in> sourced_vars step'"   +            by (fastforce dest!: th1.source_step[OF th1.thread_exists])+          hence typed: "s (MV n i) \<in> typing (?role, n) i (t, r, s)"+            by (auto dest: IH[OF th1.thread_exists])+          have "done'@todo' = ?role" using match `?new` by auto+          thus ?thesis using `?new`+            apply -+            apply(rule monoTyp_freeD[OF monoTyp])+            by (auto intro!: typed simp: th1.thread_exists)+        qed+      }+      ultimately show ?case by fastforce+     qed (auto intro: monoTyp_appendD[OF monoTyp])   }   thus ?thesis unfolding approx_unfold by(auto elim!: roleMap_SomeE)@@ -487,37 +574,46 @@ *} lemma (in reachable_state) reachable_in_approxI_ext:   assumes monoTyp: "monoTyp typing"-  and recv_case:+  and source_case:     "\<And> t r s i done todo skipped m R step n.      \<lbrakk> R \<in> P;         roleMap r i = Some R;        (done, step # todo) \<in> set (splits R);-       recvStep step;-       MVar n \<in> foldl (\<lambda> fv step'. fv - FV (stepPat step')) (FV (stepPat step)) done;+       \<not> sendStep step; \<not> noteStep step;+       n \<in> foldl (\<lambda> fv step'. fv - sourced_vars step') (sourced_vars step) done;        hint ''completenessCase'' (step, n);                (t,r,s) \<in> reachable P;        (t,r,s) \<in> approx typing;-       r i = Some (done, step # todo ,skipped);-       Some m = inst s i (stepPat step);-       m \<in> knows t-     \<rbrakk> \<Longrightarrow> +       r i = Some (done, step # todo, skipped);+       \<forall> st'. st' \<in> set done \<longrightarrow> \<not> noteStep st' \<longrightarrow> (i, st') \<in> steps t;++       recvStep step \<Longrightarrow> Some m = inst s i (stepPat step) \<and> m \<in> knows t;+       matchEqStep step \<Longrightarrow> exec_match s i (matchVar step) (stepPat step)+     \<rbrakk> \<Longrightarrow>         s (MV n i) \<in> typing (R, n) i ( t @ [Step (i, step)], r(i \<mapsto> (done @ [step], todo, skipped)), s)"   shows "(t,r,s) \<in> approx typing" proof(induct rule: reachable_in_approxI[OF monoTyp])   case (1 t r s i "done" todo skipped m R step n)   { fix v V     assume "v \<in> V"-      and "\<forall>step'\<in>set done. v \<notin> FV (stepPat step')"-    hence "v \<in> foldl (\<lambda> fv step'. fv - FV (stepPat step')) V done"-      by (induct "done" arbitrary: V) auto+      and "\<forall>step'\<in>set done. MVar v \<notin> FV_rolestep step'"+    hence "v \<in> foldl (\<lambda> fv step'. fv - sourced_vars step') V done"+      by (induct "done" arbitrary: V) (auto intro!: sourced_imp_FV)   }-  hence "MVar n \<in> foldl (\<lambda> fv step'. fv - FV (stepPat step')) (FV (stepPat step)) done"-  using 1 by auto-  thus ?case using 1+  hence "n \<in> foldl (\<lambda> fv step'. fv - sourced_vars step') (sourced_vars step) done"+    using 1 by auto+  moreover {+    interpret thread: reachable_thread P t r s i "done" "(step # todo)" skipped+      using 1 by unfold_locales auto+    fix st'+    assume "st' \<in> set done" and "\<not> noteStep st'"+    hence "(i, st') \<in> steps t" by (auto intro: thread.not_note_done_in_steps)+  }+  ultimately show ?case using 1     apply(subgoal_tac "True")     apply(clarsimp)-    apply(rule recv_case)+    apply(rule source_case)     by(assumption | simp add: remove_hints)+ qed @@ -875,12 +971,13 @@            hint ''case_name'' ''fake''    ) \<or>    (\<exists> R \<in> P. \<exists> i. roleMap r i = Some R \<and> -      (\<exists> step \<in> set R. +      (\<exists> step \<in> set R.          (sendStep step \<or> noteStep step) \<and>          (\<exists> m. Some m = inst s i (stepPat step) \<and> decrChain [] t {St (i, step)} m m') \<and>          prefixClose s t R step i \<and>          (\<forall> v \<in> FV (stepPat step). \<forall> n. v = MVar n \<longrightarrow> -            s (MVar n, i) \<in> typing (R, n) i (t,r,s)) \<and>+            s (MVar n, i) \<in> typing (R, n) i (t,r,s) \<and>+            hint ''case_name_subst'' n) \<and>          hint ''decrChainFrom'' (i, R, step) \<and>          hint ''case_name'' ''decrypt''       )
data/isabelle/src/ESPLogic/espl_definitions.ML view
@@ -21,7 +21,7 @@   (* Additional Utilities *)   val unnamed_caseN: string -  datatype steptyp = Recv | Send | Note of term+  datatype steptyp = Recv | Send | Note of term | Match of bool * term   val mk_rolestep: steptyp * term * term -> term   val dest_rolestep: term -> steptyp * term * term   val dest_role: term -> (steptyp * term * term) list@@ -76,15 +76,21 @@ ******************************************************************************)  -datatype steptyp = Recv | Send | Note of term;+datatype steptyp = Recv | Send | Note of term | Match of bool * term;  fun mk_rolestep (Send, lbl, msg) = @{const Send} $ lbl $ msg   | mk_rolestep (Recv, lbl, msg) = @{const Recv} $ lbl $ msg   | mk_rolestep (Note nTy, lbl, msg) = @{const Note} $ lbl $ nTy $ msg+  | mk_rolestep (Match (true, mv), lbl, msg) = @{const Match} $ lbl $ @{const True} $ mv $ msg+  | mk_rolestep (Match (false, mv), lbl, msg) = @{const Match} $ lbl $ @{const False} $ mv $ msg  fun dest_rolestep (Const (@{const_name Send},_) $ lbl $ msg)       = (Send,     lbl, msg)   | dest_rolestep (Const (@{const_name Recv},_) $ lbl $ msg)       = (Recv,     lbl, msg)   | dest_rolestep (Const (@{const_name Note},_) $ lbl $ nTy $ msg) = (Note nTy, lbl, msg)+  | dest_rolestep (Const (@{const_name Match},_) $ lbl $ Const (@{const_name True},_) $ mv $ msg) =+      (Match (true, mv), lbl, msg)+  | dest_rolestep (Const (@{const_name Match},_) $ lbl $ Const (@{const_name False},_) $ mv $ msg) =+      (Match (false, mv), lbl, msg)   | dest_rolestep t = raise TERM ("dest_rolestep", [t])  val dest_role = map dest_rolestep o HOLogic.dest_list@@ -178,14 +184,25 @@     val ss_full = lthy addsimps [step_def, msg_def] |> simpset_of;      val sendStep_t = @{const sendStep} $ step_const;+    val recvStep_t = @{const recvStep} $ step_const;+    val matchStep_t = @{const matchStep} $ step_const;+    val matchEqStep_t = @{const matchEqStep} $ step_const;+    val notMatchStep_t = @{const notMatchStep} $ step_const;     val noteStep_t = @{const noteStep} $ step_const;     val stepPat_t = @{const stepPat} $ step_const;+    val matchVar_t = @{const matchVar} $ step_const;     val noteType_t = @{const noteType} $ step_const; +    val sourced_vars_t = @{const sourced_vars} $ step_const;+    val used_vars_t = @{const used_vars} $ step_const;+    val FV_rolestep_t = @{const FV_rolestep} $ step_const;+    val FAV_rolestep_t = @{const FAV_rolestep} $ step_const;+     val inst_t = @{term "inst s i"} $ msg_const;-    val FV_t = @{term "FV"} $ msg_const;-    val FMV_t = @{term "FMV"} $ msg_const;-    val FAV_t = @{term "FAV"} $ msg_const;+    val any_inst_t = @{term "any_inst s i"} $ msg_const;+    val FV_t = @{const FV} $ msg_const;+    val FMV_t = @{const FMV} $ msg_const;+    val FAV_t = @{const FAV} $ msg_const;   in    lthy    (* unfold theorems *)@@ -193,13 +210,23 @@    (* step expansions *)      |> #2 o notes_expansion ss_step        [ (mk_binding "sendStep_conv", [([sendStep_t],[att_iff_add])]) +       , (mk_binding "recvStep_conv", [([recvStep_t],[att_iff_add])]) +       , (mk_binding "matchStep_conv", [([matchStep_t],[att_iff_add])]) +       , (mk_binding "matchEqStep_conv", [([matchEqStep_t],[att_iff_add])])+       , (mk_binding "notMatchStep_conv", [([notMatchStep_t],[att_iff_add])])        , (mk_binding "noteStep_conv", [([noteStep_t],[att_iff_add])])         , (mk_binding "stepPat_conv",  [([stepPat_t],[att_simp_add])]) +       , (mk_binding "matchVar_conv",  [([matchVar_t],[att_simp_add])])        , (mk_binding "noteType_conv",  [([noteType_t],[att_simp_add])])+       , (mk_binding "sourced_vars_conv",  [([sourced_vars_t],[att_simp_add])])+       , (mk_binding "used_vars_conv",  [([used_vars_t],[att_simp_add])])+       , (mk_binding "FV_rolestep_conv",  [([FV_rolestep_t],[att_simp_add])])+       , (mk_binding "FAV_rolestep_conv",  [([FAV_rolestep_t],[att_simp_add])])        ]    (* full expansions *)      |> notes_expansion ss_full        [ (mk_binding "inst_conv", [([inst_t], [att_simp_add])])+       , (mk_binding "any_inst_conv", [([any_inst_t], [att_simp_add])])        , (mk_binding "FV_conv",   [([FV_t],   [att_simp_add])])        , (mk_binding "FMV_conv",  [([FMV_t],  [att_simp_add])])        , (mk_binding "FAV_conv",  [([FAV_t],  [att_simp_add])])@@ -260,13 +287,14 @@      val ss_role = ctxt addsimps [role_def, @{thm prefixClose_def}] |> simpset_of;     val ss_full = ctxt addsimps ([role_def, @{thm prefixClose_def}] @ pat_defs @ step_defs @-      @{thms wf_role_def distinct_list_def wf_role_axioms_def}) |> simpset_of+      @{thms wf_role_def distinct_list_def wf_role_axioms_def}) |> simpset_of; -    fun simp_tactic {prems, context} = FIRSTGOAL (Simplifier.full_simp_tac (put_simpset ss_full context));+    fun simp_tactic {prems=_, context} = FIRSTGOAL (Simplifier.full_simp_tac (put_simpset ss_full context));      val distinct_steps_thms = prove_distinctness ctxt simp_tactic step_consts; -    val ss_prefixClose = ctxt addsimps ([role_def, @{thm prefixClose_def}] @ distinct_steps_thms) |> simpset_of;+    val ss_prefixClose = ctxt addsimps ([role_def, @{thm prefixClose_def}] @ distinct_steps_thms @+      @{thms exec_match_def}) |> simpset_of;      val wf_goal = HOLogic.mk_Trueprop (@{const wf_role} $ role_const); @@ -489,7 +517,16 @@                     #1 o dest_msg_eq;     val fixed_msg = msg_name o #2 o dest_msg_eq; -    val subst = try hd (ESPL_Utils.gather_props subst_var prems);+    (* We only use substitutions which are enabled by the corresponding hint.+       This excludes equalities introduced by the MatchEq rule from the name+       computation.+    *)+    val naming_substs = map HOLogic.dest_string (Hints.gather_by_name "case_name_subst" prems);+    fun is_naming_subst v1 = exists (fn v2 => v1 = v2) naming_substs;++    val subst = prems |> ESPL_Utils.gather_props subst_var+                      |> filter is_naming_subst+                      |> try hd;     val fixed = try hd (ESPL_Utils.gather_props fixed_msg prems);   in     if is_none subst andalso is_none fixed then @@ -761,7 +798,7 @@     val mono_typ_th = (@{const monoTyp} $ typ_const)       |> HOLogic.mk_Trueprop       |> Thm.cterm_of (Proof_Context.theory_of ctxt)-      |> (fn ct => Goal.prove_internal [] ct+      |> (fn ct => Goal.prove_internal ctxt [] ct            (K autom_tac)          );   in
data/isabelle/src/ESPLogic/espl_methods.ML view
@@ -24,7 +24,7 @@        ((bool * term) * thm option) * (Context.generic * Token.T list)    (* "prefix_close" proof state transformation *)-  val prefix_close_thms: Proof.context -> thm list -> thm list+  val prefix_close_thms: string -> Proof.context -> thm list -> thm list   val prefix_close_cmd: Proof.state -> Proof.state   val note_prefix_closed_cmd: Proof.state -> Proof.state @@ -84,7 +84,8 @@   end;  (* The tactic underlying the "sources" proof method *)-fun sources_tac ctxt minimal msg_t opt_raw_rule facts =+fun sources_tac _ _ _ _ [] = (fn _ => fn _ => Seq.empty) (* fail when no facts are chained in *)+ | sources_tac ctxt minimal msg_t opt_raw_rule facts =   let     val thy = Proof_Context.theory_of ctxt;     val cert = Thm.cterm_of thy;@@ -108,7 +109,7 @@      val predOrd_elim_ths = @{thms in_knows_predOrd1 in_knows_predOrd2}     val knows_thm = -      Goal.prove_internal [] knows_ct +      Goal.prove_internal ctxt [] knows_ct          (fn facts' =>          ALLGOALS (Method.insert_tac (facts' @ facts)) THEN         (ALLGOALS (assume_tac ORELSE' eresolve_tac predOrd_elim_ths)@@ -178,11 +179,11 @@ (* NOTE: this works only correctly in the context of a reachable_state locale    as the theorem ext_prefixClose is dependent on this locale. *)-fun prefix_close_thms ctxt facts = +fun prefix_close_thms qualifier ctxt facts =   let-    val prefixClose_th = Proof_Context.get_thm ctxt "ext_prefixClose";+    val prefixClose_th = Proof_Context.get_thm ctxt (Long_Name.qualify qualifier "ext_prefixClose");     fun close step roleMap = [step, roleMap] MRS prefixClose_th;-    val expand = Simplifier.simplify ctxt;+    val expand = Simplifier.simplify (ctxt addsimps @{thms exec_match_def});     val distinct_prop = distinct (Thm.eq_thm);     (* fun new_fact th =          forall (not_equal (Thm.prop_of th) o Thm.prop_of) facts; *)@@ -204,7 +205,7 @@ fun note_prefix_closed_cmd state =   let val ctxt  = Proof.context_of state;       val facts = Proof.the_facts state;-      val facts' = facts @ prefix_close_thms ctxt facts+      val facts' = facts @ prefix_close_thms "" ctxt facts   in Proof.set_facts facts' state end  (* A proof state transformation implementing prefix closing of@@ -215,14 +216,14 @@     val using = state        |> Proof.goal       |> (fn {context = ctxt, facts=using, goal=_} => -           prefix_close_thms ctxt using)+           prefix_close_thms "" ctxt using)    in Proof.using [[(using,[])]] state end;  (* registering the prefix_close command *) val _ =   Outer_Syntax.command @{command_spec "prefix_close"} "prefix close facts being used"-    (Scan.succeed (Toplevel.print o (Toplevel.proof prefix_close_cmd)));+    (Scan.succeed (Toplevel.proof prefix_close_cmd));   (******************************************************************************@@ -265,7 +266,7 @@ *) fun completeness_cases_attrib ctxt th =   let-    val ss = Context.proof_of ctxt addsimps @{thms finite_setdiff_compute};+    val ss = Context.proof_of ctxt addsimps @{thms finite_setdiff_compute exec_match_def};     fun add_case_info th = th       |> Rule_Cases.add_consumes 0       |> Rule_Cases.name (completeness_case_names th)
data/isabelle/src/ESPLogic/espl_utils.ML view
@@ -150,7 +150,7 @@    inst is a positional instantiation. *) fun add_simple_locale b loc_name inst thy =-  Expression.add_locale I b (Binding.empty)+  Expression.add_locale b (Binding.empty)   ( [ ( Locale.intern thy loc_name       , ( ("",false)         , Expression.Positional inst
− data/isabelle/src/isar-keywords.el
@@ -1,704 +0,0 @@-;;-;; Keyword classification tables for Isabelle/Isar.-;; Generated from HOLCF + HOL-BNF + HOL-Boogie + HOL-Library + HOL-Nominal + HOL-Statespace + HOL-SPARK + HOL-TPTP + HOL-Import.-;; *** DO NOT EDIT *** DO NOT EDIT *** DO NOT EDIT ***-;;--(defconst isar-keywords-major-  '("\\."-    "\\.\\."-    "Isabelle\\.command"-    "ML"-    "ML_command"-    "ML_file"-    "ML_prf"-    "ML_val"-    "ProofGeneral\\.inform_file_processed"-    "ProofGeneral\\.inform_file_retracted"-    "ProofGeneral\\.kill_proof"-    "ProofGeneral\\.pr"-    "ProofGeneral\\.process_pgip"-    "ProofGeneral\\.restart"-    "ProofGeneral\\.undo"-    "abbreviation"-    "also"-    "apply"-    "apply_end"-    "arities"-    "assume"-    "atom_decl"-    "attribute_setup"-    "ax_specification"-    "axiomatization"-    "axioms"-    "back"-    "bnf_def"-    "boogie_end"-    "boogie_open"-    "boogie_status"-    "boogie_vc"-    "bundle"-    "by"-    "cannot_undo"-    "case"-    "cd"-    "chapter"-    "class"-    "class_deps"-    "classes"-    "classrel"-    "codata"-    "code_abort"-    "code_class"-    "code_const"-    "code_datatype"-    "code_deps"-    "code_include"-    "code_instance"-    "code_modulename"-    "code_monad"-    "code_pred"-    "code_reflect"-    "code_reserved"-    "code_thms"-    "code_type"-    "coinductive"-    "coinductive_set"-    "commit"-    "consts"-    "context"-    "corollary"-    "cpodef"-    "data"-    "datatype"-    "declaration"-    "declare"-    "def"-    "default_sort"-    "defer"-    "defer_recdef"-    "definition"-    "defs"-    "disable_pr"-    "display_drafts"-    "domain"-    "domain_isomorphism"-    "domaindef"-    "done"-    "enable_pr"-    "end"-    "enriched_type"-    "equivariance"-    "exit"-    "export_code"-    "extract"-    "extract_type"-    "finally"-    "find_consts"-    "find_theorems"-    "find_unused_assms"-    "fix"-    "fixrec"-    "from"-    "full_prf"-    "fun"-    "function"-    "guess"-    "have"-    "header"-    "help"-    "hence"-    "hide_class"-    "hide_const"-    "hide_fact"-    "hide_type"-    "import_const_map"-    "import_file"-    "import_tptp"-    "import_type_map"-    "include"-    "including"-    "inductive"-    "inductive_cases"-    "inductive_set"-    "inductive_simps"-    "init_toplevel"-    "instance"-    "instantiation"-    "interpret"-    "interpretation"-    "judgment"-    "kill"-    "kill_thy"-    "lemma"-    "lemmas"-    "let"-    "lift_definition"-    "linear_undo"-    "local_setup"-    "locale"-    "locale_deps"-    "method_setup"-    "moreover"-    "next"-    "nitpick"-    "nitpick_params"-    "no_notation"-    "no_syntax"-    "no_translations"-    "no_type_notation"-    "nominal_datatype"-    "nominal_inductive"-    "nominal_inductive2"-    "nominal_primrec"-    "nonterminal"-    "notation"-    "note"-    "note_cyclic"-    "note_prefix_closed"-    "note_unified"-    "notepad"-    "obtain"-    "oops"-    "oracle"-    "overloading"-    "parse_ast_translation"-    "parse_translation"-    "partial_function"-    "pcpodef"-    "pr"-    "prefer"-    "prefix_close"-    "presume"-    "pretty_setmargin"-    "prf"-    "primrec"-    "print_abbrevs"-    "print_antiquotations"-    "print_ast_translation"-    "print_attributes"-    "print_binds"-    "print_bnfs"-    "print_bundles"-    "print_cases"-    "print_claset"-    "print_classes"-    "print_codeproc"-    "print_codesetup"-    "print_coercion_maps"-    "print_coercions"-    "print_commands"-    "print_configs"-    "print_context"-    "print_dependencies"-    "print_drafts"-    "print_facts"-    "print_induct_rules"-    "print_inductives"-    "print_interps"-    "print_locale"-    "print_locales"-    "print_methods"-    "print_orders"-    "print_quotconsts"-    "print_quotients"-    "print_quotientsQ3"-    "print_quotmaps"-    "print_quotmapsQ3"-    "print_rules"-    "print_simpset"-    "print_statement"-    "print_syntax"-    "print_theorems"-    "print_theory"-    "print_trans_rules"-    "print_translation"-    "proof"-    "prop"-    "protocol"-    "pwd"-    "qed"-    "quickcheck"-    "quickcheck_generator"-    "quickcheck_params"-    "quit"-    "quotient_definition"-    "quotient_type"-    "realizability"-    "realizers"-    "recdef"-    "recdef_tc"-    "record"-    "refute"-    "refute_params"-    "remove_thy"-    "rep_datatype"-    "role"-    "schematic_corollary"-    "schematic_lemma"-    "schematic_theorem"-    "sect"-    "section"-    "setup"-    "setup_lifting"-    "show"-    "simproc_setup"-    "sledgehammer"-    "sledgehammer_params"-    "smt_status"-    "solve_direct"-    "sorry"-    "spark_end"-    "spark_open"-    "spark_open_siv"-    "spark_open_vcg"-    "spark_proof_functions"-    "spark_status"-    "spark_types"-    "spark_vc"-    "specification"-    "statespace"-    "subclass"-    "sublocale"-    "subsect"-    "subsection"-    "subsubsect"-    "subsubsection"-    "syntax"-    "syntax_declaration"-    "term"-    "termination"-    "text"-    "text_raw"-    "then"-    "theorem"-    "theorems"-    "theory"-    "thm"-    "thm_deps"-    "thus"-    "thy_deps"-    "translations"-    "try"-    "try0"-    "txt"-    "txt_raw"-    "typ"-    "type_invariant"-    "type_notation"-    "type_synonym"-    "typed_print_translation"-    "typedecl"-    "typedef"-    "ultimately"-    "undo"-    "undos_proof"-    "unfolding"-    "unused_thms"-    "use"-    "use_thy"-    "using"-    "value"-    "values"-    "welcome"-    "with"-    "wrap_data"-    "write"-    "{"-    "}"))--(defconst isar-keywords-minor-  '("advanced"-    "and"-    "assumes"-    "attach"-    "avoids"-    "begin"-    "binder"-    "checking"-    "congs"-    "constrains"-    "datatypes"-    "defaults"-    "defines"-    "file"-    "fixes"-    "for"-    "functions"-    "hints"-    "identifier"-    "if"-    "imports"-    "in"-    "includes"-    "infix"-    "infixl"-    "infixr"-    "is"-    "keywords"-    "lazy"-    "module_name"-    "monos"-    "morphisms"-    "no_dests"-    "notes"-    "obtains"-    "open"-    "output"-    "overloaded"-    "permissive"-    "pervasive"-    "rep_compat"-    "shows"-    "structure"-    "unchecked"-    "unsafe"-    "uses"-    "where"))--(defconst isar-keywords-control-  '("Isabelle\\.command"-    "ProofGeneral\\.inform_file_processed"-    "ProofGeneral\\.inform_file_retracted"-    "ProofGeneral\\.kill_proof"-    "ProofGeneral\\.process_pgip"-    "ProofGeneral\\.restart"-    "ProofGeneral\\.undo"-    "cannot_undo"-    "cd"-    "commit"-    "disable_pr"-    "enable_pr"-    "exit"-    "init_toplevel"-    "kill"-    "kill_thy"-    "linear_undo"-    "quit"-    "remove_thy"-    "undo"-    "undos_proof"-    "use_thy"))--(defconst isar-keywords-diag-  '("ML_command"-    "ML_val"-    "ProofGeneral\\.pr"-    "boogie_status"-    "class_deps"-    "code_deps"-    "code_thms"-    "display_drafts"-    "export_code"-    "find_consts"-    "find_theorems"-    "find_unused_assms"-    "full_prf"-    "header"-    "help"-    "locale_deps"-    "nitpick"-    "pr"-    "pretty_setmargin"-    "prf"-    "print_abbrevs"-    "print_antiquotations"-    "print_attributes"-    "print_binds"-    "print_bnfs"-    "print_bundles"-    "print_cases"-    "print_claset"-    "print_classes"-    "print_codeproc"-    "print_codesetup"-    "print_coercion_maps"-    "print_coercions"-    "print_commands"-    "print_configs"-    "print_context"-    "print_dependencies"-    "print_drafts"-    "print_facts"-    "print_induct_rules"-    "print_inductives"-    "print_interps"-    "print_locale"-    "print_locales"-    "print_methods"-    "print_orders"-    "print_quotconsts"-    "print_quotients"-    "print_quotientsQ3"-    "print_quotmaps"-    "print_quotmapsQ3"-    "print_rules"-    "print_simpset"-    "print_statement"-    "print_syntax"-    "print_theorems"-    "print_theory"-    "print_trans_rules"-    "prop"-    "pwd"-    "quickcheck"-    "refute"-    "sledgehammer"-    "smt_status"-    "solve_direct"-    "spark_status"-    "term"-    "thm"-    "thm_deps"-    "thy_deps"-    "try"-    "try0"-    "typ"-    "unused_thms"-    "value"-    "values"-    "welcome"))--(defconst isar-keywords-theory-begin-  '("theory"))--(defconst isar-keywords-theory-switch-  '())--(defconst isar-keywords-theory-end-  '("end"))--(defconst isar-keywords-theory-heading-  '("chapter"-    "section"-    "subsection"-    "subsubsection"))--(defconst isar-keywords-theory-decl-  '("ML"-    "ML_file"-    "abbreviation"-    "arities"-    "atom_decl"-    "attribute_setup"-    "axiomatization"-    "axioms"-    "boogie_end"-    "boogie_open"-    "bundle"-    "class"-    "classes"-    "classrel"-    "codata"-    "code_abort"-    "code_class"-    "code_const"-    "code_datatype"-    "code_include"-    "code_instance"-    "code_modulename"-    "code_monad"-    "code_reflect"-    "code_reserved"-    "code_type"-    "coinductive"-    "coinductive_set"-    "consts"-    "context"-    "data"-    "datatype"-    "declaration"-    "declare"-    "default_sort"-    "defer_recdef"-    "definition"-    "defs"-    "domain"-    "domain_isomorphism"-    "domaindef"-    "equivariance"-    "extract"-    "extract_type"-    "fixrec"-    "fun"-    "hide_class"-    "hide_const"-    "hide_fact"-    "hide_type"-    "import_const_map"-    "import_file"-    "import_tptp"-    "import_type_map"-    "inductive"-    "inductive_set"-    "instantiation"-    "judgment"-    "lemmas"-    "local_setup"-    "locale"-    "method_setup"-    "nitpick_params"-    "no_notation"-    "no_syntax"-    "no_translations"-    "no_type_notation"-    "nominal_datatype"-    "nonterminal"-    "notation"-    "notepad"-    "oracle"-    "overloading"-    "parse_ast_translation"-    "parse_translation"-    "partial_function"-    "primrec"-    "print_ast_translation"-    "print_translation"-    "protocol"-    "quickcheck_generator"-    "quickcheck_params"-    "realizability"-    "realizers"-    "recdef"-    "record"-    "refute_params"-    "role"-    "setup"-    "setup_lifting"-    "simproc_setup"-    "sledgehammer_params"-    "spark_end"-    "spark_open"-    "spark_open_siv"-    "spark_open_vcg"-    "spark_proof_functions"-    "spark_types"-    "statespace"-    "syntax"-    "syntax_declaration"-    "text"-    "text_raw"-    "theorems"-    "translations"-    "type_invariant"-    "type_notation"-    "type_synonym"-    "typed_print_translation"-    "typedecl"-    "use"))--(defconst isar-keywords-theory-script-  '("inductive_cases"-    "inductive_simps"))--(defconst isar-keywords-theory-goal-  '("ax_specification"-    "bnf_def"-    "boogie_vc"-    "code_pred"-    "corollary"-    "cpodef"-    "enriched_type"-    "function"-    "instance"-    "interpretation"-    "lemma"-    "lift_definition"-    "nominal_inductive"-    "nominal_inductive2"-    "nominal_primrec"-    "pcpodef"-    "quotient_definition"-    "quotient_type"-    "recdef_tc"-    "rep_datatype"-    "schematic_corollary"-    "schematic_lemma"-    "schematic_theorem"-    "spark_vc"-    "specification"-    "subclass"-    "sublocale"-    "termination"-    "theorem"-    "typedef"-    "wrap_data"))--(defconst isar-keywords-qed-  '("\\."-    "\\.\\."-    "by"-    "done"-    "sorry"))--(defconst isar-keywords-qed-block-  '("qed"))--(defconst isar-keywords-qed-global-  '("oops"))--(defconst isar-keywords-proof-heading-  '("sect"-    "subsect"-    "subsubsect"))--(defconst isar-keywords-proof-goal-  '("have"-    "hence"-    "interpret"))--(defconst isar-keywords-proof-block-  '("next"-    "proof"))--(defconst isar-keywords-proof-open-  '("{"))--(defconst isar-keywords-proof-close-  '("}"))--(defconst isar-keywords-proof-chain-  '("finally"-    "from"-    "then"-    "ultimately"-    "with"))--(defconst isar-keywords-proof-decl-  '("ML_prf"-    "also"-    "include"-    "including"-    "let"-    "moreover"-    "note"-    "note_cyclic"-    "note_prefix_closed"-    "note_unified"-    "txt"-    "txt_raw"-    "unfolding"-    "using"-    "write"))--(defconst isar-keywords-proof-asm-  '("assume"-    "case"-    "def"-    "fix"-    "presume"))--(defconst isar-keywords-proof-asm-goal-  '("guess"-    "obtain"-    "show"-    "thus"))--(defconst isar-keywords-proof-script-  '("apply"-    "apply_end"-    "back"-    "defer"-    "prefer"))--(provide 'isar-keywords)
+ dist/build/scyther-proof/scyther-proof-tmp/Scyther/Theory/Lexer.hs view
@@ -0,0 +1,623 @@+{-# LANGUAGE CPP,MagicHash #-}+{-# LINE 1 "src/Scyther/Theory/Lexer.x" #-}++-- Ignore the slew of warnings from definitions generated by Alex.+-- NOTE: you should disable this line when working on this module to make sure+-- that you don't miss important warnings.+{-# OPTIONS_GHC -fno-warn-missing-signatures -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-matches -fno-warn-name-shadowing #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++module Scyther.Theory.Lexer where++import Control.Applicative+import Control.Monad+import Data.Word (Word8)+import qualified Codec.Binary.UTF8.String as UTF8++#if __GLASGOW_HASKELL__ >= 603+#include "ghcconfig.h"+#elif defined(__GLASGOW_HASKELL__)+#include "config.h"+#endif+#if __GLASGOW_HASKELL__ >= 503+import Data.Array+import Data.Char (ord)+import Data.Array.Base (unsafeAt)+#else+import Array+import Char (ord)+#endif+#if __GLASGOW_HASKELL__ >= 503+import GHC.Exts+#else+import GlaExts+#endif+alex_base :: AlexAddr+alex_base = AlexA# "\xf8\xff\xff\xff\xbb\x00\x00\x00\xa7\x01\x00\x00\x1c\x02\x00\x00\x9c\x02\x00\x00\x1c\x03\x00\x00\x9c\x03\x00\x00\x1c\x04\x00\x00\x9c\x04\x00\x00\x00\x00\x00\x00\x0d\x05\x00\x00\x00\x00\x00\x00\x7e\x05\x00\x00\x00\x00\x00\x00\xef\x05\x00\x00\x7e\xff\xff\xff\x00\x00\x00\x00\xb8\xff\xff\xff\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x68\x01\x00\x00\x6f\x06\x00\x00\xca\xff\xff\xff\xad\xff\xff\xff\x82\xff\xff\xff\x5f\xff\xff\xff\xaf\x06\x00\x00\x58\x07\x00\x00\x18\x07\x00\x00\x00\x00\x00\x00\xe2\xff\xff\xff\xe3\xff\xff\xff\xe4\xff\xff\xff\x18\x08\x00\x00\xd8\x07\x00\x00\x00\x00\x00\x00\xd8\x08\x00\x00\x98\x08\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x8e\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xff\xff\xff\x00\x00\x00\x00\xe7\xff\xff\xff\xe8\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\xff\xff\xff\x00\x00\x00\x00\xe9\xff\xff\xff\xea\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x0a\x00\x00\xc1\x0a\x00\x00\x24\x0b\x00\x00\x87\x0b\x00\x00\xea\x0b\x00\x00\x4d\x0c\x00\x00\xb0\x0c\x00\x00\x13\x0d\x00\x00\x76\x0d\x00\x00\xd9\x0d\x00\x00\x3c\x0e\x00\x00\x9f\x0e\x00\x00\x02\x0f\x00\x00\x65\x0f\x00\x00\xc8\x0f\x00\x00\x2b\x10\x00\x00\x8e\x10\x00\x00\xf1\x10\x00\x00\x54\x11\x00\x00\xb7\x11\x00\x00\x1a\x12\x00\x00"#++alex_table :: AlexAddr+alex_table = AlexA# "\x00\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x1b\x00\x19\x00\x63\x00\x4c\x00\x43\x00\x42\x00\x38\x00\x37\x00\x36\x00\x2d\x00\x39\x00\x2f\x00\x2b\x00\x30\x00\x2c\x00\x31\x00\x2a\x00\x00\x00\x28\x00\x5a\x00\x4e\x00\x55\x00\x53\x00\x62\x00\x5b\x00\x4d\x00\x45\x00\x46\x00\x56\x00\x60\x00\x44\x00\x5f\x00\x5d\x00\x4b\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x52\x00\x64\x00\x57\x00\x51\x00\x58\x00\x59\x00\x54\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x47\x00\x18\x00\x48\x00\x50\x00\x5e\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x6f\x00\x6a\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x49\x00\x5c\x00\x4a\x00\x4f\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x17\x00\x1a\x00\x16\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x00\x00\x00\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x2e\x00\x61\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x35\x00\x33\x00\x32\x00\x33\x00\x33\x00\x33\x00\x33\x00\x34\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x22\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x23\x00\x04\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x13\x00\x07\x00\x0b\x00\x0b\x00\x0b\x00\x0c\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3d\x00\x3b\x00\x3a\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3c\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x1c\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1d\x00\x05\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x11\x00\x08\x00\x09\x00\x09\x00\x09\x00\x0a\x00\x25\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x22\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x24\x00\x1c\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x03\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x04\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x05\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x11\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x26\x00\x03\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\x06\x00\x0d\x00\x0d\x00\x0d\x00\x0e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x78\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x77\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x76\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x68\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x69\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x75\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x74\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x6d\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x73\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x6e\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x70\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x71\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x6c\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x6b\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x79\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x67\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x66\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x16\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x65\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#++alex_check :: AlexAddr+alex_check = AlexA# "\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x88\x00\x89\x00\x3e\x00\x5c\x00\x88\x00\xac\x00\x2a\x00\x2a\x00\x2a\x00\x29\x00\x7d\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2f\x00\x2a\x00\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x2d\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x2d\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\x2d\x00\xc2\x00\xc3\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2a\x00\x3e\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe2\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\xff\xff\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xff\xff\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\x80\x00\xff\xff\xff\xff\x83\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa7\x00\xa8\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xc3\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#++alex_deflt :: AlexAddr+alex_deflt = AlexA# "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\x00\x10\x00\x12\x00\x12\x00\x14\x00\x14\x00\xff\xff\x1e\x00\x1e\x00\x24\x00\x24\x00\x27\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3b\x00\x3b\x00\xff\xff\xff\xff\xff\xff\x33\x00\x33\x00\x33\x00\x29\x00\x29\x00\x29\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#++alex_accept = listArray (0::Int,121) [AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccSkip,AlexAccSkip,AlexAcc (alex_action_2),AlexAcc (alex_action_3),AlexAcc (alex_action_4),AlexAcc (alex_action_5),AlexAcc (alex_action_6),AlexAcc (alex_action_7),AlexAcc (alex_action_8),AlexAcc (alex_action_9),AlexAcc (alex_action_10),AlexAcc (alex_action_10),AlexAcc (alex_action_10),AlexAcc (alex_action_10),AlexAcc (alex_action_11),AlexAcc (alex_action_12),AlexAcc (alex_action_13),AlexAcc (alex_action_14),AlexAcc (alex_action_15),AlexAcc (alex_action_15),AlexAcc (alex_action_15),AlexAcc (alex_action_15),AlexAcc (alex_action_16),AlexAcc (alex_action_17),AlexAcc (alex_action_18),AlexAcc (alex_action_19),AlexAcc (alex_action_20),AlexAcc (alex_action_21),AlexAcc (alex_action_22),AlexAcc (alex_action_23),AlexAcc (alex_action_24),AlexAcc (alex_action_25),AlexAcc (alex_action_26),AlexAcc (alex_action_27),AlexAcc (alex_action_28),AlexAcc (alex_action_29),AlexAcc (alex_action_30),AlexAcc (alex_action_31),AlexAcc (alex_action_32),AlexAcc (alex_action_33),AlexAcc (alex_action_34),AlexAcc (alex_action_35),AlexAcc (alex_action_36),AlexAcc (alex_action_37),AlexAcc (alex_action_38),AlexAcc (alex_action_39),AlexAcc (alex_action_40),AlexAcc (alex_action_41),AlexAcc (alex_action_42),AlexAcc (alex_action_43),AlexAcc (alex_action_44),AlexAcc (alex_action_45),AlexAcc (alex_action_46),AlexAcc (alex_action_47),AlexAcc (alex_action_48),AlexAcc (alex_action_49),AlexAcc (alex_action_50),AlexAcc (alex_action_51),AlexAcc (alex_action_52),AlexAcc (alex_action_53),AlexAcc (alex_action_54),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55),AlexAcc (alex_action_55)]+{-# LINE 93 "src/Scyther/Theory/Lexer.x" #-}+++-- | Lex a keyword+keyword :: Keyword -> AlexAction Keyword+keyword kw input len = return kw++-- | Wrap a string into a keyword+scanString :: (String -> Keyword) -> AlexAction Keyword+scanString kw (_,_,_,input) len = return $ kw (take len input)++{-+-- | Scan a string until EOF is encountered.+alexScanTokens :: String -> Either String [Keyword]+alexScanTokens inp = runAlex inp gather+  where+  gather = do+    t <- alexMonadScan+    case trace (show t) t of+      EOF -> return [EOF]+      _   -> (t:) `liftM` gather++-- | Scan a file.+scanFile f = do+   inp <- readFile f+   return $ alexScanTokens inp+-}++-- | Formal text types.+data TextType =+       TextBegin String+     | TextContent String+     | TextEnd+     deriving( Eq, Ord, Show )++-- | Lexable Keywords+data Keyword =+    IDENT String+  | TEXT TextType+  | SQUOTE+  | DQUOTE+  | RIGHTARROW+  | LEFTARROW+  | LONGRIGHTARROW+  | LONGLEFTARROW+  | COMMA+  | DOT+  | COLON+  | QUESTIONMARK+  | BANG+  | AND+  | MID+  | DOLLAR+  | AT+  | SHARP+  | LPAREN+  | RPAREN+  | LBRACKET+  | RBRACKET+  | LBRACE+  | RBRACE+  | SLASH+  | BACKSLASH+  | TILDE+  | HAT+  | STAR+  | UNDERSCORE+  | MINUS+  | PLUS+  | EQUAL+  | LESS+  | GREATER+  | EOF+  | FORALL+  | EXISTS+  | LAND+  | LOR+  | LNOT+  | APPROX+  -- dummy keyword to get rid of overlapping pattern matches+  | DUMMY_KEYWORD+  deriving( Eq )++instance Show Keyword where+  show kw = case kw of+      IDENT i -> identifier i+      TEXT t -> txt t+      SQUOTE -> symbol "'"+      DQUOTE -> symbol "\""+      RIGHTARROW -> symbol "->"+      LEFTARROW -> symbol "<-"+      LONGRIGHTARROW -> symbol "-->"+      LONGLEFTARROW -> symbol "<--"+      COMMA -> symbol ","+      DOT -> symbol "."+      COLON -> symbol ":"+      QUESTIONMARK -> symbol "?"+      BANG -> symbol "!"+      AND -> symbol "&"+      MID -> symbol "|"+      DOLLAR -> symbol "$"+      AT -> symbol "@"+      SHARP -> symbol "#"+      LPAREN -> symbol "("+      RPAREN -> symbol ")"+      LBRACKET -> symbol "["+      RBRACKET -> symbol "]"+      LBRACE  -> symbol "{"+      RBRACE -> symbol "}"+      SLASH -> symbol "/"+      BACKSLASH -> symbol "\\"+      TILDE -> symbol "~"+      HAT -> symbol "^"+      STAR -> symbol "*"+      UNDERSCORE -> symbol "_"+      MINUS -> symbol "-"+      PLUS -> symbol "+"+      EQUAL -> symbol "="+      LESS -> symbol "<"+      GREATER -> symbol ">"+      EOF -> "end of file"+      FORALL -> symbol   "∀"+      EXISTS -> symbol   "∃"+      LAND -> symbol     "∧"+      LOR -> symbol      "∨"+      LNOT -> symbol     "¬"+      APPROX -> symbol   "≈"+      DUMMY_KEYWORD -> "DUMMY_KEYWORD (this should not occur!)"+    where+      identifier i        = "identifier `" ++ i ++ "'"+      txt (TextBegin t)   = "start of `" ++ t ++ "'"+      txt (TextContent t) = "text `" ++ t ++ "'"+      txt (TextEnd)       = "start of text"+      symbol s            = "symbol `" ++ s ++ "'"+      keyword s           = "keyword `" ++ s ++ "'"++-- -----------------------------------------------------------------------------+-- Alex wrapper code.+--+-- This code is in the PUBLIC DOMAIN; you may copy it freely and use+-- it for any purpose whatsoever.++-- -----------------------------------------------------------------------------+-- The input type++type AlexInput = (AlexPosn,     -- current position,+                  Char,         -- previous char+                  [Word8],      -- remaining bytes of current char+                  String)       -- current input string++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (p,c,bs,s) = c++alexGetByte :: AlexInput -> Maybe (Word8,AlexInput)+alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s))+alexGetByte (p,c,[],[]) = Nothing+alexGetByte (p,_,[],(c:s))  = let p' = alexMove p c+                                  (b:bs) = UTF8.encodeChar c+                              in p' `seq`  Just (b, (p', c, bs, s))++-- -----------------------------------------------------------------------------+-- Token positions++-- `Posn' records the location of a token in the input text.  It has three+-- fields: the address (number of chacaters preceding the token), line number+-- and column of a token within the file. `start_pos' gives the position of the+-- start of the file and `eof_pos' a standard encoding for the end of file.+-- `move_pos' calculates the new position after traversing a given character,+-- assuming the usual eight character tab stops.++data AlexPosn = AlexPn !Int !Int !Int+        deriving (Eq)++instance Show AlexPosn where+  show (AlexPn _ l c) = "line "++show l++" column "++show c++alexStartPos :: AlexPosn+alexStartPos = AlexPn 0 1 1++alexMove :: AlexPosn -> Char -> AlexPosn+alexMove (AlexPn a l c) '\t' = AlexPn (a+1)  l     (((c+7) `div` 8)*8+1)+alexMove (AlexPn a l c) '\n' = AlexPn (a+1) (l+1)   1+alexMove (AlexPn a l c) _    = AlexPn (a+1)  l     (c+1)+++-- -----------------------------------------------------------------------------+-- Default monad+++data AlexState = AlexState {+        alex_pos :: !AlexPosn,  -- position at current input location+        alex_inp :: String,     -- the current input+        alex_chr :: !Char,      -- the character before the input+        alex_scd :: !Int,       -- the current startcode+        alex_ocd :: !Int,       -- the old startcode before the comment started+        alex_cmt :: [String]    -- stack of begin comment identifiers+    }++-- Compile with -funbox-strict-fields for best results!++runAlex :: String -> Alex a -> Either String a+runAlex input (Alex f)+   = case f (AlexState {alex_pos = alexStartPos,+                        alex_inp = input,+                        alex_chr = '\n',+                        alex_scd = 0,+                        alex_ocd = 0,+                        alex_cmt = []+             }) of+       Left msg -> Left msg+       Right ( _, a ) -> Right a++newtype Alex a = Alex { unAlex :: AlexState -> Either String (AlexState, a) }++instance Functor Alex where+  fmap = liftM++instance Applicative Alex where+  pure  = return+  (<*>) = ap++instance Monad Alex where+  m >>= k  = Alex $ \s -> case unAlex m s of+                                Left msg -> Left msg+                                Right (s',a) -> unAlex (k a) s'+  return a = Alex $ \s -> Right (s,a)++alexGetPos :: Alex AlexPosn+alexGetPos = Alex $ \s@AlexState{alex_pos=pos} -> Right (s, pos)++alexGetInput :: Alex AlexInput+alexGetInput+ = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_inp=inp} ->+        Right (s, (pos,c,[],inp))++alexSetInput :: AlexInput -> Alex ()+alexSetInput (pos,c,_,inp)+ = Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_inp=inp} of+                  s@(AlexState{}) -> Right (s, ())++alexError :: String -> Alex a+alexError message = Alex $ \s -> Left $ message ++ " in " ++ show (alex_pos s)++alexGetStartCode :: Alex Int+alexGetStartCode = Alex $ \s@AlexState{alex_scd=sc} -> Right (s, sc)++alexSetStartCode :: Int -> Alex ()+alexSetStartCode sc = Alex $ \s -> Right (s{alex_scd=sc}, ())++alexGetOldStartCode :: Alex Int+alexGetOldStartCode = Alex $ \s@AlexState{alex_ocd=sc} -> Right (s, sc)++alexSetOldStartCode :: Int -> Alex ()+alexSetOldStartCode sc = Alex $ \s -> Right (s{alex_ocd=sc}, ())++alexGetComments :: Alex [String]+alexGetComments = Alex $ \s -> Right (s, alex_cmt s)++alexSetComments :: [String] -> Alex ()+alexSetComments cmt = Alex $ \s -> Right (s{alex_cmt=cmt}, ())++alexMonadScan = do+  inp <- alexGetInput+  sc <- alexGetStartCode+  case alexScan inp sc of+    AlexEOF -> alexEOF+    AlexError inp' -> alexError "lexical error"+    AlexSkip  inp' len -> do+        alexSetInput inp'+        alexMonadScan+    AlexToken inp' len action -> do+        alexSetInput inp'+        action inp len++-- -----------------------------------------------------------------------------+-- Useful token actions++type AlexAction result = AlexInput -> Int -> Alex result++-- just ignore this token and scan another one+skip :: AlexAction Keyword+skip input len = alexMonadScan++-- ignore this token, but set the start code to a new value+begin :: Int -> AlexAction Keyword+begin code input len = do alexSetStartCode code; alexMonadScan++-- | Begin a text starting of the given type.+beginText :: String -> Int -> AlexAction Keyword+beginText ty code _ _ = do+  alexSetStartCode code+  return $ TEXT $ TextBegin ty++-- | End a text.+endText :: Int -> AlexAction Keyword+endText code _ _ = do+  alexSetStartCode code+  return $ TEXT TextEnd++-- | Begin a comment starting with the given sign.+beginComment :: String -> Int -> AlexAction Keyword+beginComment cmtBegin code input len = do+  cmts <- alexGetComments+  alexSetComments $ cmtBegin : cmts+  if null cmts+    then alexGetStartCode >>= alexSetOldStartCode+    else return ()+  alexSetStartCode code+  alexMonadScan++-- | End a comment that started with the given begin comment sign.+endComment :: String -> AlexAction Keyword+endComment cmtBegin input len = do+  cmts <- alexGetComments+  case cmts of+    [] -> alexError $ "comment ended but no beginning '"++cmtBegin++"' marked."+    (cmt:cmts') -> do+      if cmt == cmtBegin+        then do+          alexSetComments cmts'+          if null cmts'+            then alexGetOldStartCode >>= alexSetStartCode+            else return ()+        else return ()+      alexMonadScan++-- perform an action for this token, and set the start code to a new value+-- andBegin :: AlexAction result -> Int -> AlexAction result+(action `andBegin` code) input len = do alexSetStartCode code; action input len++alexEOF :: Alex Keyword+alexEOF = return EOF++++++comment,text :: Int+comment = 1+text = 2+alex_action_2 =  beginComment "(*" comment +alex_action_3 =  beginComment "(*" comment +alex_action_4 =  beginComment "(*" comment +alex_action_5 =  endComment "(*" +alex_action_6 =  beginComment "/*" comment +alex_action_7 =  beginComment "/*" comment +alex_action_8 =  beginComment "/*" comment +alex_action_9 =  endComment "/*" +alex_action_10 =  skip +alex_action_11 =  beginText "text" text +alex_action_12 =  beginText "section" text +alex_action_13 =  beginText "subsection" text +alex_action_14 =  endText 0+alex_action_15 =  scanString (TEXT . TextContent) +alex_action_16 =  keyword FORALL +alex_action_17 =  keyword EXISTS +alex_action_18 =  keyword LAND +alex_action_19 =  keyword LOR +alex_action_20 =  keyword LNOT +alex_action_21 =  keyword APPROX +alex_action_22 =  keyword COMMA +alex_action_23 =  keyword LPAREN +alex_action_24 =  keyword RPAREN +alex_action_25 =  keyword LBRACKET +alex_action_26 =  keyword RBRACKET +alex_action_27 =  keyword LBRACE +alex_action_28 =  keyword RBRACE +alex_action_29 =  keyword SLASH +alex_action_30 =  keyword BACKSLASH +alex_action_31 =  keyword SQUOTE +alex_action_32 =  keyword DQUOTE +alex_action_33 =  keyword TILDE +alex_action_34 =  keyword HAT +alex_action_35 =  keyword EQUAL +alex_action_36 =  keyword COLON +alex_action_37 =  keyword DOLLAR +alex_action_38 =  keyword AT +alex_action_39 =  keyword SHARP +alex_action_40 =  keyword STAR +alex_action_41 =  keyword LESS +alex_action_42 =  keyword GREATER +alex_action_43 =  keyword QUESTIONMARK +alex_action_44 =  keyword BANG +alex_action_45 =  keyword AND +alex_action_46 =  keyword MID +alex_action_47 =  keyword DOT +alex_action_48 =  keyword UNDERSCORE +alex_action_49 =  keyword MINUS +alex_action_50 =  keyword PLUS +alex_action_51 =  keyword RIGHTARROW +alex_action_52 =  keyword LEFTARROW +alex_action_53 =  keyword LONGRIGHTARROW +alex_action_54 =  keyword LONGLEFTARROW +alex_action_55 =  scanString IDENT+{-# LINE 1 "templates/GenericTemplate.hs" #-}+-- -----------------------------------------------------------------------------+-- ALEX TEMPLATE+--+-- This code is in the PUBLIC DOMAIN; you may copy it freely and use+-- it for any purpose whatsoever.++-- -----------------------------------------------------------------------------+-- INTERNALS and main scanner engine++++++++-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.+#if __GLASGOW_HASKELL__ > 706+#define GTE(n,m) (tagToEnum# (n >=# m))+#define EQ(n,m) (tagToEnum# (n ==# m))+#else+#define GTE(n,m) (n >=# m)+#define EQ(n,m) (n ==# m)+#endif++++data AlexAddr = AlexA# Addr#+-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.+#if __GLASGOW_HASKELL__ < 503+uncheckedShiftL# = shiftL#+#endif++{-# INLINE alexIndexInt16OffAddr #-}+alexIndexInt16OffAddr (AlexA# arr) off =+#ifdef WORDS_BIGENDIAN+  narrow16Int# i+  where+        i    = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)+        high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))+        low  = int2Word# (ord# (indexCharOffAddr# arr off'))+        off' = off *# 2#+#else+  indexInt16OffAddr# arr off+#endif++++++{-# INLINE alexIndexInt32OffAddr #-}+alexIndexInt32OffAddr (AlexA# arr) off = +#ifdef WORDS_BIGENDIAN+  narrow32Int# i+  where+   i    = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`+		     (b2 `uncheckedShiftL#` 16#) `or#`+		     (b1 `uncheckedShiftL#` 8#) `or#` b0)+   b3   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))+   b2   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))+   b1   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))+   b0   = int2Word# (ord# (indexCharOffAddr# arr off'))+   off' = off *# 4#+#else+  indexInt32OffAddr# arr off+#endif+++++++#if __GLASGOW_HASKELL__ < 503+quickIndex arr i = arr ! i+#else+-- GHC >= 503, unsafeAt is available from Data.Array.Base.+quickIndex = unsafeAt+#endif+++++-- -----------------------------------------------------------------------------+-- Main lexing routines++data AlexReturn a+  = AlexEOF+  | AlexError  !AlexInput+  | AlexSkip   !AlexInput !Int+  | AlexToken  !AlexInput !Int a++-- alexScan :: AlexInput -> StartCode -> AlexReturn a+alexScan input (I# (sc))+  = alexScanUser undefined input (I# (sc))++alexScanUser user input (I# (sc))+  = case alex_scan_tkn user input 0# input sc AlexNone of+	(AlexNone, input') ->+		case alexGetByte input of+			Nothing -> ++++				   AlexEOF+			Just _ ->++++				   AlexError input'++	(AlexLastSkip input'' len, _) ->++++		AlexSkip input'' len++	(AlexLastAcc k input''' len, _) ->++++		AlexToken input''' len k+++-- Push the input through the DFA, remembering the most recent accepting+-- state it encountered.++alex_scan_tkn user orig_input len input s last_acc =+  input `seq` -- strict in the input+  let +	new_acc = (check_accs (alex_accept `quickIndex` (I# (s))))+  in+  new_acc `seq`+  case alexGetByte input of+     Nothing -> (new_acc, input)+     Just (c, new_input) -> ++++      case fromIntegral c of { (I# (ord_c)) ->+        let+                base   = alexIndexInt32OffAddr alex_base s+                offset = (base +# ord_c)+                check  = alexIndexInt16OffAddr alex_check offset+		+                new_s = if GTE(offset,0#) && EQ(check,ord_c)+			  then alexIndexInt16OffAddr alex_table offset+			  else alexIndexInt16OffAddr alex_deflt s+	in+        case new_s of+	    -1# -> (new_acc, input)+		-- on an error, we want to keep the input *before* the+		-- character that failed, not after.+    	    _ -> alex_scan_tkn user orig_input (if c < 0x80 || c >= 0xC0 then (len +# 1#) else len)+                                                -- note that the length is increased ONLY if this is the 1st byte in a char encoding)+			new_input new_s new_acc+      }+  where+	check_accs (AlexAccNone) = last_acc+	check_accs (AlexAcc a  ) = AlexLastAcc a input (I# (len))+	check_accs (AlexAccSkip) = AlexLastSkip  input (I# (len))+++data AlexLastAcc a+  = AlexNone+  | AlexLastAcc a !AlexInput !Int+  | AlexLastSkip  !AlexInput !Int++instance Functor AlexLastAcc where+    fmap f AlexNone = AlexNone+    fmap f (AlexLastAcc x y z) = AlexLastAcc (f x) y z+    fmap f (AlexLastSkip x y) = AlexLastSkip x y++data AlexAcc a user+  = AlexAccNone+  | AlexAcc a+  | AlexAccSkip+++-- used by wrappers+iUnbox (I# (i)) = i+
scyther-proof.cabal view
@@ -1,6 +1,6 @@ build-type:         Simple name:               scyther-proof-version:            0.8.0.0+version:            0.10.0.0 license:            GPL license-file:       LICENSE category:           Security, Theorem Provers@@ -86,7 +86,6 @@   isabelle/Makefile   isabelle/README   isabelle/ROOT-  isabelle/src/isar-keywords.el   isabelle/src/*.thy   isabelle/src/ESPLogic/*.thy   isabelle/src/ESPLogic/*.ML@@ -96,7 +95,7 @@ extra-source-files:   .ghci   interactive-only-src/Paths_scyther_proof.hs-  src/Scyther/Theory/Lexer.x_src_only+  src/Scyther/Theory/Lexer.x   README.md   CHANGES @@ -108,8 +107,8 @@ executable scyther-proof     build-depends:         base          == 4.*    ,-        array         >= 0.3   && < 0.5 ,-        containers    >= 0.4.2 && < 0.5 ,+        array         >= 0.3   && < 0.6 ,+        containers    >= 0.4.2 && < 0.6 ,         safe          >= 0.2   && < 0.4 ,          mtl           >= 2.1   && < 3.0,@@ -117,15 +116,18 @@         cmdargs       >= 0.10.7 ,         filepath      >= 1.2   && < 1.4 ,         directory     >= 1.0   && < 1.3 ,-        process       == 1.1.*  ,-        time          >= 1.1   && < 1.3 ,+        process       >= 1.1   && < 1.3 ,+        time          >= 1.1   && < 1.5 ,          parsec        == 3.1.*  ,         pretty        >= 1.0   && < 1.2 ,-        tagsoup       == 0.12.*  ,+        tagsoup       >= 0.12  && < 0.14 ,         json          == 0.5.*  ,-        uniplate      == 1.6.*+        uniplate      == 1.6.* ,+        utf8-string   >= 0.3.7 +    build-tools:+        alex          >= 3.0   && < 3.2      if flag(threaded)         ghc-options:    -threaded
src/Control/Monad/BoundedDFS.hs view
@@ -23,6 +23,7 @@ ) where  +import Control.Applicative import Control.Monad import Control.Monad.State import Control.Monad.Reader@@ -41,11 +42,15 @@ -- | An unbounded depth-first search monad for searches formulated using -- MonadPlus. newtype UnboundedDFS c a = UnboundedDFS { runUnboundedDFS :: Maybe a }-  deriving( Monad )+  deriving( Functor, Applicative, Monad )  instance MonadCost c (UnboundedDFS c) where   updateCost _ = return () +instance Alternative (UnboundedDFS c) where+  empty = mzero+  (<|>) = mplus+ instance MonadPlus (UnboundedDFS c) where   mzero                                       = UnboundedDFS $ mzero   (UnboundedDFS m1) `mplus` (UnboundedDFS m2) = UnboundedDFS $ m1 `mplus` m2@@ -55,7 +60,7 @@ -- All choices are handled committing and there is no differentiation between -- failure due to cost overrun and other failures. newtype BoundedDFS c a = BoundedDFS { unBoundedDFS :: ReaderT (c -> Bool) (StateT c Maybe) a }-  deriving( Monad )+  deriving( Functor, Applicative, Monad )  instance MonadCost c (BoundedDFS c) where   updateCost f = BoundedDFS $ do@@ -65,6 +70,10 @@     guard (cond b')     put b' +instance Alternative (BoundedDFS c) where+  empty = mzero+  (<|>) = mplus+ instance MonadPlus (BoundedDFS c) where   mzero = BoundedDFS mzero   m `mplus` _ = m@@ -86,7 +95,7 @@   BranchAndBound {      unBranchAndBound :: ReaderT (c -> Bool) (StateT c Maybe) a    }-  deriving( Monad )+  deriving( Functor, Applicative, Monad )  -- | Run a branch and bound search. runBranchAndBound :: Cost c => BranchAndBound c a -> c -> Maybe (a, c)@@ -156,5 +165,8 @@      `mplus`      -- m1 didn't do it, try m2      unBranchAndBound m2)-           ++instance Cost c => Alternative (BranchAndBound c) where+  empty = mzero+  (<|>) = mplus 
src/Main.hs view
@@ -151,8 +151,8 @@           , "  The '--html' flag requires the 'dot' tool from GraphViz available at:"           , "    " ++ "http://www.graphviz.org/"           , "  "-          , "  The '--isabelle' flag requires the 'Isabelle2013-2' release of Isabelle/HOL:"-          , "    " ++ "http://isabelle.in.tum.de/website-Isabelle2013-2/"+          , "  The '--isabelle' flag requires the 'Isabelle2014' release of Isabelle/HOL:"+          , "    " ++ "http://isabelle.in.tum.de/website-Isabelle2014/"           , ""           , "  Check the '" ++ readmePath ++ "' file for instructions on how to load the generated theory files in Isabelle's interactive mode."           ]@@ -734,8 +734,8 @@     putStrLn ""   where     check _ err-      | "Graphviz" `isInfixOf` err = Right $ init err ++ ". OK."-      | otherwise                  = Left  $ unlines $+      | "graphviz" `isInfixOf` map toLower err = Right $ init err ++ ". OK."+      | otherwise = Left $ unlines $           [ "WARNING:"           , ""           , " The dot tool seems not to be provided by Graphviz."@@ -752,40 +752,16 @@ ensureIsabelleESPL isabelle = do     putStrLn $ "checking suitability of Isabelle tool: '" ++ isabelle ++ "'"     _ <- testProcess checkVersion " version: " isabelle ["version"] ""-    success <- testProcess checkLogics " installed logics: " isabelle ["findlogics"] ""-    unless success buildESPL     putStrLn ""   where     checkVersion out _-      | "Isabelle2013-2" `isInfixOf` out = Right $ init out ++ ". OK."+      | "Isabelle2014" `isInfixOf` out = Right $ init out ++ ". OK."       | otherwise                        = Left  $ unlines $           [ "WARNING:"           , ""-          , " " ++ programName ++ " requires Isabelle2013-2."+          , " " ++ programName ++ " requires Isabelle2014."           , " Proof checking is likely not to work."-          , " Please download Isabelle2013-2 from:"-          , "   http://isabelle.in.tum.de/website-Isabelle2013-2/"+          , " Please download Isabelle2014 from:"+          , "   http://isabelle.in.tum.de/website-Isabelle2014/"           ]--    checkLogics out _-      | "ESPL" `isInfixOf` out = Right $ init out ++ ". OK."-      | otherwise              = Left  $ init out ++ ". WARNING: ESPL logic not installed."---    buildESPL = do-      putStrLn "---"-      putStrLn "Attempting to build ESPL logic (this may take several minutes):"-      theoryDir <- esplTheoryDir-      let isamake args =-            runProcess isabelle ("build" : "-d" : theoryDir : args) (Just theoryDir) Nothing Nothing Nothing Nothing-              >>= waitForProcess-      exitCode <- isamake ["-b", "ESPL"]-      case exitCode of-        ExitSuccess -> putStrLn "Sucess! :-)\n---"-        ExitFailure code -> putStrLn $ unlines-            [ "  Logic building failed with code: " ++ show code-            , "  Proof checking is likely not to work."-            , "  To investigate the problem try manually loading/building the theories in"-            , "    '" ++ theoryDir ++ "'"-            ] 
src/Scyther/Equalities.hs view
@@ -9,6 +9,7 @@   , MVarEq   , MsgEq   , AnyEq(..)+  , Inequality(..)    , arbmEqToMsgEq   , mvarEqToMsgEq@@ -31,6 +32,9 @@   , getPostEqs   , toAnyEqs   , anyEqTIDs+  , anyEqAMIDs+  , inequalityTIDs+  , inequalityAMIDs    -- ** Substitution   , substTID@@ -40,12 +44,14 @@   , substAMID   , substMsg   , substAnyEq+  , substInequality    -- ** Additional Queries   , threadRole   , maxMappedTID   , maxMappedArbMsgId   , reflexive+  , falseIneq   , null  -- * Mapping Logical Variables@@ -60,10 +66,12 @@  -- * Pretty Printing   , sptAnyEq+  , sptInequality ) where  import Prelude hiding (null) +import qualified Data.List      as L import qualified Data.Map       as M import qualified Data.UnionFind as U import Data.Data@@ -124,12 +132,16 @@     TIDEq     !TIDEq   | TIDRoleEq !TIDRoleEq   | RoleEq    !RoleEq-  | ArbMsgEq   !ArbMsgEq+  | ArbMsgEq  !ArbMsgEq   | AVarEq    !AVarEq   | MVarEq    !MVarEq   | MsgEq     !MsgEq   deriving( Eq, Ord, Show, Data, Typeable ) +-- | An inequality. Bound logical variables are universally quantified.+newtype Inequality = Inequality { getInequality :: AnyEq }+  deriving( Eq, Ord, Show, Data, Typeable )+ -- | A conjunction of equality facts. -- -- Invariants for a value @eqs = Equalities tideqs roleeqs avareqs mvareqs arbmeqs@:@@ -275,7 +287,11 @@   MVarEq    eq  -> MsgEq  $ substMVarEq    eqs eq   MsgEq     eq  -> MsgEq  $ substMsgEq     eqs eq +-- | Substitute both sides of an inequality.+substInequality :: Equalities -> Inequality -> Inequality+substInequality eqs = Inequality . substAnyEq eqs . getInequality + -- Checking for reflexivity --------------------------- @@ -298,6 +314,7 @@   MVarEq    eq -> reflexive . MsgEq $ mvarEqToMsgEq eq   MsgEq     eq -> uncurry (==) eq + -- Deconstruction ----------------- @@ -352,7 +369,26 @@   MVarEq (v, m)      -> return (mvarTID v)  `mplus` msgTIDs m   MsgEq (m1, m2)     -> msgTIDs m1          `mplus` msgTIDs m2 +-- | The logical message variables occuring in an equality.+anyEqAMIDs :: AnyEq -> [ArbMsgId]+anyEqAMIDs eq = case eq of+  TIDEq _         -> mzero+  TIDRoleEq _     -> mzero+  RoleEq _        -> mzero+  ArbMsgEq (a, m) -> a : msgAMIDs m+  AVarEq _        -> mzero+  MVarEq (_, m)   -> msgAMIDs m+  MsgEq (m1, m2)  -> msgAMIDs m1 `mplus` msgAMIDs m2 +-- | The threads occurring in an inequality.+inequalityTIDs :: Inequality -> [TID]+inequalityTIDs = anyEqTIDs . getInequality++-- | The logical message variables occuring in an inequality.+inequalityAMIDs  :: Inequality -> [ArbMsgId]+inequalityAMIDs = anyEqAMIDs . getInequality++ -- Unification -------------- @@ -574,12 +610,34 @@ maxMappedArbMsgId :: Equalities -> Maybe ArbMsgId maxMappedArbMsgId = fmap (fst . fst) . M.maxViewWithKey . arbmEqs - -- | Retrieve the role of a thread. threadRole :: TID -> Equalities -> Maybe Role threadRole tid eqs = M.lookup (substTID eqs tid) $ roleEqs eqs +-- | Test whether the equalities impose constraints on bound variables only.+onlyLocalConstraints :: Equalities -> Bool+onlyLocalConstraints eqs =+    M.null (tidEqs eqs) &&+    M.null (roleEqs eqs) &&+    M.null (avarEqs eqs) &&+    all isBoundVarMsg (map snd $ M.toList $ mvarEqs eqs) &&+    all isBoundVarEq (M.toList $ arbmEqs eqs) &&+    L.null (U.toList (postEqs eqs))+  where+    isBoundVar (BoundVarId _) = True+    isBoundVar _              = False +    isBoundVarMsg (MArbMsg v) = isBoundVar v+    isBoundVarMsg _           = False++    isBoundVarEq (lhs, rhs) = isBoundVar lhs || isBoundVarMsg rhs++-- | Check if an inequality is trivially false, i.e., there exists an+-- substitution of bound logical variables which makes it reflexive.+falseIneq :: Inequality -> Bool+falseIneq ineq = maybe False onlyLocalConstraints $ solve [getInequality ineq] empty++ ------------------------------------------------------------------------------- -- Abusing equalities to represent mappings of logical variables -------------------------------------------------------------------------------@@ -641,42 +699,73 @@ -- Helper functions for pretty printing --------------------------------------- -ppEq :: (a -> Doc) -> (b -> Doc) -> (a, b) -> Doc-ppEq pp1 pp2 (x1, x2) = pp1 x1 <-> char '=' <-> pp2 x2+ppEq :: Doc -> (a -> Doc) -> (b -> Doc) -> (a, b) -> Doc+ppEq sym pp1 pp2 (x1, x2) = pp1 x1 <-> sym <-> pp2 x2 -ppEq' :: (a -> Doc) -> (a, a) -> Doc-ppEq' pp = ppEq pp pp+ppEq' :: Doc -> (a -> Doc) -> (a, a) -> Doc+ppEq' sym pp = ppEq sym pp pp +filterBoundVars :: [ArbMsgId] -> [ArbMsgId]+filterBoundVars = filter p+  where+    p (BoundVarId _) = True+    p (FreeVarId _)  = False+ -- Isar ------- +ppIsarEq :: Doc -> IsarConf -> AnyEq -> Doc+ppIsarEq sym conf eq0 = case eq0 of+    TIDEq eq  -> ppEq' sym ppIsar eq+    RoleEq eq -> ppEq' sym (text . roleName) eq+    TIDRoleEq (tid, role) ->+      text "roleMap r" <-> ppIsar tid <-> sym <-> text ("Some " ++ roleName role)+    ArbMsgEq eq -> ppEq  sym ppIsar ppIsar eq+    AVarEq  eq  -> ppEq' sym ppIsar eq+    MVarEq  eq  -> ppEq  sym ppIsar ppIsar eq+    MsgEq   eq  -> ppEq' sym ppIsar eq+  where+    ppIsar :: Isar a => a -> Doc+    ppIsar = isar conf+ instance Isar AnyEq where-  isar conf eq0 = case eq0 of-      TIDEq eq  -> ppEq' ppIsar eq-      RoleEq eq -> ppEq' (text . roleName) eq-      TIDRoleEq (tid, role) -> -        text "roleMap r" <-> ppIsar tid <-> text ("= Some " ++ roleName role)-      ArbMsgEq eq -> ppEq  ppIsar ppIsar eq-      AVarEq  eq  -> ppEq' ppIsar eq-      MVarEq  eq  -> ppEq  ppIsar ppIsar eq-      MsgEq   eq  -> ppEq' ppIsar eq+  isar = ppIsarEq (char '=')++instance Isar Inequality where+  isar conf eq = if L.null boundVars+                 then ineq+                 else parens $ quantifiers <-> ineq     where-      ppIsar :: Isar a => a -> Doc-      ppIsar = isar conf+      boundVars = map (isar conf) $ filterBoundVars $ inequalityAMIDs eq+      ineq = ppIsarEq (isaNotEq conf) conf (getInequality eq)+      quantifiers = foldl (<->) (isaForall conf) boundVars <> char '.' + -- SP Theory ------------ +ppSPTEq :: Doc -> AnyEq -> Doc+ppSPTEq sym eq0 = case eq0 of+    TIDEq eq  -> ppEq' sym sptTID eq+    RoleEq eq -> ppEq' sym (text . roleName) eq+    TIDRoleEq (tid, role) ->+      text "role(" <-> sptTID tid <-> char ')' <-> sym <-> text (roleName role)+    ArbMsgEq eq -> ppEq  sym sptArbMsgId sptMessage eq+    AVarEq  eq  -> ppEq' sym sptAVar eq+    MVarEq  eq  -> ppEq  sym sptMVar sptMessage eq+    MsgEq   eq  -> ppEq' sym sptMessage eq+ sptAnyEq :: AnyEq -> Doc-sptAnyEq eq0 = case eq0 of-  TIDEq eq  -> ppEq' sptTID eq-  RoleEq eq -> ppEq' (text . roleName) eq-  TIDRoleEq (tid, role) -> -    text "role(" <-> sptTID tid <-> text (") = " ++ roleName role)-  ArbMsgEq eq -> ppEq  sptArbMsgId sptMessage eq-  AVarEq  eq  -> ppEq' sptAVar eq-  MVarEq  eq  -> ppEq  sptMVar sptMessage eq-  MsgEq   eq  -> ppEq' sptMessage eq+sptAnyEq = ppSPTEq (char '=')++sptInequality :: Inequality -> Doc+sptInequality eq = if L.null boundVars+                   then ineq+                   else parens $ quantifiers <-> ineq+  where+    boundVars = map sptArbMsgId $ filterBoundVars $ inequalityAMIDs eq+    ineq = ppSPTEq (text "!=") (getInequality eq)+    quantifiers = foldl (<->) (char '!') boundVars <> char '.'   {-
src/Scyther/Facts.hs view
@@ -87,7 +87,7 @@ import qualified Scyther.Typing     as T import           Scyther.Typing          hiding (substTypeAnn) import qualified Scyther.Equalities as E-import           Scyther.Equalities      hiding (solve, substTID, threadRole, substMVar, substAVar, substMsg, substAnyEq, substAMID, empty, null)+import           Scyther.Equalities      hiding (solve, substTID, threadRole, substMVar, substAVar, substMsg, substAnyEq, substInequality, substAMID, empty, null) import           Scyther.Event           hiding (substEv, substEvOrd) import qualified Scyther.Event      as E import           Scyther.Formula         hiding (substAtom)@@ -126,6 +126,7 @@   , compromised    :: S.Set Message  -- ^ Statements about agents being compromised.   , uncompromised  :: S.Set Message  -- ^ Statements about agents being uncompromised.   , equalities     :: E.Equalities   -- ^ All equalities that must hold.+  , inequalities   :: S.Set Inequality -- ^ All inequalities that must hold.   , tidQuantifiers :: S.Set TID      -- ^ All thread IDs occurring in the facts.   , amQuantifiers  :: S.Set ArbMsgId  -- ^ All arbitrary-message IDs ocurring in the facts.   , optTyping      :: Maybe Typing   -- ^ The typing if there is any that the@@ -135,6 +136,8 @@    , covered        :: S.Set Message  -- ^ The messages that have already been used in a                                      --   case distinction.+  , failedEqs      :: S.Set AnyEq    -- ^ All equalities which could not be solved.+                                     --   A non-empty set implies false.   , protocol       :: Protocol       -- ^ The protocol that the current state                                      --   is a reachable state of.   }@@ -154,7 +157,9 @@   S.null (compromised facts) &&   S.null (uncompromised facts) &&   S.null (typeAnns facts) &&-  E.null (equalities facts)+  E.null (equalities facts) &&+  S.null (inequalities facts) &&+  S.null (failedEqs facts)  ------------------------------------------------------------------------------ -- Construction@@ -162,7 +167,8 @@  -- | Empty set of facts; logically equivalent to true. empty :: Protocol -> Facts-empty = Facts S.empty S.empty S.empty S.empty E.empty S.empty S.empty Nothing S.empty S.empty+empty = Facts+    S.empty S.empty S.empty S.empty E.empty S.empty S.empty S.empty Nothing S.empty S.empty S.empty  -- | Set the protocol. --@@ -267,7 +273,8 @@  -- | Check if a agent id is quantified in these facts arbMsgIdQuantified :: Facts -> ArbMsgId -> CertResult-arbMsgIdQuantified facts aid =+arbMsgIdQuantified _facts    (BoundVarId _) = certSuccess+arbMsgIdQuantified facts aid@(FreeVarId _)  =     certErrorIf (aid `S.notMember` amQuantifiers facts) $         "unquantified aid: " ++ show aid @@ -314,11 +321,16 @@     E.MVarEq (mv, m)      -> mvarQuantified facts mv >< msgQuantified facts m     E.MsgEq (m1, m2)      -> msgQuantified facts m1 >< msgQuantified facts m2 +-- | Check if an inequality contains only quantified logical variables.+ineqQuantified :: Facts -> E.Inequality -> CertResult+ineqQuantified facts = anyEqQuantified facts . getInequality+ -- | Check if an atom contains only quantified logical variables. atomQuantified :: Facts -> Atom -> CertResult atomQuantified facts atom = case atom of   ABool _      -> certSuccess   AEq eq       -> anyEqQuantified facts eq+  AIneq eq     -> ineqQuantified  facts eq   AEv ev       -> evQuantified    facts ev   AEvOrd ord   -> evOrdQuantified facts ord   ACompr m     -> msgQuantified   facts m@@ -365,6 +377,10 @@ certAnyEq :: Facts -> E.AnyEq -> Cert E.AnyEq certAnyEq = certify anyEqQuantified substAnyEq +-- | Certify an inequality.+certInequality :: Facts -> Inequality -> Cert Inequality+certInequality = certify ineqQuantified substInequality+ -- | Certify an atom: All logical variables are quantified under the given -- facts and all values are invariant under the equalities associated with the -- facts.@@ -413,6 +429,10 @@ substAnyEq :: Facts -> E.AnyEq -> E.AnyEq substAnyEq = liftSubst E.substAnyEq +-- | Substitute an inequality.+substInequality :: Facts -> Inequality -> Inequality+substInequality = liftSubst E.substInequality+ -- | Substitute an atom. substAtom :: Facts -> Atom -> Atom substAtom = liftSubst F.substAtom@@ -458,10 +478,12 @@     , compromised    = S.map (E.substMsg eqs)   (compromised   facts)     , uncompromised  = S.map (E.substMsg eqs)   (uncompromised facts)     , equalities     = eqs+    , inequalities   = S.map (E.substInequality eqs) (inequalities facts)     , tidQuantifiers = tidQuantifiers facts     , amQuantifiers  = amQuantifiers facts     , typeAnns       = S.map (T.substTypeAnn eqs) (typeAnns facts)     , covered        = S.map (E.substMsg eqs)     (covered facts)+    , failedEqs      = S.map (E.substAnyEq eqs)   (failedEqs facts)     }  @@ -521,6 +543,16 @@ insertTypeAnn tya prems =   prems { typeAnns = S.insert (certified tya) (typeAnns prems) } +-- | Insert an inequality.+insertInequality :: Cert Inequality -> Facts -> Facts+insertInequality ineq facts =+  facts { inequalities = S.insert (certified ineq) (inequalities facts) }++-- | Insert a failed equation.+insertFailedEq :: Cert E.AnyEq -> Facts -> Facts+insertFailedEq eq facts =+  facts { failedEqs = S.insert (certified eq) (failedEqs facts) }+ -- | Build the conjunction of the atoms and the facts; a result of 'Nothing' -- means that the conjunction is logically equivalent to False. This will occur -- in case 'AFalse' is conjoined or an equality that cannot be unified.@@ -538,6 +570,7 @@       -- FIXME: repeated calls to solve may be a bit expensive due to duplicated       -- work of 'removeTrivialFacts'.       AEq eq       -> return        $ solve [Cert eq] facts+      AIneq eq     -> return . Just $ insertInequality (Cert eq) facts       AEv ev       -> return . Just $ insertEvNonTrivial (Cert ev) facts       AEvOrd ord   -> return . Just $ insertEvOrdNonTrivial (Cert ord) facts       ACompr m     -> return . Just $ compromise m facts@@ -573,16 +606,22 @@   insertLearnBefore to p m = insertEvOrdAndEvs (Cert (Learn m, to)) p  -- | Insert an executed role step and all non-trivial facts implied by the--- Input rule.-insertStepInputClosed :: Cert (TID, RoleStep) -> Facts -> Facts-insertStepInputClosed s prems = case certified s of-  (tid, step@(Recv _ pt)) ->-    let m = substMsg prems (inst tid pt) in-    insertEvOrdNonTrivial (Cert (Learn m, Step tid step)) prems-  (tid, step@(Send _ _))  -> insertEv (Cert (Step tid step)) prems+-- Input, MatchEq, and NotMatch rules.+insertStepClosed :: Cert (TID, RoleStep) -> Facts -> Facts+insertStepClosed s prems = case certified s of+  (tid, step@(Recv _ pt))         ->+    let m = substMsg prems (inst tid pt)+    in  insertEvOrdNonTrivial (Cert (Learn m, Step tid step)) prems+  (tid, step@(Match _ True v pt)) ->+    let eq  = certAnyEq prems $ MsgEq (instVar tid v, inst tid pt)+    in  insertEv (Cert (Step tid step)) . maybe (insertFailedEq eq prems) id $ solve [eq] prems+  (tid, step@(Match _ False v pt)) ->+    let ineq = certInequality prems . Inequality $ MsgEq (instVar tid v, inst tid pt)+    in  insertEv (Cert (Step tid step)) $ insertInequality ineq prems+  (tid, step)                     -> insertEv (Cert (Step tid step)) prems  -- | Insert an executed role step and all non-trivial facts implied by the--- Input and Role rules.+-- Input, MatchEq, NotMatch, and Role rules. insertStepPrefixClosed :: Cert (TID, RoleStep) -> Facts -> Facts insertStepPrefixClosed s = case certified s of   (tid, step) -> execState $ do@@ -590,11 +629,11 @@     role <- gets (fromMaybe err . threadRole tid)     let prefix        = takeWhile (/= step) (roleSteps role) ++ [step]         insertStepOrd = modify . insertEvOrdAndEvs . Cert . (Step tid *** Step tid)-    mapM_ (modify . insertStepInputClosed . (Cert . ((,) tid))) prefix+    mapM_ (modify . insertStepClosed . (Cert . ((,) tid))) prefix     mapM_ insertStepOrd $ zip prefix (tail prefix) --- | Insert an event an all non-trivial facts implied by the Input and Role--- rules.+-- | Insert an event an all non-trivial facts implied by the Input, MatchEq,+-- and Role rules. insertEvSaturated :: Cert Event -> Facts -> Facts insertEvSaturated ev = case certified ev of   (Learn _      ) -> insertEvNonTrivial ev@@ -663,7 +702,10 @@  -- | The next free agent identifier nextArbMsgId :: Facts -> ArbMsgId-nextArbMsgId = maybe 0 (succ . fst) . S.maxView . amQuantifiers+nextArbMsgId = FreeVarId . maybe 0 (next . fst) . S.maxView . amQuantifiers+  where+    next (FreeVarId aid) = succ aid+    next (BoundVarId bid) = error ("nextArbMsgId: amQuantifiers contains BoundVarId " ++ show bid)  -- | Try to retrieve the typing; equal to 'mzero' if there is none. getTyping :: MonadPlus m => Facts -> m Typing@@ -675,9 +717,11 @@ -- premises. The checks are separated due to efficiency reasons. proveFalse :: Facts -> Bool proveFalse prems =+    not (S.null (failedEqs prems)) ||     not (S.null (compromised prems `S.intersection` uncompromised prems)) ||     any noAgent (S.toList (compromised prems)) ||-    cyclic (eventOrd prems)+    cyclic (eventOrd prems) ||+    any falseIneq (S.toList (inequalities prems))   where     noAgent (MMVar _)  = False     noAgent (MAVar _)  = False@@ -697,6 +741,9 @@   checkAtom atom = case atom of     ABool b              -> b     AEq eq               -> E.reflexive eq+    -- NOTE (SM): inequalities typically contain variables. It is therefore+    -- not much use to try hard to prove inequalities.+    AIneq _eq            -> False     AEv (Learn m)        -> all checkLearn (splitNonTrivial m)     AEv ev               -> ev `S.member` events facts     AEvOrd (Learn m, e2) -> all (checkLearnBefore e2) (splitNonTrivial m)@@ -756,6 +803,7 @@   where   prove mapping (FAtom atom)  = proveAtom facts (F.substAtom (getMappingEqs mapping) atom)   prove mapping (FConj f1 f2) = prove mapping f1 && prove mapping f2+  prove mapping (FDisj f1 f2) = prove mapping f1 || prove mapping f2   prove mapping (FExists v f) = any (\mk -> prove (mk mapping) f) (mkMappings v)   -- the mappings assign witnesses to the existentially quantified variables.   mkMappings (Left  tid) = map (E.addTIDMapping tid)     (S.toList $ tidQuantifiers facts)@@ -783,9 +831,12 @@ -----------------  -- | Represent the facts as a set of atoms.+--+-- TODO: non-empty failedEqs imply False? toAtoms :: Facts -> [Atom] toAtoms facts = mconcat [     AEq      <$> E.toAnyEqs (equalities    facts)+  , AIneq    <$> S.toList   (inequalities  facts)   , AUncompr <$> S.toList   (uncompromised facts)   , ACompr   <$> S.toList   (compromised   facts)   , AEv      <$> S.toList   (events        facts)@@ -1072,21 +1123,23 @@       msum . map stepChains $ roleSteps role     where       stepChains :: RoleStep -> ChainRuleM ()-      stepChains (Recv _ _) = mzero+      stepChains (Recv _ _)       = mzero+      stepChains (Match _ _ _ _)  = mzero       stepChains step@(Send _ pt) = do           -- trace ("stepChains: " ++ roleName role ++"_"++getLabel l) (return ())           modifyFacts $ insertStepPrefixClosed (Cert (tid, step))           addCaseFragment $ stepLabel step-          mapM_ annotateMVarType $ S.toList $ patFMV pt+          subst <- getsFacts substMsg+          mapM_ annotateMVarType . nub . msgFMV . subst $ inst tid pt           msgChains [(Step tid step)] (inst tid pt)         where           -- annotating message variables with their type-          annotateMVarType mv =-              case M.lookup (mv, role) typ of-                Nothing -> error $ "stepChains: no type provided for '"++show v++"'"-                Just ty -> addExpandedTypeAnn (v, ty, tid)-            where-              v = MMVar (MVar (LocalId (mv, tid)))+          annotateMVarType mv@(MVar (LocalId (v, tid')))+              | tid' == tid = case M.lookup (v, role) typ of+                  Nothing -> error $ "stepChains: no type provided for '"++show v+++                                     "' of role "++roleName role+                  Just ty -> addExpandedTypeAnn (MMVar mv, ty, tid)+              | otherwise = return ()            -- case naming           msgName (MConst i)   = getId i@@ -1274,6 +1327,7 @@     ( ppSet (isar conf) (tidQuantifiers facts) ++       ppSet (isar conf) (amQuantifiers facts)     , map (isar conf) reprEqs +++      ppSet (isar conf)       (inequalities facts) ++       ppSet (isaUncompr conf) (uncompromised facts) ++       ppSet (isaCompr   conf) (compromised facts) ++       ppSet (isaEventOrd conf (Mapping eqs)) (eventOrd facts) ++@@ -1296,6 +1350,7 @@     ( ppSet sptTID     (tidQuantifiers facts) ++       ppSet sptArbMsgId (amQuantifiers facts)     , map sptAnyEq reprEqs +++      ppSet sptInequality (inequalities facts) ++       ppComprInfo "uncompromised" (uncompromised facts) ++       ppComprInfo "compromised"   (compromised facts) ++       (map (sptEventOrd (Mapping eqs)) $ transitiveChains $ S.toList $ eventOrd facts) ++
src/Scyther/Formula.hs view
@@ -10,8 +10,8 @@  -- ** Queries   , hasQuantifiers-  , conjuncts   , conjunctionToAtoms+  , distributeOverDisj   , isTypingFormula   , destTypingFormula   , atomTIDs@@ -51,6 +51,7 @@ data Atom =     ABool Bool              -- ^ 'False' and 'True' in Isabelle.   | AEq AnyEq               -- ^ An equality+  | AIneq Inequality        -- ^ An inequality   | AEv Event               -- ^ An event must have happened.   | AEvOrd (Event, Event)   -- ^ An event order.   | ACompr Message          -- ^ A compromised agent variable.@@ -65,6 +66,7 @@ data Formula =     FAtom Atom   | FConj Formula Formula+  | FDisj Formula Formula   | FExists (Either TID ArbMsgId) Formula   deriving( Eq, Show, Ord, Data, Typeable ) @@ -87,6 +89,7 @@   where   go (FAtom atom) = FAtom <$> ((substAtom . getMappingEqs) <$> ask <*> pure atom)   go (FConj l r)  = FConj <$> go l <*> go r+  go (FDisj l r)  = FDisj <$> go l <*> go r   go (FExists (Left tid) inner) = do     tids <- get     case tids of@@ -108,11 +111,13 @@ atomTIDs (AUncompr m)   = msgTIDs m atomTIDs (AHasType tya) = typeAnnTIDs tya atomTIDs (AEq eq)       = anyEqTIDs eq+atomTIDs (AIneq eq)     = inequalityTIDs eq  -- | Compute the free thread variables of the given formula. formulaTIDs :: Formula -> [TID] formulaTIDs (FAtom atom)           = atomTIDs atom formulaTIDs (FConj f1 f2)          = formulaTIDs f1 ++ formulaTIDs f2+formulaTIDs (FDisj f1 f2)          = formulaTIDs f1 ++ formulaTIDs f2 formulaTIDs (FExists (Left tid) f) = filter (tid /=) $ formulaTIDs f formulaTIDs (FExists (Right _)  f) =                   formulaTIDs f @@ -127,12 +132,13 @@ substAtom :: Equalities -> Atom -> Atom substAtom eqs atom = case atom of   ABool _      -> atom-  AEq eq       -> AEq      $ substAnyEq   eqs eq-  AEv ev       -> AEv      $ substEv      eqs ev-  AEvOrd ord   -> AEvOrd   $ substEvOrd   eqs ord-  ACompr m     -> ACompr   $ substMsg     eqs m-  AUncompr m   -> AUncompr $ substMsg     eqs m-  AHasType tya -> AHasType $ substTypeAnn eqs tya+  AEq eq       -> AEq      $ substAnyEq      eqs eq+  AIneq eq     -> AIneq    $ substInequality eqs eq+  AEv ev       -> AEv      $ substEv         eqs ev+  AEvOrd ord   -> AEvOrd   $ substEvOrd      eqs ord+  ACompr m     -> ACompr   $ substMsg        eqs m+  AUncompr m   -> AUncompr $ substMsg        eqs m+  AHasType tya -> AHasType $ substTypeAnn    eqs tya   ATyping _    -> atom   AReachable _ -> atom @@ -142,7 +148,10 @@  -- | True iff the formula does contain an existential quantifier. hasQuantifiers :: Formula -> Bool-hasQuantifiers = isNothing . conjunctionToAtoms+hasQuantifiers (FAtom _)     = False+hasQuantifiers (FConj f1 f2) = hasQuantifiers f1 || hasQuantifiers f2+hasQuantifiers (FDisj f1 f2) = hasQuantifiers f1 || hasQuantifiers f2+hasQuantifiers (FExists _ _) = True  -- | Convert a formula consisting of conjunctions only to a list of atoms. Uses -- 'fail' for error reporting.@@ -151,13 +160,26 @@ conjunctionToAtoms (FConj f1 f2) =   (++) `liftM` conjunctionToAtoms f1 `ap` conjunctionToAtoms f2 conjunctionToAtoms _             =-  fail "conjunctionToAtoms: existential quantifier encountered."+  fail "conjunctionToAtoms: existential quantifier or disjunction encountered." --- | Split all toplevel conjunctions.-conjuncts :: Formula -> [Formula]-conjuncts (FConj f1 f2) = conjuncts f1 ++ conjuncts f2-conjuncts f             = pure f+-- | Produce a logically equivalent formula by pushing conjunctions and+-- quantifiers inside, i.e., apply their respective distributive laws over+-- disjunction. Obvious danger of exponential explosion!+distributeOverDisj :: Formula -> Formula+distributeOverDisj = go+  where+    go (FConj f1 f2) = distribConj (go f1) (go f2)+    go (FDisj f1 f2) = FDisj (go f1) (go f2)+    go (FExists v f) = distribEx v (go f)+    go f             = f +    distribConj f (FDisj f1 f2) = FDisj (distribConj f f1) (distribConj f f2)+    distribConj (FDisj f1 f2) f = FDisj (distribConj f1 f) (distribConj f2 f)+    distribConj f1 f2           = FConj f1 f2++    distribEx v (FDisj f1 f2) = FDisj (distribEx v f1) (distribEx v f2)+    distribEx v f             = FExists v f+ -- | Find the first conjoined thread to role equality for this thread, if there -- is any. findRole :: TID -> Formula -> Maybe Role@@ -168,11 +190,23 @@         | otherwise   = mzero     go (FAtom _)     = mzero     go (FConj f1 f2) = go f1 `mplus` go f2+    go (FDisj f1 f2) = do+        r1 <- go f1+        r2 <- go f2+        guard (r1 == r2)+        return r1     go (FExists v f)         | Left tid == v = mzero         | otherwise     = go f +-- | Add all thread to role equalities which are (immediate) conjuncts of a+-- formula to a mapping.+addRoles :: Formula -> Mapping -> Mapping+addRoles (FAtom (AEq (TIDRoleEq (tid, role)))) = addTIDRoleMapping tid role+addRoles (FConj f1 f2) = addRoles f1 . addRoles f2+addRoles _             = id + ------------------------------------------------------------------------------ -- Pretty Printing ------------------------------------------------------------------------------@@ -199,6 +233,7 @@     ABool False       -> text "False"     ABool True        -> text "True"     AEq eq            -> ppIsar eq+    AIneq eq          -> ppIsar eq     AEv ev            -> isaEvent    conf mapping ev     AEvOrd ord        -> isaEventOrd conf mapping ord     ACompr av         -> isaCompr   conf av@@ -220,6 +255,7 @@     ABool False    -> text "False"     ABool True     -> text "True"     AEq eq         -> sptAnyEq eq+    AIneq eq       -> sptInequality eq     AEv ev         -> sptEvent    mapping ev     AEvOrd (e1,e2) -> sptEventOrd mapping [e1,e2]     ACompr av      -> sptCompr   av@@ -237,28 +273,34 @@     ppIsar = isar conf      pp m (FAtom atom)  = isaAtom conf m atom-    pp m (FConj f1 f2) = sep [pp m f1 <-> isaAnd conf, pp m f2]+    pp m (FConj f1 f2) = sep [ppConjunct m f1 <-> isaAnd conf, ppConjunct m f2]+    pp m (FDisj f1 f2) =+        sep [ppDisjunct (addRoles f1 m) f1 <-> isaOr conf, ppDisjunct (addRoles f2 m) f2]     pp m (FExists v f) = parens $         sep [ isaExists conf <-> (either ppIsar ppIsar v) <> char '.'-            , nest 2 $ pp m' f+            , nest 2 $ pp (addRoles f m) f             ]-      where-        m' = case v of-               Left tid -> maybe id (addTIDRoleMapping tid) (findRole tid f) m-               Right _  -> m +    ppConjunct m f@(FDisj _ _) = parens $ pp m f+    ppConjunct m f             = pp m f+    ppDisjunct m f@(FConj _ _) = parens $ pp m f+    ppDisjunct m f             = pp m f++ -- | A formula in security protocol theory format. sptFormula :: Mapping -> Formula -> Doc sptFormula = pp   where     pp m (FAtom atom)  = sptAtom m atom-    pp m (FConj f1 f2) = sep [pp m f1 <-> char '&', pp m f2]+    pp m (FConj f1 f2) = sep [ppConjunct m f1 <-> char '&', ppConjunct m f2]+    pp m (FDisj f1 f2) =+        sep [ppDisjunct (addRoles f1 m) f1 <-> char '|', ppDisjunct (addRoles f2 m) f2]     pp m (FExists v f) = parens $         sep [ char '?' <-> (either sptTID sptArbMsgId v) <> char '.'-            , nest 2 $ pp m' f+            , nest 2 $ pp (addRoles f m) f             ]-      where-        m' = case v of-               Left tid -> maybe id (addTIDRoleMapping tid) (findRole tid f) m-               Right _  -> m +    ppConjunct m f@(FDisj _ _) = parens $ pp m f+    ppConjunct m f             = pp m f+    ppDisjunct m f@(FConj _ _) = parens $ pp m f+    ppDisjunct m f             = pp m f
src/Scyther/GoalFlow.hs view
@@ -129,10 +129,10 @@ -}  firstRecvs :: Role -> RoleStep -> S.Set Id-firstRecvs _         (Send _ _)  = S.empty firstRecvs role recv@(Recv _ pt) =    patFMV pt `S.difference`   (S.unions . map (patFMV . stepPat) $ takeWhile (/= recv) (roleSteps role))+firstRecvs _         _           = S.empty  -- | The role steps of a protocol. protoSteps :: Protocol -> [(Role, RoleStep)]
src/Scyther/Message.hs view
@@ -12,6 +12,7 @@   , MVar(..)   , ArbMsgId(..)   , Message(..)+   -- ** Queries   , lidId   , lidTID@@ -31,6 +32,7 @@   , mapAVar   , mapMVar   , inst+  , instVar   , normMsg   , splitNonTrivial @@ -44,6 +46,7 @@ ) where  import Control.Monad+import Control.Monad.State import Control.Applicative  import Data.Data@@ -65,8 +68,7 @@ -- Messages ------------------------------------------------------------------------------ --- | A logical variable for a thread identifier. Note that these are the only--- free logical variables being used during proofs. Depending on their context+-- | A logical variable for a thread identifier. Depending on their context -- they are either universally or existentially quantified. newtype TID = TID { getTID :: Int }   deriving( Eq, Ord, Enum, Num, Data, Typeable {-! NFData !-})@@ -74,13 +76,16 @@ instance Show TID where   show (TID tid) = '#':show tid --- | An agent name identifier-newtype ArbMsgId = ArbMsgId { arbMsgId :: Int }-  deriving( Eq, Ord, Enum, Num, Data, Typeable )+-- | A logical message variable. There are two namespaces: Free variables have+-- global scope. Bound variables are used for inequalities with implicit local+-- quantification.+data ArbMsgId = FreeVarId !Int+              | BoundVarId !Int+  deriving( Eq, Ord, Data, Typeable )  instance Show ArbMsgId where-  show (ArbMsgId aid) = 'a':show aid-+  show (FreeVarId aid)  = 'a':show aid+  show (BoundVarId bid) = 'b':show bid  -- | A local identifier. newtype LocalId = LocalId { getLocalId :: (Id, TID) }@@ -152,7 +157,7 @@ msgTIDs (MFresh f)    = pure . lidTID . getFresh $ f msgTIDs (MAVar v)     = pure . avarTID $ v msgTIDs (MMVar v)     = pure . mvarTID $ v-msgTIDs (MArbMsg _)    = empty+msgTIDs (MArbMsg _)   = empty msgTIDs (MHash m)     = msgTIDs m msgTIDs (MTup m1 m2)  = msgTIDs m1 `mappend` msgTIDs m2 msgTIDs (MEnc m1 m2)  = msgTIDs m1 `mappend` msgTIDs m2@@ -168,7 +173,7 @@ msgAMIDs (MFresh _)    = empty msgAMIDs (MAVar _)     = empty msgAMIDs (MMVar _)     = empty-msgAMIDs (MArbMsg a)    = pure a+msgAMIDs (MArbMsg a)   = pure a msgAMIDs (MHash m)     = msgAMIDs m msgAMIDs (MTup m1 m2)  = msgAMIDs m1 `mappend` msgAMIDs m2 msgAMIDs (MEnc m1 m2)  = msgAMIDs m1 `mappend` msgAMIDs m2@@ -258,20 +263,32 @@ -- symbolically. The resulting message is guaranteed to be normalized w.r.t -- `normMsg`. inst :: TID -> Pattern -> Message-inst _   (PConst i)       = MConst i-inst tid (PFresh i)       = MFresh (Fresh (LocalId (i, tid)))-inst tid (PAVar i)        = MAVar  (AVar (LocalId (i, tid)))-inst tid (PMVar i)        = MMVar  (MVar (LocalId (i, tid)))-inst tid (PHash pt)       = MHash (inst tid pt)-inst tid (PTup pt1 pt2)   = MTup (inst tid pt1) (inst tid pt2)-inst tid (PEnc pt1 pt2)   = MEnc (inst tid pt1) (inst tid pt2)-inst tid (PSign pt1 pt2)  = MTup m1 (MEnc m1 (normMsg $ MInvKey (inst tid pt2)))-  where m1 = inst tid pt1-inst tid (PSymK pt1 pt2)  = MSymK (inst tid pt1) (inst tid pt2)-inst tid (PShrK pt1 pt2)  = MShrK (inst tid pt1) (inst tid pt2)-inst tid (PAsymPK pt)     = MAsymPK (inst tid pt)-inst tid (PAsymSK pt)     = MAsymSK (inst tid pt)+inst tid pattern = evalState (go pattern) 0+  where+    go :: Pattern -> State Int Message+    go (PConst i)       = return $ MConst i+    go (PFresh i)       = return $ MFresh (Fresh (LocalId (i, tid)))+    go (PAVar i)        = return $ MAVar  (AVar (LocalId (i, tid)))+    go (PMVar i)        = return $ MMVar  (MVar (LocalId (i, tid)))+    go (PHash pt)       = MHash <$> go pt+    go (PTup pt1 pt2)   = MTup <$> go pt1 <*> go pt2+    go (PEnc pt1 pt2)   = MEnc <$> go pt1 <*> go pt2+    go (PSign pt1 pt2)  = do m1 <- go pt1+                             m2 <- go pt2+                             return $ MTup m1 (MEnc m1 (normMsg $ MInvKey m2))+    go (PSymK pt1 pt2)  = MSymK <$> go pt1 <*> go pt2+    go (PShrK pt1 pt2)  = MShrK <$> go pt1 <*> go pt2+    go (PAsymPK pt)     = MAsymPK <$> go pt+    go (PAsymSK pt)     = MAsymSK <$> go pt+    go (PAny)           = do bid <- get+                             put (bid + 1)+                             return $ MArbMsg (BoundVarId bid) +-- | Instantiate a generic specification variable.+instVar :: TID -> VarId -> Message+instVar tid (SAVar i) = MAVar (AVar (LocalId (i, tid)))+instVar tid (SMVar i) = MMVar (MVar (LocalId (i, tid)))+ -- | Normalize a message; i.e., apply key-inversion if possible and swap shared -- key arguments, if required. normMsg :: Message -> Message@@ -326,7 +343,8 @@   isar _ tid = text "tid" <> int (getTID tid)  instance Isar ArbMsgId where-  isar _ aid = text "a" <> int (arbMsgId aid)+  isar _ (FreeVarId aid)  = text "a" <> int aid+  isar _ (BoundVarId bid) = text "b" <> int bid  instance Isar LocalId where   isar conf (LocalId (i, tid)) = isar conf i <-> isar conf tid@@ -376,7 +394,8 @@ sptTID = text . show  sptArbMsgId :: ArbMsgId -> Doc-sptArbMsgId = (char 'a'  <>) . int . arbMsgId+sptArbMsgId (FreeVarId aid)  = char 'a' <> int aid+sptArbMsgId (BoundVarId bid) = char 'b' <> int bid  sptLocalId :: LocalId -> Doc sptLocalId (LocalId (i, tid)) = sptId i <> sptTID tid
src/Scyther/Protocol.hs view
@@ -5,6 +5,7 @@  -- * Types     Id(..)+  , VarId(..)   , Pattern(..)   , Label(..)   , RoleStep(..)@@ -14,6 +15,9 @@  -- * Queries +  -- ** Generic variables+  , variable+   -- ** Patterns   , patFMV   , patFAV@@ -26,6 +30,8 @@   , stepLabel   , stepFMV   , stepFAV+  , stepUsedMV+  , stepBoundMV    -- ** Roles   , roleFMV@@ -46,6 +52,9 @@   , wfProto   , sptProtoIllformedness +-- * Construction+  , patMapFMV+ -- * Output   , isaRoleStep   , sptId @@ -76,6 +85,12 @@ instance Show Id where   show (Id i) = i +-- | Either an agent or message variable. Currently only used for 'Match' steps.+data VarId =+    SAVar Id  -- ^ An agent variable.+  | SMVar Id  -- ^ A message variable.+  deriving( Eq, Ord, Show, Data, Typeable {-! NFData !-} )+ -- | A message pattern. data Pattern =      PConst  Id                -- ^ A global constant.@@ -90,6 +105,7 @@   | PShrK   Pattern Pattern   -- ^ A long-term bi-directional symmetric key.   | PAsymPK Pattern           -- ^ A long-term public key.   | PAsymSK Pattern           -- ^ A long-term private key+  | PAny                      -- ^ A wildcard (anonymous logical variable).   deriving( Eq, Ord, Show, Data, Typeable {-! NFData !-} )  -- | A label of a role step.@@ -98,8 +114,9 @@  -- | A role step. data RoleStep = -    Send Label Pattern  -- ^ A send step.-  | Recv Label Pattern  -- ^ A receive step.+    Send Label Pattern              -- ^ A send step.+  | Recv Label Pattern              -- ^ A receive step.+  | Match Label Bool VarId Pattern  -- ^ A match or not-match step.   deriving( Eq, Ord, Show, Data, Typeable {-! NFData !-} )  -- | A role of a protocol. Its name has no operational meaning, but is carried@@ -131,15 +148,25 @@ lookupRoleStep :: String -> Role -> Maybe RoleStep lookupRoleStep lbl = find ((== lbl) . stepLabel) . roleSteps --- | Pattern of of a role step+-- | Case distinction for specification variables.+variable :: (Id -> a)  -- ^ Function to apply for an agent variable.+         -> (Id -> a)  -- ^ Function to apply for a message variable.+         -> VarId+         -> a+variable agent _ (SAVar a) = agent a+variable _ msg   (SMVar m) = msg m++-- | Pattern of a role step. stepPat :: RoleStep -> Pattern-stepPat (Send _ pt) = pt-stepPat (Recv _ pt) = pt+stepPat (Send _ pt)      = pt+stepPat (Recv _ pt)      = pt+stepPat (Match _ _ _ pt) = pt  -- | The string label of a role step. stepLabel :: RoleStep -> String-stepLabel (Send l _) = getLabel l-stepLabel (Recv l _) = getLabel l+stepLabel (Send l _)      = getLabel l+stepLabel (Recv l _)      = getLabel l+stepLabel (Match l _ _ _) = getLabel l  -- | Pattern subterms. subpatterns :: Pattern -> S.Set Pattern@@ -181,11 +208,12 @@  -- | Frees message variables of a role step. stepFMV :: RoleStep -> S.Set Id-stepFMV = patFMV . stepPat+stepFMV (Match _ _ (SMVar v) pt) = v `S.insert` patFMV pt+stepFMV step                     = patFMV $ stepPat step  -- | Free message variables of a role. roleFMV :: Role -> S.Set Id-roleFMV = S.unions . map (patFMV . stepPat) . roleSteps+roleFMV = S.unions . map stepFMV . roleSteps  -- | Free agent variables of a pattern. patFAV :: Pattern -> S.Set Id@@ -200,21 +228,40 @@ patFAV (PAsymSK pt)     = patFAV pt patFAV _                = S.empty - -- | Frees agent variables of a role step. stepFAV :: RoleStep -> S.Set Id-stepFAV = patFAV . stepPat+stepFAV (Match _ _ (SAVar a) pt) = a `S.insert` patFAV pt+stepFAV step                     = patFAV $ stepPat step  -- | Free agent variables of a role. roleFAV :: Role -> S.Set Id-roleFAV = S.unions . map (patFAV . stepPat) . roleSteps+roleFAV = S.unions . map stepFAV . roleSteps +-- | Semantically used message variables of a role step.+stepUsedMV :: RoleStep -> S.Set Id+stepUsedMV (Send _ pt)     = patFMV pt+stepUsedMV (Recv _ _)      = S.empty+stepUsedMV (Match _ eq v pt)+    | eq        = matched+    | otherwise = matched `S.union` patFMV pt+  where+    matched = case v of+        SAVar _ -> S.empty+        SMVar m -> S.singleton m++-- | Message variables of a role step which are bound there at the latest.+stepBoundMV :: RoleStep -> S.Set Id+stepBoundMV (Recv _ pt)         = patFMV pt+stepBoundMV (Match _ True _ pt) = patFMV pt+stepBoundMV _                   = S.empty++ -- Well-formedness of protocols and roles -----------------------------------------  data ProtoIllformedness =     NonUnique Role-  | SendBeforeReceive Role RoleStep Id+  | UseBeforeBind Role RoleStep Id   | AccessibleLongTermKey Role RoleStep Pattern   deriving( Eq, Ord, Show ) @@ -223,21 +270,19 @@ -- contain long-term-keys in accessible positions. wfRole :: Role -> [ProtoIllformedness] wfRole role = msum-    [ do guard (unique $ roleSteps role)+    [ do guard (not . unique $ roleSteps role)          return $ NonUnique role-    , recv_before_send S.empty (roleSteps role)+    , use_before_bind S.empty (roleSteps role)     , msum . map accessibleLongTermKeys $ roleSteps role     ]   where-    recv_before_send _                            []  = mzero-    recv_before_send received (step@(Send _ pt) : rs) = -      do v <- S.toList $ patFMV pt-         guard (v `S.member` received)-         return $ SendBeforeReceive role step v+    use_before_bind _             []  = mzero+    use_before_bind bound (step : rs) =+      do v <- S.toList $ stepUsedMV step+         guard (not (v `S.member` bound))+         return $ UseBeforeBind role step v       `mplus`-      recv_before_send received rs-    recv_before_send received (Recv _ pt : rs) = -      recv_before_send (patFMV pt `S.union` received) rs+      use_before_bind (stepBoundMV step `S.union` bound) rs      accessibleLongTermKeys step = do       m <- S.toList . patternparts $ stepPat step@@ -256,10 +301,10 @@ sptProtoIllformedness pif = case pif of   NonUnique role ->      text $ "role '" ++ roleName role ++ "' contains duplicate steps."-  SendBeforeReceive role step v ->+  UseBeforeBind role step v ->     text (roleName role) <> colon <->      sptRoleStep Nothing step <> colon <->-    text "message variable" <-> quotes (sptId v) <-> text "sent before received."+    text "message variable" <-> quotes (sptId v) <-> text "used before bound."   AccessibleLongTermKey role step _ ->     text (roleName role) <> colon <->      sptRoleStep Nothing step <> colon <->@@ -278,7 +323,7 @@   where   steps = zip (roleSteps role) (repeat role)  --- | The order of role steps in the protocol such that every send step is+-- | The order of role steps in the protocol such that every send step -- occurs before every receive step having the same label. labelOrd :: Protocol -> RoleStepOrder labelOrd proto = @@ -292,6 +337,26 @@ protoOrd proto = labelOrd proto ++ concatMap roleOrd (protoRoles proto)  +-- Construction+---------------++-- | Apply a function to the free message variables of a pattern, replacing+-- them by a subpattern.+patMapFMV :: (Id -> Pattern) -> Pattern -> Pattern+patMapFMV f = go+  where+    go (PMVar i)       = f i+    go (PHash pt)      = PHash   (go pt)+    go (PTup pt1 pt2)  = PTup    (go pt1) (go pt2)+    go (PEnc pt1 pt2)  = PEnc    (go pt1) (go pt2)+    go (PSign pt1 pt2) = PSign   (go pt1) (go pt2)+    go (PSymK pt1 pt2) = PSymK   (go pt1) (go pt2)+    go (PShrK pt1 pt2) = PShrK   (go pt1) (go pt2)+    go (PAsymPK pt)    = PAsymPK (go pt)+    go (PAsymSK pt)    = PAsymSK (go pt)+    go pt              = pt++ ------------------------------------------------------------------------------ -- ISAR Output ------------------------------------------------------------------------------@@ -312,16 +377,17 @@   case optRole of     Just role | step `elem` roleSteps role -> -- abbreviate       text $ roleName role ++ "_" ++ stepLabel step-    _ ->-      text name <-> isar conf (Label $ stepLabel step) <-> ppPat (stepPat step) -  where-  name = case step of Send _ _ -> "Send"; Recv _ _ -> "Recv"-  ppPat pt@(PTup _ _) = isar conf pt-  ppPat pt            = nestShort' "(" ")" (isar conf pt)+    _ -> isar conf step  instance Isar Id where   isar _ (Id i) = text $ "''"++i++"''" +instance Isar VarId where+  isar conf = nestShort' "(" ")" . variable ppAgent ppMsg+    where+      ppAgent a = text "AVar" <-> isar conf a+      ppMsg   m = text "MVar" <-> isar conf m+ instance Isar Label where   isar _ (Label l) = text $ "''"++l++"''" @@ -342,6 +408,7 @@       (PAsymPK a)                 -> text "PAsymPK" <-> ppTup a       (PAsymSK (PAVar a))         -> text "sSK" <-> isar conf a       (PAsymSK a)                 -> text "PAsymSK" <-> ppTup a+      (PAny)                      -> text "PAny"     where       -- pretty print a tuple as right associate list       ppTup pt@(PTup _ _) = nestShort n left right (fsep $ punctuate comma $ map (isar conf) $ split pt)@@ -360,7 +427,16 @@   instance Isar RoleStep where-  isar conf = isaRoleStep conf Nothing+  isar conf step = case step of+      Send _ _          -> text "Send" <-> label <-> pattern+      Recv _ _          -> text "Recv" <-> label <-> pattern+      Match _ True  v _ -> text "MatchEq" <-> label <-> isar conf v <-> pattern+      Match _ False v _ -> text "NotMatch" <-> label <-> isar conf v <-> pattern+    where+      label   = isar conf (Label $ stepLabel step)+      pattern = ppPat (stepPat step)+      ppPat pt@(PTup _ _) = isar conf pt+      ppPat pt            = nestShort' "(" ")" (isar conf pt)  instance Isar Role where   isar conf (Role name steps) = @@ -407,6 +483,7 @@     (PShrK a b)   -> fcat [text "k[", sptPattern a, comma, sptPattern b, text "]"]     (PAsymPK a)   -> text "pk" <> ppBetween 1 "(" ")" a     (PAsymSK a)   -> text "sk" <> ppBetween 1 "(" ")" a+    (PAny)        -> char '_'   where     -- pretty print a tuple as right associate list     ppBetween n lead finish pt@(PTup _ _) = @@ -423,12 +500,20 @@   case optRole of     Just role | step `elem` roleSteps role -> -- abbreviate       text $ roleName role ++ "_" ++ stepLabel step-    _ ->-      (text $ name ++ "_" ++ stepLabel step) <> ppPat (stepPat step) +    _ -> case step of+             Send _ _           -> labeled "Send" <> pattern+             Recv _ _           -> labeled "Recv" <> pattern+             Match _ True  v pt -> labeled "Match" <> matching "->" v pt+             Match _ False v pt -> labeled "Match" <> matching "#"  v pt   where-  name = case step of Send _ _ -> "Send"; Recv _ _ -> "Recv"-  ppPat pt@(PTup _ _) = sptPattern pt-  ppPat pt            = nestShort' "(" ")" (sptPattern pt)+    labeled name = text $ name ++ "_" ++ stepLabel step+    matching sym v pt = nestShort' "(" ")" $ ppVar v <-> text sym <-> sptPattern pt+    pattern = ppPat (stepPat step)++    ppVar (SAVar a)     = sptId a+    ppVar (SMVar v)     = char '?' <> sptId v+    ppPat pt@(PTup _ _) = sptPattern pt+    ppPat pt            = nestShort' "(" ")" (sptPattern pt)  -- | Pretty print a role in SP theory format. sptRole :: Role -> Doc
src/Scyther/Sequent.hs view
@@ -102,31 +102,37 @@         proveRecvs S.empty (roleSteps role)       where         proveRecvs _    []                             = []-        proveRecvs recv (      Send _ _       : steps) = proveRecvs recv steps+        proveRecvs recv (Send _ _             : steps) = proveRecvs recv steps+        proveRecvs recv (Match _ False _ _    : steps) = proveRecvs recv steps         proveRecvs recv ((Recv _ (PMVar lid)) : steps) =           -- don't prove single reiceves as they are handled directly by the tactic           -- on the Isabelle side.           proveRecvs (S.insert lid recv) steps         proveRecvs recv (step@(Recv _ pt)     : steps) =           let mvars = patFMV pt-          in (S.toList mvars >>= proveVar) `mplus`+          in (S.toList mvars >>= proveVar recv step) `mplus`              (proveRecvs (recv `S.union` mvars) steps)+        -- TODO: Merge? Special cases?+        proveRecvs recv (step@(Match _ True _ pt) : steps) =+          let mvars = patFMV pt+          in (S.toList mvars >>= proveVar recv step) `mplus`+             (proveRecvs (recv `S.union` mvars) steps)++        proveVar recv step v+          | v `S.member` recv = fail "proveVar: not first receive"+          | otherwise         = return (name, Sequent prem concl Standard)           where-            proveVar v-              | v `S.member` recv = fail "proveVar: not first receive"-              | otherwise         = return (name, Sequent prem concl Standard)-              where-                name         = roleName role ++ "_" ++ stepLabel step ++ "_" ++ getId v-                (tid, prem0) = freshTID (sePrem se)-                mv           = MVar (LocalId (v, tid))-                premErr      = error $ "wellTypedCases: could not add thread " ++ show tid ++ ". This should not happen."-                prem1        = maybe premErr saturateFacts . join $-                                 conjoinAtoms [AEv (Step tid step), AEq (E.TIDRoleEq (tid, role))] prem0-                prem  = fromMaybe (error "failed to set typing") $ setTyping typ prem1-                concl = FAtom $ case M.lookup (v, role) typ of-                  Just ty -> AHasType (MMVar mv, ty, tid)-                  Nothing -> error $-                    "wellTypedCases: no type given for '"++show v++"' in role '"++roleName role++"'"+            name         = roleName role ++ "_" ++ stepLabel step ++ "_" ++ getId v+            (tid, prem0) = freshTID (sePrem se)+            mv           = MVar (LocalId (v, tid))+            premErr      = error $ "wellTypedCases: could not add thread " ++ show tid ++ ". This should not happen."+            prem1        = maybe premErr saturateFacts . join $+                             conjoinAtoms [AEv (Step tid step), AEq (E.TIDRoleEq (tid, role))] prem0+            prem  = fromMaybe (error "failed to set typing") $ setTyping typ prem1+            concl = FAtom $ case M.lookup (v, role) typ of+              Just ty -> AHasType (MMVar mv, ty, tid)+              Nothing -> error $+                "wellTypedCases: no type given for '"++show v++"' in role '"++roleName role++"'"  wellTypedCases _ = mzero 
src/Scyther/Theory.hs view
@@ -309,6 +309,9 @@    -- | True, if the sequents conclusion contains an existentially quantified   -- thread.+  --+  -- TODO: Does this describe authentication properties precisely if disjunction+  -- is present?   isExistsStructureProp :: Sequent -> Bool   isExistsStructureProp = hasQuantifiers . seConcl 
src/Scyther/Theory/Dot.hs view
@@ -56,6 +56,7 @@ getColorWithDefault :: TID -> M.Map (Maybe TID) v -> v getColorWithDefault tid m = M.findWithDefault (m M.! Nothing) (Just tid) m + ----------------------------------------------------------------------------- -- DOT Graph Generation -----------------------------------------------------------------------------@@ -65,6 +66,8 @@  type TIDMap = M.Map TID (Maybe Role) +-- If a thread identifier may correspond to different roles, only one role gets+-- mapped. extractTIDMap :: Sequent -> TIDMap extractTIDMap se = formulaMap (seConcl se) (M.fromList fromPrem)   where@@ -76,6 +79,7 @@     (FExists (Left tid)  prop)              -> formulaMap prop . M.insert tid Nothing     (FExists (Right _ ) prop)               -> formulaMap prop     (FConj lprop rprop)                     -> formulaMap lprop . formulaMap rprop+    (FDisj lprop rprop)                     -> formulaMap lprop . formulaMap rprop     (FAtom (AEq (E.TIDRoleEq (tid, role)))) -> M.insert tid (Just role)     _                                       -> id @@ -334,10 +338,11 @@ tryNoteRole tid (Just role) env =    env { threadMapping = E.addTIDRoleMapping tid role (threadMapping env) } --- | Produce the dot code of the formula.+-- | Produce the dot code of a formula without disjunctions. dotFormula :: Formula -> MyDot () dotFormula (FAtom atom) = dotAtom atom dotFormula (FConj f1 f2) = dotFormula f1 >> dotFormula f2+dotFormula (FDisj _f1 _f2) = error "dotFormula: disjunction encountered." dotFormula (FExists (Left tid) inner) = do   localThreadInfo tid (findRole tid inner) $ do     dotFormula inner@@ -347,14 +352,31 @@   _ <- liftDot $ node [("label", "some agent " ++ show aid)]   dotFormula inner --- | Produce the dot code for a formula that is a conclusion of a sequent. This--- takes care of handling the quantifiers stemming from the premises.-dotConclusion :: Formula -> MyDot ()-dotConclusion formula = do+-- | Produce the dot code for a formula that is a single alternative of a+-- conclusion. This takes care of handling the quantifiers stemming from the+-- premises.+dotConclusionAlt :: Formula -> MyDot ()+dotConclusionAlt formula = do   resetThreadAtoms []   dotFormula formula   dotThreads False +-- | Produce the dot code for a formula that is a conclusion of a sequent.+-- Quantifiers and conjunctions are first pushed inside. The resulting+-- alternatives are put into separate clusters.+dotConclusion :: Formula -> MyDot ()+dotConclusion concl = case distributeOverDisj concl of+    f@(FDisj _ _) -> clusterAlts f+    f             -> dotConclusionAlt f  -- no extra cluster for single alternative+  where+    clusterAlts (FDisj f1 f2) = clusterAlts f1 >> clusterAlts f2+    clusterAlts f = do+        s <- get+        _ <- myCluster $ do+          liftDot $ attribute ("label","alternative")+          dotConclusionAlt f+        put s+ -- | Dot a sequent with two separate clusters for premise and conclusion. dotSequent :: Sequent -> MyDot () dotSequent se = do@@ -406,10 +428,10 @@   dotStep (role, step) =      mkNode (render $ sptRoleStep Nothing step) (getRoleColor role) [] -  dotSend _            (_, Recv _ _) = return ()   dotSend stepMap send@(_, Send l _) = sequence_     [ edge (findShowError send stepMap) (findShowError recv stepMap) []     | recv@(_, Recv l' _) <- steps, l == l' ]+  dotSend _       _                  = return ()    dotRole stepMap role = do     roleId <- mkNode ("role "++roleName role) (getRoleColor $ roleName role) [("peripheries","2")]
− src/Scyther/Theory/Lexer.hs
@@ -1,612 +0,0 @@-{-# LANGUAGE BangPatterns, CPP, MagicHash #-}-{-# LINE 1 "Theory/Lexer.x" #-}--{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-matches -fno-warn-unused-binds -fno-warn-missing-signatures #-}-module Scyther.Theory.Lexer where---#if __GLASGOW_HASKELL__ >= 603-#include "ghcconfig.h"-#elif defined(__GLASGOW_HASKELL__)-#include "config.h"-#endif-#if __GLASGOW_HASKELL__ >= 503-import Data.Array-import Data.Char (ord)-import Data.Array.Base (unsafeAt)-#else-import Array-import Char (ord)-#endif-#if __GLASGOW_HASKELL__ >= 503-import GHC.Exts-#else-import GlaExts-#endif-alex_base :: AlexAddr-alex_base = AlexA# "\x01\x00\x00\x00\xdb\x00\x00\x00\x51\x01\x00\x00\x28\x00\x00\x00\x2d\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x01\x00\x00\x70\x02\x00\x00\x40\x03\x00\x00\x10\x04\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\xe0\x04\x00\x00\xb0\x05\x00\x00\x80\x06\x00\x00\x50\x07\x00\x00\x20\x08\x00\x00\xf0\x08\x00\x00\xc0\x09\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x90\x0a\x00\x00\x60\x0b\x00\x00\x30\x0c\x00\x00\x00\x0d\x00\x00\xd0\x0d\x00\x00\xa0\x0e\x00\x00\x70\x0f\x00\x00\x40\x10\x00\x00\x10\x11\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\xce\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x11\x00\x00\xd2\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x12\x00\x00\x00\x00\x00\x00\xcc\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x80\x13\x00\x00\x50\x14\x00\x00\x20\x15\x00\x00"#--alex_table :: AlexAddr-alex_table = AlexA# "\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\x51\x00\x45\x00\x4c\x00\x4a\x00\xff\xff\x52\x00\x44\x00\x09\x00\x3f\x00\x4d\x00\x57\x00\x3e\x00\x56\x00\x54\x00\x07\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x49\x00\xff\xff\x4e\x00\x48\x00\x4f\x00\x50\x00\x4b\x00\xff\xff\xff\xff\x10\x00\x08\x00\x0a\x00\x0c\x00\x04\x00\x05\x00\x0e\x00\x31\x00\x11\x00\x04\x00\x13\x00\x17\x00\x15\x00\x1d\x00\x34\x00\x26\x00\x3c\x00\x37\x00\x5a\x00\x59\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x40\x00\xff\xff\x41\x00\x47\x00\x55\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x18\x00\x00\x00\x00\x00\x00\x00\x38\x00\x39\x00\x00\x00\x42\x00\x53\x00\x43\x00\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x0b\x00\x16\x00\x0f\x00\x16\x00\x16\x00\x16\x00\x16\x00\x12\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x0d\x00\x33\x00\x32\x00\x33\x00\x33\x00\x33\x00\x33\x00\x14\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x19\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x1a\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x1b\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x1f\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x27\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x20\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x21\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x22\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x23\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x24\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x28\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x29\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x2a\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x2b\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x2c\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x2d\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x2e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x2f\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x00\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00\x5e\x00"#--alex_check :: AlexAddr-alex_check = AlexA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x0a\x00\x0a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x20\x00\x2f\x00\x29\x00\x7d\x00\x2a\x00\x20\x00\x2a\x00\x2a\x00\x2f\x00\x2a\x00\x80\x00\x2a\x00\x88\x00\x83\x00\x3e\x00\x2d\x00\x2d\x00\x2d\x00\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\xa7\x00\xa8\x00\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xff\xff\xff\xff\xc2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe2\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf7\x00\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xac\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00"#--alex_deflt :: AlexAddr-alex_deflt = AlexA# "\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#--alex_accept = listArray (0::Int,95) [[],[],[],[],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAccSkip)],[],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_23))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_4))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_6))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_9))],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[],[(AlexAcc (alex_action_12))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[],[(AlexAcc (alex_action_13))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[],[(AlexAcc (alex_action_14))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_53))],[],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_18))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_21))],[],[(AlexAcc (alex_action_22))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_25))],[(AlexAcc (alex_action_26))],[(AlexAcc (alex_action_27))],[(AlexAcc (alex_action_28))],[(AlexAcc (alex_action_29))],[(AlexAcc (alex_action_30))],[(AlexAcc (alex_action_31))],[(AlexAcc (alex_action_32))],[(AlexAcc (alex_action_33))],[(AlexAcc (alex_action_34))],[(AlexAcc (alex_action_35))],[(AlexAcc (alex_action_36))],[(AlexAcc (alex_action_37))],[(AlexAcc (alex_action_38))],[(AlexAcc (alex_action_39))],[(AlexAcc (alex_action_40))],[(AlexAcc (alex_action_41))],[(AlexAcc (alex_action_42))],[(AlexAcc (alex_action_43))],[(AlexAcc (alex_action_44))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_50))],[(AlexAcc (alex_action_51))],[],[(AlexAcc (alex_action_52))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_53))]]-{-# LINE 81 "Theory/Lexer.x" #-}----- | Lex a keyword-keyword :: Keyword -> AlexAction Keyword-keyword kw input len = return kw---- | Wrap a string into a keyword-scanString :: (String -> Keyword) -> AlexAction Keyword-scanString kw (_,_,input) len = return $ kw (take len input)--{---- | Scan a string until EOF is encountered.-alexScanTokens :: String -> Either String [Keyword]-alexScanTokens inp = runAlex inp gather-  where-  gather = do-    t <- alexMonadScan-    case trace (show t) t of-      EOF -> return [EOF]-      _   -> (t:) `liftM` gather---- | Scan a file.-scanFile f = do-   inp <- readFile f-   return $ alexScanTokens inp--}---- | Formal text types.-data TextType = -       TextBegin String -     | TextContent String -     | TextEnd-     deriving( Eq, Ord, Show )---- | Lexable Keywords-data Keyword =-    IDENT String-  | TEXT TextType -  | SQUOTE-  | DQUOTE-  | RIGHTARROW-  | LEFTARROW-  | LONGRIGHTARROW-  | LONGLEFTARROW-  | COMMA-  | DOT-  | COLON-  | QUESTIONMARK-  | BANG-  | AND-  | MID-  | DOLLAR-  | AT-  | SHARP-  | LPAREN-  | RPAREN-  | LBRACKET-  | RBRACKET-  | LBRACE -  | RBRACE-  | TILDE-  | HAT-  | STAR-  | UNDERSCORE-  | MINUS-  | PLUS-  | EQUAL-  | LESS-  | GREATER-  | EOF-  | FORALL-  | EXISTS-  | LAND-  | LOR-  | LNOT-  | APPROX-  -- dummy keyword to get rid of overlapping pattern matches-  | DUMMY_KEYWORD-  deriving( Eq )--instance Show Keyword where-  show kw = case kw of -      IDENT i -> identifier i-      TEXT t -> txt t-      SQUOTE -> symbol "'"-      DQUOTE -> symbol "\""-      RIGHTARROW -> symbol "->"-      LEFTARROW -> symbol "<-"-      LONGRIGHTARROW -> symbol "-->"-      LONGLEFTARROW -> symbol "<--"-      COMMA -> symbol ","-      DOT -> symbol "."-      COLON -> symbol ":"-      QUESTIONMARK -> symbol "?"-      BANG -> symbol "!"-      AND -> symbol "&"-      MID -> symbol "|"-      DOLLAR -> symbol "$"-      AT -> symbol "@"-      SHARP -> symbol "#"-      LPAREN -> symbol "("-      RPAREN -> symbol ")"-      LBRACKET -> symbol "["-      RBRACKET -> symbol "]"-      LBRACE  -> symbol "{"-      RBRACE -> symbol "}"-      TILDE -> symbol "~"-      HAT -> symbol "^"-      STAR -> symbol "*"-      UNDERSCORE -> symbol "_"-      MINUS -> symbol "-"-      PLUS -> symbol "+"-      EQUAL -> symbol "="-      LESS -> symbol "<"-      GREATER -> symbol ">"-      EOF -> "end of file"-      FORALL -> symbol   "∀"  -      EXISTS -> symbol   "∃"  -      LAND -> symbol     "∧"  -      LOR -> symbol      "∨"  -      LNOT -> symbol     "¬"  -      APPROX -> symbol   "≈"  -      DUMMY_KEYWORD -> "DUMMY_KEYWORD (this should not occur!)"-    where-      identifier i        = "identifier `" ++ i ++ "'"-      txt (TextBegin t)   = "start of `" ++ t ++ "'"-      txt (TextContent t) = "text `" ++ t ++ "'"-      txt (TextEnd)       = "start of text"-      symbol s            = "symbol `" ++ s ++ "'"-      keyword s           = "keyword `" ++ s ++ "'"---- -------------------------------------------------------------------------------- Alex wrapper code.------ This code is in the PUBLIC DOMAIN; you may copy it freely and use--- it for any purpose whatsoever.---- -------------------------------------------------------------------------------- The input type---type AlexInput = (AlexPosn,     -- current position,-                  Char,         -- previous char-                  String)       -- current input string--alexInputPrevChar :: AlexInput -> Char-alexInputPrevChar (p,c,s) = c--alexGetChar :: AlexInput -> Maybe (Char,AlexInput)-alexGetChar (p,c,[]) = Nothing-alexGetChar (p,_,(c:s))  = let p' = alexMove p c in p' `seq`-                                Just (c, (p', c, s))----- -------------------------------------------------------------------------------- Token positions---- `Posn' records the location of a token in the input text.  It has three--- fields: the address (number of chacaters preceding the token), line number--- and column of a token within the file. `start_pos' gives the position of the--- start of the file and `eof_pos' a standard encoding for the end of file.--- `move_pos' calculates the new position after traversing a given character,--- assuming the usual eight character tab stops.--data AlexPosn = AlexPn !Int !Int !Int-        deriving (Eq)--instance Show AlexPosn where-  show (AlexPn _ l c) = "line "++show l++" column "++show c--alexStartPos :: AlexPosn-alexStartPos = AlexPn 0 1 1--alexMove :: AlexPosn -> Char -> AlexPosn-alexMove (AlexPn a l c) '\t' = AlexPn (a+1)  l     (((c+7) `div` 8)*8+1)-alexMove (AlexPn a l c) '\n' = AlexPn (a+1) (l+1)   1-alexMove (AlexPn a l c) _    = AlexPn (a+1)  l     (c+1)----- -------------------------------------------------------------------------------- Default monad---data AlexState = AlexState {-        alex_pos :: !AlexPosn,  -- position at current input location-        alex_inp :: String,     -- the current input-        alex_chr :: !Char,      -- the character before the input-        alex_scd :: !Int,       -- the current startcode-        alex_ocd :: !Int,       -- the old startcode before the comment started-        alex_cmt :: [String]    -- stack of begin comment identifiers-    }---- Compile with -funbox-strict-fields for best results!--runAlex :: String -> Alex a -> Either String a-runAlex input (Alex f) -   = case f (AlexState {alex_pos = alexStartPos,-                        alex_inp = input,       -                        alex_chr = '\n',-                        alex_scd = 0,-                        alex_ocd = 0,-                        alex_cmt = []-             }) of -       Left msg -> Left msg-       Right ( _, a ) -> Right a--newtype Alex a = Alex { unAlex :: AlexState -> Either String (AlexState, a) }--instance Monad Alex where-  m >>= k  = Alex $ \s -> case unAlex m s of -                                Left msg -> Left msg-                                Right (s',a) -> unAlex (k a) s'-  return a = Alex $ \s -> Right (s,a)--alexGetPos :: Alex AlexPosn-alexGetPos = Alex $ \s@AlexState{alex_pos=pos} -> Right (s, pos)--alexGetInput :: Alex AlexInput-alexGetInput- = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_inp=inp} -> -        Right (s, (pos,c,inp))--alexSetInput :: AlexInput -> Alex ()-alexSetInput (pos,c,inp)- = Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_inp=inp} of-                  s@(AlexState{}) -> Right (s, ())--alexError :: String -> Alex a-alexError message = Alex $ \s -> Left $ message ++ " in " ++ show (alex_pos s)--alexGetStartCode :: Alex Int-alexGetStartCode = Alex $ \s@AlexState{alex_scd=sc} -> Right (s, sc)--alexSetStartCode :: Int -> Alex ()-alexSetStartCode sc = Alex $ \s -> Right (s{alex_scd=sc}, ())--alexGetOldStartCode :: Alex Int-alexGetOldStartCode = Alex $ \s@AlexState{alex_ocd=sc} -> Right (s, sc)--alexSetOldStartCode :: Int -> Alex ()-alexSetOldStartCode sc = Alex $ \s -> Right (s{alex_ocd=sc}, ())--alexGetComments :: Alex [String]-alexGetComments = Alex $ \s -> Right (s, alex_cmt s)--alexSetComments :: [String] -> Alex ()-alexSetComments cmt = Alex $ \s -> Right (s{alex_cmt=cmt}, ())--alexMonadScan = do-  inp <- alexGetInput-  sc <- alexGetStartCode-  case alexScan inp sc of-    AlexEOF -> alexEOF-    AlexError inp' -> alexError "lexical error"-    AlexSkip  inp' len -> do-        alexSetInput inp'-        alexMonadScan-    AlexToken inp' len action -> do-        alexSetInput inp'-        action inp len---- -------------------------------------------------------------------------------- Useful token actions--type AlexAction result = AlexInput -> Int -> Alex result---- just ignore this token and scan another one-skip :: AlexAction Keyword-skip input len = alexMonadScan---- ignore this token, but set the start code to a new value-begin :: Int -> AlexAction Keyword-begin code input len = do alexSetStartCode code; alexMonadScan---- | Begin a text starting of the given type.-beginText :: String -> Int -> AlexAction Keyword-beginText ty code _ _ = do-  alexSetStartCode code-  return $ TEXT $ TextBegin ty---- | End a text.-endText :: Int -> AlexAction Keyword-endText code _ _ = do-  alexSetStartCode code-  return $ TEXT TextEnd---- | Begin a comment starting with the given sign.-beginComment :: String -> Int -> AlexAction Keyword-beginComment cmtBegin code input len = do-  cmts <- alexGetComments-  alexSetComments $ cmtBegin : cmts-  if null cmts-    then alexGetStartCode >>= alexSetOldStartCode-    else return ()-  alexSetStartCode code-  alexMonadScan---- | End a comment that started with the given begin comment sign.-endComment :: String -> AlexAction Keyword-endComment cmtBegin input len = do-  cmts <- alexGetComments-  case cmts of-    [] -> alexError $ "comment ended but no beginning '"++cmtBegin++"' marked."-    (cmt:cmts') -> do-      if cmt == cmtBegin -        then do-          alexSetComments cmts'-          if null cmts' -            then alexGetOldStartCode >>= alexSetStartCode -            else return ()-        else return ()-      alexMonadScan---- perform an action for this token, and set the start code to a new value--- andBegin :: AlexAction result -> Int -> AlexAction result-(action `andBegin` code) input len = do alexSetStartCode code; action input len--alexEOF :: Alex Keyword-alexEOF = return EOF------comment,text :: Int-comment = 1-text = 2-alex_action_2 =  beginComment "(*" comment -alex_action_3 =  beginComment "(*" comment -alex_action_4 =  beginComment "(*" comment -alex_action_5 =  endComment "(*" -alex_action_6 =  beginComment "/*" comment -alex_action_7 =  beginComment "/*" comment -alex_action_8 =  beginComment "/*" comment -alex_action_9 =  endComment "/*" -alex_action_10 =  skip -alex_action_11 =  beginText "text" text -alex_action_12 =  beginText "section" text -alex_action_13 =  beginText "subsection" text -alex_action_14 =  endText 0-alex_action_15 =  scanString (TEXT . TextContent) -alex_action_16 =  keyword FORALL -alex_action_17 =  keyword EXISTS -alex_action_18 =  keyword LAND -alex_action_19 =  keyword LOR -alex_action_20 =  keyword LNOT -alex_action_21 =  keyword APPROX -alex_action_22 =  keyword COMMA -alex_action_23 =  keyword LPAREN -alex_action_24 =  keyword RPAREN -alex_action_25 =  keyword LBRACKET -alex_action_26 =  keyword RBRACKET -alex_action_27 =  keyword LBRACE -alex_action_28 =  keyword RBRACE -alex_action_29 =  keyword SQUOTE -alex_action_30 =  keyword DQUOTE -alex_action_31 =  keyword TILDE -alex_action_32 =  keyword HAT -alex_action_33 =  keyword EQUAL -alex_action_34 =  keyword COLON -alex_action_35 =  keyword DOLLAR -alex_action_36 =  keyword AT -alex_action_37 =  keyword SHARP -alex_action_38 =  keyword STAR -alex_action_39 =  keyword LESS -alex_action_40 =  keyword GREATER -alex_action_41 =  keyword QUESTIONMARK -alex_action_42 =  keyword BANG -alex_action_43 =  keyword AND -alex_action_44 =  keyword MID -alex_action_45 =  keyword DOT -alex_action_46 =  keyword UNDERSCORE -alex_action_47 =  keyword MINUS -alex_action_48 =  keyword PLUS -alex_action_49 =  keyword RIGHTARROW -alex_action_50 =  keyword LEFTARROW -alex_action_51 =  keyword LONGRIGHTARROW -alex_action_52 =  keyword LONGLEFTARROW -alex_action_53 =  scanString IDENT-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "<eingebaut>" #-}-{-# LINE 1 "<Kommandozeile>" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}--- -------------------------------------------------------------------------------- ALEX TEMPLATE------ This code is in the PUBLIC DOMAIN; you may copy it freely and use--- it for any purpose whatsoever.---- -------------------------------------------------------------------------------- INTERNALS and main scanner engine--{-# LINE 35 "templates/GenericTemplate.hs" #-}--{-# LINE 45 "templates/GenericTemplate.hs" #-}---data AlexAddr = AlexA# Addr#--#if __GLASGOW_HASKELL__ < 503-uncheckedShiftL# = shiftL#-#endif--{-# INLINE alexIndexInt16OffAddr #-}-alexIndexInt16OffAddr (AlexA# arr) off =-#ifdef WORDS_BIGENDIAN-  narrow16Int# i-  where-	i    = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)-	high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))-	low  = int2Word# (ord# (indexCharOffAddr# arr off'))-	off' = off *# 2#-#else-  indexInt16OffAddr# arr off-#endif------{-# INLINE alexIndexInt32OffAddr #-}-alexIndexInt32OffAddr (AlexA# arr) off = -#ifdef WORDS_BIGENDIAN-  narrow32Int# i-  where-   i    = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`-		     (b2 `uncheckedShiftL#` 16#) `or#`-		     (b1 `uncheckedShiftL#` 8#) `or#` b0)-   b3   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))-   b2   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))-   b1   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))-   b0   = int2Word# (ord# (indexCharOffAddr# arr off'))-   off' = off *# 4#-#else-  indexInt32OffAddr# arr off-#endif------#if __GLASGOW_HASKELL__ < 503-quickIndex arr i = arr ! i-#else--- GHC >= 503, unsafeAt is available from Data.Array.Base.-quickIndex = unsafeAt-#endif------- -------------------------------------------------------------------------------- Main lexing routines--data AlexReturn a-  = AlexEOF-  | AlexError  !AlexInput-  | AlexSkip   !AlexInput !Int-  | AlexToken  !AlexInput !Int a---- alexScan :: AlexInput -> StartCode -> AlexReturn a-alexScan input (I# (sc))-  = alexScanUser undefined input (I# (sc))--alexScanUser user input (I# (sc))-  = case alex_scan_tkn user input 0# input sc AlexNone of-	(AlexNone, input') ->-		case alexGetChar input of-			Nothing -> ----				   AlexEOF-			Just _ ->----				   AlexError input'--	(AlexLastSkip input len, _) ->----		AlexSkip input len--	(AlexLastAcc k input len, _) ->----		AlexToken input len k----- Push the input through the DFA, remembering the most recent accepting--- state it encountered.--alex_scan_tkn user orig_input len input s last_acc =-  input `seq` -- strict in the input-  let -	new_acc = check_accs (alex_accept `quickIndex` (I# (s)))-  in-  new_acc `seq`-  case alexGetChar input of-     Nothing -> (new_acc, input)-     Just (c, new_input) -> ----	let-		base   = alexIndexInt32OffAddr alex_base s-		!(I# (ord_c)) = ord c-		offset = (base +# ord_c)-		check  = alexIndexInt16OffAddr alex_check offset-		-		new_s = if (offset >=# 0#) && (check ==# ord_c)-			  then alexIndexInt16OffAddr alex_table offset-			  else alexIndexInt16OffAddr alex_deflt s-	in-	case new_s of -	    -1# -> (new_acc, input)-		-- on an error, we want to keep the input *before* the-		-- character that failed, not after.-    	    _ -> alex_scan_tkn user orig_input (len +# 1#) -			new_input new_s new_acc--  where-	check_accs [] = last_acc-	check_accs (AlexAcc a : _) = AlexLastAcc a input (I# (len))-	check_accs (AlexAccSkip : _)  = AlexLastSkip  input (I# (len))-	check_accs (AlexAccPred a pred : rest)-	   | pred user orig_input (I# (len)) input-	   = AlexLastAcc a input (I# (len))-	check_accs (AlexAccSkipPred pred : rest)-	   | pred user orig_input (I# (len)) input-	   = AlexLastSkip input (I# (len))-	check_accs (_ : rest) = check_accs rest--data AlexLastAcc a-  = AlexNone-  | AlexLastAcc a !AlexInput !Int-  | AlexLastSkip  !AlexInput !Int--data AlexAcc a user-  = AlexAcc a-  | AlexAccSkip-  | AlexAccPred a (AlexAccPred user)-  | AlexAccSkipPred (AlexAccPred user)--type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool---- -------------------------------------------------------------------------------- Predicates on a rule--alexAndPred p1 p2 user in1 len in2-  = p1 user in1 len in2 && p2 user in1 len in2----alexPrevCharIsPred :: Char -> AlexAccPred _ -alexPrevCharIs c _ input _ _ = c == alexInputPrevChar input----alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _ -alexPrevCharIsOneOf arr _ input _ _ = arr ! alexInputPrevChar input----alexRightContext :: Int -> AlexAccPred _-alexRightContext (I# (sc)) user _ _ input = -     case alex_scan_tkn user input 0# input sc AlexNone of-	  (AlexNone, _) -> False-	  _ -> True-	-- TODO: there's no need to find the longest-	-- match when checking the right context, just-	-- the first match will do.---- used by wrappers-iUnbox (I# (i)) = i
+ src/Scyther/Theory/Lexer.x view
@@ -0,0 +1,430 @@+{+-- Ignore the slew of warnings from definitions generated by Alex.+-- NOTE: you should disable this line when working on this module to make sure+-- that you don't miss important warnings.+{-# OPTIONS_GHC -fno-warn-missing-signatures -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-matches -fno-warn-name-shadowing #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++module Scyther.Theory.Lexer where++import Control.Applicative+import Control.Monad+import Data.Word (Word8)+import qualified Codec.Binary.UTF8.String as UTF8+}++$digit = [0-9]+$letter = [a-zA-Z]+$others = [\192-\214\216-\246\248-\255]++@integer    = $digit++@identifierFirst = ($letter | $digit | $others)+@identifierAfter = ($letter | $digit | "_" | $others)+@identifier = @identifierFirst @identifierAfter*+@comment     = $printable | $white+@text        = $printable | $white+@lineComment = "//".*++tokens :-+  <0>        $white+            ;++  <0>        @lineComment       ;+  <0>        "(*"               { beginComment "(*" comment }+  <comment>  "(*"               { beginComment "(*" comment }+  <text>     "(*"               { beginComment "(*" comment }+  <comment>  "*)"               { endComment "(*" }+  <0>        "/*"               { beginComment "/*" comment }+  <comment>  "/*"               { beginComment "/*" comment }+  <text>     "/*"               { beginComment "/*" comment }+  <comment>  "*/"               { endComment "/*" }+  <comment>  @comment           { skip }++  <0>        "text{*"           { beginText "text" text }+  <0>        "section{*"        { beginText "section" text }+  <0>        "subsection{*"     { beginText "subsection" text }+  <text>     "*}"               { endText 0}+  <text>     @text              { scanString (TEXT . TextContent) }+++  <0>        "∀"                { keyword FORALL }+  <0>        "∃"                { keyword EXISTS }+  <0>        "∧"                { keyword LAND }+  <0>        "∨"                { keyword LOR }+  <0>        "¬"                { keyword LNOT }+  <0>        "≈"                { keyword APPROX }++  <0>        ","                { keyword COMMA }+  <0>        "("                { keyword LPAREN }+  <0>        ")"                { keyword RPAREN }+  <0>        "["                { keyword LBRACKET }+  <0>        "]"                { keyword RBRACKET }+  <0>        "{"                { keyword LBRACE }+  <0>        "}"                { keyword RBRACE }+  <0>        "/"                { keyword SLASH }+  <0>        "\\"               { keyword BACKSLASH }+  <0>        "'"                { keyword SQUOTE }+  <0>        \"                 { keyword DQUOTE }+  <0>        "~"                { keyword TILDE }+  <0>        "^"                { keyword HAT }+  <0>        "="                { keyword EQUAL }+  <0>        ":"                { keyword COLON }+  <0>        "$"                { keyword DOLLAR }+  <0>        "@"                { keyword AT }+  <0>        "#"                { keyword SHARP }+  <0>        "*"                { keyword STAR }+  <0>        "<"                { keyword LESS }+  <0>        ">"                { keyword GREATER }+  <0>        "?"                { keyword QUESTIONMARK }+  <0>        "!"                { keyword BANG }+  <0>        "&"                { keyword AND }+  <0>        "|"                { keyword MID }+  <0>        "."                { keyword DOT }+  <0>        "_"                { keyword UNDERSCORE }+  <0>        "-"                { keyword MINUS }+  <0>        "+"                { keyword PLUS }+  <0>        "->"               { keyword RIGHTARROW }+  <0>        "<-"               { keyword LEFTARROW }+  <0>        "-->"              { keyword LONGRIGHTARROW }+  <0>        "<--"              { keyword LONGLEFTARROW }+  <0>        @identifier        { scanString IDENT}+++{++-- | Lex a keyword+keyword :: Keyword -> AlexAction Keyword+keyword kw input len = return kw++-- | Wrap a string into a keyword+scanString :: (String -> Keyword) -> AlexAction Keyword+scanString kw (_,_,_,input) len = return $ kw (take len input)++{-+-- | Scan a string until EOF is encountered.+alexScanTokens :: String -> Either String [Keyword]+alexScanTokens inp = runAlex inp gather+  where+  gather = do+    t <- alexMonadScan+    case trace (show t) t of+      EOF -> return [EOF]+      _   -> (t:) `liftM` gather++-- | Scan a file.+scanFile f = do+   inp <- readFile f+   return $ alexScanTokens inp+-}++-- | Formal text types.+data TextType =+       TextBegin String+     | TextContent String+     | TextEnd+     deriving( Eq, Ord, Show )++-- | Lexable Keywords+data Keyword =+    IDENT String+  | TEXT TextType+  | SQUOTE+  | DQUOTE+  | RIGHTARROW+  | LEFTARROW+  | LONGRIGHTARROW+  | LONGLEFTARROW+  | COMMA+  | DOT+  | COLON+  | QUESTIONMARK+  | BANG+  | AND+  | MID+  | DOLLAR+  | AT+  | SHARP+  | LPAREN+  | RPAREN+  | LBRACKET+  | RBRACKET+  | LBRACE+  | RBRACE+  | SLASH+  | BACKSLASH+  | TILDE+  | HAT+  | STAR+  | UNDERSCORE+  | MINUS+  | PLUS+  | EQUAL+  | LESS+  | GREATER+  | EOF+  | FORALL+  | EXISTS+  | LAND+  | LOR+  | LNOT+  | APPROX+  -- dummy keyword to get rid of overlapping pattern matches+  | DUMMY_KEYWORD+  deriving( Eq )++instance Show Keyword where+  show kw = case kw of+      IDENT i -> identifier i+      TEXT t -> txt t+      SQUOTE -> symbol "'"+      DQUOTE -> symbol "\""+      RIGHTARROW -> symbol "->"+      LEFTARROW -> symbol "<-"+      LONGRIGHTARROW -> symbol "-->"+      LONGLEFTARROW -> symbol "<--"+      COMMA -> symbol ","+      DOT -> symbol "."+      COLON -> symbol ":"+      QUESTIONMARK -> symbol "?"+      BANG -> symbol "!"+      AND -> symbol "&"+      MID -> symbol "|"+      DOLLAR -> symbol "$"+      AT -> symbol "@"+      SHARP -> symbol "#"+      LPAREN -> symbol "("+      RPAREN -> symbol ")"+      LBRACKET -> symbol "["+      RBRACKET -> symbol "]"+      LBRACE  -> symbol "{"+      RBRACE -> symbol "}"+      SLASH -> symbol "/"+      BACKSLASH -> symbol "\\"+      TILDE -> symbol "~"+      HAT -> symbol "^"+      STAR -> symbol "*"+      UNDERSCORE -> symbol "_"+      MINUS -> symbol "-"+      PLUS -> symbol "+"+      EQUAL -> symbol "="+      LESS -> symbol "<"+      GREATER -> symbol ">"+      EOF -> "end of file"+      FORALL -> symbol   "∀"+      EXISTS -> symbol   "∃"+      LAND -> symbol     "∧"+      LOR -> symbol      "∨"+      LNOT -> symbol     "¬"+      APPROX -> symbol   "≈"+      DUMMY_KEYWORD -> "DUMMY_KEYWORD (this should not occur!)"+    where+      identifier i        = "identifier `" ++ i ++ "'"+      txt (TextBegin t)   = "start of `" ++ t ++ "'"+      txt (TextContent t) = "text `" ++ t ++ "'"+      txt (TextEnd)       = "start of text"+      symbol s            = "symbol `" ++ s ++ "'"+      keyword s           = "keyword `" ++ s ++ "'"++-- -----------------------------------------------------------------------------+-- Alex wrapper code.+--+-- This code is in the PUBLIC DOMAIN; you may copy it freely and use+-- it for any purpose whatsoever.++-- -----------------------------------------------------------------------------+-- The input type++type AlexInput = (AlexPosn,     -- current position,+                  Char,         -- previous char+                  [Word8],      -- remaining bytes of current char+                  String)       -- current input string++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (p,c,bs,s) = c++alexGetByte :: AlexInput -> Maybe (Word8,AlexInput)+alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s))+alexGetByte (p,c,[],[]) = Nothing+alexGetByte (p,_,[],(c:s))  = let p' = alexMove p c+                                  (b:bs) = UTF8.encodeChar c+                              in p' `seq`  Just (b, (p', c, bs, s))++-- -----------------------------------------------------------------------------+-- Token positions++-- `Posn' records the location of a token in the input text.  It has three+-- fields: the address (number of chacaters preceding the token), line number+-- and column of a token within the file. `start_pos' gives the position of the+-- start of the file and `eof_pos' a standard encoding for the end of file.+-- `move_pos' calculates the new position after traversing a given character,+-- assuming the usual eight character tab stops.++data AlexPosn = AlexPn !Int !Int !Int+        deriving (Eq)++instance Show AlexPosn where+  show (AlexPn _ l c) = "line "++show l++" column "++show c++alexStartPos :: AlexPosn+alexStartPos = AlexPn 0 1 1++alexMove :: AlexPosn -> Char -> AlexPosn+alexMove (AlexPn a l c) '\t' = AlexPn (a+1)  l     (((c+7) `div` 8)*8+1)+alexMove (AlexPn a l c) '\n' = AlexPn (a+1) (l+1)   1+alexMove (AlexPn a l c) _    = AlexPn (a+1)  l     (c+1)+++-- -----------------------------------------------------------------------------+-- Default monad+++data AlexState = AlexState {+        alex_pos :: !AlexPosn,  -- position at current input location+        alex_inp :: String,     -- the current input+        alex_chr :: !Char,      -- the character before the input+        alex_scd :: !Int,       -- the current startcode+        alex_ocd :: !Int,       -- the old startcode before the comment started+        alex_cmt :: [String]    -- stack of begin comment identifiers+    }++-- Compile with -funbox-strict-fields for best results!++runAlex :: String -> Alex a -> Either String a+runAlex input (Alex f)+   = case f (AlexState {alex_pos = alexStartPos,+                        alex_inp = input,+                        alex_chr = '\n',+                        alex_scd = 0,+                        alex_ocd = 0,+                        alex_cmt = []+             }) of+       Left msg -> Left msg+       Right ( _, a ) -> Right a++newtype Alex a = Alex { unAlex :: AlexState -> Either String (AlexState, a) }++instance Functor Alex where+  fmap = liftM++instance Applicative Alex where+  pure  = return+  (<*>) = ap++instance Monad Alex where+  m >>= k  = Alex $ \s -> case unAlex m s of+                                Left msg -> Left msg+                                Right (s',a) -> unAlex (k a) s'+  return a = Alex $ \s -> Right (s,a)++alexGetPos :: Alex AlexPosn+alexGetPos = Alex $ \s@AlexState{alex_pos=pos} -> Right (s, pos)++alexGetInput :: Alex AlexInput+alexGetInput+ = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_inp=inp} ->+        Right (s, (pos,c,[],inp))++alexSetInput :: AlexInput -> Alex ()+alexSetInput (pos,c,_,inp)+ = Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_inp=inp} of+                  s@(AlexState{}) -> Right (s, ())++alexError :: String -> Alex a+alexError message = Alex $ \s -> Left $ message ++ " in " ++ show (alex_pos s)++alexGetStartCode :: Alex Int+alexGetStartCode = Alex $ \s@AlexState{alex_scd=sc} -> Right (s, sc)++alexSetStartCode :: Int -> Alex ()+alexSetStartCode sc = Alex $ \s -> Right (s{alex_scd=sc}, ())++alexGetOldStartCode :: Alex Int+alexGetOldStartCode = Alex $ \s@AlexState{alex_ocd=sc} -> Right (s, sc)++alexSetOldStartCode :: Int -> Alex ()+alexSetOldStartCode sc = Alex $ \s -> Right (s{alex_ocd=sc}, ())++alexGetComments :: Alex [String]+alexGetComments = Alex $ \s -> Right (s, alex_cmt s)++alexSetComments :: [String] -> Alex ()+alexSetComments cmt = Alex $ \s -> Right (s{alex_cmt=cmt}, ())++alexMonadScan = do+  inp <- alexGetInput+  sc <- alexGetStartCode+  case alexScan inp sc of+    AlexEOF -> alexEOF+    AlexError inp' -> alexError "lexical error"+    AlexSkip  inp' len -> do+        alexSetInput inp'+        alexMonadScan+    AlexToken inp' len action -> do+        alexSetInput inp'+        action inp len++-- -----------------------------------------------------------------------------+-- Useful token actions++type AlexAction result = AlexInput -> Int -> Alex result++-- just ignore this token and scan another one+skip :: AlexAction Keyword+skip input len = alexMonadScan++-- ignore this token, but set the start code to a new value+begin :: Int -> AlexAction Keyword+begin code input len = do alexSetStartCode code; alexMonadScan++-- | Begin a text starting of the given type.+beginText :: String -> Int -> AlexAction Keyword+beginText ty code _ _ = do+  alexSetStartCode code+  return $ TEXT $ TextBegin ty++-- | End a text.+endText :: Int -> AlexAction Keyword+endText code _ _ = do+  alexSetStartCode code+  return $ TEXT TextEnd++-- | Begin a comment starting with the given sign.+beginComment :: String -> Int -> AlexAction Keyword+beginComment cmtBegin code input len = do+  cmts <- alexGetComments+  alexSetComments $ cmtBegin : cmts+  if null cmts+    then alexGetStartCode >>= alexSetOldStartCode+    else return ()+  alexSetStartCode code+  alexMonadScan++-- | End a comment that started with the given begin comment sign.+endComment :: String -> AlexAction Keyword+endComment cmtBegin input len = do+  cmts <- alexGetComments+  case cmts of+    [] -> alexError $ "comment ended but no beginning '"++cmtBegin++"' marked."+    (cmt:cmts') -> do+      if cmt == cmtBegin+        then do+          alexSetComments cmts'+          if null cmts'+            then alexGetOldStartCode >>= alexSetStartCode+            else return ()+        else return ()+      alexMonadScan++-- perform an action for this token, and set the start code to a new value+-- andBegin :: AlexAction result -> Int -> AlexAction result+(action `andBegin` code) input len = do alexSetStartCode code; action input len++alexEOF :: Alex Keyword+alexEOF = return EOF++++}+++
− src/Scyther/Theory/Lexer.x_src_only
@@ -1,416 +0,0 @@-{-{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-matches -fno-warn-unused-binds -fno-warn-missing-signatures #-}-module Scyther.Theory.Lexer where---- Note that this file is not compatible with alex-3.0 and therefore we use--- the autogenerated file in the distributed version. Use this file together--- with a 2.x version of alex in case you have to modify the lexer.--}--$digit = [0-9]-$letter = [a-zA-Z]-$others = [\192-\214\216-\246\248-\255]--@integer    = $digit+-@identifierFirst = ($letter | $digit | $others)-@identifierAfter = ($letter | $digit | "_" | $others)-@identifier = @identifierFirst @identifierAfter*-@comment     = $printable | $white-@text        = $printable | $white-@lineComment = "//".*--tokens :--  <0>        $white+            ;--  <0>        @lineComment       ;-  <0>        "(*"               { beginComment "(*" comment }-  <comment>  "(*"               { beginComment "(*" comment }-  <text>     "(*"               { beginComment "(*" comment }-  <comment>  "*)"               { endComment "(*" }          -  <0>        "/*"               { beginComment "/*" comment }-  <comment>  "/*"               { beginComment "/*" comment }-  <text>     "/*"               { beginComment "/*" comment }-  <comment>  "*/"               { endComment "/*" }          -  <comment>  @comment           { skip }--  <0>        "text{*"           { beginText "text" text }-  <0>        "section{*"        { beginText "section" text }-  <0>        "subsection{*"     { beginText "subsection" text }-  <text>     "*}"               { endText 0}          -  <text>     @text              { scanString (TEXT . TextContent) }---  <0>        "∀"                { keyword FORALL }-  <0>        "∃"                { keyword EXISTS }-  <0>        "∧"                { keyword LAND }-  <0>        "∨"                { keyword LOR }-  <0>        "¬"                { keyword LNOT }-  <0>        "≈"                { keyword APPROX }--  <0>        ","                { keyword COMMA }-  <0>        "("                { keyword LPAREN }-  <0>        ")"                { keyword RPAREN }-  <0>        "["                { keyword LBRACKET }-  <0>        "]"                { keyword RBRACKET }-  <0>        "{"                { keyword LBRACE }-  <0>        "}"                { keyword RBRACE }-  <0>        "/"                { keyword SLASH }-  <0>        "\\"               { keyword BACKSLASH }-  <0>        "'"                { keyword SQUOTE }-  <0>        \"                 { keyword DQUOTE }-  <0>        "~"                { keyword TILDE }-  <0>        "^"                { keyword HAT }-  <0>        "="                { keyword EQUAL }-  <0>        ":"                { keyword COLON }-  <0>        "$"                { keyword DOLLAR }-  <0>        "@"                { keyword AT }-  <0>        "#"                { keyword SHARP }-  <0>        "*"                { keyword STAR }-  <0>        "<"                { keyword LESS } -  <0>        ">"                { keyword GREATER } -  <0>        "?"                { keyword QUESTIONMARK } -  <0>        "!"                { keyword BANG } -  <0>        "&"                { keyword AND } -  <0>        "|"                { keyword MID } -  <0>        "."                { keyword DOT } -  <0>        "_"                { keyword UNDERSCORE } -  <0>        "-"                { keyword MINUS } -  <0>        "+"                { keyword PLUS } -  <0>        "->"               { keyword RIGHTARROW } -  <0>        "<-"               { keyword LEFTARROW } -  <0>        "-->"              { keyword LONGRIGHTARROW } -  <0>        "<--"              { keyword LONGLEFTARROW } -  <0>        @identifier        { scanString IDENT}---{---- | Lex a keyword-keyword :: Keyword -> AlexAction Keyword-keyword kw input len = return kw---- | Wrap a string into a keyword-scanString :: (String -> Keyword) -> AlexAction Keyword-scanString kw (_,_,input) len = return $ kw (take len input)--{---- | Scan a string until EOF is encountered.-alexScanTokens :: String -> Either String [Keyword]-alexScanTokens inp = runAlex inp gather-  where-  gather = do-    t <- alexMonadScan-    case trace (show t) t of-      EOF -> return [EOF]-      _   -> (t:) `liftM` gather---- | Scan a file.-scanFile f = do-   inp <- readFile f-   return $ alexScanTokens inp--}---- | Formal text types.-data TextType = -       TextBegin String -     | TextContent String -     | TextEnd-     deriving( Eq, Ord, Show )---- | Lexable Keywords-data Keyword =-    IDENT String-  | TEXT TextType -  | SQUOTE-  | DQUOTE-  | RIGHTARROW-  | LEFTARROW-  | LONGRIGHTARROW-  | LONGLEFTARROW-  | COMMA-  | DOT-  | COLON-  | QUESTIONMARK-  | BANG-  | AND-  | MID-  | DOLLAR-  | AT-  | SHARP-  | LPAREN-  | RPAREN-  | LBRACKET-  | RBRACKET-  | LBRACE -  | RBRACE-  | SLASH-  | BACKSLASH-  | TILDE-  | HAT-  | STAR-  | UNDERSCORE-  | MINUS-  | PLUS-  | EQUAL-  | LESS-  | GREATER-  | EOF-  | FORALL-  | EXISTS-  | LAND-  | LOR-  | LNOT-  | APPROX-  -- dummy keyword to get rid of overlapping pattern matches-  | DUMMY_KEYWORD-  deriving( Eq )--instance Show Keyword where-  show kw = case kw of -      IDENT i -> identifier i-      TEXT t -> txt t-      SQUOTE -> symbol "'"-      DQUOTE -> symbol "\""-      RIGHTARROW -> symbol "->"-      LEFTARROW -> symbol "<-"-      LONGRIGHTARROW -> symbol "-->"-      LONGLEFTARROW -> symbol "<--"-      COMMA -> symbol ","-      DOT -> symbol "."-      COLON -> symbol ":"-      QUESTIONMARK -> symbol "?"-      BANG -> symbol "!"-      AND -> symbol "&"-      MID -> symbol "|"-      DOLLAR -> symbol "$"-      AT -> symbol "@"-      SHARP -> symbol "#"-      LPAREN -> symbol "("-      RPAREN -> symbol ")"-      LBRACKET -> symbol "["-      RBRACKET -> symbol "]"-      LBRACE  -> symbol "{"-      RBRACE -> symbol "}"-      SLASH -> symbol "/"-      BACKSLASH -> symbol "\\"-      TILDE -> symbol "~"-      HAT -> symbol "^"-      STAR -> symbol "*"-      UNDERSCORE -> symbol "_"-      MINUS -> symbol "-"-      PLUS -> symbol "+"-      EQUAL -> symbol "="-      LESS -> symbol "<"-      GREATER -> symbol ">"-      EOF -> "end of file"-      FORALL -> symbol   "∀"  -      EXISTS -> symbol   "∃"  -      LAND -> symbol     "∧"  -      LOR -> symbol      "∨"  -      LNOT -> symbol     "¬"  -      APPROX -> symbol   "≈"  -      DUMMY_KEYWORD -> "DUMMY_KEYWORD (this should not occur!)"-    where-      identifier i        = "identifier `" ++ i ++ "'"-      txt (TextBegin t)   = "start of `" ++ t ++ "'"-      txt (TextContent t) = "text `" ++ t ++ "'"-      txt (TextEnd)       = "start of text"-      symbol s            = "symbol `" ++ s ++ "'"-      keyword s           = "keyword `" ++ s ++ "'"---- -------------------------------------------------------------------------------- Alex wrapper code.------ This code is in the PUBLIC DOMAIN; you may copy it freely and use--- it for any purpose whatsoever.---- -------------------------------------------------------------------------------- The input type---type AlexInput = (AlexPosn,     -- current position,-                  Char,         -- previous char-                  String)       -- current input string--alexInputPrevChar :: AlexInput -> Char-alexInputPrevChar (p,c,s) = c--alexGetChar :: AlexInput -> Maybe (Char,AlexInput)-alexGetChar (p,c,[]) = Nothing-alexGetChar (p,_,(c:s))  = let p' = alexMove p c in p' `seq`-                                Just (c, (p', c, s))----- -------------------------------------------------------------------------------- Token positions---- `Posn' records the location of a token in the input text.  It has three--- fields: the address (number of chacaters preceding the token), line number--- and column of a token within the file. `start_pos' gives the position of the--- start of the file and `eof_pos' a standard encoding for the end of file.--- `move_pos' calculates the new position after traversing a given character,--- assuming the usual eight character tab stops.--data AlexPosn = AlexPn !Int !Int !Int-        deriving (Eq)--instance Show AlexPosn where-  show (AlexPn _ l c) = "line "++show l++" column "++show c--alexStartPos :: AlexPosn-alexStartPos = AlexPn 0 1 1--alexMove :: AlexPosn -> Char -> AlexPosn-alexMove (AlexPn a l c) '\t' = AlexPn (a+1)  l     (((c+7) `div` 8)*8+1)-alexMove (AlexPn a l c) '\n' = AlexPn (a+1) (l+1)   1-alexMove (AlexPn a l c) _    = AlexPn (a+1)  l     (c+1)----- -------------------------------------------------------------------------------- Default monad---data AlexState = AlexState {-        alex_pos :: !AlexPosn,  -- position at current input location-        alex_inp :: String,     -- the current input-        alex_chr :: !Char,      -- the character before the input-        alex_scd :: !Int,       -- the current startcode-        alex_ocd :: !Int,       -- the old startcode before the comment started-        alex_cmt :: [String]    -- stack of begin comment identifiers-    }---- Compile with -funbox-strict-fields for best results!--runAlex :: String -> Alex a -> Either String a-runAlex input (Alex f) -   = case f (AlexState {alex_pos = alexStartPos,-                        alex_inp = input,       -                        alex_chr = '\n',-                        alex_scd = 0,-                        alex_ocd = 0,-                        alex_cmt = []-             }) of -       Left msg -> Left msg-       Right ( _, a ) -> Right a--newtype Alex a = Alex { unAlex :: AlexState -> Either String (AlexState, a) }--instance Monad Alex where-  m >>= k  = Alex $ \s -> case unAlex m s of -                                Left msg -> Left msg-                                Right (s',a) -> unAlex (k a) s'-  return a = Alex $ \s -> Right (s,a)--alexGetPos :: Alex AlexPosn-alexGetPos = Alex $ \s@AlexState{alex_pos=pos} -> Right (s, pos)--alexGetInput :: Alex AlexInput-alexGetInput- = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_inp=inp} -> -        Right (s, (pos,c,inp))--alexSetInput :: AlexInput -> Alex ()-alexSetInput (pos,c,inp)- = Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_inp=inp} of-                  s@(AlexState{}) -> Right (s, ())--alexError :: String -> Alex a-alexError message = Alex $ \s -> Left $ message ++ " in " ++ show (alex_pos s)--alexGetStartCode :: Alex Int-alexGetStartCode = Alex $ \s@AlexState{alex_scd=sc} -> Right (s, sc)--alexSetStartCode :: Int -> Alex ()-alexSetStartCode sc = Alex $ \s -> Right (s{alex_scd=sc}, ())--alexGetOldStartCode :: Alex Int-alexGetOldStartCode = Alex $ \s@AlexState{alex_ocd=sc} -> Right (s, sc)--alexSetOldStartCode :: Int -> Alex ()-alexSetOldStartCode sc = Alex $ \s -> Right (s{alex_ocd=sc}, ())--alexGetComments :: Alex [String]-alexGetComments = Alex $ \s -> Right (s, alex_cmt s)--alexSetComments :: [String] -> Alex ()-alexSetComments cmt = Alex $ \s -> Right (s{alex_cmt=cmt}, ())--alexMonadScan = do-  inp <- alexGetInput-  sc <- alexGetStartCode-  case alexScan inp sc of-    AlexEOF -> alexEOF-    AlexError inp' -> alexError "lexical error"-    AlexSkip  inp' len -> do-        alexSetInput inp'-        alexMonadScan-    AlexToken inp' len action -> do-        alexSetInput inp'-        action inp len---- -------------------------------------------------------------------------------- Useful token actions--type AlexAction result = AlexInput -> Int -> Alex result---- just ignore this token and scan another one-skip :: AlexAction Keyword-skip input len = alexMonadScan---- ignore this token, but set the start code to a new value-begin :: Int -> AlexAction Keyword-begin code input len = do alexSetStartCode code; alexMonadScan---- | Begin a text starting of the given type.-beginText :: String -> Int -> AlexAction Keyword-beginText ty code _ _ = do-  alexSetStartCode code-  return $ TEXT $ TextBegin ty---- | End a text.-endText :: Int -> AlexAction Keyword-endText code _ _ = do-  alexSetStartCode code-  return $ TEXT TextEnd---- | Begin a comment starting with the given sign.-beginComment :: String -> Int -> AlexAction Keyword-beginComment cmtBegin code input len = do-  cmts <- alexGetComments-  alexSetComments $ cmtBegin : cmts-  if null cmts-    then alexGetStartCode >>= alexSetOldStartCode-    else return ()-  alexSetStartCode code-  alexMonadScan---- | End a comment that started with the given begin comment sign.-endComment :: String -> AlexAction Keyword-endComment cmtBegin input len = do-  cmts <- alexGetComments-  case cmts of-    [] -> alexError $ "comment ended but no beginning '"++cmtBegin++"' marked."-    (cmt:cmts') -> do-      if cmt == cmtBegin -        then do-          alexSetComments cmts'-          if null cmts' -            then alexGetOldStartCode >>= alexSetStartCode -            else return ()-        else return ()-      alexMonadScan---- perform an action for this token, and set the start code to a new value--- andBegin :: AlexAction result -> Int -> AlexAction result-(action `andBegin` code) input len = do alexSetStartCode code; action input len--alexEOF :: Alex Keyword-alexEOF = return EOF----}---
src/Scyther/Theory/Parser.hs view
@@ -55,12 +55,13 @@  import Data.Char import Data.List+import Data.Either import qualified Data.Set as S import qualified Data.Map as M import Data.DAG.Simple import Data.Foldable (asum) -import Control.Arrow ( (***) )+import Control.Arrow ( (***), first ) import Control.Monad hiding (sequence)  import Control.Applicative hiding (empty, many, optional)@@ -70,7 +71,7 @@ import           Text.Parsec.Pos  import qualified Scyther.Equalities as E-import Scyther.Facts as F hiding (protocol)+import Scyther.Facts as F hiding (variable, protocol) import Scyther.Sequent import Scyther.Proof import Scyther.Theory@@ -282,7 +283,8 @@ -- TODO: Remove this ugly string hack. pattern :: Parser s Pattern pattern = asum-    [              string "1" *> pure mkMultIdentityPat+    [ string "1"    *> pure mkMultIdentityPat+    , kw UNDERSCORE *> pure PAny     , PConst   <$> singleQuoted ident     , PMVar    <$> (kw QUESTIONMARK *> ident)     , PAVar    <$> (kw DOLLAR *> ident)@@ -299,13 +301,16 @@     , PSign    <$> genFunApp (kw LBRACE) (kw RBRACE) (string "sign") tuplepattern <*> pattern     , PMVar    <$> tempIdentifier     ]-  where-    tempIdentifier = do i <- identifier-                        if isLetter (head i)-                          then return (Id (' ':i))-                          else fail $ "invalid variable name '" ++ i ++-                                      "': variable names must start with a letter" +-- | Parse a specification variable. Untyped identifiers are handled as in+-- 'pattern'.+specVariable :: Parser s VarId+specVariable = asum+    [ SMVar <$> (kw QUESTIONMARK *> ident)+    , SAVar <$> (kw DOLLAR *> ident)+    , SMVar <$> tempIdentifier+    ]+ -- | Parse multiple ^ applications as a left-associative list of exponentations -- hackily marked using hashes and constant identifiers. exppattern :: Parser s Pattern@@ -321,6 +326,15 @@ tuplepattern :: Parser s Pattern tuplepattern = chainr1 multpattern (PTup <$ kw COMMA) +-- | Parse a local identifier which is yet unresolved. The identifier is+-- prefixed by a space to mark it for later resolution.+tempIdentifier :: Parser s Id+tempIdentifier = do i <- identifier+                    if isLetter (head i)+                      then return (Id (' ':i))+                      else fail $ "invalid variable name '" ++ i +++                                  "': variable names must start with a letter"+ -- | Drops the space prefix used for identifying identifiers that need to be -- resolved later. dropSpacePrefix :: Id -> Id@@ -338,23 +352,11 @@  -- | Resolve all identifiers in the pattern. resolveIds :: S.Set Id -> S.Set Id -> Pattern -> Pattern-resolveIds avars mvars = go+resolveIds avars mvars = patMapFMV resolve   where-  resolve = resolveId avars mvars-  go pt@(PConst _)   = pt-  go pt@(PFresh _)   = pt-  go pt@(PAVar _)    = pt-  go pt@(PMVar i)    = case getId i of-                         ' ':i' -> resolve (Id i') -- marked for resolution-                         _      -> pt-  go (PHash pt)      = PHash   (go pt)-  go (PTup pt1 pt2)  = PTup    (go pt1) (go pt2)-  go (PEnc pt1 pt2)  = PEnc    (go pt1) (go pt2)-  go (PSign pt1 pt2) = PSign   (go pt1) (go pt2)-  go (PSymK pt1 pt2) = PSymK   (go pt1) (go pt2)-  go (PShrK pt1 pt2) = PShrK   (go pt1) (go pt2)-  go (PAsymPK pt)    = PAsymPK (go pt)-  go (PAsymSK pt)    = PAsymSK (go pt)+    resolve i = case getId i of+        ' ':i' -> resolveId avars mvars (Id i')+        _      -> PMVar i  -- | Resolve identifiers as identifiers of the given role. -- PRE: The role must use disjoint identifiers for fresh messages, agent@@ -362,7 +364,21 @@ resolveIdsLocalToRole :: Role -> Pattern -> Pattern resolveIdsLocalToRole role = resolveIds (roleFAV role) (roleFMV role) +-- | Resolve the type of a specification variable according to the set of+-- agent and message variables.+--+-- TODO: Better error handling.+resolveVarId :: S.Set Id -> S.Set Id -> VarId -> VarId+resolveVarId avars mvars (SMVar i) = case getId i of+  ' ':i'+    | Id i' `S.member` avars -> SAVar (Id i')+    | Id i' `S.member` mvars -> SMVar (Id i')+    | otherwise              -> error $ "resolveVarId: '" ++ i' +++                                  "' resolves to neither agent nor message variable"+  _                          -> SMVar i+resolveVarId _     _     v    = v + -- Messages ----------- @@ -463,59 +479,73 @@  -} --- | Parse a single transfer.-transfer :: Parser s [(Id, RoleStep)]-transfer = do+-- | Parse a single transfer with the given label.+transfer :: Label -> Parser s [(Id, RoleStep)]+transfer lbl =+  do right <- kw RIGHTARROW *> ident <* kw COLON+     pt <- tuplepattern+     return [(right, Recv lbl pt)]+  <|>+  do right <- kw LEFTARROW *> ident <* kw COLON+     ptr <- tuplepattern+     (do left <- try $ ident <* kw LEFTARROW <* kw COLON+         ptl <- tuplepattern+         return [(left, Recv lbl ptl),(right, Send lbl ptr)]+      <|>+      return [(right, Send lbl ptr)]+      )+  <|>+  do left <- ident+     (do kw RIGHTARROW+         (do right <- ident <* kw COLON+             pt <- tuplepattern+             return [(left,Send lbl pt), (right, Recv lbl pt)]+          <|>+          do ptl <- kw COLON *> tuplepattern+             (do right <- kw RIGHTARROW *> ident <* kw COLON+                 ptr <- tuplepattern+                 return [(left,Send lbl ptl), (right, Recv lbl ptr)]+              <|>+              do return [(left, Send lbl ptl)]+              )+          )+      <|>+      do kw LEFTARROW+         (do pt <- kw COLON *> tuplepattern+             return [(left, Recv lbl pt)]+          <|>+          do right <- ident <* kw COLON+             pt <- tuplepattern+             return [(left, Recv lbl pt), (right, Send lbl pt)]+          )+      )++-- | Try to parse a local computation with the given label.+compute :: Label -> Parser s [(Id, RoleStep)]+compute lbl = do+  actor <- try $ ident <* kw COLON+  v <- specVariable+  eq <- (kw RIGHTARROW *> pure True) <|> (kw SHARP *> pure False)+  ptr <- tuplepattern+  return [(actor, Match lbl eq v ptr)]++-- | Parse a labeled part of a protocol specification, i.e., either a transfer+-- or a computation.+labeledSteps :: Parser s [(Id, RoleStep)]+labeledSteps = do   lbl <- Label <$> identifier <* kw DOT-  (do right <- kw RIGHTARROW *> ident <* kw COLON-      pt <- tuplepattern-      return [(right, Recv lbl pt)]-   <|>-   do right <- kw LEFTARROW *> ident <* kw COLON-      ptr <- tuplepattern-      (do left <- try $ ident <* kw LEFTARROW <* kw COLON-          ptl <- tuplepattern-          return [(left, Recv lbl ptl),(right, Send lbl ptr)]-       <|>-       return [(right, Send lbl ptr)]-       )-   <|>-   do left <- ident-      (do kw RIGHTARROW-          (do right <- ident <* kw COLON-              pt <- tuplepattern-              return [(left,Send lbl pt), (right, Recv lbl pt)]-           <|>-           do ptl <- kw COLON *> tuplepattern-              (do right <- kw RIGHTARROW *> ident <* kw COLON-                  ptr <- tuplepattern-                  return [(left,Send lbl ptl), (right, Recv lbl ptr)]-               <|>-               do return [(left, Send lbl ptl)]-               )-           )-       <|>-       do kw LEFTARROW-          (do pt <- kw COLON *> tuplepattern-              return [(left, Recv lbl pt)]-           <|>-           do right <- ident <* kw COLON-              pt <- tuplepattern-              return [(left, Recv lbl pt), (right, Send lbl pt)]-           )-       )-   )+  compute lbl <|> transfer lbl  -- | Parse a protocol. protocol :: Parser s Protocol protocol = do   name <- string "protocol" *> identifier-  transfers <- concat <$> braced (many1 transfer)-  -- convert parsed transfers into role scripts-  let roleIds = S.fromList $ map fst transfers+  allSteps <- concat <$> braced (many1 labeledSteps)+  -- convert parsed steps into role scripts+  let roleIds = S.fromList $ map fst allSteps       roles = do         actor <- S.toList roleIds-        let steps = [ step | (i, step) <- transfers, i == actor ]+        let steps = [ step | (i, step) <- allSteps, i == actor ]         return $ Role (getId actor)                       (ensureFreshSteps actor (S.map addSpacePrefix roleIds) steps)   return $ Protocol name roles@@ -526,18 +556,25 @@   ensureFreshSteps actor possibleAvars =       go (S.singleton (addSpacePrefix actor)) S.empty S.empty     where+      -- TODO: Make sure that this does what one expects.       go _ _ _ [] = []-      go avars mvars fresh (Send l pt : rs) =-        let avars' = avars `S.union` (((patFMV pt `S.intersection` possibleAvars)-                                       `S.difference` mvars) `S.difference` fresh)-            fresh' = fresh `S.union` ((patFMV pt `S.difference` avars') `S.difference` mvars)-            pt' = resolveIds (dropSpacePrefixes avars') (dropSpacePrefixes mvars) pt-        in Send l pt' : go avars' mvars fresh' rs-      go avars mvars fresh (Recv l pt : rs) =-        let mvars' = mvars `S.union` ((patFMV pt `S.difference` avars) `S.difference` fresh)-            pt' = resolveIds (dropSpacePrefixes avars) (dropSpacePrefixes mvars') pt-        in  Recv l pt' : go avars mvars' fresh rs+      go avars mvars fresh (step : rs) = step' : go avars' mvars' fresh' rs+        where+          avars' = avars `S.union` (((stepUsedMV step `S.intersection` possibleAvars)+                                     `S.difference` mvars) `S.difference` fresh)+          mvars' = mvars `S.union` ((stepBoundMV step `S.difference` avars')+                                    `S.difference` fresh)+          fresh' = fresh `S.union` ((stepUsedMV step `S.difference` avars')+                                    `S.difference` mvars')+          pt' = resolveIds (dropSpacePrefixes avars') (dropSpacePrefixes mvars')+                (stepPat step)+          step' = case step of+              Send l _       -> Send l pt'+              Recv l _       -> Recv l pt'+              Match l eq v _ -> Match l eq (resolveVarId (dropSpacePrefixes avars')+                                                         (dropSpacePrefixes mvars') v) pt' + ------------------------------------------------------------------------------ -- Parse Claims ------------------------------------------------------------------------------@@ -588,10 +625,9 @@           n@(PFresh i) <- S.toList $ subpatterns pt           guard (not (plainUse pt n) && firstUse n)           return $ secrecySe (MFresh . Fresh) i-        Recv _ pt -> do-          v@(PMVar i) <- S.toList $ subpatterns pt-          guard (not (plainUse pt v) && firstUse v)-          return $ secrecySe (MMVar . MVar) i+        Recv _ pt         -> varSequents pt+        Match _ True _ pt -> varSequents pt+        Match _ False _ _ -> mzero       where         (tid, prem0) = freshTID (empty proto)         (prefix, _) = break (step ==) $ roleSteps role@@ -599,6 +635,10 @@         plainUse pt = (`S.member` splitpatterns pt)         avars = [ MAVar (AVar (LocalId (v,tid)))                 | (PAVar v) <- S.toList . S.unions . map (subpatterns.stepPat) $ roleSteps role ]+        varSequents pt = do+          v@(PMVar i) <- S.toList $ subpatterns pt+          guard (not (plainUse pt v) && firstUse v)+          return $ secrecySe (MMVar . MVar) i         secrecySe constr i =           ( (++("_"++roleName role++"_sec_"++getId i))           , Sequent prem (FAtom (ABool False)) Standard@@ -628,7 +668,8 @@       where         steps = roleSteps role         (tid, prem0) = freshTID (empty proto)-        mkStepSequents (_,            Recv _ _  ) = []+        mkStepSequents (_, Recv _ _)              = []+        mkStepSequents (_, Match _ _ _ _)         = []         mkStepSequents (prefix, step@(Send _ pt)) = do           n@(PFresh i) <- S.toList $ splitpatterns pt           guard (n `S.notMember` S.unions (map (subpatterns.stepPat) prefix))@@ -858,17 +899,30 @@ falseConcl :: Parser s Formula falseConcl = doubleQuoted (string "False" *> pure (FAtom (ABool False))) +-- | Parse a conclusion formula consisting of raw facts.+--+-- TODO: Handling of role equalities is incomplete.+factsFormula :: Protocol -> E.Mapping -> Parser s Formula+factsFormula proto mapping = doubleQuoted formula+  where+    formula = foldr1 FDisj `liftM` sepBy1 term (kw MID)+    term = do+      conjuncts <- sepBy1 factOrFormula (kw AND)+      let (facts, subformulas) = first concat $ partitionEithers conjuncts+      roleeqs <- extractRoleEqs proto facts+      let mapping' = foldr (uncurry E.addTIDRoleMapping) mapping roleeqs+      atoms <- (map (AEq . E.TIDRoleEq) roleeqs ++) `liftM`+               sequence [ mkAtom mapping' | RawAtom mkAtom <- facts ]+      return $ foldr1 FConj (map FAtom atoms ++ subformulas)+    factOrFormula = (Left <$> try rawFacts) <|> (Right <$> parens formula)+ -- | Parse a conclusion stating existence of some threads of a specific -- structure. existenceConcl :: Protocol -> E.Mapping -> Parser s Formula existenceConcl proto mapping = do   tids <- map (Left . TID) <$> (threads <|> pure [])-  facts <- concat <$> doubleQuoted (sepBy1 rawFacts (kw AND))-  roleeqs <- extractRoleEqs proto facts-  let mapping' = foldr (uncurry E.addTIDRoleMapping) mapping roleeqs-  atoms <- (map (AEq . E.TIDRoleEq) roleeqs ++) `liftM`-           sequence [ mkAtom mapping' | RawAtom mkAtom <- facts ]-  return $ foldr FExists (foldr1 FConj . map FAtom $ atoms) tids+  inner <- factsFormula proto mapping+  return $ foldr FExists inner tids   where   singleThread = pure <$> (strings ["a", "thread"] *> integer)   multiThreads = strings ["threads"] *> sepBy1 integer (kw COMMA)@@ -892,9 +946,10 @@   prems0 <- foldM (flip quantifyTID) (F.empty proto) quantifiers   optPrems <- conjoinAtoms atoms prems0   prems <- maybe (fail "contradictory premises") return optPrems+  qualifier <- option Standard (string "injectively" *> pure Injective)   string "imply"   concl <- conclusion proto mapping-  return $ Sequent prems concl Standard+  return $ Sequent prems concl qualifier  {- -- | Construct the premise modifier. The given set of role equalities is used
src/Scyther/Theory/Pretty.hs view
@@ -303,7 +303,7 @@ prettySoundness thy = case unsoundTheorems thy of     []  -> emptyDoc     ths -> vcat $-      map text ["", "(* NOTE that the proofs of the following theorems are UNSOUND:", ""] +++      map text ["", "(* NOTE that the proofs of the following theorems are INVALID:", ""] ++       map ppThm ths ++       map text ["*)"]   where@@ -342,8 +342,8 @@ -- | Convert a triviality reason to a string representing the corresponding -- Isabelle tactic. isaTactic :: TrivReason -> String-isaTactic TrivContradictoryPremises   = "((clarsimp, order?) | order)"-isaTactic (TrivLongTermKeySecrecy _)  = "(fastforce dest!: ltk_secrecy)"+isaTactic TrivContradictoryPremises   = "((clarsimp, order?) | order | fast)"+isaTactic (TrivLongTermKeySecrecy _)  = "(auto dest!: ltk_secrecy)" isaTactic TrivPremisesImplyConclusion = "(fastforce intro: event_predOrdI split: if_splits)"  -- | Isabelle proof of long-term key secrecy.@@ -491,9 +491,9 @@       | any (`isPrefixOf` name) ["ik0", "fake"] || null newVars = text name       | otherwise = parens $ text name <-> hsep (map ppNewVar newVars)   prettyChainRuleQED _ trivCases-    | null tactics = kwQED <-> text "(insert facts, fastforce+)?" -- be conservative+    | null tactics = kwQED <-> text "(safe?, simp_all?, insert facts, (fastforce+)?)" -- be conservative     | otherwise    =-        kwQED <-> text "(insert facts, (" <> hsep (intersperse (text "|") tactics) <> text ")+)?"+        kwQED <-> text "(safe?, simp_all?, insert facts, ((" <> hsep (intersperse (text "|") tactics) <> text ")+)?)"     where       tactics = map text . nub . map isaTactic . snd $ genericChainRuleSplitCases snd trivCases @@ -519,10 +519,11 @@       monoTyp         = typName ++ ".monoTyp"    prettyTypingCase typName name =-      kwCase <-> text ("("++ name ++" t r s") <-> prettyTID 0 <> text") note facts = this" $-$+      kwCase <-> text ("("++ name ++" t r s") <-> prettyTID 0 <> text")" $-$           text ("then interpret state: "++ typingLocale typName ++" t r s") $-$           nest 2 (text "by unfold_locales auto") $-$-          text "show ?case using facts"+          text ("note_prefix_closed (state) facts = " ++ name) $-$+          text "thus ?case"    -- equality splitting   prettySplitEqCase name =
src/Scyther/Typing.hs view
@@ -66,7 +66,12 @@ normType (AsymSKT ty)              = AsymSKT ty normType ty                        = ty +-- | Split all sums in a type term and return the basic types.+splitSums :: Type -> [Type]+splitSums (SumT ty1 ty2) = splitSums ty1 `mplus` splitSums ty2+splitSums ty             = pure ty + ------------------------------------------------------------------------------ -- Type annotations on messages ------------------------------------------------------------------------------@@ -107,55 +112,96 @@     rolemap = M.fromList $ zip (protoRoles proto) [1..]     steps = map (second (rolemap M.!)) . toposort $ protoOrd proto -    typeStep eqs (Send _ _, _) = do-        return eqs-    typeStep eqs (recv@(Recv lR ptR), tidR) =+    typeStep eqs (Send _ _, _) = return eqs+    typeStep eqs step@(Match _ True v pt, tidM) = do+        eqs' <- lift $ E.solve [E.MsgEq (instVar tidM v, inst tidM pt)] eqs+        lty <- variable (const . return $ AgentT) (lookupType step) v+        typeMatchVars step lty (E.getMVarEqs eqs')+        return eqs'+    typeStep eqs (Match _ _ _ _, _) = return eqs+    typeStep eqs step@(Recv lR ptR, tidR) =         case [ send | send@(Send lS _, _) <- steps, lS == lR ] of           []                   -> do               -- no matching send: assume intruder knows all message variables               -- in the received pattern that are not yet mapped.               sequence_ $ do PMVar v <- S.toList $ subpatterns ptR-                             return (knownAtRecv v)+                             return (knownAtRecv step v)               return eqs           ((Send _ ptS, tidS):_) -> do               eqs' <- lift $ E.solve [E.MsgEq (inst tidR ptR, inst tidS ptS)] eqs-              mapM_ typeMVar (E.getMVarEqs eqs')+              mapM_ (typeMVar step) (E.getMVarEqs eqs')               -- variables not mapped yet are mapped to they known type.               sequence_ $ do PMVar v <- S.toList $ subpatterns ptR-                             return (knownAtRecv v)+                             return (knownAtRecv step v)               return eqs'           _ -> error "mscTyping: the impossible happened"++    lookupType (_step, tid) v = gets (M.! (v, roleeqs M.! tid))++    keepExisting _new old = old++    typeMVar (step, tid) (MVar (LocalId (v, vTid)), m)+      | vTid == tid && PMVar v `S.member` splitpatterns (stepPat step) =+          noteType (KnownT step)+      | otherwise =+          noteType $ maybe (KnownT step) (SumT (KnownT step)) (typeMsg m)       where-        typeMVar (MVar (LocalId (v, vTid)), m) -          | vTid == tidR && PMVar v `S.member` splitpatterns ptR =-              noteType (KnownT recv)-          | otherwise = -              noteType $ maybe (KnownT recv) (SumT (KnownT recv)) (typeMsg m)-          where-            noteType = modify . M.insertWith keepSimpler (v, roleeqs M.! vTid)-            -- prefer non-sum-types and then the existing one-            keepSimpler _  x@(KnownT _) = x-            keepSimpler x@(KnownT _) _  = x-            keepSimpler _            x  = x+        noteType = modify . M.insertWith keepSimpler (v, roleeqs M.! vTid)+        -- prefer non-sum-types and then the existing one+        keepSimpler _  x@(KnownT _) = x+        keepSimpler x@(KnownT _) _  = x+        keepSimpler _            x  = x -        knownAtRecv v = -            modify (M.insertWith keepExisting (v, roleeqs M.! tidR) (KnownT recv))-          where-            keepExisting _new old = old- -        typeMsg (MFresh (Fresh fr)) = pure $ NonceT (roleeqs M.! lidTID fr) (lidId fr)-        typeMsg (MConst c)    = pure $ ConstT c-        typeMsg (MAVar _)     = pure $ AgentT-        typeMsg (MMVar _)     = Nothing-        typeMsg (MHash m)     = HashT   <$> typeMsg m-        typeMsg (MTup m1 m2)  = TupT    <$> typeMsg m1 <*> typeMsg m2-        typeMsg (MEnc m1 m2)  = EncT    <$> typeMsg m1 <*> typeMsg m2-        typeMsg (MSymK m1 m2) = SymKT   <$> typeMsg m1 <*> typeMsg m2-        typeMsg (MAsymPK m)   = AsymPKT <$> typeMsg m-        typeMsg (MAsymSK m)   = AsymSKT <$> typeMsg m-        typeMsg (MArbMsg _)    = error $ "mscTyping: agent variable encountered"-        typeMsg (MInvKey _)   = error $ "mscTyping: key inversion encountered"-        typeMsg (MShrK _ _)   = error $ "mscTyping: bi-directional shared key encountered"+    knownAtRecv (step, tid) v =+        modify (M.insertWith keepExisting (v, roleeqs M.! tid) (KnownT step))++    -- Infer types of variables on RHS of a matching step. We use both the type+    -- of the LHS variable and the types implied by the message equalities.+    typeMatchVars (step, tid) lty meqs = mapM_ noteType vars+      where+        vars = [v | PMVar v <- S.toList $ subpatterns $ stepPat step]+        noteType v = modify $ M.insertWith keepExisting (v, roleeqs M.! tid) (inferType v)+        inferType v = case known ++ structuralTypesOf v of+                          []  -> error $ "mscTyping: Cannot infer type. Impossible match?"+                          tys -> foldr1 SumT tys+        structuralTypesOf v = S.toList $ M.findWithDefault S.empty v structuralTypes+        -- Due to deficiencies of the well-typedness proof strategy, use the+        -- current match step in KnownT types.+        known = case [ty | ty@(KnownT _) <- splitSums lty] of+                    [] -> []+                    _  -> [KnownT step]++        structuralTypes = transfer lty (stepPat step) eqTypes+        eqTypes = foldr eqType1 M.empty meqs+        eqType1 (MVar (LocalId (v, vTid)), msg)+          | vTid == tid = maybe id (M.insert v . S.singleton) (typeMsg msg)+          | otherwise   = id++        transfer (SumT ty1 ty2)  pt            = transfer ty1 pt . transfer ty2 pt+        transfer (KnownT _)      _             = id+        transfer ty              (PMVar v)     = M.insertWith S.union v (S.singleton ty)+        transfer (HashT ty)      (PHash pt)    = transfer ty pt+        transfer (EncT ty1 ty2)  (PEnc p1 p2)  = transfer ty1 p1 . transfer ty2 p2+        transfer (TupT ty1 ty2)  (PTup p1 p2)  = transfer ty1 p1 . transfer ty2 p2+        transfer (SymKT ty1 ty2) (PSymK p1 p2) = transfer ty1 p1 . transfer ty2 p2+        transfer (AsymPKT ty)    (PAsymPK pt)  = transfer ty pt+        transfer (AsymSKT ty)    (PAsymSK pt)  = transfer ty pt+        transfer _               _             = id+++    typeMsg (MFresh (Fresh fr)) = pure $ NonceT (roleeqs M.! lidTID fr) (lidId fr)+    typeMsg (MConst c)    = pure $ ConstT c+    typeMsg (MAVar _)     = pure $ AgentT+    typeMsg (MMVar _)     = Nothing+    typeMsg (MHash m)     = HashT   <$> typeMsg m+    typeMsg (MTup m1 m2)  = TupT    <$> typeMsg m1 <*> typeMsg m2+    typeMsg (MEnc m1 m2)  = EncT    <$> typeMsg m1 <*> typeMsg m2+    typeMsg (MSymK m1 m2) = SymKT   <$> typeMsg m1 <*> typeMsg m2+    typeMsg (MAsymPK m)   = AsymPKT <$> typeMsg m+    typeMsg (MAsymSK m)   = AsymSKT <$> typeMsg m+    typeMsg (MArbMsg _)    = error $ "mscTyping: logical variable encountered"+    typeMsg (MInvKey _)   = error $ "mscTyping: key inversion encountered"+    typeMsg (MShrK _ _)   = error $ "mscTyping: bi-directional shared key encountered"   ------------------------------------------------------------------------------
src/System/Isabelle.hs view
@@ -2,7 +2,7 @@ -- -- Requirements: -----   1. A working installation of Isabelle2013-2 (http://isabelle.in.tum.de/)+--   1. A working installation of Isabelle2014 (http://isabelle.in.tum.de/) --   2. The \'isabelle\' command must be on the PATH. -- module System.Isabelle (
src/Text/Dot.hs view
@@ -51,7 +51,8 @@ 	) where  import Data.List (intersperse)-import Control.Monad (liftM)+import Control.Applicative+import Control.Monad (ap, liftM)  data NodeId = NodeId String 	    | UserNodeId Int@@ -69,6 +70,13 @@ 		  | SubGraph NodeId [GraphElement]  data Dot a = Dot { unDot :: Int -> ([GraphElement],Int,a) }++instance Functor Dot where+  fmap = liftM++instance Applicative Dot where+  pure  = return+  (<*>) = ap  instance Monad Dot where   return a = Dot $ \ uq -> ([],uq,a)
src/Text/Isar.hs view
@@ -25,12 +25,14 @@   , isaForall   , isaLambda   , isaAnd+  , isaOr   , isaImplies   , isaNotIn   , isaIn   , isaSubsetEq   , isaAlpha   , isaSublocale+  , isaNotEq      -- * Extensions of 'Text.PrettyPrint'   , module Text.PrettyPrint.Class@@ -266,6 +268,12 @@   | isPlainStyle conf = text "&"   | otherwise         = symbol "\\<and>" +-- | The logical or symbol: @|@+isaOr :: Document d => IsarConf -> d+isaOr conf+  | isPlainStyle conf = text "|"+  | otherwise         = symbol "\\<or>"+ -- | The logical and symbol: @-->@ isaImplies :: Document d => IsarConf -> d isaImplies conf@@ -283,6 +291,12 @@ isaSublocale conf   | isPlainStyle conf = text "<"   | otherwise         = symbol "\\<subseteq>"++-- | The not equal symbol: @~=@+isaNotEq :: Document d => IsarConf -> d+isaNotEq conf+  | isPlainStyle conf = text "~="+  | otherwise         = symbol "\\<noteq>"  ------------------------------------------------------------------------------ -- Isabelle theory components