:- module ho_constrained_poly_inst. :- interface. :- inst b == (pred(in) is semidet). :- pred p1(pred(int)::in(b)) is semidet. :- pred p2(pred(int)::in(I)) is semidet <= I =< b. :- implementation. p1(X) :- X(42). % works p2(X) :- X(42). % does not work