[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