Hello! One test nitpick:
+SELECT istrue IMPLIES isnul IS NULL FROM booltbl4; istrue IMPLIES (isnul IS NULL) and (istrue IMPLIES isnul) IS NULL are both true. isfalse wouldn't have the same issue. %left INTERSECT +%right IMPLIES %left OR And +1 for using %nonassoc instead That way "a IMPLIES b IMPLIES c" would be a syntax error, leaving open the later possibility of making it right associative. The other way of going with right, and then restricting it later doesn't seem that clean, even with documenting it, as right associative use can appear as text in plpgsql bodies and similar.
