package jayhorn.solver.spacer; import java.math.BigInteger; import com.microsoft.z3.Expr; import com.microsoft.z3.Z3Exception; import com.microsoft.z3.enumerations.Z3_lbool; import jayhorn.solver.ProverExpr; import jayhorn.solver.ProverType; class SpacerTermExpr implements ProverExpr { protected final ProverType type; protected final Expr term; SpacerTermExpr(Expr expr, ProverType type) { this.term = expr; this.type = type; } public String toString() { return term.toString(); } public ProverType getType() { return type; } /** * Unpack the Z3 Expr * @return Z3 Expr for this TermExpr */ public Expr getExpr() { return this.term; } public BigInteger getIntLiteralValue() { throw new RuntimeException(); } public boolean getBooleanLiteralValue() { try { return this.term.getBoolValue()==Z3_lbool.Z3_L_TRUE; } catch (Z3Exception e) { throw new RuntimeException(e.getMessage()); } } public int hashCode() { return term.hashCode(); } public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; SpacerTermExpr other = (SpacerTermExpr) obj; if (term == null) { if (other.term != null) return false; } else if (!term.equals(other.term)) return false; return true; } }