@@ -189,6 +189,14 @@ private predicate negativeSummaryModelInternal(string row) {
189
189
any ( NegativeSummaryModelCsv s ) .row ( row )
190
190
}
191
191
192
+ /**
193
+ * Holds if a source model exists for the given parameters.
194
+ */
195
+ extensible predicate extSourceModel (
196
+ string namespace , string type , boolean subtypes , string name , string signature , string ext ,
197
+ string output , string kind , string provenance
198
+ ) ;
199
+
192
200
/** Holds if a source model exists for the given parameters. */
193
201
predicate sourceModel (
194
202
string namespace , string type , boolean subtypes , string name , string signature , string ext ,
@@ -207,6 +215,8 @@ predicate sourceModel(
207
215
row .splitAt ( ";" , 7 ) = kind and
208
216
row .splitAt ( ";" , 8 ) = provenance
209
217
)
218
+ or
219
+ extSourceModel ( namespace , type , subtypes , name , signature , ext , output , kind , provenance )
210
220
}
211
221
212
222
/** Holds if `row` is a source model. */
@@ -229,6 +239,12 @@ predicate sourceModel(string row) {
229
239
)
230
240
}
231
241
242
+ /** Holds if a sink model exists for the given parameters. */
243
+ extensible predicate extSinkModel (
244
+ string namespace , string type , boolean subtypes , string name , string signature , string ext ,
245
+ string input , string kind , string provenance
246
+ ) ;
247
+
232
248
/** Holds if a sink model exists for the given parameters. */
233
249
predicate sinkModel (
234
250
string namespace , string type , boolean subtypes , string name , string signature , string ext ,
@@ -247,6 +263,8 @@ predicate sinkModel(
247
263
row .splitAt ( ";" , 7 ) = kind and
248
264
row .splitAt ( ";" , 8 ) = provenance
249
265
)
266
+ or
267
+ extSinkModel ( namespace , type , subtypes , name , signature , ext , input , kind , provenance )
250
268
}
251
269
252
270
/** Holds if `row` is a sink model. */
@@ -269,6 +287,12 @@ predicate sinkModel(string row) {
269
287
)
270
288
}
271
289
290
+ /** Holds if a summary model exists for the given parameters. */
291
+ extensible predicate extSummaryModel (
292
+ string namespace , string type , boolean subtypes , string name , string signature , string ext ,
293
+ string input , string output , string kind , string provenance
294
+ ) ;
295
+
272
296
/** Holds if a summary model exists for the given parameters. */
273
297
predicate summaryModel (
274
298
string namespace , string type , boolean subtypes , string name , string signature , string ext ,
@@ -288,6 +312,8 @@ predicate summaryModel(
288
312
row .splitAt ( ";" , 8 ) = kind and
289
313
row .splitAt ( ";" , 9 ) = provenance
290
314
)
315
+ or
316
+ extSummaryModel ( namespace , type , subtypes , name , signature , ext , input , output , kind , provenance )
291
317
}
292
318
293
319
/** Holds if `row` is a summary model. */
@@ -311,6 +337,11 @@ predicate summaryModel(string row) {
311
337
)
312
338
}
313
339
340
+ /** Holds if a summary model exists indicating there is no flow for the given parameters. */
341
+ extensible predicate extNegativeSummaryModel (
342
+ string namespace , string type , string name , string signature , string provenance
343
+ ) ;
344
+
314
345
/** Holds if a summary model exists indicating there is no flow for the given parameters. */
315
346
predicate negativeSummaryModel (
316
347
string namespace , string type , string name , string signature , string provenance
@@ -323,6 +354,8 @@ predicate negativeSummaryModel(
323
354
row .splitAt ( ";" , 3 ) = signature and
324
355
row .splitAt ( ";" , 4 ) = provenance
325
356
)
357
+ or
358
+ extNegativeSummaryModel ( namespace , type , name , signature , provenance )
326
359
}
327
360
328
361
/** Holds if `row` is a negative summary model. */
0 commit comments