Skip to content
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

Function value can depend on set of allocated objects (part of #1419) #1959

Closed
cpitclaudel opened this issue Apr 1, 2022 · 1 comment
Closed
Assignees
Labels
kind: bug Crashes, unsoundness, incorrect output, etc. If possible, add a `part:` label logic An inconsistency in Dafny's logic (e.g. in the Boogie prelude)

Comments

@cpitclaudel
Copy link
Member

cpitclaudel commented Apr 1, 2022

I'm creating a new issue to track the more complex parts of #1419 that popped up in the discussion of #1924 and led to #1936.

Reference case: for datatypes, we need to check recursively, not just the type parameters:

class C {}
datatype D = DC(c: C)
type X(!new) = D // No error

datatype Obs' = Obs'(s: set<object>)
predicate lotsOfObjects'() {
  exists o: Obs' :: |o.s| > 10 // No error
}

Another example:

class C {}

datatype Box<T> = Box(t: T)
type Box'(!new) = Box<C> // Rejected

datatype BoxC = BoxC(c: C)
type BoxC'(!new) = BoxC // No error
@cpitclaudel cpitclaudel added kind: bug Crashes, unsoundness, incorrect output, etc. If possible, add a `part:` label logic An inconsistency in Dafny's logic (e.g. in the Boogie prelude) labels Apr 1, 2022
@cpitclaudel
Copy link
Member Author

Closed in #1924

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind: bug Crashes, unsoundness, incorrect output, etc. If possible, add a `part:` label logic An inconsistency in Dafny's logic (e.g. in the Boogie prelude)
Projects
None yet
Development

No branches or pull requests

2 participants