Skip to content

introduce sva_boolean_exprt #1083

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 13, 2025
Merged

introduce sva_boolean_exprt #1083

merged 1 commit into from
May 13, 2025

Conversation

kroening
Copy link
Member

IEEE 1800-2017 16.6 Boolean expressions introduces rules on how to convert Boolean expressions into SVA sequences or properties. This introduces an expression for this conversion.

@kroening kroening force-pushed the sva_boolean_exprt branch 4 times, most recently from e7e9a69 to 679576c Compare April 25, 2025 23:53
@kroening kroening force-pushed the sva_boolean_exprt branch 3 times, most recently from eba0908 to 28c0ba6 Compare May 10, 2025 19:08
@kroening kroening marked this pull request as ready for review May 10, 2025 19:13
@@ -1,7 +1,7 @@
CORE
sva_and1.sv

^\[main\.p0\] always \(1 and 1\): PROVED$
^\[main\.p0\] always \(1 and 1\): PROVED up to bound 5$
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why did we previously claim this was proved unboundedly?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now fixed.

@@ -23,12 +23,26 @@ Author: Daniel Kroening, [email protected]
exprt normalize_pre_sva_non_overlapped_implication(
sva_non_overlapped_implication_exprt expr)
{
// Same as a->always[1:1] b if lhs is not a sequence.
if(!is_SVA_sequence_operator(expr.lhs()))
// a|=>b is the same as a->always[1:1] b if lhs is not a proper sequence.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the difference between a sequence and a "proper" sequence?

Comment on lines 466 to 470
DATA_CHECK_WITH_DIAGNOSTICS(
validation_modet::INVARIANT,
false,
"unexpected sequence expression",
expr.pretty());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
DATA_CHECK_WITH_DIAGNOSTICS(
validation_modet::INVARIANT,
false,
"unexpected sequence expression",
expr.pretty());
DATA_INVARIANT_WITH_DIAGNOSTICS(
false,
"unexpected sequence expression",
expr.pretty());

@kroening kroening force-pushed the sva_boolean_exprt branch 2 times, most recently from b374490 to 36488ba Compare May 13, 2025 19:09
IEEE 1800-2017 16.6 Boolean expressions introduces rules on how to convert
Boolean expressions into SVA sequences or properties.  This introduces an
expression for this conversion.
@kroening kroening force-pushed the sva_boolean_exprt branch from 36488ba to 9964659 Compare May 13, 2025 19:47
@kroening kroening merged commit 11ae20a into main May 13, 2025
9 checks passed
@kroening kroening deleted the sva_boolean_exprt branch May 13, 2025 19:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants