United Monoids: Finding Simplicial Sets and Labelled Algebraic Graphs in Trees
Andrey Mokhov (Jane Street, UK / Newcastle University, UK)

TL;DR
This paper extends algebraic graph representations in Haskell to support edge labels, introduces the concept of united monoids, and validates the approach through implementation and formal proofs, enhancing the expressiveness of functional graph modeling.
Contribution
It redesigns algebraic graphs to include edge labels using semirings, introduces the novel concept of united monoids, and provides formal characterization and proofs, advancing functional graph representations.
Findings
Redesigned algebraic graphs to support edge labels via semirings.
Identified and characterized the algebraic structure of united monoids.
Implemented and validated the approach in the algebraic-graphs library with formal proofs.
Abstract
Graphs and various graph-like combinatorial structures, such as preorders and hypergraphs, are ubiquitous in programming. This paper focuses on representing graphs in a purely functional programming language like Haskell. There are several existing approaches; one of the most recently developed ones is the "algebraic graphs" approach (2017). It uses an algebraic data type to represent graphs and has attracted users, including from industry, due to its emphasis on equational reasoning and making a common class of bugs impossible by eliminating internal invariants. The previous formulation of algebraic graphs did not support edge labels, which was a serious practical limitation. In this paper, we redesign the main algebraic data type and remove this limitation. We follow a fairly standard approach of parameterising a data structure with a semiring of edge labels. The new formulation is…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
