trusted/untrusted split #112
Replies: 5 comments 10 replies
-
Another quick point: The |
Beta Was this translation helpful? Give feedback.
-
That might be a bit harsh. In general, I think we've been pretty disciplined in keeping trusted code to It sounds like you're proposing an additional level of refinement among the trusted files, which is a fine point to discuss. |
Beta Was this translation helpful? Give feedback.
-
I don't think VeribetrFS slipped on this axis, but I do think there's room to improve.
This is an important, subtle point. Even in monolithic VeriBetrFS, we carefully split Sequences into "parts of the library we needed Player 1 to read" (.s) and "everything else" (.i). As Travis points out here, the problem gets worse when we start composing, as code that was once .s can be downgraded to .i in the new context. The high-level goal to keep in mind is this: We want to clearly identify the code involved in the statement of the theorem supported by verification. Alternatively, we want to clearly identify lines of code that must be inspected by Player 1. I don't know how to solve that problem in the presence of the issues identified in this thread, but I'm hoping reminding us of the problem statement may help. In vying for "least important contribution", I think we should rename ".s" to ".t" (trusted) and ".i" to ".v" (verified). |
Beta Was this translation helpful? Give feedback.
-
I have added a |
Beta Was this translation helpful? Give feedback.
-
[Verus retreat '24] @jaylorch: consider @jonhnet: engineers read source code. |
Beta Was this translation helpful? Give feedback.
-
Verus should provide tools to help the user understand what trusted code they are relying on. This tool should understand that there are multiple kinds of “trusted code” that a user would want to learn about.
(In our previous projects, this was a total mess, despite @jonhnet's valid protests that we should clean things up. There was little-to-no distinction between the three types of intentionally trusted code, since they were all lumped under
.s
. The only way to declare an axiom as "intentional" was to declare it as:external
, but there was nothing that ensured there were no:external
lemmas in the.i
files, because the toolchain didn't actually know about the.s
/.i
distinction. Also,.s
files could only include other.s
files, which was sometimes undesirable - when you write a definition, you don't always know a priori if somebody is going to want to use that definition in a specification.)I don't actually have any proposals! I just wanted to create a discussion place for this.
Beta Was this translation helpful? Give feedback.
All reactions