In this branch, we've explored the integration of Mode Analysis, Binding Time Analysis, Conjunctive Partial Deduction, and Functional Conversion.
The implementation of Binding Time Analysis was inspired by one, described in the work "Maurice Bruynooghe, Michael Leuschel, and Konstantinos Sagonas. A Polyvariant Binding-Time Analysis for Off-line Partial Deduction. 2000". It can be seen here BTA.
Command to run the conversion:
stack run -- --funTransformer -i input_file --rel="relName" --ground=[groundVars] --deduction=Offline
We evaluated the approach by comparing it with two other approaches: the first (Simple Conversion) uses simple Functional Conversion, and the second (Online Conversion) runs Conjunctive Partial Deduction before the conversion. We compared approaches on the DPPD benchmarks and some examples of the Verifier-to-Solver approach.
Command to run the benchmarks:
stack bench
Results of the evaluation are presented below
DPPD (examples, benchmarks):
Simple Conversion | Online Conversion | Offline Conversion | |
---|---|---|---|
applast | 0.87 |
0.10 |
0.10 |
contains | 196.00 |
170.00 |
758.00 |
deforestation1 | 1.51 |
0.02 |
0.02 |
deforestation2 | 4420.00 |
29300.00 |
0.08 |
depth | timeout | 0.24 |
0.23 |
doubleAppend | 14.10 |
126.00 |
2.21 |
exDepth | timeout | timeout | 2.01 |
flip | 2.77 |
0.18 |
0.19 |
match | 16.20 |
0.78 |
0.78 |
matchSimple | 8660.00 |
19.10 |
0.72 |
multiply | 0.17 |
0.11 |
0.12 |
regexp | 5.80 |
7.93 |
9.18 |
remove | 138.00 |
54.40 |
48.20 |
rotatePrune | 48.80 |
71.20 |
159.00 |
upto.Sum | 16.20 |
0.04 |
0.04 |
vanilla | timeout | 6.23 |
1.38 |