5,727 research outputs found
The First-Order Hypothetical Logic of Proofs
The Propositional Logic of Proofs (LP) is a modal logic in which the modality â–¡A is revisited as [​[t]​]​A , t being an expression that bears witness to the validity of A . It enjoys arithmetical soundness and completeness, can realize all S4 theorems and is capable of reflecting its own proofs ( ⊢A implies ⊢[​[t]​]A , for some t ). A presentation of first-order LP has recently been proposed, FOLP, which enjoys arithmetical soundness and has an exact provability semantics. A key notion in this presentation is how free variables are dealt with in a formula of the form [​[t]​]​A(i) . We revisit this notion in the setting of a Natural Deduction presentation and propose a Curry–Howard correspondence for FOLP. A term assignment is provided and a proof of strong normalization is given.Fil: Steren, Gabriela. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales. Departamento de Computación; ArgentinaFil: Bonelli, Eduardo Augusto. Universidad Nacional de Quilmes. Departamento de Ciencia y TecnologÃa; Argentina. Consejo Nacional de Investigaciones CientÃficas y Técnicas; Argentin
Modular, Fully-abstract Compilation by Approximate Back-translation
A compiler is fully-abstract if the compilation from source language programs
to target language programs reflects and preserves behavioural equivalence.
Such compilers have important security benefits, as they limit the power of an
attacker interacting with the program in the target language to that of an
attacker interacting with the program in the source language. Proving compiler
full-abstraction is, however, rather complicated. A common proof technique is
based on the back-translation of target-level program contexts to
behaviourally-equivalent source-level contexts. However, constructing such a
back- translation is problematic when the source language is not strong enough
to embed an encoding of the target language. For instance, when compiling from
STLC to ULC, the lack of recursive types in the former prevents such a
back-translation.
We propose a general and elegant solution for this problem. The key insight
is that it suffices to construct an approximate back-translation. The
approximation is only accurate up to a certain number of steps and conservative
beyond that, in the sense that the context generated by the back-translation
may diverge when the original would not, but not vice versa. Based on this
insight, we describe a general technique for proving compiler full-abstraction
and demonstrate it on a compiler from STLC to ULC. The proof uses asymmetric
cross-language logical relations and makes innovative use of step-indexing to
express the relation between a context and its approximate back-translation.
The proof extends easily to common compiler patterns such as modular
compilation and it, to the best of our knowledge, it is the first compiler full
abstraction proof to have been fully mechanised in Coq. We believe this proof
technique can scale to challenging settings and enable simpler, more scalable
proofs of compiler full-abstraction
Using the Adelfa Proof Assistant to Construct Proofs of Programming Language Properties
In this thesis, we demonstrate stating and proving properties of a programming language using a dependently typed lambda calculus called LF and a system called Adelfa which provides mechanized support for reasoning about statements concerning typing derivations in LF. Proving properties in
this manner allows the proofs to be undertaken using a formal logic, and builds greater trust in the proofs because the details of the steps are checked mechanically. The property that we consider in our demonstration is subject reduction for the Simply Typed Lambda Calculus. The Simply Typed Lambda Calculus is the theoretical foundation for many important programming languages and more complex lambda calculi, and subject reduction is a nontrivial properties with important equivalents in these more complex systems. Therefore, this proof constitutes a nontrivial demonstration of the usefulness of LF and Adelfa for proving properties of programming languages.Work on this honors thesis was partially supported by the National Science Foundation through an REU supplement associated with Grant No. CCF-1617771. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation
- …