Skip to content

Commit e299c8d

Browse files
committed
WIP on nutshell
1 parent 53fc220 commit e299c8d

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

_includes/head_custom.html

+4
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,7 @@
2121
{% for css in page.css %}
2222
<link rel="stylesheet" href="/assets/css/{{ css }}.css">
2323
{% endfor %}
24+
{% if page.katex %}
25+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css" integrity="sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X" crossorigin="anonymous">
26+
<style>.katex { font-size: 1rem; }</style>
27+
{% endif %}

papers/2025-pldi-relational-abstractions-labeled-uf.md

+39
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,43 @@ title: "PLDI'25"
55
categories: new publication
66
date: 2025-06-15
77
nav_order: 2025-06-15
8+
katex: True
89
---
10+
11+
## Context
12+
13+
In program analysis, various abstractions are used to store known facts about the
14+
program being studied. Two popular choices are *non-relational abstractions*,
15+
which store numeric information on variables (like intervals $$x \in [0:5]$$), or *relational
16+
abstraction*, which store relations between variables (like $$3x + 2y \leqslant -5z$$).
17+
The former is fast (complexity in $$\mathcal O(|\mathbb X|)$$ where $$|\mathbb X|$$ is the number of variables)
18+
but imprecise, whereas the latter is very precise but cost-prohibitive
19+
(polyhedra has $$\mathcal O(2^{|\mathbb X|})$$ complexity).
20+
21+
In the middle of this spectrum lie *weakly-relational abstractions*. They only
22+
store a select few relations between pairs of variables. For example, octagons
23+
store relations $$\pm x \pm y \leqslant c$$. These abstractions are faster than
24+
full relational domains, but still expensive, in large part due to having to compute
25+
a transitive closure to find all known relations, which costs $$\mathcal O(|\mathbb X|^3)$$.
26+
27+
Thus, the central assumption of the paper can be expressed as **what if we do not need to compute this
28+
transitive closure?** More formally, we assume that the relation obtained on each
29+
path between two variables is the same. This allows eliminating the vast majority
30+
of relations, **we only need to store a spanning tree** and can still recover
31+
any arbitrary relation in constant time.
32+
33+
## Extending union-find
34+
35+
The [union-find](https://en.wikipedia.org/wiki/Disjoint-set_data_structure) data
36+
structure is a well-known extremely efficient way to build and query equivalence
37+
relations. As such, it is often used in program analysis to represent equality
38+
between variables or expressions, notably in
39+
[e-graphs](https://en.wikipedia.org/wiki/E-graph).
40+
41+
Our work presents an extension of union-find to represent more complex relations
42+
than equality. This can be done by labeling the parent pointers of union-find
43+
with a relation. For example, we can use the constant offset relation
44+
45+
Crucially, we show that
46+
47+
## A cheap relational domain

0 commit comments

Comments
 (0)