src/HOLCF/IOA/Storage/Correctness.ML
author wenzelm
Mon, 28 Jun 1999 23:02:38 +0200
changeset 6853 80f88b762816
parent 6161 bc2a76ce1ea3
child 8741 61bc5ed22b62
permissions -rw-r--r--
improved RANGE;
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$
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
     3
    Author:     Olaf Mueller
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
     4
    Copyright   1997  TU Muenchen
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
Correctness Proof
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
     7
*)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
     8
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
Addsimps [split_paired_All];
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    11
Delsimps [split_paired_Ex];
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    12
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    13
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    14
(* Idea: instead of impl_con_lemma do not rewrite impl_ioa, but derive
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    15
         simple lemmas asig_of impl_ioa = impl_sig, trans_of impl_ioa = impl_trans 
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    16
   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
    17
         as this can be done globally *)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    18
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    19
Goal 
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    20
      "is_simulation sim_relation impl_ioa spec_ioa";
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    21
by (simp_tac (simpset() addsimps [is_simulation_def]) 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    22
by (rtac conjI 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    23
(* --------------  start states ----------------- *)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    24
by (SELECT_GOAL (safe_tac set_cs) 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    25
by (res_inst_tac [("x","({},False)")] exI 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    26
by (asm_full_simp_tac (simpset() addsimps [sim_relation_def,starts_of_def,
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    27
        Spec.ioa_def,Impl.ioa_def]) 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    28
(* ---------------- main-part ------------------- *)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    29
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    30
by (REPEAT (rtac allI 1));
6161
paulson
parents: 6008
diff changeset
    31
by (rtac imp_conj_lemma 1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    32
ren "k b used c k' b' a" 1;
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    33
by (induct_tac "a" 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    34
by (ALLGOALS (simp_tac (simpset() addsimps [sim_relation_def,
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    35
      Impl.ioa_def,Impl.trans_def,trans_of_def])));
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    36
by (safe_tac set_cs);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    37
(* NEW *)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    38
by (res_inst_tac [("x","(used,True)")] exI 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    39
by (Asm_full_simp_tac 1);
6161
paulson
parents: 6008
diff changeset
    40
by (rtac transition_is_ex 1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    41
by (simp_tac (simpset() addsimps [
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    42
      Spec.ioa_def,Spec.trans_def,trans_of_def])1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    43
(* LOC *)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    44
by (res_inst_tac [("x","(used Un {k},False)")] exI 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    45
by (Asm_full_simp_tac 1);
6161
paulson
parents: 6008
diff changeset
    46
by (rtac transition_is_ex 1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    47
by (simp_tac (simpset() addsimps [
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    48
      Spec.ioa_def,Spec.trans_def,trans_of_def])1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    49
by (Fast_tac 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    50
(* FREE *)
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    51
by (res_inst_tac [("x","(used - {nat},c)")] exI 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    52
by (Asm_full_simp_tac 1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    53
by (SELECT_GOAL (safe_tac set_cs) 1);
6161
paulson
parents: 6008
diff changeset
    54
by Auto_tac;
paulson
parents: 6008
diff changeset
    55
by (rtac transition_is_ex 1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    56
by (simp_tac (simpset() addsimps [
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    57
      Spec.ioa_def,Spec.trans_def,trans_of_def])1);
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    58
qed"issimulation";
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    59
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    60
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    61
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    62
Goalw [ioa_implements_def] 
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    63
"impl_ioa =<| spec_ioa";
6161
paulson
parents: 6008
diff changeset
    64
by (rtac conjI 1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    65
by (simp_tac (simpset() addsimps [Impl.sig_def,Spec.sig_def,
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    66
    Impl.ioa_def,Spec.ioa_def, asig_outputs_def,asig_of_def,
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    67
    asig_inputs_def]) 1);
6161
paulson
parents: 6008
diff changeset
    68
by (rtac trace_inclusion_for_simulations 1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    69
by (simp_tac (simpset() addsimps [Impl.sig_def,Spec.sig_def,
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    70
    Impl.ioa_def,Spec.ioa_def, externals_def,asig_outputs_def,asig_of_def,
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    71
    asig_inputs_def]) 1);
6161
paulson
parents: 6008
diff changeset
    72
by (rtac issimulation 1);
6008
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    73
qed"implementation";
d0e9b1619468 Memory storage case study from PhD p.240;
mueller
parents:
diff changeset
    74