src/HOL/Product_Type.thy
changeset 56245 84fc7dfa3cd4
parent 56218 1c3f1f2431f9
child 56512 9276da80f7c3
equal deleted inserted replaced
56244:3298b7a2795a 56245:84fc7dfa3cd4
   455 lemmas split_tupled_all = split_paired_all unit_all_eq2
   455 lemmas split_tupled_all = split_paired_all unit_all_eq2
   456 
   456 
   457 ML {*
   457 ML {*
   458   (* replace parameters of product type by individual component parameters *)
   458   (* replace parameters of product type by individual component parameters *)
   459   local (* filtering with exists_paired_all is an essential optimization *)
   459   local (* filtering with exists_paired_all is an essential optimization *)
   460     fun exists_paired_all (Const ("all", _) $ Abs (_, T, t)) =
   460     fun exists_paired_all (Const (@{const_name Pure.all}, _) $ Abs (_, T, t)) =
   461           can HOLogic.dest_prodT T orelse exists_paired_all t
   461           can HOLogic.dest_prodT T orelse exists_paired_all t
   462       | exists_paired_all (t $ u) = exists_paired_all t orelse exists_paired_all u
   462       | exists_paired_all (t $ u) = exists_paired_all t orelse exists_paired_all u
   463       | exists_paired_all (Abs (_, _, t)) = exists_paired_all t
   463       | exists_paired_all (Abs (_, _, t)) = exists_paired_all t
   464       | exists_paired_all _ = false;
   464       | exists_paired_all _ = false;
   465     val ss =
   465     val ss =