src/HOL/MicroJava/Comp/CorrComp.thy
changeset 58263 6c907aad90ba
parent 57512 cc97b347b301
child 59199 cb8e5f7a5e4a
equal deleted inserted replaced
58262:85b13d75b2e4 58263:6c907aad90ba
   783 apply (frule wtpd_expr_binop)
   783 apply (frule wtpd_expr_binop)
   784 (* establish (s1::\<preceq> \<dots>) *)
   784 (* establish (s1::\<preceq> \<dots>) *)
   785 apply (frule_tac e=e1 in state_ok_eval) apply (simp (no_asm_simp)) apply simp apply (simp (no_asm_use) only: env_of_jmb_fst) 
   785 apply (frule_tac e=e1 in state_ok_eval) apply (simp (no_asm_simp)) apply simp apply (simp (no_asm_use) only: env_of_jmb_fst) 
   786 
   786 
   787 
   787 
   788 apply (simp (no_asm_use) only: compExpr_compExprs.simps)
   788 apply (simp (no_asm_use) only: compExpr.simps compExprs.simps)
   789 apply (rule_tac ?instrs0.0 = "compExpr (gmb G CL S) e1" in progression_transitive, simp) apply blast
   789 apply (rule_tac ?instrs0.0 = "compExpr (gmb G CL S) e1" in progression_transitive, simp) apply blast
   790 apply (rule_tac ?instrs0.0 = "compExpr (gmb G CL S) e2" in progression_transitive, simp) apply blast
   790 apply (rule_tac ?instrs0.0 = "compExpr (gmb G CL S) e2" in progression_transitive, simp) apply blast
   791 apply (case_tac bop)
   791 apply (case_tac bop)
   792   (*subcase bop = Eq *)  apply simp apply (rule progression_Eq)
   792   (*subcase bop = Eq *)  apply simp apply (rule progression_Eq)
   793   (*subcase bop = Add *) apply simp apply (rule progression_one_step) apply simp
   793   (*subcase bop = Add *) apply simp apply (rule progression_one_step) apply simp
   829 apply (intro allI impI)
   829 apply (intro allI impI)
   830    (* establish x1 = None \<and> a' \<noteq> Null *)
   830    (* establish x1 = None \<and> a' \<noteq> Null *)
   831 apply (simp (no_asm_use) only: gx_conv, frule np_NoneD)
   831 apply (simp (no_asm_use) only: gx_conv, frule np_NoneD)
   832 apply (frule wtpd_expr_facc)
   832 apply (frule wtpd_expr_facc)
   833 
   833 
   834 apply (simp (no_asm_use) only: compExpr_compExprs.simps)
   834 apply (simp (no_asm_use) only: compExpr.simps compExprs.simps)
   835 apply (rule_tac ?instrs0.0 = "(compExpr (gmb G CL S) e)" in progression_transitive, rule HOL.refl)
   835 apply (rule_tac ?instrs0.0 = "(compExpr (gmb G CL S) e)" in progression_transitive, rule HOL.refl)
   836 apply blast
   836 apply blast
   837 apply (rule progression_one_step)
   837 apply (rule progression_one_step)
   838 apply (simp add: gh_def)
   838 apply (simp add: gh_def)
   839 apply (case_tac "(the (fst s1 (the_Addr a')))")
   839 apply (case_tac "(the (fst s1 (the_Addr a')))")
   851 
   851 
   852   (* establish ((Norm s1)::\<preceq> \<dots>) *)
   852   (* establish ((Norm s1)::\<preceq> \<dots>) *)
   853 apply (frule_tac e=e1 in state_ok_eval) apply (simp (no_asm_simp) only: env_of_jmb_fst) 
   853 apply (frule_tac e=e1 in state_ok_eval) apply (simp (no_asm_simp) only: env_of_jmb_fst) 
   854    apply assumption apply (simp (no_asm_use) only: env_of_jmb_fst) 
   854    apply assumption apply (simp (no_asm_use) only: env_of_jmb_fst) 
   855 
   855 
   856 apply (simp only: compExpr_compExprs.simps)
   856 apply (simp only: compExpr.simps compExprs.simps)
   857 
   857 
   858 apply (rule_tac ?instrs0.0 = "(compExpr (gmb G CL S) e1)" in progression_transitive, rule HOL.refl)
   858 apply (rule_tac ?instrs0.0 = "(compExpr (gmb G CL S) e1)" in progression_transitive, rule HOL.refl)
   859 apply fast (* blast does not seem to work - why? *)
   859 apply fast (* blast does not seem to work - why? *)
   860 apply (rule_tac ?instrs0.0 = "(compExpr (gmb G CL S) e2)" in progression_transitive, rule HOL.refl)
   860 apply (rule_tac ?instrs0.0 = "(compExpr (gmb G CL S) e2)" in progression_transitive, rule HOL.refl)
   861 apply fast
   861 apply fast
  1098 apply (frule method_preserves_length, assumption, assumption) 
  1098 apply (frule method_preserves_length, assumption, assumption) 
  1099 (* establish length pvs = length ps *)
  1099 (* establish length pvs = length ps *)
  1100 apply (frule evals_preserves_length [THEN sym])
  1100 apply (frule evals_preserves_length [THEN sym])
  1101 
  1101 
  1102 (** start evaluating subexpressions **)
  1102 (** start evaluating subexpressions **)
  1103 apply (simp (no_asm_use) only: compExpr_compExprs.simps)
  1103 apply (simp (no_asm_use) only: compExpr.simps compExprs.simps)
  1104 
  1104 
  1105   (* evaluate e *)
  1105   (* evaluate e *)
  1106 apply (rule_tac ?instrs0.0 = "(compExpr (gmb G CL S) e)" in progression_transitive, rule HOL.refl)
  1106 apply (rule_tac ?instrs0.0 = "(compExpr (gmb G CL S) e)" in progression_transitive, rule HOL.refl)
  1107 apply fast
  1107 apply fast
  1108 
  1108