140 likes | 286 Views
Component-based Proof Assistant. Frenkel Smeijers. Outline. Proof assistant FoolProof. Proof assistant. Interactive construction of proofs Based on typed lambda-calculi Based on propositions as types, proofs as terms principle Formal basis of e.g. Coq, Cocktail. Propositions as Types.
E N D
Component-based Proof Assistant Frenkel Smeijers
Outline • Proof assistant • FoolProof
Proof assistant • Interactive construction of proofs • Based on typed lambda-calculi • Based on propositions as types, proofs as terms principle • Formal basis of e.g. Coq, Cocktail
Propositions as Types • Unifying approach to lambda calculi and logic • Based on “isomorphism” between types and propositions • Judgment ├ M: τhas two interpretations: • In context , term M has type τ • In context , term M encodes proof of proposition τ
( I) , x: σ├ M: τ ├ (λx: σ. M): σ τ ( E) ├ M: στ ├ N: σ ├ MN: τ (var) ├ M: σ if (M: σ) Similar correspondences between and + and and and ( I) , P├ Q ├ P Q ( E) ├ P Q ├ P ├ Q (var) ├ P if P Type deduction vs. logical deduction
x : P y : Q x : P (λy: Q. x) : Q P (λx: P. (λy: Q . x) : P (Q P) P Q P Q P P (Q P) Propositions as types example
Interactive construction of terms λ : P(QP) x: P λ : QP y: Q x: P • This is an example of structure editing with bound variables
FoolProof • Component library • Delphi • Components for: • Lexical scanning • Syntax highlighting • Parsing • Tree building • Structure editing • Textual views • Structural views • Context management
FoolProof: distinguishing facilities • “Small and simple” components that fit into a general framework (e.g. Delphi, JBuilder, Visual Studio) • Manipulation of binding structures • Copying, substitution, unification etc. • Context management • Context: structured collection of names and their properties • Management: manipulating contexts in a well-formedness preserving way
My proof assistant • Based on abstract descriptions by Marco Brassé • Research usability of FoolProof components • Not an automatic prover • Intended to become FoolProof component itself
Subtasks • Recall typed lambda calculi (as far as necessary) • Study existing proof assistants (Coq, Cocktail, …), Brassé’s notes, FoolProof • Abstract and concrete design of new proof assistant • Implement and integrate