-
Notifications
You must be signed in to change notification settings - Fork 88
Remove dummy top and is_top implementations from int domains
#1727
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
Changes from all commits
8f99cbd
c9a256f
eda4fe8
4715c07
f5cd945
d4bf659
6c9eff3
1ce9de0
1452a93
e2a74e7
6bc71bb
a968622
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -27,16 +27,28 @@ sig | |
| val pretty_diff: unit -> (t * t) -> Pretty.doc | ||
| end | ||
|
|
||
| (* complete lattice *) | ||
| module type S = | ||
| module type Bot = | ||
| sig | ||
| include PO | ||
| type t | ||
| val bot: unit -> t | ||
| val is_bot: t -> bool | ||
| end | ||
|
|
||
| module type Top = | ||
| sig | ||
| type t | ||
| val top: unit -> t | ||
| val is_top: t -> bool | ||
| end | ||
|
Comment on lines
30
to
42
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could we go for
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I could try that in #1728 to also weaken arguments of Splitting the signatures into precise algebraic structures is nice, but it comes with a cost that we already have with I've thought about splitting
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The question is whether all these lifters are used then. If we don't have a
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Of course we don't and by just introducing the signatures, nothing new would be needed: using the most powerful Anyway, it's a completely orthogonal matter to this PR.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's not completely orthogonal: I think introducing ill-defined module signatures such as
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I could go back to what I did at first and what matches all the signature duplication happening in I just don't think we have a clean and usable naming scheme: a
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I get what you mean, I just find the notion of having a |
||
|
|
||
| (* complete lattice *) | ||
| module type S = | ||
| sig | ||
| include PO | ||
| include Bot with type t := t | ||
| include Top with type t := t | ||
| end | ||
|
|
||
| exception TopValue | ||
| (** Exception raised by a topless lattice in place of a top value. | ||
| Surrounding lattice functors may handle this on their own. *) | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| #include <goblint.h> | ||
| #include <limits.h> | ||
|
|
||
| // There are no 128bit integer literals... | ||
| __int128 int128max = ((__int128) LLONG_MAX) << 64 | ULLONG_MAX; | ||
|
|
||
| int main() { | ||
| __int128 x, y, z; | ||
| z = x + y; | ||
| __goblint_check(z < int128max); // UNKNOWN! | ||
| return 0; | ||
| } |
Uh oh!
There was an error while loading. Please reload this page.