Relation { public Relation not() { return new Relation(operator.not(), leftOperand, rightOperand); } Relation(Kind kind, SymbolicValue leftOperand, SymbolicValue rightOperand); private  Relation(Operator operator, SymbolicValue leftOperand, SymbolicValue rightOperand); Relation not(); boolean isCompatibleWith(Relation other); Set<SymbolicValue> operands(); SymbolicValue leftOperand(); SymbolicValue rightOperand(); Operator operator(); Optional<Boolean> applyNumericComparison(ProgramState state); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }
@Test public void not() { assertThat(relation(Kind.LESS_THAN, SV1, SV2).not()).isEqualTo(relation(Kind.GREATER_THAN_OR_EQUAL_TO, SV1, SV2)); assertThat(relation(Kind.EQUAL_TO, SV1, SV2).not()).isEqualTo(relation(Kind.NOT_EQUAL_TO, SV1, SV2)); assertThat(relation(Kind.STRICT_EQUAL_TO, SV1, SV2).not()).isEqualTo(relation(Kind.STRICT_NOT_EQUAL_TO, SV1, SV2)); }