Skip to content

Commit 94adcde

Browse files
authored
Merge pull request #308 from lisa-analyzer/stability
Stability domain implementation
2 parents a3e4ad3 + b18cc9e commit 94adcde

13 files changed

+1563
-6
lines changed

lisa/lisa-analyses/imp-testcases/numeric/numeric.imp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class tutorial {
77
b = b + c;
88
return b;
99
}
10-
10+
1111
sign_parity_example() {
1212
def i = 2;
1313
def max = 10;
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{
2+
"warnings" : [ {
3+
"message" : "['imp-testcases/stability/stability.imp':18:4] on 'untyped stability::scale(stability* this, untyped x, untyped y, untyped width, untyped height, untyped scale1, untyped scale2)': [STATEMENT] Classes computed: { #TOP#: (height, width), =: (scale1, scale2), ↑=: (x, y)}"
4+
}, {
5+
"message" : "['imp-testcases/stability/stability.imp':2:1] on 'untyped stability::example(stability* this, untyped x, untyped y)': [STATEMENT] Classes computed: { ↑=: (y), ↓=: (x)}"
6+
}, {
7+
"message" : "['imp-testcases/stability/stability.imp':9:1] on 'untyped stability::send(stability* this, untyped dest, untyped amount, untyped sbalance, untyped dbalance)': [STATEMENT] Classes computed: { =: (amount, dest), ↑=: (dbalance), ↓=: (sbalance)}"
8+
} ],
9+
"files" : [ "report.json", "untyped_stability.example(stability__this,_untyped_x,_untyped_y).json", "untyped_stability.scale(stability__this,_untyped_x,_untyped_y,_untyped_width,_untyped_height,_untyped_scale1,_untyped_scale2).json", "untyped_stability.send(stability__this,_untyped_dest,_untyped_amount,_untyped_sbalance,_untyped_dbalance).json" ],
10+
"info" : {
11+
"cfgs" : "3",
12+
"duration" : "699ms",
13+
"end" : "2024-07-30T11:04:55.372+02:00",
14+
"expressions" : "94",
15+
"files" : "3",
16+
"globals" : "0",
17+
"members" : "3",
18+
"programs" : "1",
19+
"start" : "2024-07-30T11:04:54.673+02:00",
20+
"statements" : "21",
21+
"units" : "1",
22+
"version" : "0.1b8",
23+
"warnings" : "3"
24+
},
25+
"configuration" : {
26+
"analysisGraphs" : "NONE",
27+
"descendingPhaseType" : "NONE",
28+
"dumpForcesUnwinding" : "false",
29+
"fixpointWorkingSet" : "DuplicateFreeFIFOWorkingSet",
30+
"glbThreshold" : "5",
31+
"hotspots" : "unset",
32+
"jsonOutput" : "true",
33+
"openCallPolicy" : "WorstCasePolicy",
34+
"optimize" : "false",
35+
"recursionWideningThreshold" : "5",
36+
"semanticChecks" : "CoContraVarianceCheck",
37+
"serializeInputs" : "false",
38+
"serializeResults" : "true",
39+
"syntacticChecks" : "",
40+
"useWideningPoints" : "true",
41+
"wideningThreshold" : "5",
42+
"workdir" : "test-outputs/stability"
43+
}
44+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class stability {
2+
example(x, y) {
3+
while (x > 0 && y > 0) {
4+
y = 2 * y;
5+
x = x - 1;
6+
}
7+
}
8+
9+
send(dest, amount, sbalance, dbalance) {
10+
// hack: we force the typing to numeric to avoid having + being rewritten as strcat
11+
dbalance = dbalance - 0;
12+
if (amount > 0 && amount <= sbalance) {
13+
sbalance = sbalance - amount;
14+
dbalance = dbalance + amount;
15+
}
16+
}
17+
18+
scale(x, y, width, height, scale1, scale2){
19+
// hack: we force the typing to numeric to avoid having + being rewritten as strcat
20+
x = x - 0;
21+
width = width - 0;
22+
23+
if (x >= 0 && y >= 0 && width > 0 && height > 0 && scale1 > 0 && scale2 > 0){
24+
def upperRightPointX = x + width;
25+
def lowerLeftPointY = y - height;
26+
27+
x = x * scale1;
28+
y = y * scale2;
29+
30+
upperRightPointX = upperRightPointX * scale1;
31+
lowerLeftPointY = lowerLeftPointY * scale2;
32+
33+
width = x - upperRightPointX;
34+
height = y - lowerLeftPointY;
35+
}
36+
}
37+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"name":"untyped stability::example(stability* this, untyped x, untyped y)","description":null,"nodes":[{"id":0,"subNodes":[1,4],"text":"&&(>(x, 0), >(y, 0))"},{"id":1,"subNodes":[2,3],"text":">(x, 0)"},{"id":2,"text":"x"},{"id":3,"text":"0"},{"id":4,"subNodes":[5,6],"text":">(y, 0)"},{"id":5,"text":"y"},{"id":6,"text":"0"},{"id":7,"subNodes":[8,9],"text":"y = *(2, y)"},{"id":8,"text":"y"},{"id":9,"subNodes":[10,11],"text":"*(2, y)"},{"id":10,"text":"2"},{"id":11,"text":"y"},{"id":12,"subNodes":[13,14],"text":"x = -(x, 1)"},{"id":13,"text":"x"},{"id":14,"subNodes":[15,16],"text":"-(x, 1)"},{"id":15,"text":"x"},{"id":16,"text":"1"},{"id":17,"text":"ret"}],"edges":[{"sourceId":0,"destId":7,"kind":"TrueEdge"},{"sourceId":0,"destId":17,"kind":"FalseEdge"},{"sourceId":7,"destId":12,"kind":"SequentialEdge"},{"sourceId":12,"destId":0,"kind":"SequentialEdge"}],"descriptions":[{"nodeId":0,"description":{"expressions":["x > 0 && y > 0"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":"#TOP#"},"value":{"aux":{"x":"[-Inf, +Inf]","y":"[-Inf, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":1,"description":{"expressions":["x > 0"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":"#TOP#"},"value":{"aux":{"x":"[-Inf, +Inf]","y":"[-Inf, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":2,"description":{"expressions":["x"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":"#TOP#"},"value":{"aux":{"x":"[-Inf, +Inf]","y":"[-Inf, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":3,"description":{"expressions":["0"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":"#TOP#"},"value":{"aux":{"x":"[-Inf, +Inf]","y":"[-Inf, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":4,"description":{"expressions":["y > 0"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":"#TOP#"},"value":{"aux":{"x":"[-Inf, +Inf]","y":"[-Inf, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":5,"description":{"expressions":["y"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":"#TOP#"},"value":{"aux":{"x":"[-Inf, +Inf]","y":"[-Inf, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":6,"description":{"expressions":["0"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":"#TOP#"},"value":{"aux":{"x":"[-Inf, +Inf]","y":"[-Inf, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":7,"description":{"expressions":["y"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":["float32","int32"]},"value":{"aux":{"x":"[1, +Inf]","y":"[2, +Inf]"},"trends":{"x":"=","y":"↑"}}}}},{"nodeId":8,"description":{"expressions":["y"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":"#TOP#"},"value":{"aux":{"x":"[1, +Inf]","y":"[1, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":9,"description":{"expressions":["2 * y"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":"#TOP#"},"value":{"aux":{"x":"[1, +Inf]","y":"[1, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":10,"description":{"expressions":["2"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":"#TOP#"},"value":{"aux":{"x":"[1, +Inf]","y":"[1, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":11,"description":{"expressions":["y"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":"#TOP#"},"value":{"aux":{"x":"[1, +Inf]","y":"[1, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":12,"description":{"expressions":["x"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":["float32","int32"],"y":["float32","int32"]},"value":{"aux":{"x":"[0, +Inf]","y":"[2, +Inf]"},"trends":{"x":"↓","y":"="}}}}},{"nodeId":13,"description":{"expressions":["x"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":["float32","int32"]},"value":{"aux":{"x":"[1, +Inf]","y":"[2, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":14,"description":{"expressions":["x - 1"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":["float32","int32"]},"value":{"aux":{"x":"[1, +Inf]","y":"[2, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":15,"description":{"expressions":["x"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":["float32","int32"]},"value":{"aux":{"x":"[1, +Inf]","y":"[2, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":16,"description":{"expressions":["1"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":["float32","int32"]},"value":{"aux":{"x":"[1, +Inf]","y":"[2, +Inf]"},"trends":{"x":"=","y":"="}}}}},{"nodeId":17,"description":{"expressions":["skip"],"state":{"heap":"monolith","type":{"this":["stability*"],"x":"#TOP#","y":"#TOP#"},"value":{"aux":{"x":"[-Inf, +Inf]","y":"[-Inf, +Inf]"},"trends":{"x":"=","y":"="}}}}}]}

lisa/lisa-analyses/imp-testcases/stability/untyped_stability.scale(stability__this,_untyped_x,_untyped_y,_untyped_width,_untyped_height,_untyped_scale1,_untyped_scale2).json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"name":"untyped stability::send(stability* this, untyped dest, untyped amount, untyped sbalance, untyped dbalance)","description":null,"nodes":[{"id":0,"subNodes":[1,2],"text":"dbalance = -(dbalance, 0)"},{"id":1,"text":"dbalance"},{"id":2,"subNodes":[3,4],"text":"-(dbalance, 0)"},{"id":3,"text":"dbalance"},{"id":4,"text":"0"},{"id":5,"subNodes":[6,9],"text":"&&(>(amount, 0), <=(amount, sbalance))"},{"id":6,"subNodes":[7,8],"text":">(amount, 0)"},{"id":7,"text":"amount"},{"id":8,"text":"0"},{"id":9,"subNodes":[10,11],"text":"<=(amount, sbalance)"},{"id":10,"text":"amount"},{"id":11,"text":"sbalance"},{"id":12,"subNodes":[13,14],"text":"sbalance = -(sbalance, amount)"},{"id":13,"text":"sbalance"},{"id":14,"subNodes":[15,16],"text":"-(sbalance, amount)"},{"id":15,"text":"sbalance"},{"id":16,"text":"amount"},{"id":17,"subNodes":[18,19],"text":"dbalance = +(dbalance, amount)"},{"id":18,"text":"dbalance"},{"id":19,"subNodes":[20,21],"text":"+(dbalance, amount)"},{"id":20,"text":"dbalance"},{"id":21,"text":"amount"},{"id":22,"text":"ret"}],"edges":[{"sourceId":0,"destId":5,"kind":"SequentialEdge"},{"sourceId":5,"destId":12,"kind":"TrueEdge"},{"sourceId":5,"destId":22,"kind":"FalseEdge"},{"sourceId":12,"destId":17,"kind":"SequentialEdge"},{"sourceId":17,"destId":22,"kind":"SequentialEdge"}],"descriptions":[{"nodeId":0,"description":{"expressions":["dbalance"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[-Inf, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":1,"description":{"expressions":["dbalance"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":"#TOP#","dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[-Inf, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":2,"description":{"expressions":["dbalance - 0"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":"#TOP#","dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[-Inf, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":3,"description":{"expressions":["dbalance"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":"#TOP#","dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[-Inf, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":4,"description":{"expressions":["0"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":"#TOP#","dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[-Inf, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":5,"description":{"expressions":["amount > 0 && amount <= sbalance"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[-Inf, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":6,"description":{"expressions":["amount > 0"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[-Inf, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":7,"description":{"expressions":["amount"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[-Inf, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":8,"description":{"expressions":["0"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[-Inf, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":9,"description":{"expressions":["amount <= sbalance"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[-Inf, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":10,"description":{"expressions":["amount"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[-Inf, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":11,"description":{"expressions":["sbalance"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[-Inf, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":12,"description":{"expressions":["sbalance"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":["float32","int32"],"this":["stability*"]},"value":{"aux":{"amount":"[1, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"↓"}}}}},{"nodeId":13,"description":{"expressions":["sbalance"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[1, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":14,"description":{"expressions":["sbalance - amount"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[1, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":15,"description":{"expressions":["sbalance"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[1, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":16,"description":{"expressions":["amount"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[1, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":17,"description":{"expressions":["dbalance"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":["float32","int32"],"this":["stability*"]},"value":{"aux":{"amount":"[1, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"↑","dest":"=","sbalance":"="}}}}},{"nodeId":18,"description":{"expressions":["dbalance"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":["float32","int32"],"this":["stability*"]},"value":{"aux":{"amount":"[1, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":19,"description":{"expressions":["dbalance + amount"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":["float32","int32"],"this":["stability*"]},"value":{"aux":{"amount":"[1, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":20,"description":{"expressions":["dbalance"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":["float32","int32"],"this":["stability*"]},"value":{"aux":{"amount":"[1, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":21,"description":{"expressions":["amount"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":["float32","int32"],"this":["stability*"]},"value":{"aux":{"amount":"[1, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}},{"nodeId":22,"description":{"expressions":["skip"],"state":{"heap":"monolith","type":{"amount":"#TOP#","dbalance":["float32","int32"],"dest":"#TOP#","sbalance":"#TOP#","this":["stability*"]},"value":{"aux":{"amount":"[-Inf, +Inf]","dbalance":"[-Inf, +Inf]","dest":"[-Inf, +Inf]","sbalance":"[-Inf, +Inf]"},"trends":{"amount":"=","dbalance":"=","dest":"=","sbalance":"="}}}}}]}

0 commit comments

Comments
 (0)