99 research outputs found
An Algebraic Framework for Compositional Program Analysis
The purpose of a program analysis is to compute an abstract meaning for a
program which approximates its dynamic behaviour. A compositional program
analysis accomplishes this task with a divide-and-conquer strategy: the meaning
of a program is computed by dividing it into sub-programs, computing their
meaning, and then combining the results. Compositional program analyses are
desirable because they can yield scalable (and easily parallelizable) program
analyses.
This paper presents algebraic framework for designing, implementing, and
proving the correctness of compositional program analyses. A program analysis
in our framework defined by an algebraic structure equipped with sequencing,
choice, and iteration operations. From the analysis design perspective, a
particularly interesting consequence of this is that the meaning of a loop is
computed by applying the iteration operator to the loop body. This style of
compositional loop analysis can yield interesting ways of computing loop
invariants that cannot be defined iteratively. We identify a class of
algorithms, the so-called path-expression algorithms [Tarjan1981,Scholz2007],
which can be used to efficiently implement analyses in our framework. Lastly,
we develop a theory for proving the correctness of an analysis by establishing
an approximation relationship between an algebra defining a concrete semantics
and an algebra defining an analysis.Comment: 15 page
Decision Procedure for Synchronous Kleene Algebra
Kleene Algebra (KA) is an algebraic system that has many applications both in mathematics and
computer science. It was named after Stephen Cole Kleene who extensively studied regular
expressions and finite automata [Kle56].
Moreover it is often used to reason about programs, as it can represent sequential composition,
choice and finite iteration. Furthermore, the need to reason about actions which can be executed
concurrently, spawned SKA. SKA is an extension of KA introduced by Cristian Prisacariu
in [Pri10] that adopts a notion of concurrent actions.
Laguange equivalence is an imperishable problem in computer science. In this thesis we present
the reader with a detailed explanation of a decision procedure for SKA terms and an OCaml
implementation of said procedure as well.A Kleene Algebra (KA) é um sistema algébrico que tem bastantes aplicações quer no campo da
matemática como também da informática.
Foi batizada com o nome do seu inventor Stephen Cole Kleene, que ao longo da sua carreira fez
um estudo intensivo sobre expressões regulares e autómatos finitos [Kle56].
Quando há necessidade de raciocinar equacionalmente sobre programas, recorre-se frequentemente
à Kleene Algebra, visto que esta consegue exprimir noções de escolha, composição sequencial
e até a noção de iteração. A necessidade de raciocinar equacionalmente sobre ações
que podem ser executadas de forma concorrente levou ao aparecimento da Algebra de Kleene
Síncrona ou Synchronous Kleene Algebra (SKA). Esta última foi introduzida por Cristian Prisacariu
em 2010 no seu artigo [Pri10] como uma extensão à Kleene Algebra mas que contém uma noção
de ação concorrente.
A equivalência de linguagens é um problema perene em ciências da computação. Nesta dissertação
iremos apresentar ao leitor uma explicação detalhada de um processo de decisão para
termos de Synchronous Kleene Algebra (SKA) bem como a sua implementação utilizando a linguagem
de programação OCaml
Synchronous Kleene algebra
AbstractThe work presented here investigates the combination of Kleene algebra with the synchrony model of concurrency from Milner’s SCCS calculus. The resulting algebraic structure is called synchronous Kleene algebra. Models are given in terms of sets of synchronous strings and finite automata accepting synchronous strings. The extension of synchronous Kleene algebra with Boolean tests is presented together with models on sets of guarded synchronous strings and the associated automata on guarded synchronous strings. Completeness w.r.t. the standard interpretations is given for each of the two new formalisms. Decidability follows from completeness. Kleene algebra with synchrony should be included in the class of true concurrency models. In this direction, a comparison with Mazurkiewicz traces is made which yields their incomparability with synchronous Kleene algebras (one cannot simulate the other). On the other hand, we isolate a class of pomsets which captures exactly synchronous Kleene algebras. We present an application to Hoare-like reasoning about parallel programs in the style of synchrony
Dagstuhl News January - December 2001
"Dagstuhl News" is a publication edited especially for the members of the Foundation "Informatikzentrum Schloss Dagstuhl" to thank them for their support. The News give a summary of the scientific work being done in Dagstuhl. Each Dagstuhl Seminar is presented by a small abstract describing the contents and scientific highlights of the seminar as well as the perspectives or challenges of the research topic
Computing with Capsules
Capsules provide a clean algebraic representation of the state of a computation in higher-order functional and imperative languages. They play the same role as closures or heap- or stack-allocated environments but are much simpler. A capsule is essentially a finite coalgebraic representation of a regular closed lambda-coterm. One can give an operational semantics based on capsules for a higher-order programming language with functional and imperative features, including mutable bindings. Lexical scoping is captured purely algebraically without stacks, heaps, or closures. All operations of interest are typable with simple types, yet the language is Turing complete. Recursive functions are represented directly as capsules without the need for unnatural and untypable fixpoint combinators
Algebraic Principles for Program Correctness Tools in Isabelle/HOL
This thesis puts forward a flexible and principled approach to the development of
construction and verification tools for imperative programs, in which the
control flow and the data level are cleanly separated. The approach is inspired
by algebraic principles and benefits from an algebraic semantics layer.
It is programmed in the Isabelle/HOL interactive theorem prover and yields
simple lightweight mathematical components as well as program construction and
verification tools that are themselves correct by construction.
First, a simple tool is implemented using Kleeene algebra with tests (KAT)
for the control flow of while-programs, which is the most compact verification
formalism for imperative programs, and their standard relational semantics for
the data level. A reference formalisation of KAT in Isabelle/HOL is then
presented, providing three different formalisations of tests. The structured
comprehensive libraries for these algebras include an algebraic account of
Hoare logic for partial correctness. Verification condition generation and
program construction rules are based on equational reasoning and supported by
powerful Isabelle tactics and automated theorem proving.
Second, the tool is expanded to support different programming features and
verification methods. A basic program construction tool is developed by adding
an operation for the specification statement and one single axiom. To include
recursive procedures, KATs are expanded further to quantales with tests,
where iteration and the specification statement can be defined explicitly.
Additionally, a nondeterministic extension supports the verification of simple
concurrent programs.
Finally, the approach is also applied to separation logic, where the
control-flow is modelled by power series with convolution as separating
conjunction. A generic construction lifts resource monoids to assertion and
predicate transformer quantales. The data level is captured by concrete
store-heap models. These are linked to the algebra by soundness proofs.
A number of examples shows the tools at work
Denotational semantics with nominal scott domains
When defining computations over syntax as data, one often runs into tedious issues concerning
α
-equivalence and semantically correct manipulations of binding constructs. Here we study a semantic framework in which these issues can be dealt with automatically by the programming language. We take the user-friendly “nominal” approach in which bound objects are named. In particular, we develop a version of Scott domains within nominal sets and define two programming languages whose denotational semantics are based on those domains. The first language,
λν
-PCF, is an extension of Plotkin’s PCF with names that can be swapped, tested for equality and locally scoped; although simple, it already exposes most of the semantic subtleties of our approach. The second language, PNA, extends the first with name abstraction and concretion so that it can be used for metaprogramming over syntax with binders.
For both languages, we prove a full abstraction result for nominal Scott domains analogous to Plotkin’s classic result about PCF and conventional Scott domains: two program phrases have the same observable operational behaviour in all contexts if and only if they denote equal elements of the nominal Scott domain model. This is the first full abstraction result we know of for languages combining higher-order functions with some form of locally scoped names which uses a domain theory based on ordinary extensional functions, rather than using the more intensional approach of game semantics.
To obtain full abstraction, we need to add two functionals, one for existential quantification over names and one for “definite description” over names. Only adding one of them is not enough, as we give counter-examples to full abstraction in both cases.This work is supported by a Gates Cambridge Scholarship and the ERC Advanced Grant Events, Causality and Symmetry (ECSYM)This version is the author accepted manuscript. The final version is available from ACM at http://dl.acm.org/citation.cfm?id=2629529
Isabelle/UTP: Mechanised Theory Engineering for the UTP
Isabelle/UTP is a mechanised theory engineering toolkit based on Hoare and He’s Unifying Theories of Programming (UTP). UTP enables the creation of denotational, algebraic, and operational semantics for different programming languages using an alphabetised relational calculus. We provide a semantic embedding of the alphabetised relational calculus in Isabelle/HOL, including new type definitions, relational constructors, automated proof tactics, and accompanying algebraic laws. Isabelle/UTP can be used to both capture laws of programming for different languages, and put these fundamental theorems to work in the creation of associated verification tools, using calculi like Hoare logics. This document describes the relational core of the UTP in Isabelle/HOL
- …