Conversation
|
Marking as Comments forthcoming... |
from saw_client import *We should avoid wildcard imports. Import the package and use qualified names, or list each definition (with aliases to avoid any conflicts). Some relevant guiding principles from Tim Peters's Zen of Python:
But the list of commonly used imports is a good idea. It should include ones from |
|
|
Regarding
|
|
Good examples. Worth noting that they are so simple as to not really require loading a Cryptol file, though that demonstrates how one would organize a more complex verification effort. We might need to be ready to answer the question of what to do when definitions from multiple Cryptol files are needed... |
For SAWScript and the SAW Remote API, this is true. But SAWCore terms can be formalized in Coq, a much more powerful theorem prover that has inductive reasoning (and many more) capabilities. This is obviously well beyond the scope of the course; I just think this statement should be clarified. |
This is one case, yes. It is also useful in conjunction with overrides, reducing proof complexity by decomposing a complex specification into manageable logical steps (constrained by the overrides), much as verifying function implementations and using results as overrides does for the corresponding implementation. I am trying to communicate this in the pending SMT: Equality Logic With Uninterpreted Functions describes how uninterpreted functions and constraints are applied to Satisfiability Modulo Theories. |
Included the C source code in the initial commit.
Will continue to write up the SAWscript for the struct example.
Nice! This results in wide open spaces when debugging strings passed to from textwrap import dedent
# ...
self.returns(cry(dedent("""
(y, z)
where
y = "foo"
z = "bar"
""").strip()))This renders (without leading/trailing whitespace) as: |
This is probably supposed to be |
One of those arithmetic properties, anyway... |
...and verify it! |
Initial-lowercase class names violate PEP 8 and coding practices in Python and most other OO languages. I usually name
(One of the pros is that you can dynamically associate a function name to its |
Updated SAW.md! |
Updated SAW.md! |
Updated SAW.md! |
Taylor and I discussed renaming the variable earlier. All artifacts have been updated to be consistent. |
Updated SAW.md! Also included CLZ (mentioned earlier in this pull request) as a hint. |
No description provided.