src/Pure/logic.ML
changeset 16846 bbebc68a7faf
parent 16130 38b111451155
child 16862 6cb403552988
equal deleted inserted replaced
16845:bedf7b5fb781 16846:bbebc68a7faf
     3     Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
     3     Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
     4     Copyright   Cambridge University 1992
     4     Copyright   Cambridge University 1992
     5 
     5 
     6 Abstract syntax operations of the Pure meta-logic.
     6 Abstract syntax operations of the Pure meta-logic.
     7 *)
     7 *)
     8 
       
     9 infix occs;
       
    10 
     8 
    11 signature LOGIC =
     9 signature LOGIC =
    12 sig
    10 sig
    13   val is_all            : term -> bool
    11   val is_all            : term -> bool
    14   val mk_equals         : term * term -> term
    12   val mk_equals         : term * term -> term
   177 
   175 
   178 (*** Low-level term operations ***)
   176 (*** Low-level term operations ***)
   179 
   177 
   180 (*Does t occur in u?  Or is alpha-convertible to u?
   178 (*Does t occur in u?  Or is alpha-convertible to u?
   181   The term t must contain no loose bound variables*)
   179   The term t must contain no loose bound variables*)
   182 fun t occs u = exists_subterm (fn s => t aconv s) u;
   180 fun occs (t, u) = exists_subterm (fn s => t aconv s) u;
   183 
   181 
   184 (*Close up a formula over all free variables by quantification*)
   182 (*Close up a formula over all free variables by quantification*)
   185 fun close_form A =
   183 fun close_form A =
   186   list_all_free (sort_wrt fst (map dest_Free (term_frees A)), A);
   184   list_all_free (sort_wrt fst (map dest_Free (term_frees A)), A);
   187 
   185