Description
IO Global is searching for a Software Engineer - Formal Methods to join their Ledger team. As a Software Engineer specializing in Formal Methods, you are the interface between research and development. You will interact with researchers and produce formal specifications from the researchers’ work, iteratively refining specifications and working towards high-quality designs, prototypes, and practical implementations. In some projects, critical steps will be proven using appropriate formal frameworks and tools. In other projects, the expected performance of the resulting system will be modeled so that the impact of design decisions on performance and stability can be assessed early on. Based on this process, you will provide feedback to the researchers. Finally, based on their specifications, designs, simulations, and/or prototypes, you will advise and assist other development teams to implement and integrate their work into production systems.
Come help design, specify, and verify new features for the Cardano ledger. You will work closely with the Haskell developers to bring to life these new features and ensure that they are implemented correctly.
Your mission
- Produce semi-formal, formal, and executable specifications and prototypes based on research papers and communication with researchers
- Model the performance of formally specified systems
- Produce prototypes and simulations
- Refine specifications using the performance models and simulations to gauge the impact of design decisions during refinements
- Prove properties of the specifications and correctness of refinement steps
- Communicate with both researchers and developers, and act as a bridge between the two
- Provide feedback to researchers about issues that come up when their work is incorporated into real-world systems
- Assist developers in understanding your specifications and in turning them into production code
- Report on your work in the form of blog posts, technical report documents, presentations at internal seminars, workshops, and conferences, and/or by contributing to academic papers
- Participate in code reviews
- Contribute property-based tests, both for testing properties of the executable specifications/prototypes and for verifying production code against the executable specifications
- Work in an international team across multiple time zones
- Break down large and complex tasks assigned to you into workable items, and work on them independently
- Share specialized knowledge with other team members.
Requirements
Your expertise
- A higher degree in Computer Science or a related field
- A minimum of 2-3 years of experience with a proof assistant or dependently typed programming language, preferably Agda
- Experience of working and collaborating with Git
- Experience in one or more of the domains we are working in – networking, distributed systems, programming language design, blockchain applications – would be a bonus.
- Demonstrated ability to work on difficult problems in a self-driven way.
Benefits
Location
- IOG is a fully distributed organization and therefore this is a remote position. Due to team distribution we are ideally searching for someone in a European or USA timezone.
All Colleagues
- Flexible schedule
- Remote work - ability to work anywhere
- Laptop reimbursement
- New starter package to buy hardware essentials (headphones, monitor, etc)
- Learning & Development opportunities
- Competitive PTO and Sick Leave plan
US Employees
- Medical, Dental, and Vision benefits coverage through Anthem with 100% premium cost covered by IO Global for the employee and dependents
- Health Savings Account
- Life Insurance
UK Employees
- Monthly Health Stipend to use towards any wellness or medical coverage/service
- Pension