European Commission logo
español español
CORDIS - Resultados de investigaciones de la UE
CORDIS

Certified Refinement Types

Descripción del proyecto

Un nuevo sistema de verificación robusto que genera pruebas matemáticas con control automático

Los lenguajes de programación transmiten instrucciones a un ordenador. Los sistemas de tipos (normas que asignan una propiedad denominada «tipo» a construcciones del programa, como variables y funciones) se utilizan para facilitar la definición, detección y prevención de los estados ilegales del programa, así como evitar errores de ejecución durante el tiempo de funcionamiento. Los programadores pueden utilizar tipos de refinamiento para perfeccionar o limitar el significado de un tipo. Se trata de una tecnología de comprobación prometedora, pero no alcanza las normas de solidez relativas a la satisfacibilidad de los solucionadores de teorías de modulación, que solo aceptan como seguros aquellos programas que nunca vulneran sus especificaciones. El equipo del proyecto CRETE, financiado con fondos europeos, diseñará un sistema de tipo de refinamiento práctico y sólido que pueda utilizarse en aplicaciones del mundo real, como los protocolos criptográficos.

Objetivo

Refinement types are a type-based, static verification technique designed to be practical. They enrich the types of an existing programming language with logical predicates to specify program properties and automatically validate these specifications using SMT solvers. Refinement types are a promising verification technology that in the last decade has spread to mainstream languages (e.g. Haskell, C, Ruby, Scala, and the ML-family) to verify sophisticated properties of real world applications, e.g. safety of cryptographic protocols, memory and resource usage, and web security.

The weakness of refinement types is that they do not meet the soundness standards set by theorem provers. A sound verification system accepts as safe only those programs that never violate their specifications. Refinement type checkers (e.g. Liquid Haskell, F*, and Stainless) approximately report five unsoundness bugs per year, as opposed to only one reported by the Coq theorem prover. This rarity of unsoundness bugs in Coq is unsurprising since Coq is designed to soundly machine check mathematical proofs. Coq's soundness design recipe though cannot be directly applied to refinement type checkers that aim to practically verify real world programs.

The goal of CRETE is to design a sound and practical refinement type system.

This is an ambitious goal that entails the development of a verification system that is as practical as refinement types and constructs machine-checked mathematical proofs. The system will be implemented on refinement type systems for mainstream languages (i.e. Haskell and Rust) and will be evaluated on real-world code, such as web applications and cryptographic protocols.

CRETE is high-risk since it aims to develop a novel program logic in which SMT automation co-exists with real world programming. Yet, CRETE is high-gain since it proposes a low-cost, high-profit approach to formal verification that aims to be integrated in mainstream software development.

Régimen de financiación

HORIZON-ERC - HORIZON ERC Grants

Institución de acogida

FUNDACION IMDEA SOFTWARE
Aportación neta de la UEn
€ 1 500 000,00
Dirección
CAMPUS DE MONTEGANCEDO SN
28223 Pozuelo De Alarcon
España

Ver en el mapa

Región
Comunidad de Madrid Comunidad de Madrid Madrid
Tipo de actividad
Research Organisations
Enlaces
Coste total
€ 1 500 000,00

Beneficiarios (1)