Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Johannes Borgström is active.

Publication


Featured researches published by Johannes Borgström.


european conference on object oriented programming | 2011

Maintaining database integrity with refinement types

Ioannis G. Baltopoulos; Johannes Borgström; Andrew D. Gordon

Taking advantage of recent advances in automated theorem proving, we present a new method for determining whether database transactions preserve integrity constraints. We consider check constraints and referential-integrity constraints--extracted from SQL table declarations--and application-level invariants expressed as formulas of first-order logic. Our motivation is to use static analysis of database transactions at development time, to catch bugs early, or during deployment, to allow only integrity-preserving stored procedures to be accepted. We work in the setting of a functional multi-tier language, where functional code is compiled to SQL that queries and updates a relational database. We use refinement types to track constraints on data and the underlying database. Our analysis uses a refinement-type checker, which relies on recent highly efficient SMT algorithms to check proof obligations. Our method is based on a list-processing semantics for an SQL fragment within the functional language, and is illustrated by a series of examples.


international conference on concurrency theory | 2004

Symbolic bisimulation in the Spi calculus

Johannes Borgström; Sébastien Briais; Uwe Nestmann

The spi calculus is an executable model for the description and analysis of cryptographic protocols. Security objectives like secrecy and authenticity can be formulated as equations between spi calculus terms, where equality is interpreted as a contextual equivalence.


symposium on principles of programming languages | 2014

Tabular: a schema-driven probabilistic programming language

Andrew D. Gordon; Thore Graepel; Nicolas Rolland; Claudio V. Russo; Johannes Borgström; John Guiver

We propose a new kind of probabilistic programming language for machine learning. We write programs simply by annotating existing relational schemas with probabilistic model expressions. We describe a detailed design of our language, Tabular, complete with formal semantics and type system. A rich series of examples illustrates the expressiveness of Tabular. We report an implementation, and show evidence of the succinctness of our notation relative to current best practice. Finally, we describe and verify a transformation of Tabular schemas so as to predict missing values in a concrete database. The ability to query for missing values provides a uniform interface to a wide variety of tasks, including classification, clustering, recommendation, and ranking.


european symposium on programming | 2011

Measure transformer semantics for Bayesian machine learning

Johannes Borgström; Andrew D. Gordon; Michael J. Greenberg; James Margetson; Jurgen Van Gael

The Bayesian approach to machine learning amounts to inferring posterior distributions of random variables from a probabilistic model of how the variables are related (that is, a prior distribution) and a set of observations of variables. There is a trend in machine learning towards expressing Bayesian models as probabilistic programs. As a foundation for this kind of programming, we propose a core functional calculus with primitives for sampling prior distributions and observing variables. We define combinators for measure transformers, based on theorems in measure theory, and use these to give a rigorous semantics to our core calculus. The original features of our semantics include its support for discrete, continuous, and hybrid measures, and, in particular, for observations of zero-probability events. We compile our core language to a small imperative language that has a straightforward semantics via factor graphs, data structures that enable many efficient inference algorithms. We use an existing inference engine for efficient approximate inference of posterior marginal distributions, treating thousands of observations per second for large instances of realistic models.


international conference on software engineering | 2011

Broadcast psi-calculi with an application to wireless protocols

Johannes Borgström; Shuqin Huang; Magnus Johansson; Palle Raabjerg; Björn Victor; Johannes Åman Pohjola; Joachim Parrow

Psi-calculi is a parametric framework for extensions of the pi-calculus, with arbitrary data structures and logical assertions for facts about data. In this paper we add primitives for broadcast communication in order to model wireless protocols. The additions preserve the purity of the psi-calculi semantics, and we formally prove the standard congruence and structural properties of bisimilarity. We demonstrate the expressive power of broadcast psi-calculi by modelling the wireless ad-hoc routing protocol LUNAR and verifying a basic reachability property.


tools and algorithms for construction and analysis of systems | 2013

Deriving probability density functions from probabilistic functional programs

Sooraj Bhat; Johannes Borgström; Andrew D. Gordon; Claudio V. Russo

