Martin Sulzmann

dblp:94/756 · DBLP profile ↗
← Back
44ranked-venue papers
22as first author
5since 2021 · last 2023
0000-0002-8165-3403ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 34 · 14 first-author · 4 since 2021Theory of computation · 15 · 11 first-author · 1 since 2021Artificial intelligence and machine learning · 1
YearPublicationVenuePosition
2023 A type-directed, dictionary-passing translation of method overloading and structural subtyping in Featherweight Generic Go
abstract
Abstract Featherweight Generic Go (FGG) is a minimal core calculus modeling the essential features of the programming language Go. It includes support for overloaded methods, interface types, structural subtyping, and generics. The most straightforward semantic description of the dynamic behavior of FGG programs is to resolve method calls based on runtime type information of the receiver. This article shows a different approach by defining a type-directed translation from ${\textrm{FGG}^{-}}$ to an untyped lambda-calculus. ${\textrm{FGG}^{-}}$ includes all features of FGG but type assertions. The translation of an ${\textrm{FGG}^{-}}$ program provides evidence for the availability of methods as additional dictionary parameters, similar to the dictionary-passing approach known from Haskell type classes. Then, method calls can be resolved by a simple lookup of the method definition in the dictionary. Every program in the image of the translation has the same dynamic semantics as its source ${\textrm{FGG}^{-}}$ program. The proof of this result is based on a syntactic, step-indexed logical relation. The step index ensures a well-founded definition of the relation in the presence of recursive interface types and recursive methods. Although being non-deterministic, the translation is coherent.
Martin Sulzmann, Stefan Wehr
J. Funct. Program.1
2022 Semantic Preservation for a Type Directed Translation Scheme of Featherweight Go
Martin Sulzmann, Stefan Wehr
MPC1
2022 Special issue on revised and extended versions of papers presented at the 22nd Brazilian Symposium on Programming Languages (SBLP 2018)
Carlos Camarão 0001, Martin Sulzmann
Sci. Comput. Program.2
2021 A Dictionary-Passing Translation of Featherweight Go
Martin Sulzmann, Stefan Wehr
APLAS1
2021 Preface
John P. Gallagher, Martin Sulzmann
Sci. Comput. Program.2
2020 Efficient, near complete, and often sound hybrid dynamic data race prediction
abstract
Dynamic data race prediction aims to identify races based on a single program run represented by a trace. The challenge is to remain efficient while being as sound and as complete as possible. Efficient means a linear run-time as otherwise the method unlikely scales for real-world programs. We introduce an efficient, near complete and often sound dynamic data race prediction method that combines the lockset method with several improvements made in the area of happens-before methods. By near complete we mean that the method is complete in theory but for efficiency reasons the implementation applies some optimizations that may result in incompleteness. The method can be shown to be sound for two threads but is unsound in general. Experiments show that our method works well in practice.
Martin Sulzmann, Kai Stadtmüller
MPLR1
2019 Solving of Regular Equations Revisited
Martin Sulzmann, Kenny Zhuo Ming Lu
ICTAC1
2019 Predicting all data race pairs for a specific schedule
abstract
We consider the problem of data race prediction where the program's behavior is represented by a trace. A trace is a sequence of program events recorded during the execution of the program. We employ the schedulable happens-before relation to characterize all pairs of events that are in a race for the schedule as manifested in the trace. Compared to the classic happens-before relation, the schedulable happens-before relations properly takes care of write-read dependencies and thus avoids false positives. The challenge is to efficiently identify all (schedulable) data race pairs. We present a refined linear time vector clock algorithm to predict many of the schedulable data race pairs. We introduce a quadratic time post-processing algorithm to predict all remaining data race pairs. This improves the state of the art in the area and our experiments show that our approach scales to real-world examples. Thus, the user can systematically examine and fix all program locations that are in a race for a particular schedule.
Martin Sulzmann, Kai Stadtmüller
MPLR1
2019 Derivatives and partial derivatives for regular shuffle expressions
Martin Sulzmann, Peter Thiemann 0001
J. Comput. Syst. Sci.1
2018 LTL Semantic Tableaux and Alternating \omega ω -automata via Linear Factors
Martin Sulzmann, Peter Thiemann 0001
ICTAC1
2018 Two-Phase Dynamic Analysis of Message-Passing Go Programs Based on Vector Clocks
abstract
Understanding the runtime behavior of concurrent programs is a challenging task. A popular approach is to establish a happens-before relation via vector clocks. Thus, we can identify bugs and performance bottlenecks, for example, by checking if two conflicting events may happen concurrently. We employ a two-phase method to derive vector clock information for a wide range of concurrency features that includes all of the message-passing features in Go. The first phase (instrumentation and tracing) yields a runtime trace that records all events related to message-passing concurrency that took place. The second phase (trace replay) is carried out of fline and replays the recorded traces to infer vector clock information. Trace replay operates on thread-local traces. Thus, we can observe behavior that might result from some alternative schedule. Our approach is not tied to any specific language. We have built a prototype for the Go programming language and provide empirical evidence of the usefulness of our method.
Martin Sulzmann, Kai Stadtmüller
PPDP1
2017 A Computational Interpretation of Context-Free Expressions
Martin Sulzmann, Peter Thiemann 0001
APLAS1
2016 Static Trace-Based Deadlock Analysis for Synchronous Mini-Go
Kai Stadtmüller, Martin Sulzmann, Peter Thiemann 0001
APLAS2
2016 Forkable Regular Expressions
Martin Sulzmann, Peter Thiemann 0001
LATA1
2016 Derivative-Based Diagnosis of Regular Expression Ambiguity
Martin Sulzmann, Kenny Zhuo Ming Lu
CIAA1
2015 Derivatives for Regular Shuffle Expressions
Martin Sulzmann, Peter Thiemann 0001
LATA1
2015 From \omega -Regular Expressions to Büchi Automata via Partial Derivatives
Peter Thiemann 0001, Martin Sulzmann
LATA2
2014 A Flexible and Efficient ML Lexer Tool Based on Extended Regular Expression Submatching
Martin Sulzmann, Pippijn van Steenhoven
CC1
2014 On Termination, Confluence and Consistent CHR-based Type Inference
abstract
Abstract We consider the application of Constraint Handling Rules (CHR) for the specification of type inference systems, such as that used by Haskell. Confluence of CHR guarantees that the answer provided by type inference is correct and consistent. The standard method for establishing confluence relies on an assumption that the CHR program is terminating. However, many examples in practice give rise to non-terminating CHR programs, rendering this method inapplicable. Despite no guarantee of termination or confluence, the Glasgow Haskell Compiler (GHC) supports options that allow the user to proceed with type inference anyway, e.g. via the use of theUndecidableInstancesflag. In this paper we formally identify and verify a set of relaxed criteria, namelyrange-restrictedness,local confluence, andground termination, that ensure the consistency of CHR-based type inference that maps to potentially non-terminating CHR programs.
Gregory J. Duck, Rémy Haemmerlé, Martin Sulzmann
Theory Pract. Log. Program.3
2013 Traceability and evidence of correctness of EDSL abstractions
abstract
One of the main advantages of an EDSL (embedded domain-specific language) is that new abstractions can be coded quickly and easily in the EDSL's host language and are automatically transformed to the basic EDSL primitives. In the context of formal software certification, it is paramount that evidence for the correctness of these abstractions are provided and that the low-level code resulting from the EDSL primitives can be traced to some higher-level artifacts, i.e. some concrete programming abstractions, software requirements etc. We have built an EDSL-based tool-chain for implementing and testing mission critical applications which supports measures to guarantee traceability and provides evidence of correctness of EDSL abstractions. We give an overview of our EDSL approach and practical experiences applying them in the industrial context.
Martin Sulzmann, Jürgen Nicklisch-Franken, Axel Zechner
PEPM1
2012 Regular expression sub-matching using partial derivatives
abstract
Regular expression sub-matching is the problem of finding for each sub-part of a regular expression a matching sub-string. Prior work applies Thompson and Glushkov NFA methods for the construction of the matching automata. We propose the novel use of derivatives and partial derivatives for regular expression sub-matching. Our benchmarking results show that the run-time performance is promising and that our approach can be applied in practice.
Martin Sulzmann, Kenny Zhuo Ming Lu
PPDP1
2011 OutsideIn(X) Modular type inference with local assumptions
abstract
Abstract Advanced type system features, such as GADTs, type classes and type families, have proven to be invaluable language extensions for ensuring data invariants and program correctness. Unfortunately, they pose a tough problem for type inference when they are used as local type assumptions. Local type assumptions often result in the lack of principal types and cast the generalisation of local let-bindings prohibitively difficult to implement and specify. User-declared axioms only make this situation worse. In this paper, we explain the problems and – perhaps controversially – argue for abandoning local let-binding generalisation. We give empirical results that local let generalisation is only sporadically used by Haskell programmers. Moving on, we present a novel constraint-based type inference approach for local type assumptions. Our system, called OutsideIn(X) , is parameterised over the particular underlying constraint domain X, in the same way as HM(X). This stratification allows us to use a common metatheory and inference algorithm. OutsideIn(X) extends the constraints of X by introducing implication constraints on top. We describe the strategy for solving these implication constraints, which, in turn, relies on a constraint solver for X. We characterise the properties of the constraint solver for X so that the resulting algorithm only accepts programs with principal types, even when the type system specification accepts programs that do not enjoy principal types. Going beyond the general framework, we give a particular constraint solver for X = type classes + GADTs + type families, a non-trivial challenge in its own right. This constraint solver has been implemented and distributed as part of GHC 7.
Dimitrios Vytiniotis, Simon L. Peyton Jones, Tom Schrijvers, Martin Sulzmann
J. Funct. Program.4
2011 Concurrent goal-based execution of Constraint Handling Rules
abstract
Abstract We introduce a systematic, concurrent execution scheme for Constraint Handling Rules (CHR) based on a previously proposed sequential goal-based CHR semantics. We establish strong correspondence results to the abstract CHR semantics, thus guaranteeing that any answer in the concurrent, goal-based CHR semantics is reproducible in the abstract CHR semantics. Our work provides the foundation to obtain efficient, parallel CHR execution schemes.
Edmund Soon Lee Lam, Martin Sulzmann
Theory Pract. Log. Program.2
2009 Complete and decidable type inference for GADTs
abstract
GADTs have proven to be an invaluable language extension, for ensuring data invariants and program correctness among others. Unfortunately, they pose a tough problem for type inference: we lose the principal-type property, which is necessary for modular type inference.
Tom Schrijvers, Simon L. Peyton Jones, Martin Sulzmann, Dimitrios Vytiniotis
ICFP3
2008 Actors with Multi-headed Message Receive Patterns
Martin Sulzmann, Edmund Soon Lee Lam, Peter Van Weert
COORDINATION1
2008 Type checking with open type functions
abstract
We report on an extension of Haskell with open type-level functions and equality constraints that unifies earlier work on GADTs, functional dependencies, and associated types. The contribution of the paper is that we identify and characterise the key technical challenge of entailment checking; and we give a novel, decidable, sound, and complete algorithm to solve it, together with some practically-important variants. Our system is implemented in GHC, and is already in active use.
Tom Schrijvers, Simon L. Peyton Jones, Manuel M. T. Chakravarty, Martin Sulzmann
ICFP4
2008 Transactions in Constraint Handling Rules
Tom Schrijvers, Martin Sulzmann
ICLP2
2008 Parallel execution of multi-set constraint rewrite rules
abstract
Multi-set constraint rewriting allows for a highly parallel computational model and has been used in a multitude of application domains such as constraint solving, agent specification etc. Rewriting steps can be applied simultaneously as long as they do not interfere with each other.We wish that the underlying constraint rewrite implementation executes rewrite steps in parallel on increasingly popular becoming multi-core architectures. We design and implement efficient algorithms which allow for the parallel execution of multi-set constraint rewrite rules. Our experiments show that we obtain some significant speed-ups on multi-core architectures
Martin Sulzmann, Edmund Soon Lee Lam
PPDP1
2008 HM(X) type inference is CLP(X) solving
abstract
Abstract The HM(X) system is a generalization of the Hindley/Milner system parameterized in the constraint domain X. Type inference is performed by generating constraints out of the program text, which are then solved by the domain-specific constraint solver X. The solver has to be invoked at the latest when type inference reaches a let node so that we can build a polymorphic type. A typical example of such an inference approach is Milner's algorithm W. We formalize an inference approach where the HM(X) type inference problem is first mapped to a CLP(X) program. The actual type inference is achieved by executing the CLP(X) program. Such an inference approach supports the uniform construction of type inference algorithms and has important practical consequences when it comes to reporting type errors. The CLP(X) style inference system, where X is defined by Constraint Handling Rules, is implemented as part of the Chameleon system.
Martin Sulzmann, Peter J. Stuckey
J. Funct. Program.1
2007 Observable Confluence for Constraint Handling Rules
Gregory J. Duck, Peter J. Stuckey, Martin Sulzmann
ICLP3
2007 Understanding functional dependencies via constraint handling rules
abstract
Abstract Functional dependencies are a popular and useful extension to Haskell style type classes. We give a reformulation of functional dependencies in terms of Constraint Handling Rules (CHRs). In previous work, CHRs have been employed for describing user-programmable type extensions in the context of Haskell style type classes. Here, we make use of CHRs to provide for the first time a concise result that under some sufficient conditions, functional dependencies allow for sound, complete and decidable type inference. The sufficient conditions imposed on functional dependencies can be very limiting. We show how to safely relax these conditions and suggest several sound extensions of functional dependencies. Our results allow for a better understanding of functional dependencies and open up the opportunity for new applications.
Martin Sulzmann, Gregory J. Duck, Simon L. Peyton Jones, Peter J. Stuckey
J. Funct. Program.1
2006 Type Processing by Constraint Reasoning
Peter J. Stuckey, Martin Sulzmann, Jeremy Wazny
APLAS2
2006 Principal Type Inference for GHC-Style Multi-parameter Type Classes
Martin Sulzmann, Tom Schrijvers, Peter J. Stuckey
APLAS1
2006 Extracting programs from type class proofs
abstract
Standard presentations of type class translation schemes exhibit some surprising problems when translating Haskell 98 programs. We suggests ways how to fix these problems based on a formal framework for extracting programs from type class proofs. Our description includes type improvement and recursive dictionaries -- something which has not been formally studied before. Thus, we are able to advance the state of art of translating type classes and open up the possibility for new type class applications.
Martin Sulzmann
PPDP1
2005 A theory of overloading
abstract
We present a novel approach to allow for overloading of identifiers in the spirit of type classes. Our approach relies on a combination of the HM(X) type system framework with Constraint Handling Rules (CHRs). CHRs are a declarative language for writing incremental constraint solvers, that provide our scheme with a form of programmable type language. CHRs allow us to precisely describe the relationships among overloaded identifiers. Under some sufficient conditions on the CHRs we achieve decidable type inference and the semantic meaning of programs is unambiguous. Our approach provides a common formal basis for many type class extensions such as multiparameter type classes and functional dependencies.
Peter J. Stuckey, Martin Sulzmann
ACM Trans. Program. Lang. Syst.2
2004 An Implementation of Subtyping Among Regular Expression Types
Kenny Zhuo Ming Lu, Martin Sulzmann
APLAS2
2004 Sound and Decidable Type Inference for Functional Dependencies
Gregory J. Duck, Simon L. Peyton Jones, Peter J. Stuckey, Martin Sulzmann
ESOP4
2004 Improving type error diagnosis
abstract
All in-text\treferences\tunderlined\tin\tblue\tare\tlinked\tto\tpublications\ton\tResearchGate, letting you\taccess\tand\tread\tthem\timmediately.
Peter J. Stuckey, Martin Sulzmann, Jeremy Wazny
Haskell2
2003 Resource Usage Verification
Kim Marriott, Peter J. Stuckey, Martin Sulzmann
APLAS3
2003 Interactive type debugging in Haskell
abstract
Proceedings of the 2003 ACM SIGPLAN Haskell Workshop
Peter J. Stuckey, Martin Sulzmann, Jeremy Wazny
Haskell2
2002 Exception analysis for non-strict languages
abstract
In this paper we present the first exception analysis for a non-strict language. We augment a simply-typed functional language with exceptions, and show that we can define a type-based inference system to detect uncaught exceptions. We have implemented this exception analysis in the GHC compiler for Haskell, which has been recently extended with exceptions. We give empirical evidence that the analysis is practical.
Kevin Glynn, Peter J. Stuckey, Martin Sulzmann, Harald Søndergaard
ICFP3
2002 A theory of overloading
abstract
We present a minimal extension of the Hindley/Milner system to allow for overloading of identifiers. Our approach relies on a combination of the HM(X) type system framework with Constraint Handling Rules (CHRs). CHRs are a declarative language for writing incremental constraint solvers. CHRs allow us to precisely describe the relationships among overloaded identifiers. Under some sufficient conditions on the CHRs we achieve decidable type inference and the semantic meaning of programs is unambiguous. Our approach allows us to combine open and closed world overloading. We also show how to deal with overlapping definitions.
Peter J. Stuckey, Martin Sulzmann
ICFP2
2001 Effective Strictness Analysis with HORN Constraints
Kevin Glynn, Peter J. Stuckey, Martin Sulzmann
SAS3
1996 The Tableau-based Theorem Prover 3TAP Version 4.0
Bernhard Beckert, Reiner Hähnle, Peter Oel, Martin Sulzmann
CADE4