|
1 |
| -=======================CFG======================== |
2 |
| - |
3 |
| -"input" |
4 |
| -"a=[1,2,3,4];" |
5 |
| -"i=0;" |
6 |
| -"minim=a[0];" |
7 |
| -"while (i<a.size())" |
8 |
| -"if (a[i]<minim)" |
9 |
| -"print(minim);" |
10 |
| -"minim=a[i];" |
11 |
| -"i++;" |
12 |
| -"output" |
13 |
| -"input" "a=[1,2,3,4];" |
14 |
| -"a=[1,2,3,4];" "i=0;" |
15 |
| -"i=0;" "minim=a[0];" |
16 |
| -"minim=a[0];" "while (i<a.size())" |
17 |
| -"while (i<a.size())" "if (a[i]<minim)" true-edge |
18 |
| -"while (i<a.size())" "print(minim);" false-edge |
19 |
| -"if (a[i]<minim)" "minim=a[i];" true-edge |
20 |
| -"if (a[i]<minim)" "i++;" false-edge |
21 |
| -"print(minim);" "output" |
22 |
| -"minim=a[i];" "i++;" |
23 |
| -"i++;" "while (i<a.size())" |
24 |
| - |
25 |
| - |
26 |
| - |
27 |
| -=====================Dataflow===================== |
28 |
| - |
29 |
| -Exception in thread "Thread-2" util.exception.SMTUnimplementedException: Unimplemented SMT solver for: ast.VirtualAST |
30 |
| - at smt.SMTVisitor.visit(SMTVisitor.java:479) |
31 |
| - at smt.SMTVisitor.visit(SMTVisitor.java:33) |
32 |
| - at ast.VirtualAST.accept(VirtualAST.java:28) |
33 |
| - at smt.SMTVisitor.visit(SMTVisitor.java:283) |
34 |
| - at smt.SMTVisitor.visit(SMTVisitor.java:33) |
35 |
| - at ast.expr.RelationalAST.accept(RelationalAST.java:46) |
36 |
| - at smt.AlkSMTContext.process(AlkSMTContext.java:155) |
37 |
| - at util.pc.PathCondition.add(PathCondition.java:76) |
38 |
| - at util.pc.PathCondition.add(PathCondition.java:66) |
39 |
| - at util.pc.PathCondition.<init>(PathCondition.java:59) |
40 |
| - at dataflow.domain.ExecutionPath.<init>(ProgramContext.java:220) |
41 |
| - at dataflow.domain.ProgramContext.<init>(ProgramContext.java:40) |
42 |
| - at dataflow.wcet.SeqWCETLattice.getLUB(SeqWCETLattice.java:24) |
43 |
| - at dataflow.wcet.SeqWCETLattice.getLUB(SeqWCETLattice.java:9) |
44 |
| - at dataflow.worklist.WorklistFlow.execute(WorklistFlow.java:42) |
45 |
| - at dataflow.Dataflow.run(Dataflow.java:27) |
46 |
| -minim=a[i]; -> |
47 |
| - |
48 |
| -i++; -> |
49 |
| - |
50 |
| -output -> |
51 |
| - |
52 |
| -minim=a[0]; -> |
53 |
| -{ |
54 |
| - Environment: |
55 |
| - a |-> [1, 2, 3, 4] |
56 |
| - i |-> 0 |
57 |
| - Path Condition: |
58 |
| - true |
59 |
| -} |
60 |
| - |
61 |
| -input -> |
62 |
| -{ |
63 |
| - Environment: |
64 |
| - |
65 |
| - Path Condition: |
66 |
| - true |
67 |
| -} |
68 |
| - |
69 |
| -i=0; -> |
70 |
| -{ |
71 |
| - Environment: |
72 |
| - a |-> [1, 2, 3, 4] |
73 |
| - Path Condition: |
74 |
| - true |
75 |
| -} |
76 |
| - |
77 |
| -a=[1,2,3,4]; -> |
78 |
| -{ |
79 |
| - Environment: |
80 |
| - |
81 |
| - Path Condition: |
82 |
| - true |
83 |
| -} |
84 |
| - |
85 |
| -print(minim); -> |
86 |
| - |
87 |
| -if (a[i]<minim) -> |
88 |
| - |
89 |
| -while (i<a.size()) -> |
90 |
| -{ |
91 |
| - Environment: |
92 |
| - a |-> [1, 2, 3, 4] |
93 |
| - minim |-> 1 |
94 |
| - i |-> 0 |
95 |
| - Path Condition: |
96 |
| - true |
97 |
| -} |
98 |
| - |
99 |
| -===================Loop mapping=================== |
100 |
| - |
101 |
| -line 5 i<a.size() -> l_0 |
102 |
| - |
103 |
| -====================Recurrence==================== |
104 |
| - |
105 |
| -Loop 0: |
106 |
| - a: |
107 |
| - a_l0(0) = [1, 2, 3, 4] when true |
108 |
| - |
109 |
| - minim: |
110 |
| - minim_l0(0) = 1 when true |
111 |
| - |
112 |
| - i: |
113 |
| - i_l0(0) = 0 when true |
| 1 | +Can't use return outside function scope. |
| 2 | +a |-> $a_0 |
| 3 | +[result] |-> $minim_0 |
| 4 | +minim |-> $minim_0 |
| 5 | +i |-> $i_0 |
| 6 | +j |-> $j_1 |
| 7 | + |
| 8 | +Note that the execution was symbolic. |
| 9 | +Path condition: ($i_0<=$a_0.size()) && forall $j_1 : int :: ((0<=$j_1)&&($j_1<$i_0)) ==> ($minim_0<=$a_0[$j_1]) && !($i_0<$a_0.size()) ($j_0 : int, $i_0 : int, $j_1 : int, $minim_0 : int, $a_0 : array<int>) |
| 10 | + |
| 11 | +Can't use return outside function scope. |
| 12 | +a |-> $a_0 |
| 13 | +[result] |-> $minim_0 |
| 14 | +minim |-> $minim_0 |
| 15 | +i |-> $i_0 |
| 16 | +j |-> $j_1 |
| 17 | + |
| 18 | +Note that the execution was symbolic. |
| 19 | +Path condition: ($i_0<=$a_0.size()) && forall $j_1 : int :: ((0<=$j_1)&&($j_1<$i_0)) ==> ($minim_0<=$a_0[$j_1]) && !($i_0<$a_0.size()) ($j_0 : int, $i_0 : int, $j_1 : int, $minim_0 : int, $a_0 : array<int>) |
| 20 | + |
| 21 | +Successfully verified: findMin |
| 22 | +a |-> $a |
| 23 | + |
| 24 | +Note that the execution was symbolic. |
| 25 | +Path condition: forall $j_4 : int :: ((0<=$j_4)&&($j_4<$a.size())) ==> ($[result]_0<=$a[$j_4]) && exists $j_5 : int :: ((0<=$j_5)&&($j_5<$a.size())) ==> ($[result]_0==$a[$j_5]) ($[result]_0 : int, $j_4 : int, $a : array<int>, $j_5 : int) |
114 | 26 |
|
0 commit comments