@Test void test_not_equals_is_not_transitive() throws Exception { RelationalSymbolicValue aNEb = relationalSV(Tree.Kind.NOT_EQUAL_TO, a, b); RelationalSymbolicValue bNEc = relationalSV(Tree.Kind.NOT_EQUAL_TO, b, c); RelationalSymbolicValue relation = aNEb.deduceTransitiveOrSimplified(bNEc); assertThat(relation).isNull(); }
@VisibleForTesting RelationalSymbolicValue deduceTransitiveOrSimplified(RelationalSymbolicValue other) { RelationalSymbolicValue result = simplify(other); if (result != null) { return result; } return combineTransitively(other); }
RelationalSymbolicValue extends BinarySymbolicValue { @VisibleForTesting RelationalSymbolicValue deduceTransitiveOrSimplified(RelationalSymbolicValue other) { RelationalSymbolicValue result = simplify(other); if (result != null) { return result; } return combineTransitively(other); } }
RelationalSymbolicValue extends BinarySymbolicValue { @VisibleForTesting RelationalSymbolicValue deduceTransitiveOrSimplified(RelationalSymbolicValue other) { RelationalSymbolicValue result = simplify(other); if (result != null) { return result; } return combineTransitively(other); } RelationalSymbolicValue(Kind kind); @VisibleForTesting  RelationalSymbolicValue(Kind kind, SymbolicValue leftOp, SymbolicValue rightOp); }
RelationalSymbolicValue extends BinarySymbolicValue { @VisibleForTesting RelationalSymbolicValue deduceTransitiveOrSimplified(RelationalSymbolicValue other) { RelationalSymbolicValue result = simplify(other); if (result != null) { return result; } return combineTransitively(other); } RelationalSymbolicValue(Kind kind); @VisibleForTesting  RelationalSymbolicValue(Kind kind, SymbolicValue leftOp, SymbolicValue rightOp); @Override List<ProgramState> setConstraint(ProgramState initialProgramState, BooleanConstraint booleanConstraint); @Override boolean equals(Object o); boolean isEquality(); @Override int hashCode(); @Override String toString(); @VisibleForTesting Kind kind(); }
RelationalSymbolicValue extends BinarySymbolicValue { @VisibleForTesting RelationalSymbolicValue deduceTransitiveOrSimplified(RelationalSymbolicValue other) { RelationalSymbolicValue result = simplify(other); if (result != null) { return result; } return combineTransitively(other); } RelationalSymbolicValue(Kind kind); @VisibleForTesting  RelationalSymbolicValue(Kind kind, SymbolicValue leftOp, SymbolicValue rightOp); @Override List<ProgramState> setConstraint(ProgramState initialProgramState, BooleanConstraint booleanConstraint); @Override boolean equals(Object o); boolean isEquality(); @Override int hashCode(); @Override String toString(); @VisibleForTesting Kind kind();  }