equal
deleted
inserted
replaced
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 |