• Aucun résultat trouvé

Dedukti:un vérificateur de preuves universel

N/A
N/A
Protected

Academic year: 2021

Partager "Dedukti:un vérificateur de preuves universel"

Copied!
2
0
0

Texte intégral

(1)

HAL Id: hal-01086609

https://hal-mines-paristech.archives-ouvertes.fr/hal-01086609

Submitted on 24 Nov 2014

HAL is a multi-disciplinary open access

archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Dedukti:un vérificateur de preuves universel Ali Assaf, Raphaël Cauderlier, Ronan Saillard

To cite this version:

Ali Assaf, Raphaël Cauderlier, Ronan Saillard. Dedukti:un vérificateur de preuves universel. Journées nationales GDR - GPL - CIEL - AFADL, Apr 2013, Nancy, France. �hal-01086609�

(2)

Dedukti:un v´

erificateur de preuves universel

Ali Assaf, Rapha¨

el Cauderlier et Ronan Saillard

DEDUC⊢EAM (INRIA) - MINES ParisTech

ali.assaf@inria.fr raphael.cauderlier@inria.fr ronan.saillard@inria.fr

Dedukti est un v´erificateur de types pour le λΠ-calcul modulo, un formalisme alliant types d´ependants et r´e´ecriture qui permet d’exprimer et de v´erifier les preuves de nombreux syst`emes logiques.

Nous proposons d’utiliser Dedukti comme un v´erificateur de preuves universel en traduisant HOL, Coq et FoCaLize vers Dedukti.

Introduction

# let transitivity =

EQ_MP

(MK_COMB (REFL ‘(=) x : A -> bool‘,

ASSUME ‘y : A = z‘)) (ASSUME ‘x : A = y‘);; val transitivity : thm = x = y, y = z |- x = z

HOL

Holide

Theorem transitivity :

forall (A : Type) (x y z : A),

x = y -> y = z -> x = z. Proof. intros A x y z H1 H2. induction H1. exact H2. Qed.

Coq

Coqine

species Setoid =

signature (=): Self -> Self -> bool;

property transitivity : all x y z : Self, x = y -> y = z -> x = z; end;;

FoCaLize

Focalide

A : Type. Nat: Type. Z : Nat. S : Nat -> Nat.

plus: Nat -> Nat -> Nat.

[m:Nat] plus Z m --> m

[n:Nat,m:Nat] plus (S n) m --> plus n (S m).

Listn : Nat -> Type.

nil : Listn Z.

cons : n:Nat -> A -> Listn n -> Listn (S n).

append: n:Nat -> Listn n -> m:Nat -> Listn m -> Listn (plus m n).

[n:Nat,l1:Listn n] append n l1 Z nil --> l1

[n:Nat,l1:Listn n,m:Nat,l2:Listn m,a:A]

append n l1 (S m) (cons {m} a l2) --> append (S n) (cons n a l1) m l2.

D´efinition de la concat´enation de listes de taille n en Dedukti.

• Un v´erificateur de preuves bas´e sur le λΠ-calcul modulo (voir encadr´e).

• Une architecture originale : le fichier source est compil´e vers un langage cible (Lua) qui est ensuite ex´ecut´e pour obtenir le r´esultat.

• De la normalisation par ´evaluation : la normalisation est assur´ee par l’ex´ecution dans le langage cible.

• Une compilation just-in-time (JIT ) : l’utilisation d’un compilateur JIT comme back-end assure des performances optimales quelque soit la quan-tit´e de calcul dans les preuves v´erifi´ees.

• Une v´erification de type sans contexte : le contexte est remplac´e par des annotations de type.

• Un algorithme bi-directionnel : le syst`eme alterne entre des phases de v´erification et d’inf´erence de type, guid´e par la structure du terme.

Dedukti

Lua

OK

KO

Runtime

dedukti.lua

génération du code exécution du code

Dedukti est un g´en´erateur de code.

Dedukti

• Le λΠ-calcul est un λ-calcul avec des types d´ependants qui permet d’-exprimer les preuves de la logique minimale des pr´edicats `a travers la correspondance de Curry-DeBruijn-Howard.

• Le λΠ-calcul modulo est une extension du λΠ-calcul qui int`egre une notion de convertibilit´e ´elargie :

Γ ⊢ t : A Γ ⊢ B : s A ≡βR B

(Conv) Γ ⊢ t : B

o`u R est la congruence g´en´er´ee par un syst`eme de r´e´ecriture bien typ´e

arbitraire.

Le λΠ-calcul modulo

• Les syst`emes de preuves actuels souffrent d’un manque d’interop´erabilit´e. Il est difficile de r´eutiliser une th´eorie d’un syst`eme dans un autre sans re-faire toutes les preuves.

• La traduction de ces diff´erents syst`emes dans un formalisme commun permettra de combiner leurs preuves pour construire des th´eories plus larges.

Des traductions d’autres syst`emes, tels que PVS, Matita ou encore Atelier

B, sont `a l’´etude.

Vers l’interop´

erabilit´

e

Références

Documents relatifs

Montrer que toute solution non nulle de l’´ equation (E) poss` ede un nombre fini de z´ eros sur tout intervalle [a, b] ⊂ I..

En outre, je ne peux passer sous silence comme son cours d’Int´ egration de Lebesgue au premier semestre m’a passionn´ e, si bien que j’ai justement d´ esir´ e d’en savoir

La communication du système PhoX proprement dit avec l’utilisateur se fait par l’intermédiaire d’une boucle d’interaction, c’est à dire que l’utilisateur envoie des

Ensuite, nous ´etablissons une liste de formules exactes pour le calcul de la fiabilit´e du syst`eme, aussi bien dans le cas o`u les dur´ees de vie des composants sont

Rhumatologie Dermatologie Radiologie Dermatologie Hematologie O.R.L Biophysique Chirurgie – Pédiatrique Chirurgie Cardio-Vasculaire Chirurgie Cardio-Vasculaire Gynécologie

représentations et activités expertes, dans le cadre du contrôle de processus et de la résolution de problèmes (l'INRIA-Rocquencourt), puis sur la conception et

Preuve : On montre, par induction sur le nombre de personnes dans l'amphi, que tout groupe de n personnes contenant le professeur est d'accord avec lui. Cas de base : il y a

raisonnement qui vise à établir une propriété pour tous les éléments d'un ensemble muni d'un ordre strict bien fondé. Un ensemble A , un ordre strict  sur A et une propriété P