IOA/meta_theory/Solve.ML
author clasohm
Mon, 21 Nov 1994 17:50:34 +0100
changeset 171 16c4ea954511
parent 168 44ff2275d44f
child 207 408713c7f66b
permissions -rw-r--r--
replaced 'val ... = result()' by 'qed "..."'
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
168
44ff2275d44f Added headers and made various small mods.
nipkow
parents: 156
diff changeset
     1
(*  Title:      HOL/IOA/meta_theory/Solve.ML
44ff2275d44f Added headers and made various small mods.
nipkow
parents: 156
diff changeset
     2
    ID:         $Id$
44ff2275d44f Added headers and made various small mods.
nipkow
parents: 156
diff changeset
     3
    Author:     Tobias Nipkow & Konrad Slind
44ff2275d44f Added headers and made various small mods.
nipkow
parents: 156
diff changeset
     4
    Copyright   1994  TU Muenchen
44ff2275d44f Added headers and made various small mods.
nipkow
parents: 156
diff changeset
     5
44ff2275d44f Added headers and made various small mods.
nipkow
parents: 156
diff changeset
     6
Weak possibilities mapping (abstraction)
44ff2275d44f Added headers and made various small mods.
nipkow
parents: 156
diff changeset
     7
*)
44ff2275d44f Added headers and made various small mods.
nipkow
parents: 156
diff changeset
     8
44ff2275d44f Added headers and made various small mods.
nipkow
parents: 156
diff changeset
     9
open Solve;
156
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    10
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    11
val SS = SS addsimps [mk_behaviour_thm,trans_in_actions];
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    12
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    13
goalw Solve.thy [is_weak_pmap_def,behaviours_def]
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    14
  "!!f. [| IOA(C); IOA(A); externals(asig_of(C)) = externals(asig_of(A)); \
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    15
\          is_weak_pmap(f,C,A) |] ==> behaviours(C) <= behaviours(A)";
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    16
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    17
  by (simp_tac(SS addsimps [has_behaviour_def])1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    18
  by (safe_tac set_cs);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    19
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    20
  (* give execution of abstract automata *)
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    21
  by (res_inst_tac[("x","<mk_behaviour(A,fst(ex)),%i.f(snd(ex,i))>")] bexI 1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    22
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    23
  (* Behaviours coincide *)
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    24
  by (asm_simp_tac (SS addsimps [mk_behaviour_def,filter_oseq_idemp])1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    25
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    26
  (* Use lemma *)
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    27
  by (forward_tac [states_of_exec_reachable] 1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    28
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    29
  (* Now show that it's an execution *)
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    30
  by (asm_full_simp_tac(SS addsimps [executions_def]) 1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    31
  by (safe_tac set_cs);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    32
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    33
  (* Start states map to start states *)
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    34
  by (dtac bspec 1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    35
  by (atac 1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    36
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    37
  (* Show that it's an execution fragment *)
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    38
  by (asm_full_simp_tac (SS addsimps [is_execution_fragment_def])1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    39
  by (safe_tac HOL_cs);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    40
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    41
  (* Cases on whether action is external or not (basically) *)
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    42
  (* 1 *)
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    43
  by (eres_inst_tac [("x","snd(ex,n)")] allE 1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    44
  by (eres_inst_tac [("x","snd(ex,Suc(n))")] allE 1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    45
  by (eres_inst_tac [("x","aa")] allE 1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    46
  by (asm_full_simp_tac SS 1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    47
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    48
  (* 2 *)
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    49
  by (eres_inst_tac [("x","snd(ex,n)")] allE 1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    50
  by (eres_inst_tac [("x","snd(ex,Suc(n))")] allE 1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    51
  by (eres_inst_tac [("x","a")] allE 1);
fd1be45b64bf added IOA to isabelle/HOL
clasohm
parents:
diff changeset
    52
  by (asm_full_simp_tac SS 1);
171
16c4ea954511 replaced 'val ... = result()' by 'qed "..."'
clasohm
parents: 168
diff changeset
    53
qed "trace_inclusion";