Dafny: Verification-Aware Programming Language
1–10 of 35 posts
Re: Dafny: Verification-Aware Programming Language
#2Re: Dafny: Verification-Aware Programming Language
#3Re: Dafny: Verification-Aware Programming Language
#4Reminds me of Eiffel, in a good way. Looks awesome. Is there anything close to this in Scala by chance?
Re: Dafny: Verification-Aware Programming Language
#5Reminds me of Eiffel, in a good way. Looks awesome. Is there anything close to this in Scala by chance?
You could add Scala as a compilation target or you could just use the Java output and call formally verified Java functions from Scala. Even if you do get an implementation that produces Scala, don't expect the full power of idiomatic Scala to be available in the code you formally verify. To verify code, you have to write the code in Dafny with associated assertions to be proven. Since there are multiple compilation targets multiple formal constraints on what can usefully be verified, the data types available will not match the data types that you would use natively from Scala.
Re: Dafny: Verification-Aware Programming Language
#6Re: Dafny: Verification-Aware Programming Language
#7Reminds me of Eiffel, in a good way. Looks awesome. Is there anything close to this in Scala by chance?
It's similar in spirit, but in Dafny one can express much more complicated and complex invariants which get checked at build time -- compared to eiffel where pre/post conditions are checked at runtime (in dev builds mostly).
That means that most of the proof can be done ahead of time with just some loose ends verified using an SMT prover at runtime.
Re: Dafny: Verification-Aware Programming Language
#8This might be a stupid question, but why a separate programming language rather than aiming to verify/synthesize invariants in languages people use?
Re: Dafny: Verification-Aware Programming Language
#9This might be a stupid question, but why a separate programming language rather than aiming to verify/synthesize invariants in languages people use?
Re: Dafny: Verification-Aware Programming Language
#10This might be a stupid question, but why a separate programming language rather than aiming to verify/synthesize invariants in languages people use?
Good question. This is the holy grail. This is what everyone in PL research would love. This is where we want to get to.
Turns out a language as “simple” as C has sufficiently complicated semantics as to limit rigorous analysis to the basics. One example is loop analysis: it’s very useful to know that a loop will terminate eventually; if a loop is modifying some state and—worse—if the iteration variable gets modified—kiss your analysis goodbye because mechanically synthesizing strong pre- and post-conditions becomes insurmountable. It’s not an engineering challenge. It’s a math/pure CS theory challenge.