About me
I work at Certora, where I am developing a verification tool for Solana smart contracts. These contracts, together with their specs, are written in Rust and compiled to Solana Binary Format (sBPF), Solana's custom version of eBPF. The tool uses Abstract Interpretation to translate sBPF to efficient and sound verification conditions, which are then solved by SMT solvers.
Prior to Certora, I was very fortunate to work
at SRI
International (2016-2021)
and NASA
(2013-2016). Before that, I held postdoctoral positions
at University of
Melbourne (2011-2013) and
National University of
Singapore (2008-2011). I earned my PhD in Computer Science from
the University of New
Mexico in 2008, and my B.Sc in Computer Science
from Technical University
of Madrid in 2003.
I work remotely from El Paso (Texas), but I am from Ceuta, a beautiful Spanish city on the North African coast. Outside of work, I enjoy spending time with my family and running.
Software
- The Certora Prover : automated formal verification of smart contracts running on EVM-based chains, Solana and Stellar.
- SeaHorn: analysis/verification framework for LLVM bitcode.
- Crab: C++ library for static analysis based on abstract interpretation.
- Sea-DSA: a pointer analysis for LLVM bitcode.
- Clam: a static analyzer based on Crab and Sea-DSA for LLVM bitcode.
-
PREVAIL: eBPF verifier based
on Crab.
- PREVAIL is currently used to verify eBPF programs that run on the top of Windows (see ebpf-for-windows project for more details).
- **PREVAIL in the news**: [1],[2].
-
SmartACE:
A verifier of Solidity smart contracts based on SeaHorn.
- Check out several blog posts here.
-
OCCAMv2:
A whole-program debloater for LLVM bitcode.
- Article in Communications of the ACM describing the tool.
-
IKOS: Inference Kernel for Open Static Analyzers
- **NASA Group Achievement Award** in 2014.
- TRACER: interpolation-based symbolic execution tool for verification of C programs.
- FTCLP: interpolation-based solver for recursive Constrained Horn Clauses.
- Wrapped Interval Analysis: static analyzer of LLVM bitcode specialized for fixed-width integers.
- Revenant: string solver.
- Covenant: semi-decider for intersection of context-free languages.
- The Ciao Preprocessor : a program analyzer for debugging, verification, and optimization for the Ciao programming language.
Recent Service Activitives
Peer-Reviewed Publications [ DBLP | Google Scholar]
-
A Flow-Sensitive Refinement Type System for Verifying eBPF Programs
(PDF).
Ameer Hanza, Lucas Zavalia, A. Gurfinkel, J. A. Navas, Grigory Fedyukovich.
OOPSLA'25. These are the slides from the OOPSLA talk. -
Template DBM: A New Weakly Relational Domain for Efficient Memory-Access Validation
(PDF).
Yusen Su, J. A. Navas, A. Gurfinkel.
VSTTE'25. -
Automatic Inference of Relational Object Invariants
(PDF).
Yusen Su, J. A. Navas, A. Gurfinkel, I. Garcia-Contreras.
VMCAI'25. This is a video of the talk at VMCAI'25. -
Inductive Predicate Synthesis Modulo Programs
(PDF).
Scott Wesley, M. Christakis, J. A. Navas, R. Trefler, V. Wustholz, A. Gurfinkel
ECOOP'24. -
Efficient Modular SMT-Based Model Checking of Pointer Programs
(PDF).
I. Garcia-Contreras, A. Gurfinkel, J. A. Navas
SAS'22. -
Verifying Solidity Smart Contracts Via Communication Abstraction in SmartACE
(PDF).
Scott Wesley, M. Christakis, A. Gurfinkel, J. A. Navas, R. Trefler, V. Wustholz.
VMCAI'22. -
Compositional Verification of Smart Contracts Through Communication Abstraction
(PDF).
Scott Wesley, M. Christakis, A. Gurfinkel, J. A. Navas, R. Trefler, V. Wustholz.
SAS'21. -
Disjunctive Interval Analysis
(PDF).
G. Gange, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
SAS'21. -
Abstract Interpretation of LLVM with a Region-Based Memory Model
(PDF).
A. Gurfinkel, J. A. Navas
VSTTE'21. These are the scripts to reproduce the experimental evaluation. -
Automated Safety Verification of Programs Invoking Neural Networks
(PDF).
M. Christakis, H. Ferit Eniser, H. Hermanns, J. Hoffmann, Y. Kothari, Jianlin Li, J. A. Navas, V. Wustholz.
CAV'21. The code is available here, and the benchmarks here. -
Automatically Tailoring Abstract Interpretation to Custom Usage Scenarios
(PDF).
M. N. Mansur, B. Mariano, M. Christakis, J. A. Navas, V. Wustholz.
CAV'21. The code is available here. -
A Fresh Look at Zones and Octagons
(PDF).
G. Gange, Zequn Ma, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
ACM TOPLAS Volume 43, Issue 3 September 2021. -
Verification of an Optimized NTT Algorithm
(PDF).
J. A. Navas, B. Dutertre, I. Mason,
VSTTE'20. The code of the verifier is available here. -
Dissecting Widening: Separating Termination from Information
(PDF).
**Distinguished Paper Award**
G. Gange, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
APLAS'19. -
Unification-based Pointer Analysis without Oversharing
(PDF).
J. Kuderski, J. A. Navas, A. Gurfinkel.
FMCAD'19. -
Simple and Precise Static Analysis of Untrusted Linux Kernel Extensions
(PDF).
E. Gershuni, N. Amit, A. Gurfinkel, N. Narodytska, J. A. Navas, N. Rinetzky, L. Ryzhyk and M. Sagiv.
PLDI'19. -
Generating Component Interfaces by Integrating Static and Symbolic Analysis, Learning, and Runtime Monitoring
(PDF).
Falk Howard, Dimitra Giannakopoulou, Malte Maus, J. A. Navas.
ISoLA'18. -
Executable Counterexamples in Software Model Checking
(PDF).
J. Gennari, A. Gurfinkel, T. Kahsai, J. A. Navas, E. J. Schwartz.
VSTTE'18. Video 1 (3m51s) Video 2 (4m37s). -
Verification of Fault-Tolerant Protocols with Sally
(PDF).
B. Dutertre, D. Jovanovic, J. A. Navas.
NFM'18. -
A Context-Sensitive Memory Model for Verification of C/C++ Programs
(PDF).
A. Gurfinkel, J. A. Navas.
SAS'17. -
Exploiting Sparsity in Difference-Bound Matrices
(PDF).
G. Gange, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
SAS'16. -
An Abstract Domain of Uninterpreted Functions
(PDF).
G. Gange, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
VMCAI'16. -
A Complete Refinement Procedure for Regular Separability of Context-Free Languages
(PDF).
G. Gange, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
TCS 2016. -
Finding Inconsistencies in Programs with Loops
(PDF).
T. Kahsai, J. A. Navas, D. Jovanovic, M. Schäf.
LPAR'15. -
The SeaHorn Verification Framework
(PDF).
A. Gurfinkel, T. Kahsai, A. Komuravelli, J. A. Navas.
CAV'15. -
Horn-Clauses as an Intermediate Representation for Program Analysis and Transformation
(PDF).
G. Gange, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
ICLP'15. -
A Tool for Intersecting Context-Free Grammars and Its Applications
(PDF).
G. Gange, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
NFM'15. -
SeaHorn: A Framework for Verifying C Programs (Competition Contribution)
(PDF).
A. Gurfinkel, T. Kahsai, J. A. Navas.
TACAS'15. -
Interval Analysis and Machine Arithmetic: Why Signedness Ignorance is Bliss
(PDF).
G. Gange, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
ACM TOPLAS Volume 37, Issue 1 January 2015. -
Analyzing array manipulating programs by program transformation
(PDF).
J. R. Cornish, G. Gange, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
LOPSTR'14. -
IKOS: A Framework for Static Analysis based on Abstract Interpretation
(PDF).
G. Brat, J. A. Navas, N. Shi, A. Venet.
SEFM'14. -
Verification of Programs by Combining Iterated Specialization with Interpolation
(PDF).
E. De Angelis, F. Fioravanti, J. A. Navas, M. Proietti.
HCVS'14. -
Abstract Interpretation over Non-Lattice Abstract Domains
(PDF).
G. Gange, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
SAS'13. -
Unbounded Model Checking with Interpolation for Regular Language Constraints
(PDF).
G. Gange, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
TACAS'13. -
Boosting Concolic Testing with Interpolation
(PDF).
J. Jaffar, V. Murali, J. A. Navas.
FSE'13. -
Failure Tabled Constraint Logic Programming by Interpolation
(PDF) (PDF appendix).
G. Gange, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
ICLP'13. -
Modelling Destructive Assignments
(PDF).
K. Francis, J. A. Navas, P. J. Stuckey.
CP'13. -
Signedness-Agnostic Program Analysis: Precise Integer Bounds for Low-Level Code
(PDF).
J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
APLAS'12. -
TRACER: A Symbolic Execution Tool for Verification
(PDF).
J. Jaffar, V. Murali, J. A. Navas, A. E. Santosa.
CAV'12. -
Path-Sensitive Backward Slicing
(PDF).
J. Jaffar, V. Murali, J. A. Navas, A. E. Santosa.
SAS'12. -
Unbounded Symbolic Execution for Program Verification
(PDF).
RV'11.
J. Jaffar, J. A. Navas, A. E. Santosa. -
Negative Ternary Set-Sharing
(PDF).
E. Trias, J. A. Navas, E. S. Ackley, S. Forrest, M. Hermenegildo.
ICLP'08. -
User-Definable Resource Bounds Analysis for Logic Programs
(PDF).
**Test of Time Award (10 years)**
J. A. Navas, E. Mera, P. Lopez-Garcia, M. Hermenegildo.
ICLP'07. -
A Flexible, (C)LP-based Approach to the Analysis of Object-Oriented Programs
(PDF).
M. Mendez-Lojo, J. A. Navas, M. Hermenegildo.
LOPSTR'07. -
Efficient, Parametric Fixpoint Algorithm for Analysis of Java Bytecode
(PDF).
M. Mendez-Lojo, J. A. Navas, M. Hermenegildo.
BYTECODE'07. -
Efficient top-down set-sharing analysis using cliques
(PDF).
J. A. Navas, F. Bueno, M. Hermenegildo .
PADL'06.
Non-Peer-Reviewed Publications
-
OCCAM-v2: Combining Static and Dynamic Analysis for Effective and Efficient Whole-Program Specialization
(PDF).
J. A. Navas, A. Gehani.
Communications of the ACM Volume 66, Issue 4, pp 40–47, April 2023. -
Algorithmic Logic-Based Verification
(PDF).
A. Gurfinkel, T. Kahsai, J. A. Navas.
ACM Special Interest Group on Logic and Computation (SIGLOG) April, 2015.
Unpublished Technical Reports
-
A Partial-Order Approach to Array Content Analysis
(PDF).
G. Gange, J. A. Navas, P. Schachte, H. Sondergaard, P. J. Stuckey.
Doctoral Dissertation
-
J. A. Navas.
Analysis and Inference of Resource Usage
Information. Ph.D. Thesis,
University of New Mexico (UNM), Department of Computer Science, August 2008.