Verifying Properties of Index Arrays in a Purely-Functional Data-Parallel Language

Fuente: arXiv
Enregistré dans:
Détails bibliographiques
Auteurs principaux: Hinnerskov, Nikolaj Hey, Schenck, Robert, Oancea, Cosmin E.
Format: Preprint
Publié: 2025
Sujets:
Accès en ligne:
Tags: Ajouter un tag
Pas de tags, Soyez le premier à ajouter un tag!
_version_ 1866913917341532160
author Hinnerskov, Nikolaj Hey
Schenck, Robert
Oancea, Cosmin E.
author_facet Hinnerskov, Nikolaj Hey
Schenck, Robert
Oancea, Cosmin E.
contents This paper presents a novel approach to automatically verify properties of pure data-parallel programs with non-linear indexing -- expressed as pre- and post-conditions on functions. Programs consist of nests of second-order array combinators (e.g., map, scan, and scatter) and loops. The key idea is to represent arrays as index functions: programs are index function transformations over which properties are propagated and inferred. Our framework proves properties on index functions by distilling them into algebraic (in)equalities and discharging them to a Fourier-Motzkin-based solver. The framework is practical and accessible: properties are not restricted to a decidable logic, but instead are carefully selected to express practically useful guarantees that can be automatically reasoned about and inferred. These guarantees extend beyond program correctness and can be exploited by the entire compiler pipeline for optimization. We implement our system in the pure data-parallel language Futhark and demonstrate its practicality on seven applications, reporting an average verification time of 1 second. Two case studies show how eliminating dynamic verification in GPU programs results in significant speedups.
format Preprint
id arxiv_https___arxiv_org_abs_2506_23058
institution arXiv
publishDate 2025
record_format arxiv
spellingShingle Verifying Properties of Index Arrays in a Purely-Functional Data-Parallel Language
Hinnerskov, Nikolaj Hey
Schenck, Robert
Oancea, Cosmin E.
Programming Languages
Distributed, Parallel, and Cluster Computing
This paper presents a novel approach to automatically verify properties of pure data-parallel programs with non-linear indexing -- expressed as pre- and post-conditions on functions. Programs consist of nests of second-order array combinators (e.g., map, scan, and scatter) and loops. The key idea is to represent arrays as index functions: programs are index function transformations over which properties are propagated and inferred. Our framework proves properties on index functions by distilling them into algebraic (in)equalities and discharging them to a Fourier-Motzkin-based solver. The framework is practical and accessible: properties are not restricted to a decidable logic, but instead are carefully selected to express practically useful guarantees that can be automatically reasoned about and inferred. These guarantees extend beyond program correctness and can be exploited by the entire compiler pipeline for optimization. We implement our system in the pure data-parallel language Futhark and demonstrate its practicality on seven applications, reporting an average verification time of 1 second. Two case studies show how eliminating dynamic verification in GPU programs results in significant speedups.
title Verifying Properties of Index Arrays in a Purely-Functional Data-Parallel Language
topic Programming Languages
Distributed, Parallel, and Cluster Computing
url https://arxiv.org/abs/2506.23058