Artjoms Sinkarovs

dblp:136/5554 · DBLP profile ↗
← Back
7ranked-venue papers
4as first author
5since 2021 · last 2026
0000-0003-3292-2985ORCID · verified

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

Software engineering, systems software and programming languages · 4 · 2 first-author · 4 since 2021Systems, architecture and hardware · 2 · 2 first-authorTheory of computation · 1 · 1 since 2021
YearPublicationVenuePosition
2026 Algebraic reasoning for timeliness-guided system design
Seyed Hossein Haeri, Peter Van Roy, Heinrich Apfelmus, Peter Thompson 0002, Neil Davies 0001, Magne Haveraaen, Mikhail Barash, Kevin Hammond, James Chapman 0001, Artjoms Sinkarovs
J. Log. Algebraic Methods Program.10
2025 Neural Network Verification is a Programming Language Challenge
abstract
Abstract Neural network verification is a new and rapidly developing field of research. So far, the main priority has been establishing efficient verification algorithms and tools, while proper support from the programming language perspective has been considered secondary or unimportant. Yet, there is mounting evidence that insights from the programming language community may make a difference in the future development of this domain. In this paper, we formulate neural network verification challenges as programming language challenges and suggest possible future solutions.
Lucas C. Cordeiro, Matthew L. Daggitt, Julien Girard-Satabin, Omri Isac, Taylor T. Johnson, Guy Katz, Ekaterina Komendantskaya, Augustin Lemesle, Edoardo Manino, Artjoms Sinkarovs, Haoze Wu 0001
ESOP (1)10
2025 Correctness Meets Performance: From Agda to Futhark
abstract
In this paper we demonstrate a technique for developing high performance applications with strong correctness guarantees. Using a theorem prover, we derive a high-level specification of the application that includes correctness invariants of our choice. After that, within the same theorem prover, we implement an extraction of the specified application into a high-performance language of our choice. Concretely, we are using Agda to specify a framework for automatic differentiation (reverse mode) that is focused on index-safe tensors. This framework comes with an optimiser for tensor expressions and the ability to translate these expressions into Futhark. We specify a canonical convolutional neural network within the proposed framework, compute the derivatives needed for the training phase and then demonstrate that the generated code approaches the performance of TensorFlow code when running on a GPU.
Artjoms Sinkarovs, Troels Henriksen
Proc. ACM Program. Lang.1
2023 Combinatory Logic and Lambda Calculus Are Equal, Algebraically
abstract
Erasure enriches type theory with a distinction between runtime relevant and irrelevant data, allowing the compilation step to safely erase the latter. Versions of this feature are implemented by many systems, including Agda, Idris, and Rocq. We present a structural version of type theory with erasure, formulated as a second-order generalised algebraic theory (SOGAT). Erasure is encoded as a phase distinction between runtime and erased terms, in the form of a proposition that can appear in a context. This formulation has several advantages: it has models based on categories with families, is compatible with other structural features such as staging, and provides a better guideline for implementation. Through the model theory of SOGATs, we study the semantics of type theory with erasure in families of sets, which generalises to any Grothendieck topos equipped with a tiny proposition. We establish conservativity over Martin-Löf type theory (MLTT) in both phases. For code extraction, we construct a presheaf model that produces untyped lambda calculus programs and prove its correctness through gluing. Our results are formalised in Agda and we provide a toy elaborator implementation.
Thorsten Altenkirch, Ambrus Kaposi, Artjoms Sinkarovs, Tamás Végh
FSCD3
2021 Extracting the power of dependent types
abstract
Most existing programming languages provide little support to formally state and prove properties about programs. Adding such capabilities is far from trivial, as it requires significant re-engineering of the existing compilers and tools. This paper proposes a novel technique to write correct-by-construction programs in languages without built-in verification capabilities, while maintaining the ability to use existing tools. This is achieved in three steps. Firstly, we give a shallow embedding of the language (or a subset) into a dependently typed language. Secondly, we write a program in that embedding, and we use dependent types to guarantee correctness properties of interest within the embedding. Thirdly, we extract a program written in the original language, so it can be used with existing compilers and tools.
Artjoms Sinkarovs, Jesper Cockx
GPCE1
2016 Type-driven data layouts for improved vectorisation
abstract
Summary Vector instructions of modern CPUs are crucially important for the performance of compute‐intensive algorithms. Auto‐vectorisation often fails because of an unfortunate choice of data layout by the programmer. This paper proposes a data layout inference for auto‐vectorisation that identifies layout transformations that convert single instruction, multiple data‐unfavourable layouts of data structures into favourable ones. We present a type system for layout transformations, and we sketch an inference algorithm for it. Finally, we present some initial performance figures for the impact of the inferred layout transformations. They show that non‐intuitive layouts that are inferred through our system can have a vast performance impact on compute intensive programs. Copyright © 2015 John Wiley & Sons, Ltd.
Artjoms Sinkarovs, Sven-Bodo Scholz
Concurr. Comput. Pract. Exp.1
2014 SaC/C formulations of the all-pairs N-body problem and their performance on SMPs and GPGPUs
abstract
SUMMARY This paper describes our experience in implementing the classical N‐body algorithm in SaC and analysing the runtime performance achieved on three different machines: a dual‐processor 8‐core Dell PowerEdge 2950 (a Beowulf cluster node, the reference machine), a quad‐core hyper‐threaded Intel Core‐i7 based system equipped with an NVidia GTX‐480 graphics accelerator and an Oracle Sparc T4‐4 server with a total of 256 hardware threads. We contrast our findings with those resulting from the reference C code and a few variants of it that employ OpenMP pragmas as well as explicit vectorisation. Our experiments demonstrate that the SaC implementation successfully combines a high level of abstraction, very close to the mathematical specification, with very competitive runtimes. In fact, SaC matches or outperforms the hand‐vectorised and hand‐parallelised C codes on all three systems under investigation without the need for any source code modification. Furthermore, only SaC is able to effectively harness the advanced compute power of the graphics accelerator, again by mere recompilation of the same source code. Our results illustrate the benefits that SaC provides to application programmers in terms of coding productivity, source code, and performance portability among different machine architectures, as well as long‐term maintainability in evolving hardware environments. Copyright © 2013 John Wiley & Sons, Ltd.
Artjoms Sinkarovs, Sven-Bodo Scholz, Robert Bernecky, Roeland Douma, Clemens Grelck
Concurr. Comput. Pract. Exp.1