src/HOL/Tools/TFL/rules.ML
changeset 55411 27de2c976d90
parent 55236 8d61b0aa7a0d
child 56245 84fc7dfa3cd4
equal deleted inserted replaced
55410:54b09e82b9e1 55411:27de2c976d90
   576 
   576 
   577 
   577 
   578 local fun dest_pair M = let val {fst,snd} = USyntax.dest_pair M in (fst,snd) end
   578 local fun dest_pair M = let val {fst,snd} = USyntax.dest_pair M in (fst,snd) end
   579       fun mk_fst tm =
   579       fun mk_fst tm =
   580           let val ty as Type(@{type_name Product_Type.prod}, [fty,sty]) = type_of tm
   580           let val ty as Type(@{type_name Product_Type.prod}, [fty,sty]) = type_of tm
   581           in  Const ("Product_Type.fst", ty --> fty) $ tm  end
   581           in  Const (@{const_name Product_Type.fst}, ty --> fty) $ tm  end
   582       fun mk_snd tm =
   582       fun mk_snd tm =
   583           let val ty as Type(@{type_name Product_Type.prod}, [fty,sty]) = type_of tm
   583           let val ty as Type(@{type_name Product_Type.prod}, [fty,sty]) = type_of tm
   584           in  Const ("Product_Type.snd", ty --> sty) $ tm  end
   584           in  Const (@{const_name Product_Type.snd}, ty --> sty) $ tm  end
   585 in
   585 in
   586 fun XFILL tych x vstruct =
   586 fun XFILL tych x vstruct =
   587   let fun traverse p xocc L =
   587   let fun traverse p xocc L =
   588         if (is_Free p)
   588         if (is_Free p)
   589         then tych xocc::L
   589         then tych xocc::L