src/Provers/classical.ML
changeset 4646 f6298426f5a7
parent 4625 9c6082518cfb
child 4651 70dd492a1698
equal deleted inserted replaced
4645:f5f957ab73eb 4646:f6298426f5a7
   203     end;
   203     end;
   204 
   204 
   205 (*Duplication of hazardous rules, for complete provers*)
   205 (*Duplication of hazardous rules, for complete provers*)
   206 fun dup_intr th = zero_var_indexes (th RS classical);
   206 fun dup_intr th = zero_var_indexes (th RS classical);
   207 
   207 
   208 fun dup_elim th = th RSN (2, revcut_rl) |> assumption 2 |> Seq.hd |> 
   208 fun dup_elim th = 
   209                   rule_by_tactic (TRYALL (etac revcut_rl));
   209     th RSN (2, revcut_rl) |> assumption 2 |> Seq.hd |> 
       
   210     rule_by_tactic (TRYALL (etac revcut_rl))
       
   211     handle _ => error ("Bad format for elimination rule\n" ^ string_of_thm th);
   210 
   212 
   211 
   213 
   212 (**** Classical rule sets ****)
   214 (**** Classical rule sets ****)
   213 
   215 
   214 datatype claset =
   216 datatype claset =
   217 	 hazIs		: thm list,		(*unsafe introduction rules*)
   219 	 hazIs		: thm list,		(*unsafe introduction rules*)
   218 	 hazEs		: thm list,		(*unsafe elimination rules*)
   220 	 hazEs		: thm list,		(*unsafe elimination rules*)
   219 	 uwrapper	: (int -> tactic) ->
   221 	 uwrapper	: (int -> tactic) ->
   220 			  (int -> tactic),	(*for transforming step_tac*)
   222 			  (int -> tactic),	(*for transforming step_tac*)
   221 	 swrapper	: (int -> tactic) ->
   223 	 swrapper	: (int -> tactic) ->
   222 			  (int -> tactic),	(*for transform. safe_step_tac*)
   224 			  (int -> tactic),	(*for safe_step_tac*)
   223 	 safe0_netpair	: netpair,		(*nets for trivial cases*)
   225 	 safe0_netpair	: netpair,		(*nets for trivial cases*)
   224 	 safep_netpair	: netpair,		(*nets for >0 subgoals*)
   226 	 safep_netpair	: netpair,		(*nets for >0 subgoals*)
   225 	 haz_netpair  	: netpair,		(*nets for unsafe rules*)
   227 	 haz_netpair  	: netpair,		(*nets for unsafe rules*)
   226 	 dup_netpair	: netpair};		(*nets for duplication*)
   228 	 dup_netpair	: netpair};		(*nets for duplication*)
   227 
   229