src/HOL/Tools/ATP/atp_util.ML
changeset 46385 0ccf458a3633
parent 45896 100fb1f33e3e
child 46711 f745bcc4a1e5
equal deleted inserted replaced
46384:90be435411f0 46385:0ccf458a3633
    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