src/Pure/General/set.ML
changeset 77836 9d124714a9e8
parent 77822 353c4d3e6dda
child 77875 9374e13655e8
equal deleted inserted replaced
77835:c18c0dbefd55 77836:9d124714a9e8
    21   val exists: (elem -> bool) -> T -> bool
    21   val exists: (elem -> bool) -> T -> bool
    22   val forall: (elem -> bool) -> T -> bool
    22   val forall: (elem -> bool) -> T -> bool
    23   val get_first: (elem -> 'a option) -> T -> 'a option
    23   val get_first: (elem -> 'a option) -> T -> 'a option
    24   val member: T -> elem -> bool
    24   val member: T -> elem -> bool
    25   val subset: T * T -> bool
    25   val subset: T * T -> bool
       
    26   val eq_set: T * T -> bool
    26   val ord: T ord
    27   val ord: T ord
    27   val insert: elem -> T -> T
    28   val insert: elem -> T -> T
    28   val make: elem list -> T
    29   val make: elem list -> T
    29   val merge: T * T -> T
    30   val merge: T * T -> T
    30   val merges: T list -> T
    31   val merges: T list -> T
   275 
   276 
   276 
   277 
   277 (* subset and order *)
   278 (* subset and order *)
   278 
   279 
   279 fun subset (set1, set2) = forall (member set2) set1;
   280 fun subset (set1, set2) = forall (member set2) set1;
       
   281 
       
   282 fun eq_set (set1, set2) =
       
   283   pointer_eq (set1, set2) orelse size set1 = size set2 andalso subset (set1, set2);
   280 
   284 
   281 val ord =
   285 val ord =
   282   pointer_eq_ord (fn sets =>
   286   pointer_eq_ord (fn sets =>
   283     (case int_ord (apply2 size sets) of
   287     (case int_ord (apply2 size sets) of
   284       EQUAL =>
   288       EQUAL =>