You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
+
79
94
## Combining with other abstractions
80
95
81
96
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
103
118
computation cost. Furthermore, it can be modified to detect any entailed equalities and notify other
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
-
121
121
## Going further
122
122
123
123
- Read the [**paper**](/assets/publications/pdfs/2025-pldi-relational-abstractions-labeled-uf-with-appendices.pdf).
0 commit comments