-
Notifications
You must be signed in to change notification settings - Fork 32
Silicon 2.0
Malte Schwerhoff edited this page May 9, 2021
·
1 revision
This document is meant to collect ideas, open questions, wishes and visions for a complete rewrite of Silicon
-
Implementation language: Rust or Go instead of Scala?
- A system language for better performance?
- Z3 API bindings available?
- Interoperability with Silver?
-
Implementation style
- Replace CPS?
- Translate a Viper program into a sequence of symbolic execution primitives that can then be executed/interpreted, but also analysed, optimised, etc.?
- How to implement try-heuristic-retry patterns, e.g. for state consolidations?
-
Systematic support for
- Incremental verification, e.g. in an IDE
- Debugging, failure understanding, partial (re)verification
- Logging, tracing, visualisations
- Custom permission models
- Tactics/strategies for heuristically applying custom lemmas
-
Encoding changes
- Target larger, frontend generated Viper programs, not the traditional Silver test suite
- Fewer branches, more merging/joining
- Reduce the number of Z3 check-sats
- Replace "evaluations on demand" by parametric pre-evaluations
- Avoid introduction of new symbols on demand