handler min { class java.lang.Integer; class IntUtil; constraint min(java.lang.Integer, java.lang.Integer, java.lang.Integer); rules { variable java.lang.Integer X; variable java.lang.Integer Y; variable java.lang.Integer Z; if(IntUtil.le(X, Y)) { min(X, Y, Z) } <=> { Z = X } x_le_y; if(IntUtil.le(Y, X)) { min(X, Y, Z) } <=> { Z = Y } y_le_x; if(IntUtil.lt(Z, X)) { min(X, Y, Z) } <=> { Z = Y } z_lt_x; if(IntUtil.lt(Z, Y)) { min(X, Y, Z) } <=> { Z = X } z_lt_y; }//end of rules goal min_1_2_X { variable java.lang.Integer X; min(1, 2, X) }//end of min_1_2_X goal min_X_2_1 { variable java.lang.Integer X; min(X, 2, 1) }//end of min_X_2_1 }//end of handler min