Skip to content

Commit

Permalink
Improve
Browse files Browse the repository at this point in the history
  • Loading branch information
ajreynol committed Mar 1, 2024
1 parent 9807e26 commit 0b21354
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 4 deletions.
17 changes: 15 additions & 2 deletions src/cmd_parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -323,15 +323,28 @@ bool CmdParser::parseNextCommand()
// parse requirements, optionally
if (keyword=="requires")
{
// we support alf.conclusion in requirements
d_state.pushScope();
d_state.bind("alf.conclusion", d_state.mkConclusion());
// parse the expression pair list
reqs = d_eparser.parseExprPairList();
keyword = d_eparser.parseKeyword();
d_state.popScope();
}
// parse conclusion
if (keyword!="conclusion")
if (keyword=="conclusion")
{
conc = d_eparser.parseExpr();
}
else if (keyword=="conclusion-given")
{
// :conclusion-given is equivalent to :conclusion alf.conclusion
conc = d_state.mkConclusion();
}
else
{
d_lex.parseError("Expected conclusion in declare-rule");
}
conc = d_eparser.parseExpr();
}
else
{
Expand Down
3 changes: 2 additions & 1 deletion src/state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,8 @@ State::State(Options& opts, Stats& stats)
d_self = Expr(mkSymbolInternal(Kind::PARAM, "alf.self", mkAbstractType()));
bind("alf.self", d_self);
d_conclusion = Expr(mkSymbolInternal(Kind::PARAM, "alf.conclusion", mkBoolType()));
bind("alf.conclusion", d_conclusion);
// alf.conclusion is not globally bound, since it can only appear
// in :requires.

// note we don't allow parsing (Proof ...), (Quote ...), or (quote ...).

Expand Down
5 changes: 4 additions & 1 deletion tests/conclusion-spec.smt3
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@

(declare-rule split ()
:requires (((is_split alf.conclusion) true))
:conclusion alf.conclusion
:conclusion-given
)

(step @p0 (or true (not true)) :rule split)

; fails
;(step @p1 (or false (not true)) :rule split)

0 comments on commit 0b21354

Please sign in to comment.