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