fix #4: implement negation matching logic