TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Coming Soon: Machine-Checked Proofs in Everyday Development

185 pointsby fukliefover 7 years ago

10 comments

haskellandchillover 7 years ago
My current reading list:<p>- Fundamental Proof Methods in Computer Science<p>- Handbook of Practical Logic and Automated Reasoning<p>- Software Abstractions<p>- The Little Prover<p>Yes, currently I have Athena, OCaml, Alloy, ACL2 (via Dr Racket&#x2F;Dracula) all up and running to work through the exercises in these books. I&#x27;m very skeptical anything will come of this, but it interests me and I can see the value.<p>Hopefully the speaker&#x27;s next book Formal Reasoning About Programs (<a href="https:&#x2F;&#x2F;github.com&#x2F;achlipala&#x2F;frap" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;achlipala&#x2F;frap</a>) will be a nice next step, I have Certified Programming with Dependent Types but have not cracked it yet. Also keeping an eye on Verified Functional Algorithms (<a href="https:&#x2F;&#x2F;softwarefoundations.cis.upenn.edu&#x2F;vfa-current&#x2F;index.html" rel="nofollow">https:&#x2F;&#x2F;softwarefoundations.cis.upenn.edu&#x2F;vfa-current&#x2F;index....</a>).
评论 #16038918 未加载
评论 #16038492 未加载
jonduboisover 7 years ago
Mathematical proofs of code are not suitable for most systems.<p>Even unit tests which don&#x27;t involve proofs can be a problem sometimes because they lock down API inputs and outputs. It&#x27;s already a major problem when a developer wants to change some code and they have to spend hours updating unit tests every time. When in small teams, heavy 100% coverage unit tests slow down productivity, possibly by 5x or 10x.<p>I imagine that adding proofs as part of the unit test suite would further increase the productivity cost overhead by a massive factor.<p>In software development, you should avoid treating the code like if it&#x27;s special or perfect because it&#x27;s not and it will need to be changed in the near future when requirements change (and they will always keep changing). So locking it down into a specific state with proofs all around it is a bad idea for the vast, vast majority of cases.<p>We need more wisdom in software development and that means taking a step back, looking at the big picture and asking questions like what are the negative side effects of each new methodology that we are introducing into our projects? There are always downsides, and we&#x27;re crazy to pretend that every fancy new methodology is a silver bullet.
评论 #16040314 未加载
评论 #16040035 未加载
评论 #16040171 未加载
评论 #16062583 未加载
评论 #16041024 未加载
jpochtarover 7 years ago
We already have a basic form of machine checked-proofs in everyday code: type systems. Type systems encode and prove simple theorems like &quot;f(x: int) -&gt; int returns an int, if x is an int&quot;. Typescript and Mypy show us that these proof checkers don&#x27;t need to be built into a language. Even better, they show that proofs can be over subsystems of a program, since Typescript and Mypy both allow for partial&#x2F;incremental typing. We just need to extend these systems to support more complex theorems.
评论 #16039806 未加载
评论 #16039726 未加载
qzncover 7 years ago
Machine checked useable compilers exist (CakeML, CompCert). Useable kernels exists (SeL4). A few people officially work as proof engineers.<p>The future is here, but not evenly distributed. ;)
评论 #16042767 未加载
adamnemecekover 7 years ago
Cryptocurrencies and digital contracts are going to pump an insane amount of money into this.
评论 #16040974 未加载
评论 #16040899 未加载
评论 #16039979 未加载
评论 #16039996 未加载
Animatsover 7 years ago
In ten years.<p>That&#x27;s where I thought we were in 1983 - ten years away.
评论 #16038372 未加载
评论 #16039145 未加载
ted_dunningover 7 years ago
I think that the classic ironical demonstration of the limits of proof systems comes up with the fact that CoqIDE 8.7.1 crashes immediately on OSX if you try to cut or paste anything.<p>The problem, it turns out that they included a new version of OCaml which was incompatible with the older version of GTK that was being used. Result: crash due to seg fault.<p>We really need both proofs and pragmatics. Proofs can give us confidence in the fundamentals when used appropriately for the processor, or for consensus algorithms like Raft, or key parts of the OS. Tests and statistical analysis can give us confidence that we haven&#x27;t overlooked something crucial.<p>Some systems obviously aren&#x27;t very appropriate for formal methods (take machine learning, for instance, there can be no formal spec for what a fraud looks like). There statistics and testing will have to suffice because we have clear value on average even if we cannot formally guarantee the system.<p>Other systems are much more appropriate for formal methods. I should hope that a heart monitor, CPU, voting machine or aircraft flight management system will have substantial amounts of formally proved code (I know that I am dreaming with the voting machines; let&#x27;s settle for getting it down on paper). I don&#x27;t want to collect a statistical sampling of whether an airplane works as we iteratively work out the bugs and specs in an agile fashion.
mcguireover 7 years ago
Good talk!<p>So, one question: Adam gives one example of a proof where the initial automation fails because it does not consider a theorem that was previously proved. He also gives an example of some complex code where the proof is too tedious to do without lots of automation. What happens when your complex code changes in such a way that you need some extra lemmas but don&#x27;t know what they are?
评论 #16043163 未加载
skybrianover 7 years ago
What progress has been made recently in making writing proofs easier? Are there any research projects targeting mainstream programmers?
评论 #16040138 未加载
评论 #16039469 未加载
评论 #16039138 未加载
crb002over 7 years ago
We already have them. It&#x27;s called compiler type checks. Albeit having an SMT solver in your unit tests is nice too.
评论 #16043069 未加载