Made the pseudo-type of split_rule_var a separate argument
authorpaulson
Thu, 05 Jun 1997 13:14:52 +0200
changeset 3397 3e2b8d0de2a0
parent 3396 aa74c71c3982
child 3398 dfd9cbad5530
Made the pseudo-type of split_rule_var a separate argument
src/ZF/cartprod.ML
--- a/src/ZF/cartprod.ML	Wed Jun 04 16:03:54 1997 +0200
+++ b/src/ZF/cartprod.ML	Thu Jun 05 13:14:52 1997 +0200
@@ -27,7 +27,7 @@
   val pseudo_type : term -> typ
   val remove_split : thm -> thm
   val split_const : typ -> term
-  val split_rule_var : term * thm -> thm
+  val split_rule_var : term * typ * thm -> thm
   end;
 
 
@@ -75,8 +75,8 @@
 (*Attempts to remove occurrences of split, and pair-valued parameters*)
 val remove_split = rewrite_rule [Pr.split_eq];
 
-(*Uncurries any Var involving pseudo-product type T1 in the rule*)
-fun split_rule_var (t as Var(v, Type("fun",[T1,T2])), rl) =
+(*Uncurries any Var according to its "pseudo-product type" T1 in the rule*)
+fun split_rule_var (Var(v,_), Type("fun",[T1,T2]), rl) =
       let val T' = factors T1 ---> T2
           val newt = ap_split T1 T2 (Var(v,T'))
           val cterm = Thm.cterm_of (#sign(rep_thm rl))
@@ -84,7 +84,7 @@
           remove_split (instantiate ([], [(cterm (Var(v, Ind_Syntax.iT-->T2)), 
                                            cterm newt)]) rl)
       end
-  | split_rule_var (t,rl) = rl;
+  | split_rule_var (t,T,rl) = rl;
 
 end;