package jayhorn.solver.princess; import java.math.BigInteger; import ap.SimpleAPI$; import ap.parser.IExpression; import ap.parser.IExpression$; import ap.parser.IFormula; import ap.parser.IIntLit; import ap.parser.ITerm; import jayhorn.solver.BoolType; import jayhorn.solver.ProverType; class TermExpr extends PrincessProverExpr { protected final ProverType type; protected final ITerm term; TermExpr(ITerm term, ProverType type) { this.term = term; this.type = type; } @Override public String toString() { return SimpleAPI$.MODULE$.pp(term); } public ITerm toTerm() { return term; } public IFormula toFormula() { return IExpression$.MODULE$.eqZero(term); } public IExpression toExpression() { return term; } public boolean isBoolean() { return type == BoolType.INSTANCE; } public ProverType getType() { return type; } public BigInteger getIntLiteralValue() { if (term instanceof IIntLit) return new BigInteger(((IIntLit) term).value().toString()); throw new RuntimeException(); } public boolean getBooleanLiteralValue() { throw new RuntimeException(); } @Override public int hashCode() { return term.hashCode(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; TermExpr other = (TermExpr) obj; if (term == null) { if (other.term != null) return false; } else if (!term.equals(other.term)) return false; return true; } }