src/Provers/splitter.ML
changeset 33317 b4534348b8fd
parent 33245 65232054ffd0
child 33955 fff6f11b1f09
equal deleted inserted replaced
33316:6a72af4e84b8 33317:b4534348b8fd
   190 
   190 
   191 fun mk_split_pack (thm, T: typ, T', n, ts, apsns, pos, TB, t) =
   191 fun mk_split_pack (thm, T: typ, T', n, ts, apsns, pos, TB, t) =
   192   if n > length ts then []
   192   if n > length ts then []
   193   else let val lev = length apsns
   193   else let val lev = length apsns
   194            val lbnos = fold add_lbnos (Library.take (n, ts)) []
   194            val lbnos = fold add_lbnos (Library.take (n, ts)) []
   195            val flbnos = List.filter (fn i => i < lev) lbnos
   195            val flbnos = filter (fn i => i < lev) lbnos
   196            val tt = incr_boundvars (~lev) t
   196            val tt = incr_boundvars (~lev) t
   197        in if null flbnos then
   197        in if null flbnos then
   198             if T = T' then [(thm,[],pos,TB,tt)] else []
   198             if T = T' then [(thm,[],pos,TB,tt)] else []
   199           else if type_test(T,flbnos,apsns) then [(thm, rev apsns,pos,TB,tt)]
   199           else if type_test(T,flbnos,apsns) then [(thm, rev apsns,pos,TB,tt)]
   200                else []
   200                else []