29 val s_not : term -> term |
29 val s_not : term -> term |
30 val s_conj : term * term -> term |
30 val s_conj : term * term -> term |
31 val s_disj : term * term -> term |
31 val s_disj : term * term -> term |
32 val s_imp : term * term -> term |
32 val s_imp : term * term -> term |
33 val s_iff : term * term -> term |
33 val s_iff : term * term -> term |
|
34 val close_form_prefix : string |
34 val close_form : term -> term |
35 val close_form : term -> term |
35 val monomorphic_term : Type.tyenv -> term -> term |
36 val monomorphic_term : Type.tyenv -> term -> term |
36 val eta_expand : typ list -> term -> int -> term |
37 val eta_expand : typ list -> term -> int -> term |
37 val transform_elim_prop : term -> term |
38 val transform_elim_prop : term -> term |
38 val specialize_type : theory -> (string * typ) -> term -> term |
39 val specialize_type : theory -> (string * typ) -> term -> term |
262 | s_imp p = HOLogic.mk_imp p |
263 | s_imp p = HOLogic.mk_imp p |
263 fun s_iff (@{const True}, t2) = t2 |
264 fun s_iff (@{const True}, t2) = t2 |
264 | s_iff (t1, @{const True}) = t1 |
265 | s_iff (t1, @{const True}) = t1 |
265 | s_iff (t1, t2) = HOLogic.eq_const HOLogic.boolT $ t1 $ t2 |
266 | s_iff (t1, t2) = HOLogic.eq_const HOLogic.boolT $ t1 $ t2 |
266 |
267 |
|
268 val close_form_prefix = "ATP.close_form." |
|
269 |
267 fun close_form t = |
270 fun close_form t = |
268 fold (fn ((s, i), T) => fn t' => |
271 fold (fn ((s, i), T) => fn t' => |
269 HOLogic.all_const T |
272 HOLogic.all_const T |
270 $ Abs (s, T, abstract_over (Var ((s, i), T), t'))) |
273 $ Abs (close_form_prefix ^ s, T, |
|
274 abstract_over (Var ((s, i), T), t'))) |
271 (Term.add_vars t []) t |
275 (Term.add_vars t []) t |
272 |
276 |
273 fun monomorphic_term subst = |
277 fun monomorphic_term subst = |
274 map_types (map_type_tvar (fn v => |
278 map_types (map_type_tvar (fn v => |
275 case Type.lookup subst v of |
279 case Type.lookup subst v of |