src/HOLCF/IOA/meta_theory/Compositionality.ML
author mueller
Thu, 17 Jul 1997 12:43:32 +0200
changeset 3521 bdc51b4c6050
parent 3457 a8ab7c64817c
child 4098 71e05eb27fb6
permissions -rw-r--r--
changes needed for adding fairness
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     1
(*  Title:      HOLCF/IOA/meta_theory/Compositionality.ML
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
     2
    ID:         $Id$
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     3
    Author:     Olaf M"uller
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     4
    Copyright   1997  TU Muenchen
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     5
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     6
Compositionality of I/O automata
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     7
*) 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     8
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     9
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    10
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    11
goal thy "!! A. [|eA --> A ; eB & ~eA --> ~A|] ==> (eA | eB) --> A=eA";
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    12
by (Auto_tac());
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    13
qed"compatibility_consequence3";
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    14
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    15
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    16
goal thy 
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    17
"!! A B. [| compatible A B; Forall (%a. a: ext A | a: ext B) tr |] ==> \
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    18
\           Filter (%a. a: act A)`tr= Filter (%a. a: ext A)`tr";
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    19
by (rtac ForallPFilterQR 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    20
(* i.e.: [| (! x. P x --> (Q x = R x)) ; Forall P tr |] ==> Filter Q`tr = Filter R`tr *)
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    21
by (assume_tac 2);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    22
by (rtac compatibility_consequence3 1);
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    23
by (REPEAT (asm_full_simp_tac (!simpset 
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    24
                  addsimps [ext_is_act,ext1_ext2_is_not_act1]) 1));
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    25
qed"Filter_actAisFilter_extA";
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    26
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    27
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    28
(* the next two theorems are only necessary, as there is no theorem ext (A||B) = ext (B||A)
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    29
    or even better A||B= B||A, FIX *)
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    30
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    31
goal thy "!! A. [|eA --> A ; eB & ~eA --> ~A|] ==> (eB | eA) --> A=eA";
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    32
by (Auto_tac());
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    33
qed"compatibility_consequence4";
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    34
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    35
goal thy 
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    36
"!! A B. [| compatible A B; Forall (%a. a: ext B | a: ext A) tr |] ==> \
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    37
\           Filter (%a. a: act A)`tr= Filter (%a. a: ext A)`tr";
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    38
by (rtac ForallPFilterQR 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    39
by (assume_tac 2);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    40
by (rtac compatibility_consequence4 1);
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    41
by (REPEAT (asm_full_simp_tac (!simpset 
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    42
                  addsimps [ext_is_act,ext1_ext2_is_not_act1]) 1));
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    43
qed"Filter_actAisFilter_extA2";
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    44
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    45
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    46
(* -------------------------------------------------------------------------- *)
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    47
                     section " Main Compositionality Theorem ";
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    48
(* -------------------------------------------------------------------------- *)
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    49
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    50
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    51
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    52
goal thy "!! A1 A2 B1 B2. \
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    53
\         [| is_trans_of A1; is_trans_of A2; is_trans_of B1; is_trans_of B2;\
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    54
\            is_asig_of A1; is_asig_of A2; \
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    55
\            is_asig_of B1; is_asig_of B2; \
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    56
\            compatible A1 B1; compatible A2 B2; \
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    57
\            A1 =<| A2; \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    58
\            B1 =<| B2 |] \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    59
\        ==> (A1 || B1) =<| (A2 || B2)";
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    60
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    61
by (asm_full_simp_tac (!simpset addsimps [is_asig_of_def]) 1);
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    62
by (forw_inst_tac [("A2","A1")] (compat_commute RS iffD1) 1);
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    63
by (forw_inst_tac [("A2","A2")] (compat_commute RS iffD1) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    64
by (asm_full_simp_tac (!simpset addsimps [ioa_implements_def,
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    65
          inputs_of_par,outputs_of_par,externals_of_par]) 1);
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    66
by (safe_tac set_cs);
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    67
by (asm_full_simp_tac (!simpset addsimps [compositionality_tr]) 1);
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    68
by (subgoal_tac "ext A1 = ext A2 & ext B1 = ext B2" 1);
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    69
by (asm_full_simp_tac (!simpset addsimps [externals_def]) 2);
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    70
by (REPEAT (etac conjE 1));
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    71
(* rewrite with proven subgoal *)
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    72
by (asm_full_simp_tac (!simpset addsimps [externals_of_par]) 1);
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    73
by (safe_tac set_cs);
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    74
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    75
(* 2 goals, the 3rd has been solved automatically *)
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    76
(* 1: Filter A2 x : traces A2 *)
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    77
by (dres_inst_tac [("A","traces A1")] subsetD 1);
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    78
by (assume_tac 1);
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    79
by (asm_full_simp_tac (!simpset addsimps [Filter_actAisFilter_extA]) 1);
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    80
(* 2: Filter B2 x : traces B2 *)
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    81
by (dres_inst_tac [("A","traces B1")] subsetD 1);
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    82
by (assume_tac 1);
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    83
by (asm_full_simp_tac (!simpset addsimps [Filter_actAisFilter_extA2]) 1);
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    84
qed"compositionality";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    85
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    86
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    87
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    88