This is your opportunity to apply formal specification and verification to real-world cloud-scale distributed systems, as part of an engineering organization that highly values formal methods. OCI has been using formal methods-primarily TLA+, as well as some others-since we started in 2014. Oracle is a founding premier member of the TLA+ Foundation industry-standards body, and OCI employees are very active in the TLA+ community.
We are expanding our in-house formal verification team to handle major new development initiatives. OCI is building our next generation of core data-planes and cloud automation, for which correctness and reliability are critical. We know that achieving those properties requires use of formal methods. Our formal verification team assists development teams across all of OCI, so the role has high visibility and impact.
We are looking for self-motivated engineers with passion and expertise for practical application of formal methods to complex problems. You should value collaboration, innovation, pragmatism, and be focused on achieving results.
Responsibilities
We use formal specification and verification methods to help developers of complex systems find very subtle bugs that are unlikely to be caught by normal testing techniques. We focus on preventing the kinds of bugs that would cause the most severe problems for our customers, in particular data loss/corruption or security vulnerabilities.
We achieve this via the following activities:
- Help engineers to state their requirements and algorithms much more precisely than conventional design docs. This typically uncovers many ambiguities and invalid assumptions – i.e. design bugs.
- Provide additional ways to describe and think about requirements and design. This change in perspective can itself reveal problems.
- Review critical sections of code, to reverse-engineer the higher-level algorithm or design that has been implemented. This 'recovered design' can then be formally verified to satisfy its intended properties.
Use tools such as model-checkers, constraint solvers, and increasingly (due to rapid progress with AI) machine-checked proof, in order to check a precise design against precise correctness properties.
-
Additionally, we are helping to create new methodologies and tools to enable safe and productive use of Generative AI for designing, implementing, and testing mission-critical components and services. For example:
Automatically generate formal specifications from informal descriptions to remove ambiguity. Then validate that those specifications accurately capture the intent of the author
- - i.e. that the resulting formal specifications allow behaviors that are desired, while disallowing all behaviors that should be prohibited.
- Automatically generate implementation code from a formal specification, and then validate that the generated code satisfies the specification, e.g. via trace-validation/conformance testing, or by using code-level verification systems such as Verus, or by other techniques that you find or invent.
- Automatically reverse-engineer a formal specification from code, at an appropriate level of abstraction such that the extracted specification can then be verified against high-level correctness properties.
- Using AI to find inductive invariants and write mechanically checked proofs.