src/HOL/BNF/Tools/bnf_util.ML
changeset 49536 898aea2e7a94
parent 49510 ba50d204095e
child 49585 5c4a12550491
equal deleted inserted replaced
49535:e016736fbe0a 49536:898aea2e7a94
   100   val mk_ordLeq: term -> term -> term
   100   val mk_ordLeq: term -> term -> term
   101   val mk_rel_comp: term * term -> term
   101   val mk_rel_comp: term * term -> term
   102   val mk_subset: term -> term -> term
   102   val mk_subset: term -> term -> term
   103   val mk_wpull: term -> term -> term -> term -> term -> (term * term) option -> term -> term -> term
   103   val mk_wpull: term -> term -> term -> term -> term -> (term * term) option -> term -> term -> term
   104 
   104 
       
   105   val rapp: term -> term -> term
       
   106 
   105   val list_all_free: term list -> term -> term
   107   val list_all_free: term list -> term -> term
   106   val list_exists_free: term list -> term -> term
   108   val list_exists_free: term list -> term -> term
   107 
   109 
   108   (*parameterized terms*)
   110   (*parameterized terms*)
   109   val mk_nthN: int -> term -> int -> term
   111   val mk_nthN: int -> term -> int -> term
   502   let val T = (case xs of [] => defT | (x::_) => fastype_of x);
   504   let val T = (case xs of [] => defT | (x::_) => fastype_of x);
   503   in Const (@{const_name collect}, HOLogic.mk_setT T --> T) $ (HOLogic.mk_set T xs) end;
   505   in Const (@{const_name collect}, HOLogic.mk_setT T --> T) $ (HOLogic.mk_set T xs) end;
   504 
   506 
   505 fun mk_permute src dest xs = map (nth xs o (fn x => find_index ((curry op =) x) src)) dest;
   507 fun mk_permute src dest xs = map (nth xs o (fn x => find_index ((curry op =) x) src)) dest;
   506 
   508 
       
   509 fun rapp u t = betapply (t, u);
       
   510 
   507 val list_all_free =
   511 val list_all_free =
   508   fold_rev (fn free => fn P =>
   512   fold_rev (fn free => fn P =>
   509     let val (x, T) = Term.dest_Free free;
   513     let val (x, T) = Term.dest_Free free;
   510     in HOLogic.all_const T $ Term.absfree (x, T) P end);
   514     in HOLogic.all_const T $ Term.absfree (x, T) P end);
   511 
   515