I want the user to be able to do something like this

(column1 has changed AND column2 has not changed) OR (column 3 has changed)

A couple of ideas I had to let the user express this:

C Style:
(column1(CHANGED) AND column2(NOT_CHANGED)) OR (column3(CHANGED)

Postfix:

OR, AND, CHANGED, column1, NOT_CHANGED, column2, column 3

Let the user connect nodes in a graph view. Two or more links means OR, one link means AND.

-------- -----------------------
|Start|---->| column1 (Changed |-----> (etc)
______ -------------------------

However, these are a lot of work. I was wondering if anyone had any suggestions. Maybe there is a library or built-in feature for something like this already?