src/HOLCF/IOA/Modelcheck/MuIOA.ML
author wenzelm
Sat, 30 Dec 2006 16:08:06 +0100
changeset 21966 edab0ecfbd7c
parent 19741 f65265d71426
permissions -rw-r--r--
removed misleading OuterLex.eq_token;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
     1
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     2
(* MuIOA.ML declares function mk_sim_oracle used by oracle "Sim" (see MuIOAOracle.thy).
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     3
	There, implementation relations for I/O automatons are proved using
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     4
	the model checker mucke (invoking cal_mucke_tac defined in MCSyn.ML). *)
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     5
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     6
exception SimFailureExn of string;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     7
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 19349
diff changeset
     8
val ioa_simps = [thm "asig_of_def", thm "starts_of_def", thm "trans_of_def"];
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 19349
diff changeset
     9
val asig_simps = [thm "asig_inputs_def", thm "asig_outputs_def",
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 19349
diff changeset
    10
  thm "asig_internals_def", thm "actions_def"];
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 19349
diff changeset
    11
val comp_simps = [thm "par_def", thm "asig_comp_def"];
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 19349
diff changeset
    12
val restrict_simps = [thm "restrict_def", thm "restrict_asig_def"];
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 19349
diff changeset
    13
val hide_simps = [thm "hide_def", thm "hide_asig_def"];
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 19349
diff changeset
    14
val rename_simps = [thm "rename_def", thm "rename_set_def"];
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    15
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    16
local
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    17
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    18
exception malformed;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    19
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    20
fun fst_type (Type("*",[a,_])) = a |
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    21
fst_type _ = raise malformed; 
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    22
fun snd_type (Type("*",[_,a])) = a |
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    23
snd_type _ = raise malformed;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    24
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    25
fun element_type (Type("set",[a])) = a |
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    26
element_type t = raise malformed;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    27
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    28
fun IntC sg (Const("Trueprop",_) $ ((Const("op <=",_) $ (_ $ concreteIOA)) $ _)) =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    29
let
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    30
val aut_typ = #T(rep_cterm(cterm_of sg concreteIOA));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    31
val sig_typ = fst_type aut_typ;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    32
val int_typ = fst_type sig_typ
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    33
in 
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    34
Const("Asig.internals",Type("fun",[sig_typ,int_typ])) $
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    35
 (Const("Automata.asig_of",Type("fun",[aut_typ,sig_typ])) $ concreteIOA)
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    36
end
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    37
|
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    38
IntC sg t =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    39
error("malformed automaton def for IntC:\n" ^ (Sign.string_of_term sg t));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    40
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    41
fun StartC sg (Const("Trueprop",_) $ ((Const("op <=",_) $ (_ $ concreteIOA)) $ _)) =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    42
let
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    43
val aut_typ = #T(rep_cterm(cterm_of sg concreteIOA));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    44
val st_typ = fst_type(snd_type aut_typ)
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    45
in
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    46
Const("Automata.starts_of",Type("fun",[aut_typ,st_typ])) $ concreteIOA
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    47
end
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    48
|
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    49
StartC sg t =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    50
error("malformed automaton def for StartC:\n" ^ (Sign.string_of_term sg t));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    51
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    52
fun TransC sg (Const("Trueprop",_) $ ((Const("op <=",_) $ (_ $ concreteIOA)) $ _)) = 
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    53
let
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    54
val aut_typ = #T(rep_cterm(cterm_of sg concreteIOA));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    55
val tr_typ = fst_type(snd_type(snd_type aut_typ))
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    56
in
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    57
Const("Automata.trans_of",Type("fun",[aut_typ,tr_typ])) $ concreteIOA
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    58
end
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    59
|
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    60
TransC sg t =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    61
error("malformed automaton def for TransC:\n" ^ (Sign.string_of_term sg t));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    62
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    63
fun IntA sg (Const("Trueprop",_) $ ((Const("op <=",_) $ _) $ (_ $ abstractIOA))) =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    64
let
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    65
val aut_typ = #T(rep_cterm(cterm_of sg abstractIOA));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    66
val sig_typ = fst_type aut_typ;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    67
val int_typ = fst_type sig_typ
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    68
in
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    69
Const("Asig.internals",Type("fun",[sig_typ,int_typ])) $
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    70
 (Const("Automata.asig_of",Type("fun",[aut_typ,sig_typ])) $ abstractIOA)
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    71
end
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    72
|
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    73
IntA sg t =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    74
error("malformed automaton def for IntA:\n" ^ (Sign.string_of_term sg t));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    75
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    76
fun StartA sg (Const("Trueprop",_) $ ((Const("op <=",_) $ _) $ (_ $ abstractIOA))) =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    77
let
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    78
val aut_typ = #T(rep_cterm(cterm_of sg abstractIOA));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    79
val st_typ = fst_type(snd_type aut_typ)
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    80
in
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    81
Const("Automata.starts_of",Type("fun",[aut_typ,st_typ])) $ abstractIOA
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    82
end
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    83
|
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    84
StartA sg t =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    85
error("malformed automaton def for StartA:\n" ^ (Sign.string_of_term sg t));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    86
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    87
fun TransA sg (Const("Trueprop",_) $ ((Const("op <=",_) $ _) $ (_ $ abstractIOA))) =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    88
let
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    89
val aut_typ = #T(rep_cterm(cterm_of sg abstractIOA));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    90
val tr_typ = fst_type(snd_type(snd_type aut_typ))
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    91
in
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    92
Const("Automata.trans_of",Type("fun",[aut_typ,tr_typ])) $ abstractIOA 
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    93
end
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    94
|
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    95
TransA sg t =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    96
error("malformed automaton def for TransA:\n" ^ (Sign.string_of_term sg t));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    97
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    98
fun delete_ul [] = []
18443
a1d53af4c4c7 removed superfluos is_prefix functions
haftmann
parents: 17959
diff changeset
    99
