[m-rev.] diff: add a predicate version of set_ctree234.power_intersect/2

Julien Fischer jfischer at opturion.com
Sat Jan 24 02:10:40 AEDT 2026


Add a predicate version of set_ctree234.power_intersect/2.

library/set_ctree234.m:
    As above (all of the other set*.m modules provide this).

NEWS.md:
    Announce the addition

Julien.

diff --git a/NEWS.md b/NEWS.md
index 0eb5aa3f6..35cfd5fcc 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -989,6 +989,7 @@ Changes to the Mercury standard library

     - func `from_sorted_list/1`
     - pred `nondet_member/2`
+    - pred `power_intersect/2`
     - func `ucount/1`

 * The following predicate has been marked obsolete:
diff --git a/library/set_ctree234.m b/library/set_ctree234.m
index b6c5b710f..c02d4e572 100644
--- a/library/set_ctree234.m
+++ b/library/set_ctree234.m
@@ -227,10 +227,12 @@
     %
 :- func intersect_list(list(set_ctree234(T))) = set_ctree234(T).

-    % power_intersect(A) = B is true if-and-only-if B is the intersection
+    % power_intersect(A, B) is true if-and-only-if B is the intersection
     % of all the sets in A.
     %
 :- func power_intersect(set_ctree234(set_ctree234(T))) = set_ctree234(T).
+:- pred power_intersect(set_ctree234(set_ctree234(T))::in,
+    set_ctree234(T)::out) is det.

     % difference(SetA, SetB, Set) is true if-and-only-if
     % Set is the set containing all the elements of SetA
@@ -2391,6 +2393,9 @@ intersect_list(Sets) = IntersectSet :-
     IntersectSet = sorted_list_to_set(IntersectList).

 power_intersect(Sets) = IntersectSet :-
+    power_intersect(Sets, IntersectSet).
+
+power_intersect(Sets, IntersectSet) :-
     IntersectSet = intersect_list(to_sorted_list(Sets)).

 %---------------------%


More information about the reviews mailing list