The probability density function of a probability distribution is a fundamental concept in probability theory and a key ingredient in various widely used machine learning methods. However, the necessary framework for compiling probabilistic functional programs to density functions has only recently been developed. In this work, we present a density compiler for a probabilistic language with discrete and continuous distributions, and discrete observations, and provide a proof of its soundness. The compiler greatly reduces the development effort of domain experts, which we demonstrate by solving inference problems from various scientific applications, such as modelling the global carbon cycle, using a standard Markov chain Monte Carlo framework.


symposium on principles of programming languages | 2013

A model-learner pattern for bayesian reasoning

Andrew D. Gordon; Mihhail Aizatulin; Johannes Borgström; Guillaume Claret; Thore Graepel; Aditya V. Nori; Sriram K. Rajamani; Claudio V. Russo

A Bayesian model is based on a pair of probability distributions, known as the prior and sampling distributions. A wide range of fundamental machine learning tasks, including regression, classification, clustering, and many others, can all be seen as Bayesian models. We propose a new probabilistic programming abstraction, a typed Bayesian model, which is based on a pair of probabilistic expressions for the prior and sampling distributions. A sampler for a model is an algorithm to compute synthetic data from its sampling distribution, while a learner for a model is an algorithm for probabilistic inference on the model. Models, samplers, and learners form a generic programming pattern for model-based inference. They support the uniform expression of common tasks including model testing, and generic compositions such as mixture models, evidence-based model averaging, and mixtures of experts. A formal semantics supports reasoning about model equivalence and implementation correctness. By developing a series of examples and three learner implementations based on exact inference, factor graphs, and Markov chain Monte Carlo, we demonstrate the broad applicability of this new programming pattern.


Journal of Functional Programming | 2011

Roles, stacks, histories: A triple for Hoare

Johannes Borgström; Andrew D. Gordon; Riccardo Pucella

Behavioral type and effect systems regulate properties such as adherence to object and communication protocols, dynamic security policies, avoidance of race conditions, and many others. Typically, each system is based on some specific syntax of constraints, and is checked with an ad hoc solver. Instead, we advocate types refined with first-order logic formulas as a basis for behavioral type systems, and general purpose automated theorem provers as an effective means of checking programs. To illustrate this approach, we define a triple of security-related type systems: for role-based access control, for stack inspection, and for history-based access control. The three are all instances of a refined state monad. Our semantics allows a precise comparison of the similarities and differences of these mechanisms. In our examples, the benefit of behavioral type-checking is to rule out the possibility of unexpected security exceptions, a common problem with code-based access control.


GC'04 Proceedings of the 2004 IST/FET international conference on Global Computing | 2004

Verifying a structured peer-to-peer overlay network: the static case

Johannes Borgström; Uwe Nestmann; Luc Alima Onana; Dilian Gurov

Structured peer-to-peer overlay networks are a class of algorithms that provide e.cient message routing for distributed applications using a sparsely connected communication network. In this paper, we formally verify a typical application running on a .xed set of nodes. This work is the foundation for studies of a more dynamic system. We identify a value and expression language for a value-passing CCS that allows us to formally model a distributed hash table implemented over a static DKS overlay network. We then provide a speci.cation of the lookup operation in the same language, allowing us to formally verify the correctness of the system in terms of observational equivalence between implementation and speci.cation. For the proof, we employ an abstract notation for reachable states that allows us to work conveniently up to structural congruence, thus drastically reducing the number and shape of states to consider. The structure and techniques of the correctness proof are reusable for other overlay networks.


foundations of software engineering | 2013

Bayesian inference using data flow analysis

Guillaume Claret; Sriram K. Rajamani; Aditya V. Nori; Andrew D. Gordon; Johannes Borgström

We present a new algorithm for Bayesian inference over probabilistic programs, based on data flow analysis techniques from the program analysis community. Unlike existing techniques for Bayesian inference on probabilistic programs, our data flow analysis algorithm is able to perform inference directly on probabilistic programs with loops. Even for loop-free programs, we show that data flow analysis offers better precision and better performance benefits over existing techniques. We also describe heuristics that are crucial for our inference to scale, and present an empirical evaluation of our algorithm over a range of benchmarks.

Collaboration


Dive into the Johannes Borgström's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge