Skip to content

Commit

Permalink
fixup: timeframe handles must be frozen
Browse files Browse the repository at this point in the history
This is a fixup for 0158a8b.  This has returned a
conjunction of handles instead of a handle.  The conjunction isn't frozen,
and hence failed when using incremental SAT.
  • Loading branch information
kroening committed Apr 30, 2024
1 parent 0abed59 commit d5b9994
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 2 deletions.
9 changes: 9 additions & 0 deletions regression/ebmc/SVA-LTL/freeze.desc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
CORE
freeze.sv
--bound 1
^\[main\.property\.p1\] always s_eventually main\.w: REFUTED$
^\[main\.property\.p2\] always s_eventually !main\.w: REFUTED$
^EXIT=10$
^SIGNAL=0$
--
--
5 changes: 5 additions & 0 deletions regression/ebmc/SVA-LTL/freeze.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module main;
wire w;
p1: assert property (s_eventually w);
p2: assert property (s_eventually !w);
endmodule
4 changes: 2 additions & 2 deletions src/trans-word-level/property.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ static void property_obligations_rec(
{
// current state property
exprt tmp = instantiate(property_expr, current, no_timeframes, ns);
obligations[current].push_back(solver.handle(tmp));
obligations[current].push_back(tmp);
}
}

Expand Down Expand Up @@ -256,7 +256,7 @@ void property(
DATA_INVARIANT(
t >= 0 && t < no_timeframes, "obligation must have valid timeframe");
auto t_int = numeric_cast_v<std::size_t>(t);
prop_handles[t_int] = conjunction(obligation_it.second);
prop_handles[t_int] = solver.handle(conjunction(obligation_it.second));
}
}

Expand Down

0 comments on commit d5b9994

Please sign in to comment.