equal
deleted
inserted
replaced
76 Table (if Table.defined tab x then tab else Table.update_new (x, Table.size tab + 1) tab); |
76 Table (if Table.defined tab x then tab else Table.update_new (x, Table.size tab + 1) tab); |
77 |
77 |
78 fun make_set xs = build (fold add_set xs); |
78 fun make_set xs = build (fold add_set xs); |
79 |
79 |
80 fun subset (A: set, B: set) = forall (defined B o #1) A; |
80 fun subset (A: set, B: set) = forall (defined B o #1) A; |
81 fun eq_set (A: set, B: set) = size A = size B andalso subset (A, B); |
81 fun eq_set (A: set, B: set) = pointer_eq (A, B) orelse size A = size B andalso subset (A, B); |
82 |
82 |
83 fun list_set_ord ord (Table tab) = tab |> Table.dest |> sort (ord o apply2 #2) |> map #1; |
83 fun list_set_ord ord (Table tab) = tab |> Table.dest |> sort (ord o apply2 #2) |> map #1; |
84 val list_set = list_set_ord int_ord; |
84 val list_set = list_set_ord int_ord; |
85 val list_set_rev = list_set_ord (rev_order o int_ord); |
85 val list_set_rev = list_set_ord (rev_order o int_ord); |
86 |
86 |