src/HOLCF/IOA/Modelcheck/MuIOAOracle.ML
author wenzelm
Thu, 07 Apr 2005 09:25:33 +0200
changeset 15661 9ef583b08647
parent 15570 8d8c70b41bab
child 16152 7294283b0c45
permissions -rw-r--r--
reverted renaming of Some/None in comments and strings;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     1
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     2
(* call_sim_tac invokes oracle "Sim" *)
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
     3
fun call_sim_tac thm_list i state = 
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     4
let val sign = #sign (rep_thm state);
15570
8d8c70b41bab Move towards standard functions.
skalberg
parents: 7299
diff changeset
     5
        val (subgoal::_) = Library.drop(i-1,prems_of state);
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
     6
        val OraAss = invoke_oracle MuIOAOracle.thy "Sim" (sign,SimOracleExn (subgoal,thm_list));
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     7
in
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     8
(cut_facts_tac [OraAss] i) state
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     9
end;
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    10
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    11
(* is_sim_tac makes additionally to call_sim_tac some simplifications,
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    12
	which are suitable for implementation realtion formulas *)
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    13
fun is_sim_tac thm_list i state =
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    14
let val sign = #sign (rep_thm state);
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    15
in
15570
8d8c70b41bab Move towards standard functions.
skalberg
parents: 7299
diff changeset
    16
case Library.drop(i-1,prems_of state) of
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    17
        [] => PureGeneral.Seq.empty |
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    18
        subgoal::_ => EVERY[REPEAT(etac thin_rl i),
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    19
                        simp_tac (simpset() addsimps [ioa_implements_def]) i,
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    20
                        rtac conjI i,
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    21
                        rtac conjI (i+1),
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    22
			TRY(call_sim_tac thm_list (i+2)),
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    23
			TRY(atac (i+2)), 
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    24
                        REPEAT(rtac refl (i+2)),
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    25
	 		simp_tac (simpset() addsimps (thm_list @
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    26
				comp_simps @ restrict_simps @ hide_simps @
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    27
				rename_simps @  ioa_simps @ asig_simps)) (i+1),
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    28
		 	simp_tac (simpset() addsimps (thm_list @
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    29
				comp_simps @ restrict_simps @ hide_simps @
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    30
				rename_simps @ ioa_simps @ asig_simps)) (i)] state
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    31
end;