src/ZF/Tools/cartprod.ML
changeset 59626 a6e977d8b070
parent 59621 291934bac95e
child 60642 48dd1cefb4ae
equal deleted inserted replaced
59625:aacdce52b2fc 59626:a6e977d8b070
   104 
   104 
   105 (*Uncurries any Var according to its "pseudo-product type" T1 in the rule*)
   105 (*Uncurries any Var according to its "pseudo-product type" T1 in the rule*)
   106 fun split_rule_var ctxt (Var(v,_), Type("fun",[T1,T2]), rl) =
   106 fun split_rule_var ctxt (Var(v,_), Type("fun",[T1,T2]), rl) =
   107       let val T' = factors T1 ---> T2
   107       let val T' = factors T1 ---> T2
   108           val newt = ap_split T1 T2 (Var(v,T'))
   108           val newt = ap_split T1 T2 (Var(v,T'))
   109           val cterm = Thm.global_cterm_of (Thm.theory_of_thm rl)
       
   110       in
   109       in
   111           remove_split ctxt (Drule.instantiate_normalize ([], [(cterm (Var(v, Ind_Syntax.iT-->T2)), 
   110         remove_split ctxt
   112                                            cterm newt)]) rl)
   111           (Drule.instantiate_normalize ([],
       
   112             [apply2 (Thm.cterm_of ctxt) (Var(v, Ind_Syntax.iT-->T2), newt)]) rl)
   113       end
   113       end
   114   | split_rule_var _ (t,T,rl) = rl;
   114   | split_rule_var _ (t,T,rl) = rl;
   115 
   115 
   116 end;
   116 end;
   117 
   117