2018-annual-report
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Program Analysis
and Verification
23
Our research on Program Analysis and Verification advances
the theoretical underpinnings and the practical tools that
help programmers show, by means of a mathematical
proof, that their software executes as intended in terms
of functionality, efficiency, and resource consumption.
Establishing correctness of a program is essential in many
existing and emerging industrial domains where a program
malfunction may have serious negative consequences.
Examples include safety-critical avionics and automotive
software, embedded and mobile software that must perform
within given resource bounds, and electronic currencies
and smart contracts, which are essentially a form
of programmable money.
In addition to being practically important, proving that
software is correct is a source of some of the deepest,
most challenging, but also most beautiful scientific and
mathematical questions. Here are some of the topics on
which IMDEA researchers currently work, and are worldwide
leaders.
Verification of concurrent and distributed systems
Formal languages and systems for specification,
interactive, and automated proofs
• Expressive, dependent and higher-order type systems
(liquid types, type theories, proof assistants, Coq, Agda).
• Behavioral types (monads, comonads, Hoare types, session
types) .
• SAT and SMT solvers.
Algorithms and efficent deductive methods for
software verification
• Sofware model checking, parametrized model checking,
automatic abstraction refinement.
• Decision procedures for complex data-types.
• Automata theory and formal languages.
Static analysis and abstract interpretation
• Analysis and verification of software resource consumption
(e.g., energy bounds for programs).
• Compile- and run-time assertion checking.
• Automatic refinement of abstract domains.
annual report
20
• Spatial, temporal, and relational program logics (Hoare
logics, separation logic, logics for temporal hyperproperties,
logics for information flow security, LTL, CTL).
• Consistency criteria (linearizability, serializability, quiescent
linearizability, eventual consistency).
• Weak memory models.
• Consensus algorithms.
• Blockchain and smart contracts.