| delete_ul (x::xs) = if (is_prefix (op =) ("\^["::"["::"4"::"m"::[]) (x::xs))
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   100
        then (let val (_::_::_::s) = xs in delete_ul s end)
18443
a1d53af4c4c7 removed superfluos is_prefix functions
haftmann
parents: 17959
diff changeset
   101
        else (if (is_prefix (op =) ("\^["::"["::"0"::"m"::[]) (x::xs))
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   102
                then  (let val (_::_::_::s) = xs in delete_ul s end)
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   103
                else (x::delete_ul xs));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   104
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   105
fun delete_ul_string s = implode(delete_ul (explode s));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   106
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   107
fun type_list_of sign (Type("*",a::b::_)) = (type_list_of sign a) @ (type_list_of sign b) |
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   108
type_list_of sign a = [(Sign.string_of_typ sign a)];
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   109
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   110
fun structured_tuple l (Type("*",s::t::_)) =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   111
let
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   112
val (r,str) = structured_tuple l s;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   113
in
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   114
(fst(structured_tuple r t),"(" ^ str ^ "),(" ^ (snd(structured_tuple r t)) ^ ")")
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   115
end |
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   116
structured_tuple (a::r) t = (r,a) |
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   117
structured_tuple [] _ = raise malformed;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   118
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   119
fun varlist_of _ _ [] = [] |
17465
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   120
varlist_of n s (a::r) = (s ^ (Int.toString(n))) :: (varlist_of (n+1) s r);
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   121
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   122
fun string_of [] = "" |
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   123
string_of (a::r) = a ^ " " ^ (string_of r);
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   124
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   125
fun tupel_typed_of _ _ _ [] = "" |
17465
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   126
tupel_typed_of sign s n [a] = s ^ (Int.toString(n)) ^ "::" ^ a |
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   127
tupel_typed_of sign s n (a::r) =
17465
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   128
 s ^ (Int.toString(n)) ^ "::" ^ a ^ "," ^ (tupel_typed_of sign s (n+1) r);
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   129
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   130
fun double_tupel_typed_of _ _ _ _ [] = "" |
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   131
double_tupel_typed_of sign s t n [a] =
17465
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   132
 s ^ (Int.toString(n)) ^ "::" ^ a ^ "," ^
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   133
 t ^ (Int.toString(n)) ^ "::" ^ a |
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   134
double_tupel_typed_of sign s t n (a::r) =
17465
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   135
 s ^ (Int.toString(n)) ^ "::" ^ a ^ "," ^
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   136
 t ^ (Int.toString(n)) ^ "::" ^ a ^ "," ^ (double_tupel_typed_of sign s t (n+1) r);
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   137
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   138
fun tupel_of _ _ _ [] = "" |
17465
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   139
tupel_of sign s n [a] = s ^ (Int.toString(n)) |
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   140
tupel_of sign s n (a::r) = s ^ (Int.toString(n)) ^ "," ^ (tupel_of sign s (n+1) r);
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   141
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   142
fun double_tupel_of _ _ _ _ [] = "" |
17465
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   143
double_tupel_of sign s t n [a] = s ^ (Int.toString(n)) ^ "," ^
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   144
				 t ^ (Int.toString(n)) |
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   145
double_tupel_of sign s t n (a::r) = s ^ (Int.toString(n)) ^ "," ^
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   146
		t ^ (Int.toString(n)) ^ "," ^ (double_tupel_of sign s t (n+1) r);
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   147
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   148
fun eq_string _ _ _ [] = "" |
17465
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   149
eq_string s t n [a] = s ^ (Int.toString(n)) ^ " = " ^
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   150
			 t ^ (Int.toString(n)) |
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   151
eq_string s t n (a::r) =
17465
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   152
 s ^ (Int.toString(n)) ^ " = " ^
