Comments (1)
I have a fix for this in my branch, which I'll soon push to main. The error message now looks like this:
ExistsWitness.fst(12,8-12,8): (Error 228) user tactic failed: `Pulse checker failed` (see also FStar.Tactics.V2.Derived.fst(447,4-449,16))
ExistsWitness.fst(18,4-18,11): (Error) Could not infer some implicit arguments: ?.n;
Failed to prove the following goals:
1. Steel.ST.Reference.pts_to r0 Steel.FractionalPermission.full_perm (FStar.Ghost.reveal ?.n)
The remaining conjuncts in the separation logic context available for use are:
1. Steel.ST.Reference.pts_to r0 p0 0
The typing context is:
p0 : Steel.FractionalPermission.perm
r0 : Steel.ST.Reference.ref Prims.nat
2 errors were reported (see above)
The first error is always reported when a Pulse term fails to check: It's the top-level failure raised by the Pulse tactic.
The second error is the relevant one here:
- It points to the source location of the
r0 := 1
- It says that it could not infer some of the implict arguments, in this case
?.n
. Thatn
refers to the name of the bound variable in the primitive Pulse.Steel.Wrapper.write ... so, it's not very meaningful in this case, but for a user-defined Pulse function, the name of the uninferred implicit should help. - It prints the part of the precondition that couldn't be proven, showing the unresolved occurrence of the ?.n
- It shows what was available in the context for matching and all the other typing hypotheses in the environment
I guess it could be nicer if we could somehow highlight the difference why the goal couldn't be matched in the context, e.g., highlighting the full_perm
vs p0
. But that's for another day ...
Thanks for the report!
from steel.
Related Issues (20)
- Crash when last two implicit arguments have dependency
- Unresolved uvar error on just using an unresolved identifier HOT 1
- Bad error localization on simple typing error HOT 1
- Inferring implicits arguments in return position (and error localization)
- Allow F* type abbreviations for Pulse function types (feature request) HOT 1
- Interpret `**` on both sides of `@==>` to allow inferring implicit arguments to stick lemmas HOT 1
- Inferred reveal is incorrectly accepted HOT 1
- "Unary transform" raises some typechecker problems HOT 4
- Eliminating pure underneath an exists* HOT 1
- Meta issue for syntax improvements in Pulse HOT 1
- Recursive calls fail to infer HOT 1
- Ghost, Unobservable, Atomic
- Stack references are freeable
- Bad error messages HOT 2
- admit seems to affect code before it HOT 1
- Calling lemmas in ghost code
- Make `inv` complete on its domain?
- Imprecise logical context in the match branch (cannot prove that the scrutinee is not a data constructor that is matched before this branch) HOT 1
- Incorrect joining of match branches allows masking invariant openings
- 'could not prove uvar' when there is existential in post HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from steel.