151 research outputs found

    Imperative LF Meta-Programming

    Get PDF
    AbstractLogical frameworks have enjoyed wide adoption as meta-languages for describing deductive systems. While the techniques for representing object languages in logical frameworks are relatively well understood, languages and techniques for meta-programming with them are much less so. This paper presents work in progress on a programming language called Rogue-Sigma-Pi (RSP), in which general programs can be written for soundly manipulating objects represented in the Edinburgh Logical Framework (LF). The manipulation is sound in the sense that, in the absence of runtime errors, any putative LF object produced by a well-typed RSP program is guaranteed to type check in LF. An important contribution is an approach for soundly combining imperative features with higher-order abstract syntax. The focus of the paper is on demonstrating RSP through representative LF meta-programs

    Low Level Verification

    Get PDF
    Low Level Verification (LLV) is a user-driven software verification system focused on proving properties of C-style computer programs. The system is introduced in multiple parts, starting with a through description of the syntax and operational semantics of LLV code. The LLV execution language is presented as a simplified version of C/C++, in which data types and object constructs have been removed. The machine level implementation of LLV is not specified within the scope of this paper. Instead, the conceptual operation of the execution environment is described in a way that is easy for the reader to understand. Using this core language as a base, LLV defines propositional logic, and proof rules as tools for verification. The user may write theorems to describe the behavior of any given section of code. In LLV, a theorem specifies a conclusion in the form of propositional logic, and can be verified by a user-created proof. The LLV proof language includes all the rules available for formulating and constructing such proofs. In addition, cases requiring inductive reasoning (such as a recursive function) can be handled by a single unified approach through use of the induction proof rule. The LLV system also provides the user with other important features, such as an automatic arithmetic equation solver to handle trivial inferences. Using this as well as other tactics, LLV is presented as a method for reasoning about low level code in an efficient manner

    Deciding Joinability Modulo Ground Equations In Operational Type Theory

    Get PDF
    Operational Type Theory (OpTT) can be used to construct and check proofs related to programs, but the development of these proofs can be somewhat tedious. An algorithm is presented that can be used to automatically generate proofs of equality in OpTT. The algorithm takes as input a set of ground equations and two terms that should be tested for joinability modulo the supplied ground equations. The algorithm will equate the terms if and only if there exists an OpTT proof that can equate the two terms using only the proof rules related to evaluation under the operational semantics, symmetry, transitivity, and congruence with respect to the supplied ground equations. The description of this algorithm is accompanied by a proof that the algorithm is partially correct
    • …
    corecore