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