/** * */ package jayhorn.solver.spacer; import java.math.BigInteger; import java.util.LinkedList; import java.util.List; import jayhorn.solver.BoolType; import jayhorn.solver.ProverExpr; import jayhorn.solver.ProverFun; import jayhorn.solver.ProverHornClause; import jayhorn.solver.ProverType; /** * @author schaef * */ public class SpacerHornExpr implements ProverHornClause { private final ProverExpr head; private final List<ProverExpr> body; private final ProverExpr constraint; public SpacerHornExpr(ProverExpr head, ProverExpr[] body, ProverExpr constraint) { this.head = head; this.body = new LinkedList<ProverExpr>(); for (int i=0;i<body.length; i++) { this.body.add(body[i]); } this.constraint = constraint; } public ProverExpr getHead() { return this.head; } public ProverExpr[] getBody() { return this.body.toArray(new ProverExpr[this.body.size()]); } public ProverExpr getConstraint() { return this.constraint; } /* * (non-Javadoc) * * @see jhorn.solver.ProverExpr#getType() */ @Override public ProverType getType() { return BoolType.INSTANCE; } /* * (non-Javadoc) * * @see jhorn.solver.ProverExpr#getIntLiteralValue() */ @Override public BigInteger getIntLiteralValue() { throw new RuntimeException("not implemented"); } /* * (non-Javadoc) * * @see jhorn.solver.ProverExpr#getBooleanLiteralValue() */ @Override public boolean getBooleanLiteralValue() { throw new RuntimeException("not implemented"); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(this.head.toString()); sb.append(" <- "); sb.append(this.constraint.toString()); if (this.body.size()>0) { for (ProverExpr e : this.body) { sb.append(" && "); sb.append(e.toString()); } } return sb.toString(); } /** * Get the head predicate symbol. */ public ProverFun getHeadFun() { throw new UnsupportedOperationException(); } /** * Get the head argument terms. */ public ProverExpr[] getHeadArgs() { throw new UnsupportedOperationException(); } /** * Get the number of body literals. */ public int getArity() { throw new UnsupportedOperationException(); } /** * Get the predicate symbol of the body literal <code>num</code>. */ public ProverFun getBodyFun(int num) { throw new UnsupportedOperationException(); } /** * Get the arguments of the body literal <code>num</code>. */ public ProverExpr[] getBodyArgs(int num) { throw new UnsupportedOperationException(); } }