Skip to content

Commit ee592f2

Browse files
author
Matthieu Lemerre
committed
Change order
1 parent 1d25f06 commit ee592f2

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

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

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,21 @@ However, labeled union-find cannot use relations like bounded
7676
difference $$a \le y - x \le b$$, as they are not injective. Doing so
7777
inevitably leads to precision loss.
7878

79+
## Application
80+
81+
Codex already performs [sophisticated constraint propagation](/papers/2024-pldi-compiling-with-abstract-interpretation.html)
82+
using relations between the values computed by the program. However, the new domain can find new relations, e.g. from relating simultaneously incremented loop counters:
83+
```c
84+
int i = 0, j = 4;
85+
while(i < 10) { i += 1; j += 3; }
86+
```
87+
Without labeled union-find, Codex learns that at the end of the loop, $$\mathtt{i} = 10$$,
88+
$$\mathtt{j} \in [4:+\infty]$$ and $$\mathtt{j} \equiv 1 \mathop{\mathtt{mod}} 3$$. However,
89+
with labeled union find and the TVPE relation, $$\mathtt{j} = 3\mathtt{i} + 4$$ is inferred.
90+
Thus, at the end of the loop, Codex knows $$\mathtt{j} = 34$$.
91+
92+
The abstraction has also been implemented in the [Colibri2](https://colibri.frama-c.com/index.html) constraint solver to infer and propagate new relations efficiently.
93+
7994
## Combining with other abstractions
8095
8196
Labeled union-find groups variables into related class, which each
@@ -103,21 +118,6 @@ Labeled union-find can also help relational abstraction similarly, shrinking the
103118
computation cost. Furthermore, it can be modified to detect any entailed equalities and notify other
104119
abstractions of these facts.
105120
106-
## Application
107-
108-
Codex already performs [sophisticated constraint propagation](/papers/2024-pldi-compiling-with-abstract-interpretation.html)
109-
using relations between the values computed by the program. However, the new domain can find new relations, e.g. from relating simultaneously incremented loop counters:
110-
```c
111-
int i = 0, j = 4;
112-
while(i < 10) { i += 1; j += 3; }
113-
```
114-
Without labeled union-find, Codex learns that at the end of the loop, $$\mathtt{i} = 10$$,
115-
$$\mathtt{j} \in [4:+\infty]$$ and $$\mathtt{j} \equiv 1 \mathop{\mathtt{mod}} 3$$. However,
116-
with labeled union find and the TVPE relation, $$\mathtt{j} = 3\mathtt{i} + 4$$ is inferred.
117-
Thus, at the end of the loop, Codex knows $$\mathtt{j} = 34$$.
118-
119-
The abstraction has also been implemented in the [Colibri2](https://colibri.frama-c.com/index.html) constraint solver to infer and propagate new relations efficiently
120-
121121
## Going further
122122
123123
- Read the [**paper**](/assets/publications/pdfs/2025-pldi-relational-abstractions-labeled-uf-with-appendices.pdf).

0 commit comments

Comments
 (0)