Network


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

Hotspot


Dive into the research topics where Christian Haack is active.

Publication


Featured researches published by Christian Haack.


algebraic methodology and software technology | 2008

Separation Logic Contracts for a Java-Like Language with Fork/Join

Christian Haack; Clément Hurlin

We adapt a variant of permission-accounting separation logic to a concurrent Java-like language with fork/join. To support both concurrent reads and information hiding, we combine fractional permissions with abstract predicates. As an example, we present a separation logic contract for iterators that prevents data races and concurrent modifications. Our program logic is presented in an algorithmic style: we avoid structural rules for Hoare triples and formalize logical reasoning about typed heaps by natural deduction rules and a set of sound axioms. We show that verified programs satisfy the following properties: data race freedom, absence of null-dereferences and partial correctness.


european symposium on programming | 2007

Immutable objects for a java-like language

Christian Haack; Erik Poll; Jan Schäfer; Aleksy Schubert

We extend a Java-like language with immutability specifications and a static type system for verifying immutability. A class modifier immutable specifies that all class instances are immutable objects. Ownership types specify the depth of object states and enforce encapsulation of representation objects. The type system guarantees that the state of immutable objects does not visibly mutate during a program run. Provided immutability-annotated classes and methods are final, this is true even if immutable classes are composed with untrusted classes that follow Javas type system, but not our immutability type system.


european conference on object oriented programming | 2009

Type-Based Object Immutability with Flexible Initialization

Christian Haack; Erik Poll

We present a type system for checking object immutability, read-only references, and class immutability in an open or closed world. To allow object initialization outside object constructors (which is often needed in practice), immutable objects are initialized in lexically scoped regions. The system is simple and direct; its only type qualifiers specify immutability properties. No auxiliary annotations, e.g., ownership types, are needed, yet good support for deep immutability is provided. To express object confinement, as required for class immutability in an open world, we use qualifier polymorphism. The system has two versions: one with explicit specification commands that delimit the object initialization phase, and one where such commands are implicit and inferred. In the latter version, all annotations are compatible with Javas extended annotation syntax, as proposed in JSR 308.


Logical Methods in Computer Science | 2015

Permission-Based Separation Logic for Multithreaded Java Programs

Afshin Amighi; Christian Haack; Marieke Huisman; Clément Hurlin

This paper presents a program logic for reasoning about multithreaded Java-like programs with concurrency primitives such as dynamic thread creation, thread joining and reentrant object monitors. The logic is based on concurrent separation logic. It is the first detailed adaptation of concurrent separation logic to a multithreaded Java-like language. The program logic associates a unique static access permission with each heap location, ensuring exclusive write accesses and ruling out data races. Concurrent reads are supported through fractional permissions. Permissions can be transferred between threads upon thread starting, thread joining, initial monitor entrancies and final monitor exits. In order to distinguish between initial monitor entrancies and monitor reentrancies, auxiliary variables keep track of multisets of currently held monitors. Data abstraction and behavioral subtyping are facilitated through abstract predicates, which are also used to represent monitor invariants, preconditions for thread starting and postconditions for thread joining. Value-parametrized types allow to conveniently capture common strong global invariants, like static object ownership relations. The program logic is presented for a model language with Java-like classes and interfaces, the soundness of the program logic is proven, and a number of illustrative examples are presented.


international conference on concurrency theory | 2005

Timed spi-calculus with types for secrecy and authenticity

Christian Haack; Alan Jeffrey

We present a discretely timed spi-calculus. A primitive for key compromise allows us to model key compromise attacks, thus going beyond the standard Dolev-Yao attacker model. A primitive for reading a global clock allows us to express protocols based on timestamps, which are common in practice. We accompany the timed spi-calculus with a type system, prove that well-typed protocols are robustly safe for secrecy and authenticity and present examples of well-typed protocols as well as an example where failure to typecheck reveals a (well-known) flaw.


The Journal of Object Technology | 2009

Resource Usage Protocols for Iterators

Christian Haack; Clément Hurlin

We discuss usage protocols for iterator objects that prevent concurrent modifications of the underlying collection while iterators are in progress. We formalize these protocols in Java-like object interfaces, enriched with separation logic contracts. We present examples of iterator clients and proofs that they adhere to the iterator protocol, as well as examples of iterator implementations and proofs that they implement the iterator interface.


european symposium on programming | 2003

Type error slicing in implicitly typed higher-order languages

Christian Haack; J. B. Wells

Previous methods have generally identified the location of a type error as a particular program point or the program subtree rooted at that point. We present a new approach that identifies the location of a type error as a set of program points (a slice) all of which are necessary for the type error. We describe algorithms for finding minimal type error slices for implicitly typed higher-order languages like Standard ML.


IFIP World Computer Congress, TC 1 | 2004

Pattern-Matching Spi-Calculus

Christian Haack; Alan Jeffrey

Cryptographic protocols often make use of nested cryptographic primitives, for example signed message digests, or encrypted signed messages. Gordon and Jeffreys prior work on types for authenticity did not allow for such nested cryptography. In this work, we present the pattern-matching spi-calculus, which is an obvious extension of the spi-calculus to include pattern-matching as primitive. The novelty of the language is in the accompanying type system, which uses the same language of patterns to describe complex data dependencies which cannot be described using prior type systems. We show that any appropriately typed process is guaranteed to satisfy a strong robust safety property.


algebraic methodology and software technology | 2002

Fully Automatic Adaptation of Software Components Based on Semantic Specifications

Christian Haack; Brian T. Howard; Allen Stoughton; J. B. Wells

We describe the design and methods of a tool that, based on behavioral specifications in interfaces, generates simple adaptation code to overcome incompatibilities between Standard ML modules.


Information & Computation | 2006

Pattern-matching spi-calculus

Christian Haack; Alan Jeffrey

Collaboration


Dive into the Christian Haack's collaboration.

Top Co-Authors

Avatar

Erik Poll

Radboud University Nijmegen

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

J. B. Wells

Heriot-Watt University

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Jan Schaefer

RheinMain University of Applied Sciences

View shared research outputs
Researchain Logo
Decentralizing Knowledge