src/Pure/conv.ML
changeset 38668 e8236c4aff16
parent 36936 c52d1c130898
child 41248 bb28bf635202
equal deleted inserted replaced
38667:8494cb38cbf7 38668:e8236c4aff16
    46   val params_conv: int -> (Proof.context -> conv) -> Proof.context -> conv
    46   val params_conv: int -> (Proof.context -> conv) -> Proof.context -> conv
    47   val prems_conv: int -> conv -> conv
    47   val prems_conv: int -> conv -> conv
    48   val concl_conv: int -> conv -> conv
    48   val concl_conv: int -> conv -> conv
    49   val fconv_rule: conv -> thm -> thm
    49   val fconv_rule: conv -> thm -> thm
    50   val gconv_rule: conv -> int -> thm -> thm
    50   val gconv_rule: conv -> int -> thm -> thm
       
    51   val tap_thy: (theory -> conv) -> conv
    51 end;
    52 end;
    52 
    53 
    53 structure Conv: CONV =
    54 structure Conv: CONV =
    54 struct
    55 struct
    55 
    56 
   209         if Thm.is_reflexive eq then th
   210         if Thm.is_reflexive eq then th
   210         else Drule.with_subgoal i (fconv_rule (arg1_conv (K eq))) th
   211         else Drule.with_subgoal i (fconv_rule (arg1_conv (K eq))) th
   211       end
   212       end
   212   | NONE => raise THM ("gconv_rule", i, [th]));
   213   | NONE => raise THM ("gconv_rule", i, [th]));
   213 
   214 
       
   215 
       
   216 fun tap_thy conv ct = conv (Thm.theory_of_cterm ct) ct;
       
   217 
   214 end;
   218 end;
   215 
   219 
   216 structure Basic_Conv: BASIC_CONV = Conv;
   220 structure Basic_Conv: BASIC_CONV = Conv;
   217 open Basic_Conv;
   221 open Basic_Conv;