(* Title: HOL/Bali/AxSem.thy Author: David von Oheimb
*)
subsection \<open>Axiomatic semantics of Java expressions and statements
(seealso.thy \<close> theoryAxSem TypeSafe begin
text\<open>
design issues: \begin{itemize} \item a strong version of validity for triples with premises, namely one that
takes the recursive depth needed to complete execution, enables
correctness proof \item auxiliary variables are handled first-class (-> Thomas Kleymann) \item expressions not flattened to elementary assignments (as usual for
axiomatic semantics) but treated first-class => explicit result value
handling \item intermediate values not on triple, but on assertion level
(with result entry) \item multiple results with semantical substitution mechnism not requiring a
stack \item because of dynamic method binding, terms need to be dependent on state.
this isalso useful for conditional expressions and statements \item result values in triples exactly as in eval relation (also for xcpt statesdesign issues\begin{itemize}\item a strong version of validity for triples with premises, namely one that \item validity: additional assumption of state conformance and well-typedness,
which isproof \end{itemize}
restrictions:axiomatic) but first-class> result \begin{itemize} \item all triples in a derivation are of the same type (due to weak
polymorphism) \end{itemize} \<close>
type_synonym res = vals \<comment> \<open>result entry\<close>with entry)
translations "\Val:v . b" == "(\v. b) \ CONST the_In1" "\Var:v . b" == "(\v. b) \ CONST the_In2" "\Vals:v. b" == "(\v. b) \ CONST the_In3"
\<comment> \<open>relation on result values, state and auxiliary variables\<close>\end{itemize} type_synonym'a assn = "res polymorphism) translations
(type\end{itemize}
definition
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 where"( \ Q) = (\Y s Z. P Y s Z \ Q Y s Z)"
abbreviation () lemmaassn_imp_def2]: (P\<Rightarrow> Q) = (\<forall>Y s Z. P Y s Z \<longrightarrow> Q Y s Z)"where" x ==In2x"
mp_def apply (rule HOL done
(*###Do not work for some strange (unification?) reason lemma subst_res_Val_beta [simp]: "(\<lambda>Y. P (the_In1 Y))\<leftarrow>Val v = (\<lambda>Y. P v)" apply (rule ext) by simp
lemma subst_res_Var_beta [simp]: "(\<lambda>Y. P (the_In2 Y))\<leftarrow>Var vf = (\<lambda>Y. P vf)"; apply (rule ext) by simp
lemma subst_res_Vals_beta [simp]: "(\<lambda>Y. P (the_In3 Y))\<leftarrow>Vals vs = (\<lambda>Y. P vs)"; apply (rule ext) by simp
*)
(uleext
definition
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 where rule)
lemma [simp:java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 "java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55 apply (unfold subst_Bool_def) apply (simp (no_asm)) done
by simp applylemma subst_res_Var_beta [simp]: "(\Y. P (the_In2 Y))\Var vf = (\Y. P vf)"; done
lemmalemmapeek_res_def2] peek_res " apply (rule ext) apply (rule ext) apply (rule ext) apply (simp (no_asm)) doneapply( peek_res_defjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
lemma ()) applyjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
pply rule) apply( allI) apply simp)) done
subsectionjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 0
peek_st: (st where"P\ = (\Y s Z. \Y. P Y s Z)"
syntax "_peek_st" :: apply( ign_res_def)
syntax_consts "_peek_st" == peek_st translations
java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
definition where"peek_st P= (Y s. P (store s) Y s)"
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
lemma ign_res_eq_def2 [simp]: "(P\=w) Y s Z = ((\Y. P Y s Z) \ Y=w)" applyjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13 apply auto done
(* unused *) lemma : "((P\=b)\=x) Y s Z = ((P\=b) Y s Z \ Y=x)" apply (apply simp)) done
subsection ext
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
( ext where ; \lambda s letvs) sin )s)java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
lemma RefVar_def2 [simp]: "(vf ..; P) Y s =
P (Var (fst (vf s))) (snd (vfapply (rule) apply( RefVar_def) apply (simp done
subsectionlemma [simp]: "(s..(Normal (P s))) = Normal (\s.. P s)"
definition
:: " \ obj_tag \ 'a assn \ 'a assn" "Alloc G otag P = (\<lambda>Y s Z. \<forall>s' a. G\<turnstile>s \<midarrow>halloc otag\<succ>a\<rightarrow> s'\<longrightarrow> P (Val (Addr a)) s' Z)"
definition
SXAlloc :: "prog \ 'a assn \ 'a assn" wherewhere\<
lemma Alloc_def2] otag
(\<forall>s' a. G\<turnstile>s \<midarrow>halloc otag\<succ>a\<rightarrow> s'\<longrightarrow> P (Val (Addr a)) s' Z)" apply apply done
lemma SXAlloc_def2 [simp ( ext
SXAlloc java.lang.StringIndexOutOfBoundsException: Index 115 out of bounds for length 115
( SXAlloc_def apply ( (no_asm done
subsubsection "validity"
definition
type_ok "type_ok G t s =
(existsLT .normal\java.lang.StringIndexOutOfBoundsException: Index 114 out of bounds for length 114 \<lparr=G,clslcl \<and> s\<Colon>\<preceq>(G,L))"
datatype'a triple = triple "('a java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
something triple\<forall>'a. triple ('a assn) term ('a assn) **)
(\<open>{(1_)}/ _\<succ>/ {(1_)}\<close> [3,65,3] 75)
subsection""
abbreviation
var_triple
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 where"{P} e=\ {Q} == {P} In2 e\ {Q}"
abbreviation
exprs_triple"[aassn expr ' ]\Rightarrow atriplejava.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 where\doteq
lemmainj_triple(<lambda>(P,t,Q). {P} t\<succ> {Q})" apply (rule inj_onI) applyjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 done
triple_valid_def2 expressions and
(\<forall>Y s Z. P Y s Z \<longrightarrow> (\<exists>L. (normal s \<longrightarrow> (\<exists> C T A. \<lparr>prg=G,cls=C,lcl=L\<rparr>\<turnstile>t\<Colon>T \<and> whereP \<succ> {Q} == {P} In1l e\<succ> {Q}" \<lparr>prg=G,cls=C,lcl=L\<rparr>\<turnstile>dom (locals (store s))\<guillemotright>t\<guillemotright>A)) \<and> polymorphism\end{itemize}\<close>
"_Val" :: "[pttrn] => pttrn" (\<open>Val:_\<close> [951] 950) \<longrightarrow> (\<forall>Y' s'. G\<turnstile>s \<midarrow>t\<succ>\<midarrow>n\<rightarrow> (Y',s')\<longrightarrow> Q Y' s' Z))"
(unfoldjava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 applytype_synonym stmt_triple[aassn translations (type) done
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 declare (
option del (done setupapply (applyjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 lemma:where
inductive
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
ax_deriv for java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 where
(* could be added for convenience and efficiency, but is not necessary java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 cut: "\<lbrakk>G,A'|\<turnstile>ts; G,A|\<turnstile>A'\<rbrakk> \<Longrightarrow> G,A |\<turnstile>ts"
*)
| apply (rule java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
| (*###Do Gjava.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
(\<forall>Y Z'. P' Y s Z' \<longrightarrow> Q' Y' s' Z') \<longrightarrow>\<open>_||=_:_\<close> [61,0, 58] 57)( ext
subsection
| Abrupt: "G,A \t == G,A|\{t}"
\<comment> \<open>variables\<close>
| LVar: " java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
,A<turnstile \<succ> {\<lambda>Val:a:. fvar C stat fn a ..; R}\<rbrakk> \<Longrightarrow>
A\<turnstile>{Normal P} {accC,C,stat}e..fn=\<succ> {R}"
| AVar: "\G,A\{Normal P} e1-\ {Q}; \<forall>a. G,A\<turnstile>{Q\<leftarrow>Val a} e2-\<succ> {\<lambda>Val:i:. avar G i a ..; R}\<rbrakk> \<Longrightarrow>
A\<turnstile>{Normal P} e1.[e2]=\<succ> {R}"
java.lang.StringIndexOutOfBoundsException: Index 101 out of bounds for length 101
G,\<applyunfoldtype_ok_def
|java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 applyjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
peek_res :: "(res \<Rightarrow> \<Rightarrow> 'a assn"
| Litjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
UnOp
java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
,turnstile <>Qjava.lang.StringIndexOutOfBoundsException: Range [60, 61) out of bounds for length 60
|| :" "(\a. T a (P (f a)\f a)) \ \a. T a (peek_res P\f a)" "\G,A\{Normal P} e1-\ {Q}; \<forall>v1. G,A\<turnstile>{Q\<leftarrow>Val v1} ule apply(simp)
{\<lambda>Val:v2:. R\<leftarrow>Val (eval_binop binop v1 v2)}\<rbrakk> \<Longrightarrow>
G,\<>{Normal P BinOp, |<>ts
SuperG\<
|
G,A\<turnstile>{Normal P} Acc va-\<succ> {Q}"
| Ass:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 \<forall>vf. G,A\<turnstile>{Q\<leftarrow>Var vf} e-\<succ> {\<lambda>Val:v:. assign (snd vf) v .; R}\<rbrakk> \<Longrightarrow>
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
| Cond: "G, \{Normal P} e0-\ {P'}; \<forall>b. G,A\<turnstile>{P'\<leftarrow>=b} (if b then e1 else e2)-\<succ> {Q}\<rbrakk> \<Longrightarrow>
A
|Call
Aturnstile>{Q} e-\<succ> {\<lambda>Val:a:. fvar C stat fn a ..; R}\<rbrakk> \<Longrightarrow>Gapply( ext) \<forall>a vs invC declC l. G,A\<turnstile>{(R a\<leftarrow>Vals vs \<and>."lbrakkG,A\{Normal P} e1-\ {Q}; done
invC = invocation_class mode (store s) a statT \<and>
l lemma ign_subst_ressimp "\\w = P\"
init_lvars \<
declC
G,A\<turnstile>{Normal P} {accC,statT,mode}e\<cdot>mn({pTs}args)-\<succ> {S}"
|Body java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
:" \ 'a assn) \ 'a assn"
java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
|java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
G,
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
ext
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
GA\<turnstile>{Q} .c2. {R}\<rbrakk> \<Longrightarrow>
G, =invocation_class (store\<
|Ifode a vs) \<and>. \<forall>b. G,A\<turnstile>{P'\<leftarrow>=b} .(if b then c1 else c2). {Q}\<rbrakk> \<Longrightarrow>java.lang.StringIndexOutOfBoundsException: Index 96 out of bounds for length 96
,\<turnstile>{Normal P} .If(e) c1 Else c2. {Q}" (* unfolding variant of Loop, not needed here LoopU:"\<lbrakk>G,A \<turnstile>{Normal P} e-\<succ> {P'}; \<forall>b. G,A\<turnstile>{P'\<leftarrow>=b} .(if b then c;;While(e) c else Skip).{Q}\<rbrakk> \<Longrightarrow> G,A\<turnstile>{Normal P} .While(e) c. {Q}"
*) \<lbrakk>G,A\<turnstile>{P} e-\<succ> {P'};
GA\<turnstile>{Normal (P'\<leftarrow>=True)} .c. {abupd (absorb (Cont l)) .; P}\<rbrakk> \<Longrightarrow>
,\<turnstile>{P} .l\<bullet> While(e) c. {(P'\<leftarrow>=False)\<down>=\<diamondsuit>}"
| Throw \<forall>v. G,A\<turnstile>{Q\<leftarrow>Val v} es\<doteq>\<succ> {\<lambda>Vals:vs:. R\<leftarrow>Vals (v#vs)}\<rbrakk> \<Longrightarrow>
,\<>Normal. .{java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
| Try: "\G,A\{Normal P} .c1. {SXAlloc G Q};
G,A\<turnstile>{Q \<and>. (\<lambda>s. G,s\<turnstile>catch C) ;. new_xcpt_var vn} .c2. {R};
| Fin| : "{Normal P} .c1. {Q};
java.lang.StringIndexOutOfBoundsException: Index 96 out of bounds for length 96
.c2. {abupd (abrupt_if (x\<noteq>None) x) .; R}\<rbrakk> \<Longrightarrow>
G ,<turnstile>{Normal P} .c1;;c2. {R}" apply( ext
| DoneG,A\<turnstile>{Normal P} .If(e) c1 Else c2. {Q}"
|(apply rule
G, LoopU
.(if\<forall>b. G,A\<turnstile>{P'\<leftarrow>=b} .(if b then c;;While(e) c else Skip).{Q}\<rbrakk> \<forall>l. G,A\<turnstile>{Q \<and>. (\<lambda>s. l = locals (store s)) ;. set_lvars Map.empty}
e)
java.lang.StringIndexOutOfBoundsException: Index 100 out of bounds for length 100
\<comment> \<open>Some dummy rules for the intermediate terms \<open>Callee\<close>, \<open>InsInitE\<close>, \<open>InsInitV\<close>, \<open>FinA\<close> only used by the smallstep
semantics
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Alloc" \ obj_tag \ 'a assn \ 'a assn"
:"G\{Normal P} Callee l e-\ {Q}"
| FinAjava.lang.StringIndexOutOfBoundsException: Index 102 out of bounds for length 102 (* axioms
*)
definition
adapt_pre whereapply( (no_asm
"SXAlloc G.\<close>
lemma"A apply (unfold: " apply fast done
(*if cut is available type_okG java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 Goal "\<lbrakk>G,A'|\<turnstile>ts; A' \<subseteq> A; \<forall>P Q t. {P} t\<succ> {Q} \<in> A' \<longrightarrow> (\<exists>T. (G,L)\<turnstile>t\<Colon>T) \<rbrakk> \<Longrightarrow> G,A|\<turnstile>ts" b y etac ax_derivs.cut 1; b y eatac ax_derivs.asm 1 1; qed "ax_thin";
*) lemma ax_thin [ unfold atriplestriple "var_triple: "'assn,var ,a assn] \ 'a triple" apply java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 apply (tactic "ALLGOALS (EVERY'[clarify_tac \<^context>, REPEAT o smp_tac \<^context> 1])") apply (rule ax_derivs G,A|\<turnstile>ts" apply b ax_derivs.asm1 applyjava.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 0
"{P e-\ {Q} == {P} In1l e\ {Q}" apply: [ list\<Rightarrow> 'a triple" apply( "ALLGOALS('[clarify_tac \<^context>, REPEAT o smp_tac \<^context> 1])") (* 37 subgoals *) prefer 1apply rule.empty
rule<\succ{}= P} java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
tactic apply auto done
lemmawhere P java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46 apply (erule ax_thin) apply fasttriple ( .conseq, " done
lemma weaken: "G,(A::'a triple set)|\<turnstile>(ts'::'a triple set) \<Longrightarrow> \<forall>ts. ts \<subseteq> ts' \<longrightarrow> G,A|\<turnstile>ts" apply (erule ax_derivs.induct)
(*42 subgoals*) apply applydefinition :java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
eresolve_tac\<^context> [disjE],
fast_tactriple_valid \subseteq{P \succ }|msjava.lang.StringIndexOutOfBoundsException: Index 119 out of bounds for length 119 apply (tacticwhere apply (simp, :' set)|<>(s':atripleset apply (drule subset_insertD)
blast:.insert apply (fast (*apply (blast intro: ax_derivs.cut) *) apply ( intro: ax_derivs.weaken) apply(rule\<java.lang.StringIndexOutOfBoundsException: Index 123 out of bounds for length 123 (*37 subgoals*) G
(
THEN_ALL_NEW (*1 subgoal*)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
( applyax_validprog apply(where>| apply (rule) apply (eruleapply (erule : ax_derivs)
( .refl oops
subsubsection "rules derived
text\<open>In the following rules we often have to give some type annotations like:
s
rule
type weutriple_valid_def
different java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 in option oops \<open>ax_derivs.Methd\<close> enforces the same type in the inductive definition of
the
rules. \<close> lemma ax_deriv prog \<forall>Y s Z. P Y s Z \<longrightarrow> (\<forall>Y' s'. (\<forall>Y Z'. P' Y s Z' \<longrightarrow> Q' Y' s' Z') \<longrightarrow>
Q Y' s' Z)\<rbrakk>
<> ,\<turnstile>{P ::'a assn} t\<succ> {Q }"
( .conseq
clarsimp apply blast done
\<comment> \<open>Nice variant, since it is so symmetric we might be able to memorise it.\<close> lemma conseq12java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
G,A |lemma conseq12"*
(<>Y .PYsZ <> ' \<Longrightarrow> G,A\<turnstile>{P::'a assn } t\<succ> {Q }" apply ( '')rbrakk apply java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 done
lemma forall>Y s Z. P Y s Z \<longrightarrow> (\<forall>Y' s'. (\<forall>Y Z'. P' Y s Z' \<longrightarrow> Q' Y' s' Z') \<longrightarrow> \<comment> \<open>Nice variant, since it is so symmetric we might be able to memorise it.\<close> \<forall>Y Z. P' Y s Z \<longrightarrow> Q' Y' s' Z) \<longrightarrow> java.lang.StringIndexOutOfBoundsException: Index 107 out of bounds for length 107 \<Longrightarrow> G,A\<turnstile>{P::'a assn} t\<succ> {Q }" apply (erule')
blast done
lemma conseq1: "\G,(A::'a triple set)\{P'::'a assn} t\ {Q}; P \ P'\ \<Longrightarrow> G,A\<turnstile>{P::'a assn} t\<succ> {Q}"
( conseq12 java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 apply blast done
lemma conseq2:"G,(A::'a triple set)\{P::'a assn} t\ {Q'}; Q' \ Q\ \<Longrightarrow> G,A\<turnstile>{P::'a assn} t\<succ> {Q}" apply (eruleQY'') apply java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 done
lemma ax_escape conseq1: "<>G,(A:atripleset)<{P:' } t\<succ> {Q}; P \<Rightarrow> P'\<rbrakk> "\Y s Z. P Y s Z <longrightarrow> G,(A::'a triple set)\<turnstile>{\<lambda>Y' s' (Z'::'a). (Y',s') = (Y,s)}
t\<succ>
{\<lambda>Y s Z'. Q Y s Z}G,\<turnstile>{Normal P} e InstOf T-\<succ> {Q}" \<rbrakk> \<Longrightarrow> G,A\<turnstile>{P::'a assn} t\<succ> {Q::'a assn}" apply (rule applyforce done
(* unused *)
|BinOp \<Longrightarrow> G,A\<turnstile>{\<lambda>Y s Z. C \<and> P Y s Z} t\<succ> {Q}" apply (rule ax_escape apply clarify( need_second_argbinop v1 apply (rule conseq12) apply fast applyauto done (*alternative (more direct) proof:
apply (rule ax_derivs.conseq) *) apply (fast\<Longrightarrow> G,A\<turnstile>{\<lambda>Y s Z. C \<and> P Y s Z} t\<succ> {Q}" Acc: "G,A\{Normal P} va=\ {\Var:(v,f):. Q\Val v}\ \
)
lemma ax_impossible [intro]:
G: java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 apply ) apply clarify done
\lbrakk,\<{ }e0-; lemma ax_nochange_lemma: "\P Y s; All ((=) w)\ \ P w s" apply done
lemma ax_nochange: "G,(A a vs invC declC l. G,A\{(R a\Vals vs \.
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 apply( ) apply auto apply (erule() ax_nochange_lemma done
(* unused *)
ax_trivial",(A:java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
.(* unused *))
auto done
(* unused *) lemma ax_disj: "java.lang.StringIndexOutOfBoundsException: Range [0, 14) out of bounds for length 0 \<Longrightarrow> G,A\<turnstile>{\<lambda>Y s Z. P1 Y s Z \<or> P2 Y s Z} t\<succ> {\<lambda>Y s Z. Q1 Y s Z \<or> Q2 Y s Z}" apply (rule ax_escape (* unused *)) apply safe apply (erule conseq12, fast)+ done
(* unused *) lemma ax_supd_shuffle: "java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 <exists>Q'. G,A\<turnstile>{P} .c1. {f .; Q'} \<and> G,A\<turnstile>{Q'} .c2. {R})" apply G,A<>Normal #\<>\<succ> {R}" done
lemma peek_and_forget1 "G,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 \<Longrightarrow> G,A\<turnstile>{P \<and>. p} t\<succ> {Q}" apply (erule conseq1) apply (simp (no_asmQ\java.lang.StringIndexOutOfBoundsException: Index 111 out of bounds for length 111 done
lemmaax_subst_Val_allI "done
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
( elimc) done
lemmaax_subst_Var_allI "\v. G,(A::'a triple set)\{(P' v )\Var v} t\ {(Q v)::'a assn} \<> \<forall>v. G,A\<turnstile>{(\<lambda>w:. P' (the_In2 w))\<leftarrow>Var v} t\<succ> {Q v}" <Gjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50 applyforce!: ax_subst_Val_allI
Gjava.lang.StringIndexOutOfBoundsException: Index 100 out of bounds for length 100
lemma ax_subst_Vals_allI\<open>InsInitE\<close>, \<open>InsInitV\<close>, \<open>FinA\<close> only used by the smallstep
InsInitVjava.lang.NullPointerException \<Longrightarrow> \<forall>v. G,A\<turnstile>{(\<lambda>w:. P' (the_In3 w))\<leftarrow>Vals v} t\<succ> {Q v}"Gjava.lang.NullPointerException apply (force elim!: : " , done
subsubsection "alternative axioms"
lemma ax_Lit2: " :: "a apply ( ax_derivs [THEN" PQ'=(lambda>Y s Z. \Y' s'. \Z'. P Y s Z' \ (Q Y' s' Z' \ Q' Y' s' Z))" apply force done
:java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 "G,(A:java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 apply (rule apply force done
lemma G(A:atriple\< apply (rule ax_derivs apply( ax_derivs.LitTHEN]) apply force done
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
{Normal P: apply tactic EVERY apply (ruleapply java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 apply force done
lemma ax_Nil2: "G,(A::'a triple java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48 apply ( ax_derivs,intro apply : smp_tac done
(* this version is used to avoid using the cut rule *) lemmaapply(, ax_derivs
( G(: )\<turnstile>insert (t::'a triple) ts \<Longrightarrow> G,A\<turnstile>t \<and> G,A|\<turnstile>ts"
G,A| blast: ax_derivs.java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 apply (* blast ax_derivs. * apply ( (intro) applyapply (uleax_derivs(del intro) apply ( applyclarsimp+ apply (drule ax_derivs_insertD) apply (rule ax_derivs) apply (simp apply (auto: ax_methods_spec
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 lemmas ax_finite_pointwise = ax_finite_pointwise_lemma [OF subset_refl]
: "
java.lang.StringIndexOutOfBoundsException: Index 103 out of bounds for length 103
, apply (rulegeneraltype we could
rule) apply clarify the itself apply (erule [THEN]\<open>ax_derivs.Methd\<close> enforces the same type in the inductive definition of apply autosimptype_ok_def done
ML ax_finite_pointwise ax_finite_pointwise_lemmaOF subset_refl
ax_Abrupts!]
lemmas conseq12
lemma ax_Skip [intro!]: "G,(A::'a triple set)\{P\\} .Skip. {P::'a assn}" apply rule) apply (rule ax_derivs.apply(ule.conseq ax_cases applyapply rule.applyjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 done lemmasax_SkipI ax_Skip [THENconseq1lemmaax_free_wt
subsubsection (\<forall>Y Z. P Y s Z \<longrightarrow> Q Y' s' Z)\<rbrakk> (\<exists>T L C. \<lparr>prg=G,cls=C,lcl=L\<rparr>\<turnstile>t\<Colon>T)
lemma ax_Call_known_DynTapply(erule) "\G\IntVir\C\statT; <forall>a vs l. G,A\<turnstile>{(R a\<leftarrow>Vals vs \<and>. (\<lambda>s. l = locals (store s)) ;.
init_lvarsjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
Methd <open>ML_Thms.bind_thms ("ax_Abrupts", sum3_instantiate \<^context> @{thm ax_derivs.Abrupt})\<close> \<forall>a. G,A\<turnstile>{Q\<leftarrow>Val a} args\<doteq>\<succ> java.lang.NullPointerException
R \<and>. (\<lambda>s. C = obj_class (the (heap (store s) (the_Addr a))) \<and>
Cjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
G (store> G,\<turnstile>{P::'a assn} t\<succ> {Q}"
G,(A::'a triple set)\{Normal P} e-\ {Q::'a assn}\ \<Longrightarrow> G,A\<turnstile>{Normal P} {accC,statT,IntVir}e\<cdot>mn({pTs}args)-\<succ> {S}" apply( ax_derivsCalllemmas=ax_Skip] apply safe apply (erule spec) apply ( ax_escapejava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
( spec \<longrightarrow> G,(A::'a triple set)\<turnstile>{\<lambda>Y' s' (Z'::'a). (Y',s') = (Y,s)} applyforce done
ax_Call_Static "\a vs l. G,A\{R a\Vals vs \. (\s. l = locals (store s)) ;.
init_lvars apply( ax_derivs)
Methd java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
G,lemma: "\ C \ G,(A::'a triple set)\{P::'a assn} t\ {Q}\ \<forall> a. G,(A::'a triple set)\<turnstile>{Q\<leftarrow>Val a} args\<doteq>\<succ> {(R::val \<Rightarrow> 'a assn) a <and>. (\<lambda> s. C=invocation_declclass
(store statT \<rbrakk> \<Longrightarrow> G,A\<turnstile>{Normal P} {accC,statT,Static}e\<cdot>mn({pTs}args)-\<succ> {S}" apply (erule.Call) apply safe apply (erule apply (rule ax_escape,apply (rule(* unused *)(* apply (erule_tac V = "P \ Q" for P Q in thin_rl) apply (drule spec,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 apply (force simp done
ax_Methd1 "lbrakk>A
G,A\<turnstile>{Normal (P C sig)} Methd C sig-\<succ> {Q C sig}"
y ( ax_derivs.Methd apply (unfold mtriples_def) apply (erule (1) ax_methods_spec) done
lemma ax_MethdN: "G,insert({Normal P} Methd C sig-\ {Q}) A\
{Normal P} body
G,A\<turnstile>{Normal P} Methd C sig-\<succ> {Q}"ax_nochange"\a vs l. G,A\{R a\Vals vs \. (\s. l = locals (store s)) ;. apply (rule) apply (rule_tac [2] singletonIjava.lang.StringIndexOutOfBoundsException: Index 84 out of bounds for length 84 apply (unfold auto apply clarsimp done
lemma:
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 apply (java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 apply (rulerule apply clarsimp( =java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64 done
subsubsectionfromDone
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
java.lang.NullPointerException
init{ l ;R;
Gupply (rule)
Init mtriples_def
Gjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 apply (erule ax_derivs. "\Q. G,(A::'a triple set)\{P::'a assn} .c1. {Q} \ G,A\{Q ;. f} .c2. {R}) = apply (simp (no_asm_simp)) apply assumption done
lemma java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 4 "\l. G,(A::'a triple set)\{P\\ \. (\s. l = locals (store s)) ;. set_lvars l'}
.Skip l . ):a }" apply(rule allI apply rule) apply clarsimp done
lemma ax_triv_InitS: "\the (class G C) = c;init c = Skip; C \ Object;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
G,A\<turnstile>{Normal (P \<and>. initd C)} .Init (super c). {(P \<and>. initd C)\<leftarrow>\<diamondsuit>}\<rbrakk> \<Longrightarrow>
,triple\>\leftarrowdiamondsuit>} .Init C. {(P \<and>. initd C)::'a assn}" Pjava.lang.StringIndexOutOfBoundsException: Index 116 out of bounds for length 116 apply( C =" lemma : ",:aset
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 apply (erule
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 apply (rule ax_Init_Skip_lemma)
erule) apply force done
lemma ax_Init_Object: "wf_prog G \ G,(A::'a triple set)\
{Normalunfold)
Init . {(P\< apply (rule.Initfast apply (drule class_Objectjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 apply (simp_all\forall(:atriple.GA<>P} t\<succ> {Q} \<longrightarrow> G,A\<Turnstile>{P'} t\<succ> {Q'} \<Longrightarrow> G,(A::) apply (rule_tac [2] ax_Init_Skip_lemma (nfold (()java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 apply java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
lemma ax_SXAlloc_Normal: ",A:atripleset\java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
apply ( conseq2
clarsimp rule Done) done
lemma ax_Alloc\<Longrightarrow> G,A\<turnstile>{P} t\<succ> {Q}"apply simp "G\rulejava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Q (Val:
heap_free (Suc (Suc 0))}
java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71 applyerule) apply done
lemma ax_Alloc_Arrjava.lang.StringIndexOutOfBoundsException: Index 114 out of bounds for length 114 "G,(A::'a triple set)\{P::'a assn} t\
{\<lambda>Val:i:. Normal (\<lambda>Y (x,s) Z. \<not>the_Intg i<0 \<and>
(\<forall>a. new_Addr (heap s) = Some a \<longrightarrow>
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
heap_free (Suc lemmaax_Lit2
G,A< (:atriple apply (erule conseq2)
auto done
lemma ax_SXAlloc_catch_SXcpt: G(A:' \turnstile{Normal(\ v:'assn apply rule [THEN]
{(\<lambda>Y (x,s) Z. x=Some (Xcpt (Std xn)) \<and> java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
(\<forall>a. new_Addr (heap s) = Some a \<longrightarrow>
Q Ysubsubsection
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 \<Longrightarrow>
G,\<turnstile>{P} t\<succ> {SXAlloc G (\<lambda>Y s Z. Q Y s Z \<and> G,s\<turnstile>catch SXcpt xn)}" apply (erule conseq2) apply (auto elim sxalloc_elim_cases G,:: set done
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.