Analyzing Programs with Z3
2.9K subscribers • 30 videos on Hallway
- Recommended by 4 people: 2 on Hacker News, 1 on Lobsters and 1 in engineering communities.
- Presented by Tikhon Jelvis, software engineer
Intermediate. Assumes working knowledge.
24K views10 years ago4 recommendations
Computer scienceSystems programmingFormal methods and verificationCompilers and interpretersAlgorithms
Tikhon Jelvis demonstrates how to compile a simple imperative language to SMT formulas and verify program invariants using the Z3 solver.
Tikhon Jelvis C◦mp◦se :: Conference composeconference.org/ February 5, 2016 SMT solvers are widely used in research to analyze and verify programs. This lets us check invariants and compare programs against a spec exhaustively, with bounds on the number of loop iterations and the size of the heap. SMT solvers are also useful for other sorts of analysis including sophisticated type checking (like refinement types in Liquid Haskell) and fields other than program analysis (like security research where they can be used to analyze cryptographic algorithms and protocols). I’ll demonstrate how to compile a simple language to an SMT formula and analyze programs using the Haskell Z3 bindings. Z3 has bindings in other languages including OCaml and .NET, so these ideas will be immediately useful to everyone even if the details are slightly different from the Haskell code. The underlying ideas will also help people approach other problems with Z3.Why it's here
4 people recommend thisWhat people say. Recommended as an approachable entry point to program verification and SMT solvers.
tikhonjon Hacker News • Recommends
On “Z3 SMT solver interactive tutorial”
buckieon Hacker News • Recommends
On “Show HN: Dharma – Programmable Peer-To-Peer Loans Using Ethereum Smart Contracts”
u/tikhonjelvisin r/haskell • Mentions
On “Learning Haskell, what type of side projects to do in Haskell to get some practice”
philzookon Hacker News • Mentions
On “Software Verification and Analysis Using Z3”