Are you an experienced verification engineer? Do you have a passion for formally verifying real software and protocols? Are you seeking to join a team on the cutting edge of distributed systems and formal verification? We’d like to hear from you!
What your primary responsibilities will be:
- Formally specify, check, find bugs, and prove properties of protocols used by our software.
- Research and develop strategies to formally verify real software.
- Collaborate with research scientists on techniques for verifying protocols.
- Collaborate with distributed systems engineers on techniques for verifying and testing software systems.
- Collaborate on transferring specifications in English into formal ones.
- Mentor other engineers and support the growth and health of the team.
- Nurture a safe and enjoyable open source experience for contributors.
What we look for in a successful verification engineer:
- At least 5 years developing, releasing, and maintaining production software.
- Graduate work and/or academic quality publications in computer science.
- A track record of translating academic papers into performant software.
- Experience with formal verification tools for software or distributed systems ( e.g., TLA+, Dafny, Ivy, CBMC, Spin, Coq, Isabelle, SAT/SMT solvers, etc.).
- A deep understanding of computer science and formal logic fundamentals (first-order logic, Satisfiability Modulo Theory, etc.).
- Knowledge of fault tolerant consensus protocols like PBFT, Raft, etc.
- The ability to take ownership and see initiatives through.
- Significant experience with technical writing in Engligh (eg. specifications, design documents, documentation, etc.).
- Excellent interpersonal skills, experience working with distributed teams, and enjoys working with and mentoring others.
- Location: Toronto, Berlin, Lausanne, Vienna
- Job Type: Full-time
Please apply via this Google form where you’ll be prompted to upload a cover letter, CV, and other information that will help the review process go smoothly.