Professional Documents
Culture Documents
Dedukti: From Universality To Interoperability: Slide 1
Dedukti: From Universality To Interoperability: Slide 1
Dedukti: From Universality To Interoperability: Slide 1
Slide 2
I. Proof systems
Systems developed over decades Slide 3 In one bloc (one Makefile, one process) That implement a single (rich and powerful) formalism: CIC, HOL (with predicate subtyping), BM-logic
A proof checker A (some) tactic system(s) Slide 5 A (some) program extraction system(s) A (some) editor(s) that share a le format
A single formalism?
HOL, CIC, ... can be axiomatized in predicate logic Slide 6 Why not: a system for predicate logic + axioms?
Because
it does not work no witness property Slide 7 no way to extract programs no efcient proof-search methods
Slide 8
Computation rules
x (x + 0 = x)
Slide 9 a computation rule
x + 0 x
That denes a congruence, modulo which we reason
x (x + 0 = x)
becomes unneeded because it is congruent to Slide 10
x (x = x)
Without axioms we get back: the witness property program extraction efcient proof-search methods
(13 | 221)
Slide 12
III. -modulo
Many -calculi
: predicate logic
Slide 13 arithmetic Martin-Lof: CoC: simple type theory CIC: simple type theory with the axiom of innity
-modulo
+ computation rules
Can encode
An example: polymorphism
X : Type (X X )
but Type does not have type Type Slide 16 no way to quantify over Type (in )
x : U ((x) (x))
with U
Substitute nat
nat for X ?
: U and :U U U
Again ...
Why not + axioms? Slide 19 Same reasons Same solution + computation rules
Slide 20
IV. Compiling
In deduction modulo
C A if C (A B ) B
Slide 21 Test the congruence of A Same in -modulo
B and C
A problem already met in Coq (that has a little modulo in it) Comparison of normal forms Slide 22 Barras: explicit substitutions (environment machine) Gregoire (+ Leroy and Werner): compilation Dedukti: reduction extended to an arbitrary rewrite system
Boespugs solution
A reinterpretation of Gregoires compilation: NBE Slide 23 Reinterpretation of NBE: translation in the underlying programming language, execution, reication
Once the problem understood this way: rewriting for free The underlying language (Caml, Haskell) already has rewriting
More novelties Coq: only conversion is compiled, verication is classical Back and forth between the term and the compiled code Dedukti: the full verication is compiled Slide 24 a term t: a Haskell program that returns true or false according to the well-typedness of t
More novelties
Slide 26
No tactics, no extraction, ... Slide 27 Back-end for the systems that use Coq just as a back-end to verify certcates (Zeno, Focalize, ... in progress) Back-end for Coq (Burel-Boespug, in progress) and HOL (Keller, in progress)
Many Coq or HOL proofs are just a proof by induction in predicate logic (or HA) Slide 28 Others use the power of the logical system Can we use Dedukti to tag each proof by its minimal theory? Identify the rules used for the verication
Lemmas proved in HA: exported to all systems Slide 29 Intuitionist HOL proofs: exported to Coq Coq that do not use some rewrite rules: provable in HOL
Nowadays diversity of programming languages does not preclude data exchange Slide 30