93fc1211603f removed obsolete BasisLibrary;
wenzelm
parents: 17241
diff changeset
   153
 t ^ (Int.toString(n)) ^ " & " ^ (eq_string s t (n+1) r);
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   154
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   155
fun merge_var_and_type [] [] = "" |
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   156
merge_var_and_type (a::r) (b::s) = "(" ^ a ^ " ::" ^ b ^ ") " ^ (merge_var_and_type r s) |
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   157
merge_var_and_type _ _ = raise malformed;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   158
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   159
in
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   160
19349
36e537f89585 cleanup in typedef/datatype package
haftmann
parents: 18443
diff changeset
   161
fun mk_sim_oracle sign (subgoal, thl) = (
36e537f89585 cleanup in typedef/datatype package
haftmann
parents: 18443
diff changeset
   162
  let
36e537f89585 cleanup in typedef/datatype package
haftmann
parents: 18443
diff changeset
   163
    val weak_case_congs = (map (#weak_case_cong o snd) o Symtab.dest o DatatypePackage.get_datatypes) sign;
36e537f89585 cleanup in typedef/datatype package
haftmann
parents: 18443
diff changeset
   164
    val concl = Logic.strip_imp_concl subgoal;
36e537f89585 cleanup in typedef/datatype package
haftmann
parents: 18443
diff changeset
   165
    val ic_str = delete_ul_string(Sign.string_of_term sign (IntC sign concl));
36e537f89585 cleanup in typedef/datatype package
haftmann
parents: 18443
diff changeset
   166
    val ia_str = delete_ul_string(Sign.string_of_term sign (IntA sign concl));
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   167
	val sc_str = delete_ul_string(Sign.string_of_term sign (StartC sign concl));	
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   168
	val sa_str = delete_ul_string(Sign.string_of_term sign (StartA sign concl));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   169
	val tc_str = delete_ul_string(Sign.string_of_term sign (TransC sign concl));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   170
	val ta_str = delete_ul_string(Sign.string_of_term sign (TransA sign concl));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   171
	
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   172
	val action_type_str =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   173
	Sign.string_of_typ sign (element_type(#T (rep_cterm(cterm_of sign (IntA sign concl)))));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   174
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   175
	val abs_state_type_list =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   176
	type_list_of sign (element_type(#T (rep_cterm(cterm_of sign (StartA sign concl)))));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   177
	val con_state_type_list =
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   178
	type_list_of sign (element_type(#T (rep_cterm(cterm_of sign (StartC sign concl)))));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   179
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   180
	val tupel_eq = eq_string "s" "t" 0 abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   181
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   182
	val abs_pre_tupel_typed = tupel_typed_of sign "s" 0 abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   183
	val abs_s_t_tupel_typed = double_tupel_typed_of sign "s" "t" 0 abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   184
	val con_pre_tupel_typed = tupel_typed_of sign "cs" 0 con_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   185
	val con_s_t_tupel_typed = double_tupel_typed_of sign "cs" "ct" 0 con_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   186
	
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   187
	val abs_pre_tupel = tupel_of sign "s" 0 abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   188
	val abs_post_tupel = tupel_of sign "t" 0 abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   189
	val abs_s_t_tupel = double_tupel_of sign "s" "t" 0 abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   190
	val abs_s_u_tupel = double_tupel_of sign "s" "u" 0 abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   191
	val abs_u_t_tupel = double_tupel_of sign "u" "t" 0 abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   192
	val abs_u_v_tupel = double_tupel_of sign "u" "v" 0 abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   193
	val abs_v_t_tupel = double_tupel_of sign "v" "t" 0 abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   194
	val con_pre_tupel = tupel_of sign "cs" 0 con_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   195
        val con_post_tupel = tupel_of sign "ct" 0 con_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   196
	val con_s_t_tupel = double_tupel_of sign "cs" "ct" 0 con_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   197
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   198
        val abs_pre_varlist = varlist_of 0 "s" abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   199
        val abs_post_varlist = varlist_of 0 "t" abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   200
        val abs_u_varlist = varlist_of 0 "u" abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   201
        val abs_v_varlist = varlist_of 0 "v" abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   202
	val con_pre_varlist = varlist_of 0 "cs" con_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   203
        val con_post_varlist = varlist_of 0 "ct" con_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   204
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   205
        val abs_post_str = string_of abs_post_varlist;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   206
	val abs_u_str = string_of abs_u_varlist;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   207
	val con_post_str = string_of con_post_varlist;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   208
	
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   209
	val abs_pre_str_typed = merge_var_and_type abs_pre_varlist abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   210
	val abs_u_str_typed = merge_var_and_type abs_u_varlist abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   211
        val abs_v_str_typed = merge_var_and_type abs_v_varlist abs_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   212
	val con_pre_str_typed = merge_var_and_type con_pre_varlist con_state_type_list;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   213
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   214
	val abs_pre_tupel_struct = snd(
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   215
structured_tuple abs_pre_varlist (element_type(#T(rep_cterm(cterm_of sign (StartA sign concl))))));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   216
	val abs_post_tupel_struct = snd(
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   217
structured_tuple abs_post_varlist (element_type(#T(rep_cterm(cterm_of sign (StartA sign concl))))));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   218
	val con_pre_tupel_struct = snd(
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   219
structured_tuple con_pre_varlist (element_type(#T(rep_cterm(cterm_of sign (StartC sign concl))))));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   220
	val con_post_tupel_struct = snd(
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   221
structured_tuple con_post_varlist (element_type(#T(rep_cterm(cterm_of sign (StartC sign concl))))));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   222
in
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   223
(
17959
8db36a108213 OldGoals;
wenzelm
parents: 17465
diff changeset
   224
OldGoals.push_proof();
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
   225
Goal 
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   226
( "(Internal_of_A = (% a::(" ^ action_type_str ^ "). a:(" ^ ia_str^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   227
  "))) --> (Internal_of_C = (% a::(" ^ action_type_str ^ "). a:(" ^ ic_str ^ 
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   228
  "))) --> (Start_of_A = (% (" ^ abs_pre_tupel_typed ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   229
	"). (" ^ abs_pre_tupel_struct ^ "):(" ^ sa_str ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   230
  "))) --> (Start_of_C = (% (" ^ con_pre_tupel_typed ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   231
	"). (" ^ con_pre_tupel_struct ^ "):(" ^ sc_str ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   232
  "))) --> (Trans_of_A = (% (" ^ abs_s_t_tupel_typed ^ ") (a::(" ^ action_type_str ^ 
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   233
	")). ((" ^ abs_pre_tupel_struct ^ "),a,(" ^ abs_post_tupel_struct ^ ")):(" ^ ta_str ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   234
  "))) --> (Trans_of_C = (% (" ^ con_s_t_tupel_typed ^ ") (a::(" ^ action_type_str ^ 
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   235
	")). ((" ^ con_pre_tupel_struct ^ "),a,(" ^ con_post_tupel_struct ^ ")):(" ^ tc_str ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   236
  "))) --> (IntStep_of_A = (% (" ^ abs_s_t_tupel_typed ^ 
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   237
	"). ? (a::(" ^ action_type_str ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   238
	")). Internal_of_A a & Trans_of_A (" ^ abs_s_t_tupel ^ ") a" ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   239
  ")) --> (IntStepStar_of_A =  mu (% P (" ^ abs_s_t_tupel_typed ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   240
	 "). (" ^ tupel_eq ^ ") | (? " ^ abs_u_str ^ ". IntStep_of_A (" ^ abs_s_u_tupel ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   241
	 ") & P(" ^ abs_u_t_tupel ^ ")))" ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   242
  ") --> (Move_of_A = (% (" ^ abs_s_t_tupel_typed ^ ") (a::(" ^ action_type_str ^ 
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   243
	")). (Internal_of_C a & IntStepStar_of_A(" ^ abs_s_t_tupel ^ 
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   244
	")) | (? " ^ abs_u_str_typed ^ ". ? " ^ abs_v_str_typed ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   245
	". IntStepStar_of_A(" ^ abs_s_u_tupel ^ ") & " ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   246
	"Trans_of_A (" ^ abs_u_v_tupel ^ ") a  & IntStepStar_of_A(" ^ abs_v_t_tupel ^ "))" ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   247
  ")) --> (isSimCA = nu (% P (" ^ con_pre_tupel_typed ^ "," ^ abs_pre_tupel_typed ^ 
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   248
	"). (! (a::(" ^ action_type_str ^ ")) " ^ con_post_str ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   249
	". Trans_of_C (" ^ con_s_t_tupel ^ ") a  -->" ^ " (? " ^ abs_post_str ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   250
  ". Move_of_A (" ^ abs_s_t_tupel ^ ") a  & P(" ^ con_post_tupel ^ "," ^ abs_post_tupel ^ "))))" ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   251
 ") --> (! " ^ con_pre_str_typed ^ ". ! " ^ abs_pre_str_typed ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   252
	". (Start_of_C (" ^ con_pre_tupel ^ ") & Start_of_A (" ^ abs_pre_tupel ^
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   253
	")) --> isSimCA(" ^ con_pre_tupel ^ "," ^ abs_pre_tupel ^ "))");
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   254
by (REPEAT (rtac impI 1));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   255
by (REPEAT (dtac eq_reflection 1));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   256
(* Bis hierher wird im Kapitel 4 erl"autert, ab hier im Kapitel 5 *)
10128
98ddd0138cbf delcongs weak_case_congs;
wenzelm
parents: 7309
diff changeset
   257
by (full_simp_tac ((simpset() delcongs (if_weak_cong :: weak_case_congs)
7309
838a7bc92d81 delcongs [if_weak_cong];
wenzelm
parents: 7299
diff changeset
   258
                              delsimps [not_iff,split_part])
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   259
			      addsimps (thl @ comp_simps @ restrict_simps @ hide_simps @
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   260
                                        rename_simps @ ioa_simps @ asig_simps)) 1);
10128
98ddd0138cbf delcongs weak_case_congs;
wenzelm
parents: 7309
diff changeset
   261
by (full_simp_tac
98ddd0138cbf delcongs weak_case_congs;
wenzelm
parents: 7309
diff changeset
   262
  (Mucke_ss delcongs (if_weak_cong :: weak_case_congs) delsimps [not_iff,split_part]) 1);
98ddd0138cbf delcongs weak_case_congs;
wenzelm
parents: 7309
diff changeset
   263
by (REPEAT (if_full_simp_tac
98ddd0138cbf delcongs weak_case_congs;
wenzelm
parents: 7309
diff changeset
   264
  (simpset() delcongs (if_weak_cong :: weak_case_congs) delsimps [not_iff,split_part]) 1));
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
   265
by (call_mucke_tac 1);
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   266
(* Bis hierher wird im Kapitel 5 erl"autert, ab hier wieder im Kapitel 4 *)
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   267
by (atac 1);
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   268
result();
17959
8db36a108213 OldGoals;
wenzelm
parents: 17465
diff changeset
   269
OldGoals.pop_proof();
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   270
Logic.strip_imp_concl subgoal
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   271
)
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   272
end)
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   273
handle malformed =>
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   274
error("No suitable match to IOA types in " ^ (Sign.string_of_term sign subgoal));
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   275
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
   276
end