8 research outputs found

    Mechanized Metatheory for the Masses: The \u3cb\u3ePOPLMARK\u3c/b\u3e Challenge

    Get PDF
    How close are we to a world where every paper on programming languages is accompanied by an electronic appendix with machinechecked proofs? We propose an initial set of benchmarks for measuring progress in this area. Based on the metatheory of System F, a typed lambda-calculus with second-order polymorphism, subtyping, and records, these benchmarks embody many aspects of programming languages that are challenging to formalize: variable binding at both the term and type levels, syntactic forms with variable numbers of components (including binders), and proofs demanding complex induction principles. We hope that these benchmarks will help clarify the current state of the art, provide a basis for comparing competing technologies, and motivate further research

    K-LLVM: A Relatively Complete Semantics of LLVM IR

    Get PDF

    IsaK: A Complete Semantics of K

    Get PDF
    K (Roşu and Şerbănuţă, 2010) is a rewrite-based executable semantic framework in which programming languages, type systems and formal analysis tools can be de ned using con gurations, computations and rules. In this paper we de ne IsaK, a reference semantics for K, which was developed through discussion with the K team to meet their expectations of a semantics of K. IsaK is de ned in the interactive theorem prover Isabelle/HOL (Paulson, 1990), and, to the best of our knowledge, is the most complete of any existing K speci cation. IsaK de nes the full behavior of K, a useful sort system for K and suggests several undesirable behaviors in the current K implementations (K 3.6 and K 4.0). We also provide an OCaml based executable K interpreter generated automatically from the K speci cation in Isabelle. By using a prede ned K parser, the K interpreter is suitable to interpret major K de nitions for large languages such as the LLVM semantics in K, the Java semantics in K and the C semantics in K. We ran a test suite including 13 speci cations and 356 programs to test our K interpreter and we are able to compile all 13 speci cations and run the 338 programs not requiring keyboard input. As a utility of IsaK, we also formally prove a CTL application in IsaK correct.NSF Grant No.0917218Ope

    A verification framework suitable for proving large language translations

    Get PDF
    Previously, researchers established some frameworks, such as Morpheus, to specify a compiler translation in a small language and prove the semantic preservation property of the translation in the language under the assumption of sequential consistency. Based on the Morpheus specification language, we extend the verification framework to prove the compiler translation semantic preservation property in a large real-world programming language with a real-world weak concurrency model. The framework combines four different pieces. First, we specify a complete semantics of the K framework and a translation from K to Isabelle as our basis for defining language specifications and proving properties about the specifications. Second, we define a complete operational semantics of LLVM in K, named K-LLVM, including the specifications of all instructions and intrinsic functions in LLVM, as well as the concurrency model of LLVM. Third, to verify the correctness of the K-LLVM operational model, we create an axiomatic model, named Hybrid Axiomatic Timed Relaxed Concurrency Model (HATRMM). The creation of HATRMM is to bridge the traditional C++ candidate execution models and the K-LLVM operational concurrency model. Finally, to enhance our framework to prove the semantic preservation property in a relaxed memory model, we define a new simulation framework, named Per Location Simulation (PLS). PLS is suitable for proving semantic preservation property in a relaxed memory model

    Supporting formal reasoning about functional programs

    Get PDF
    It is often claimed that functional programming languages, and in particular pure functional languages are suitable for formal reasoning. This claim is supported by the fact that many people in the functional programming community do reason about languages and programs in a formal or semi-formal way. Different reasoning principles such as equational reasoning, induction and co-induction, are used, depending on the nature of the problem. Using a computer program to check the application of rules and to mechanise the tedious bookkeeping involved can simplify proofs and provide more confidence in their correctness. When reasoning about programs, this can also allow experiments with new rules and reasoning styles, where a user may not be confident about structuring a proof on paper. Checking the applicability of a rule can eliminate the risk of mistakes caused by misunderstanding the theory being used. Just as there are different ways in which formal or informal reasoning can be applied in functional programming, there are different ways in which tools can be provided to support this reasoning. This thesis describes an investigation of how to develop a mechanised reasoning system to allow reasoning about algorithms as a functional programmer would write them, not an encoding of the algorithm into a significantly different form. In addition, this work aims to develop a system to support a user who is not a theorem proving expert or an expert in the theoretical foundations of functional programming. The work is aimed towards a system that could be used by a functional programmer developing real programs and wishing to prove some or all of the programs correct or to prove that two programs are equivalent

    Declarative theorem proving for operational semantics

    Get PDF
    iAbstract The aim of this Masters Thesis is to propose to SYSteam Nät AB, a local Internet Service Provider (ISP) in Uppsala, Sweden, how to implement IP telephony in their existing IT-infrastructure as a service to their customers. Thus the perspective of the thesis will be that of a local Internet Service Provider. Three general areas are covered in the thesis: Market and Business Model, Technology, and Economics. Important issues for SYSteam Nät AB as an established local broadband Internet Service Provider are to both retain present customers and to attract new customers. Some believe that offering value added services such as IP telephony could do this. Implementation of IP telephony can be done in different ways to fulfil SYSteam Nät’s requirements. The analysis leads to a proposal of how SYSteam Nät could implement IP telephony. This involves many multi-faceted business, technical, and financial issues; each aspect is examined in this thesis. ii Sammanfattnin

    Studying the ML Module System in HOL

    No full text
    syntax for higher-order functors (additions and changes) I 2 Int = FunIntEnv \Theta StrIntEnv \Theta Fin(var) SIE 2 StrIntEnv = strid fin ! Int FIE 2 FunIntEnv = funid fin ! Int IB 2 IntBasis = FunIntEnv \Theta SigEnv \Theta StrIntEnv ME 2 ModEnv = FunEnv \Theta ModStrEnv \Theta VarEnv MSE 2 ModStrEnv = strid fin ! ModEnv B 2 Basis = SigEnv \Theta ModEnv FIGURE 5. Semantic objects for higher-order functors (additions and changes) thinning functors. The nature of this information is discussed at length later. Interface Bases (IntBasis) These now have a new component: a functor interface environment. Module-level environments (ModEnv) These are the environments obtained as the result of evaluating structures. Since structures can contain functors, these environments contain a functor environment (FunEnv) component. In the rest of this paper we will refer to these objects as "environments" unless there is a possibility of confusion with Core-level environments. Module-lev..
    corecore