src/HOL/Tools/Predicate_Compile/predicate_compile_fun.ML
changeset 37135 636e6d8645d6
parent 36610 bafd82950e24
child 37591 d3daea901123
equal deleted inserted replaced
37123:9cce71cd4bf0 37135:636e6d8645d6
   177             in
   177             in
   178               flatten' f (names, prems)
   178               flatten' f (names, prems)
   179               |> maps (fn (res, (names, prems)) =>
   179               |> maps (fn (res, (names, prems)) =>
   180                 flatten' (betapply (g, res)) (names, prems))
   180                 flatten' (betapply (g, res)) (names, prems))
   181             end)
   181             end)
   182         | Const (@{const_name "split"}, _) => 
   182         | Const (@{const_name split}, _) => 
   183             (let
   183             (let
   184               val (_, g :: res :: args) = strip_comb t
   184               val (_, g :: res :: args) = strip_comb t
   185               val [res1, res2] = Name.variant_list names ["res1", "res2"]
   185               val [res1, res2] = Name.variant_list names ["res1", "res2"]
   186               val (T1, T2) = HOLogic.dest_prodT (fastype_of res)
   186               val (T1, T2) = HOLogic.dest_prodT (fastype_of res)
   187               val (resv1, resv2) = (Free (res1, T1), Free (res2, T2))
   187               val (resv1, resv2) = (Free (res1, T1), Free (res2, T2))