src/HOLCF/IOA/Storage/Correctness.ML
author paulson
Wed, 14 Dec 2005 16:13:09 +0100
changeset 18404 aa27c10a040e
parent 17982 d20a9dd2a68c
child 19360 f47412f922ab
permissions -rw-r--r--
removed unused function repeat_RS
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
     1
(*  Title:      HOL/IOA/example/Correctness.ML
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
     2
    ID:         $Id$
12218
wenzelm
parents: 8741
diff changeset
     3
    Author:     Olaf Müller
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
     4
*)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
     5
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
     6
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
     7
Addsimps [split_paired_All];
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
     8
Delsimps [split_paired_Ex];
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
     9
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    10
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    11
(* Idea: instead of impl_con_lemma do not rewrite impl_ioa, but derive
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 16648
diff changeset
    12
         simple lemmas asig_of impl_ioa = impl_sig, trans_of impl_ioa = impl_trans
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    13
   Idea: ?ex. move .. should be generally replaced by a step via a subst tac if desired,
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    14
         as this can be done globally *)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    15
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 16648
diff changeset
    16
Goal
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    17
      "is_simulation sim_relation impl_ioa spec_ioa";
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    18
by (simp_tac (simpset() addsimps [is_simulation_def]) 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    19
by (rtac conjI 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    20
(* --------------  start states ----------------- *)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    21
by (SELECT_GOAL (safe_tac set_cs) 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    22
by (res_inst_tac [("x","({},False)")] exI 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    23
by (asm_full_simp_tac (simpset() addsimps [sim_relation_def,starts_of_def,
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 16648
diff changeset
    24
        thm "Spec.ioa_def", thm "Impl.ioa_def"]) 1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    25
(* ---------------- main-part ------------------- *)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    26
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    27
by (REPEAT (rtac allI 1));
6161
paulson
parents: 6008
diff changeset
    28
by (rtac imp_conj_lemma 1);
17982
d20a9dd2a68c avoid OldGoals shortcuts;
wenzelm
parents: 17244
diff changeset
    29
by (rename_tac "k b used c k' b' a" 1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    30
by (induct_tac "a" 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    31
by (ALLGOALS (simp_tac (simpset() addsimps [sim_relation_def,
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 16648
diff changeset
    32
      thm"Impl.ioa_def",thm "Impl.trans_def",trans_of_def])));
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    33
by (safe_tac set_cs);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    34
(* NEW *)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    35
by (res_inst_tac [("x","(used,True)")] exI 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    36
by (Asm_full_simp_tac 1);
6161
paulson
parents: 6008
diff changeset
    37
by (rtac transition_is_ex 1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    38
by (simp_tac (simpset() addsimps [
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 16648
diff changeset
    39
      thm "Spec.ioa_def", thm "Spec.trans_def",trans_of_def])1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    40
(* LOC *)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    41
by (res_inst_tac [("x","(used Un {k},False)")] exI 1);
8741
61bc5ed22b62 removal of less_SucI, le_SucI from default simpset
paulson
parents: 6161
diff changeset
    42
by (asm_full_simp_tac (simpset() addsimps [less_SucI]) 1);
6161
paulson
parents: 6008
diff changeset
    43
by (rtac transition_is_ex 1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    44
by (simp_tac (simpset() addsimps [
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 16648
diff changeset
    45
      thm "Spec.ioa_def", thm "Spec.trans_def",trans_of_def])1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    46
by (Fast_tac 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    47
(* FREE *)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    48
by (res_inst_tac [("x","(used - {nat},c)")] exI 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    49
by (Asm_full_simp_tac 1);
6161
paulson
parents: 6008
diff changeset
    50
by (rtac transition_is_ex 1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    51
by (simp_tac (simpset() addsimps [
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 16648
diff changeset
    52
      thm "Spec.ioa_def",thm "Spec.trans_def",trans_of_def])1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    53
qed"issimulation";
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    54
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    55
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    56
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 16648
diff changeset
    57
Goalw [ioa_implements_def]
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    58
"impl_ioa =<| spec_ioa";
6161
paulson
parents: 6008
diff changeset
    59
by (rtac conjI 1);
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 16648
diff changeset
    60
by (simp_tac (simpset() addsimps [thm "Impl.sig_def",thm "Spec.sig_def",
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 16648
diff changeset
    61
    thm "Impl.ioa_def",thm "Spec.ioa_def", asig_outputs_def,asig_of_def,
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    62
    asig_inputs_def]) 1);
6161
paulson
parents: 6008
diff changeset
    63
by (rtac trace_inclusion_for_simulations 1);
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 16648
diff changeset
    64
by (simp_tac (simpset() addsimps [thm "Impl.sig_def",thm "Spec.sig_def",
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 16648
diff changeset
    65
    thm "Impl.ioa_def",thm "Spec.ioa_def", externals_def,asig_outputs_def,asig_of_def,
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    66
    asig_inputs_def]) 1);
6161
paulson
parents: 6008
diff changeset
    67
by (rtac issimulation 1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    68
qed"implementation";