91
91
92
92
// Reachability
93
93
.decl ReachableCode(n:CodeName)
94
- .output ReachableCode(delimiter=",")
94
+ // .output ReachableCode
95
95
.decl CodeNameInst(n:CodeName, v:Variable)
96
- .output CodeNameInst(delimiter=",")
96
+ // .output CodeNameInst
97
97
98
98
CodeNameInst(n, v) :-
99
99
FirstInst(n, v).
@@ -115,7 +115,7 @@ ReachableInst(v) :-
115
115
CodeNameInst(n, v).
116
116
117
117
.decl VarPointsTo(v:Variable, target:Variable)
118
- .output VarPointsTo(delimiter=",")
118
+ .output VarPointsTo
119
119
120
120
VarPointsTo(v,t) :-
121
121
Store(v, t),
@@ -138,10 +138,10 @@ VarPointsTo(v,t) :-
138
138
139
139
// Value Computation
140
140
.decl Value(v:Variable, value:Variable)
141
- .output Value(delimiter=",")
141
+ .output Value
142
142
143
143
.decl Heap(orig:Variable, item:Variable)
144
- .output Heap(delimiter=",")
144
+ .output Heap
145
145
146
146
Heap(v,i) :- Store(v,i).
147
147
@@ -258,39 +258,39 @@ Value(case_result, val) :-
258
258
.decl VariableNodeTag(n:Variable, t:Tag)
259
259
.decl VariableNodeParamType(n: Variable, t:Tag, i:number, nt:NodeParamType)
260
260
261
- .output AbstractLocation(delimiter=",")
261
+ .output AbstractLocation
262
262
AbstractLocation(n) :- Heap(n,_).
263
263
264
- .output VariableSimpleType(delimiter=",")
264
+ .output VariableSimpleType
265
265
VariableSimpleType(n,st) :- LitAssign(n,st,_).
266
266
VariableSimpleType(n,"Unit") :- Update(n,_,_).
267
267
VariableSimpleType(n,st) :- External(f,_,st), Call(n,f).
268
268
VariableSimpleType(n,st) :- ExternalParam(f,i,st), Call(r,f), CallArgument(r,i,n).
269
269
VariableSimpleType(n,st) :- Value(n,r), VariableSimpleType(r,st).
270
270
271
- .output VariableNodeParamType(delimiter=",")
271
+ .output VariableNodeParamType
272
272
VariableNodeParamType(n,t,i,al)
273
273
:- Node(n,t), NodeArgument(n,i,arg), Value(arg,al), AbstractLocation(al).
274
274
VariableNodeParamType(n,t,i,st)
275
275
:- Node(n,t), NodeArgument(n,i,arg), Value(arg,v), VariableSimpleType(v,st).
276
276
VariableNodeParamType(n,t,i,ty)
277
277
:- Value(n,n0), VariableNodeParamType(n0,t,i,ty).
278
278
279
- .output VariableNodeTag(delimiter=",")
279
+ .output VariableNodeTag
280
280
VariableNodeTag(n,t) :- Value(n,r), Node(r,t).
281
281
282
- .output VariableAbstractLocation(delimiter=",")
282
+ .output VariableAbstractLocation
283
283
VariableAbstractLocation(n,n) :- AbstractLocation(n).
284
284
VariableAbstractLocation(n,v) :- Value(n,v), AbstractLocation(v).
285
285
286
286
.decl FunName(f: Function)
287
- .output FunName(delimiter=",")
287
+ .output FunName
288
288
289
289
.decl FunReturn(f:Function, n:Variable)
290
- .output FunReturn(delimiter=",")
290
+ .output FunReturn
291
291
292
292
.decl FunParam(f:Function, i:number, n:Variable)
293
- .output FunParam(delimiter=",")
293
+ .output FunParam
294
294
295
295
FunName("main").
296
296
FunName(f) :- Call(_,f), ReachableCode(f).
@@ -303,7 +303,7 @@ FunParam(f,i,p) :- ExternalParam(f,i,_), Call(r,f), CallArgument(r,i,p).
303
303
304
304
/* If a concrete instance of the abstract location may be subject to a fetch more than once, */
305
305
.decl SharedLocation(n:Variable)
306
- .output SharedLocation(delimiter=",")
306
+ // .output SharedLocation
307
307
308
308
SharedLocation(l) :-
309
309
AbstractLocation(l), Value(v,l), NonLinearVar(v).
@@ -313,13 +313,13 @@ SharedLocation(l) :-
313
313
//
314
314
315
315
.decl AfterInst(b:Variable,a:Variable)
316
- .output AfterInst(delimiter=",")
316
+ // .output AfterInst
317
317
318
318
AfterInst(b,a) :- NextInst(b,a).
319
319
AfterInst(b,c) :- AfterInst(b,a), NextInst(a,c).
320
320
321
321
.decl NonLinearVar(v:Variable)
322
- .output NonLinearVar(delimiter=",")
322
+ // .output NonLinearVar
323
323
324
324
// Variable used in different use cases.
325
325
// CA F M NP RV
0 commit comments