diff --git a/src/lib/reif.pl b/src/lib/reif.pl
index 55618e84..a38ec5f5 100644
--- a/src/lib/reif.pl
+++ b/src/lib/reif.pl
@@ -12,10 +12,11 @@ Example:
 */
 
 :- module(reif, [if_/3, (=)/3, (',')/3, (;)/3, cond_t/3, dif/3,
-		         memberd_t/3, tfilter/3, tmember/2, tmember_t/3,
-		         tpartition/4]).
+		         memberd_t/3, tfilter/3, list_comp/3, list_comp/4,
+		         tmember/2, tmember_t/3, tpartition/4]).
 
 :- use_module(library(dif)).
+:- use_module(library(lists), [maplist/3]).
 
 :- meta_predicate(if_(1, 0, 0)).
 
@@ -42,12 +43,21 @@ non(true, false).
 non(false, true).
 
 :- meta_predicate(tfilter(2, ?, ?)).
+:- meta_predicate(list_comp(?, 2, ?)).
+:- meta_predicate(list_comp(?, 2, 2, ?)).
 
 tfilter(_, [], []).
 tfilter(C_2, [E|Es], Fs0) :-
    if_(call(C_2, E), Fs0 = [E|Fs], Fs0 = Fs),
    tfilter(C_2, Es, Fs).
 
+list_comp(Domain, Test_2, List) :-
+   tfilter(Test_2, Domain, List).
+
+list_comp(Domain, Test_2, Map_2, List) :-
+   tfilter(Test_2, Domain, Filtered),
+   maplist(Map_2, Filtered, List).
+
 :- meta_predicate(tpartition(2, ?, ?, ?)).
 
 tpartition(P_2, Xs, Ts, Fs) :-

diff --git a/src/lib/clpz.pl b/src/lib/clpz.pl
index 35b16aa8..035f5e46 100644
--- a/src/lib/clpz.pl
+++ b/src/lib/clpz.pl
@@ -101,6 +101,11 @@
                  fd_size/2,
                  fd_dom/2,
 
+                 % reification helpers
+                 if_/3,
+                 list_comp/3,
+                 list_comp/4,
+
                  % for use in predicates from library(reif)
                  clpz_t/2,
                  (#=)/3,
@@ -126,6 +131,7 @@
 :- use_module(library(arithmetic)).
 :- use_module(library(debug)).
 :- use_module(library(format)).
+:- use_module(library(reif), []).
 
 % :- use_module(library(types)).
 
@@ -196,6 +202,23 @@ domain_error(Expectation, Term) :-
 type_error(Expectation, Term) :-
         type_error(Expectation, Term, unknown(Term)-1).
 
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+  Reification helpers (from library(reif)).
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+:- meta_predicate(if_(1, 0, 0)).
+:- meta_predicate(list_comp(?, 2, ?)).
+:- meta_predicate(list_comp(?, 2, 2, ?)).
+
+if_(If_1, Then_0, Else_0) :-
+        reif:if_(If_1, Then_0, Else_0).
+
+list_comp(Domain, Test_2, List) :-
+        reif:list_comp(Domain, Test_2, List).
+
+list_comp(Domain, Test_2, Map_2, List) :-
+        reif:list_comp(Domain, Test_2, Map_2, List).
+
 
 :- meta_predicate(partition(1, ?, ?, ?)).
 
