PathFinder (PF) is where the "post-processing" logic of a resolved differential/linear based SOC resides. This library contains the functionality to estimate the best input-output pair to use as basis for a hull, and then to calculate the exact values of the hull based on the paths contained in the SOC. Note that due to the pruning process, not all possible paths may be present for the post-processing. See the PathFinder paper for more.
WARNING: This library was developed in an academic context and no part of this code should be use in any production system.
TBI
PathFinder is licensed under the MIT License.
- MIT license (LICENSE or http://opensource.org/licenses/MIT)
The easiest way to use PF is through the SOCCS
library/binary.
- Streamline logging and reporting of results.
- Implement error handling?
- Apply Clippy and Rustfmt
- (Research topic:) Add a second pass for the hull generation: Today's logic will include all possible input and output pairings possible to a primitive, run the SOC resolving logic (including the pruning) and use the result to try and find the best input-output pair to calculate the hull for. A second pass would reset the process to pre SOC resolving, but this time resolve only for the input-output pair found. This would in theory allow for more targeted pruning, hopefully preserving more paths in the hull.
- (Research topic:) Improve the hull calculation: Today's logic expands every path in the hull in order to calculate the exact values of paths in the hull. This yields a problem when the hull size is exponentially large, as not every path can be checked then. We therefore have an upper limit today on the number of paths expanded/included. A technique which would traverse each edge of the solved SOC only once, instead of visiting each path once, was discussed during the latter stages of development, but had to be dropped due to time constraints. (Main dev finishing Ph.D.). This technique would allow for all paths in a hull to be included, independently of size.
TBI
TBI