We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
This ought to fail the type well-founded-recursion-checking, but it doesn't:
struct Qux<T> { t: T, } struct Bar<T> { s: Box<Set<Qux<T>>>, } struct Foo { bar: Bar<Foo>, }
e.g. you can do the usual russell's paradox set-of-sets-that-do-not-contain themselves:
proof fn prove_false() ensures false { let s = Set::<Qux<Foo>>::new( |qux: Qux<Foo>| !qux.t.bar.s.contains(qux) ); let qux = Qux{ t: Foo { bar: Bar { s: box s } } }; assert(qux.t.bar.s.contains(qux)); assert(!qux.t.bar.s.contains(qux)); assert(false); }
The text was updated successfully, but these errors were encountered:
Fix bug in recursive type positivity checking (issue #343 )
ee3c0c6
Fix bug in recursive type positivity checking (issue #343 ) (#495)
2cc255c
Chris-Hawblitzel
No branches or pull requests
This ought to fail the type well-founded-recursion-checking, but it doesn't:
e.g. you can do the usual russell's paradox set-of-sets-that-do-not-contain themselves:
The text was updated successfully, but these errors were encountered: