562 fun add_term_consts (Const (c, _), cs) = c ins cs |
562 fun add_term_consts (Const (c, _), cs) = c ins cs |
563 | add_term_consts (t $ u, cs) = add_term_consts (t, add_term_consts (u, cs)) |
563 | add_term_consts (t $ u, cs) = add_term_consts (t, add_term_consts (u, cs)) |
564 | add_term_consts (Abs (_, _, t), cs) = add_term_consts (t, cs) |
564 | add_term_consts (Abs (_, _, t), cs) = add_term_consts (t, cs) |
565 | add_term_consts (_, cs) = cs; |
565 | add_term_consts (_, cs) = cs; |
566 |
566 |
|
567 fun exists_Const P t = let |
|
568 fun ex (Const c ) = P c |
|
569 | ex (t $ u ) = ex t orelse ex u |
|
570 | ex (Abs (_, _, t)) = ex t |
|
571 | ex _ = false |
|
572 in ex t end; |
567 |
573 |
568 (*map classes, tycons*) |
574 (*map classes, tycons*) |
569 fun map_typ f g (Type (c, Ts)) = Type (g c, map (map_typ f g) Ts) |
575 fun map_typ f g (Type (c, Ts)) = Type (g c, map (map_typ f g) Ts) |
570 | map_typ f _ (TFree (x, S)) = TFree (x, map f S) |
576 | map_typ f _ (TFree (x, S)) = TFree (x, map f S) |
571 | map_typ f _ (TVar (xi, S)) = TVar (xi, map f S); |
577 | map_typ f _ (TVar (xi, S)) = TVar (xi, map f S); |