* TODO Refactoring [1/4] - [X] Fix up logging - [ ] Separate classes into files - [ ] Put outer-loop in a class (out of main) - [ ] Give EquationSystem methods for creating assignments/strategies * TODO Verbosity [2/3] - [X] Wrap output streams [5/5] - [X] strategies - [X] fixpoint - [X] debug - [X] trace - [X] info - [X] Command-line arguments [5/5] - [X] strategies - [X] fixpoint - [X] debug - [X] trace - [X] info - [-] Provide output [0/5] - [-] strategies [1/2] - [ ] print the system and assignment, then the next strategy - [X] print each strategy like this: max(0, x, sub(y,2)) --[2]-> sub(y,2) - [ ] fixpoint print the system we're working with, then print the resultant assignment - [ ] debug print the initial system we're working with print more general info in the main loop (number of loops, each assignment/strategy) - [ ] trace maybe we don't need this would be something like "entering/exiting" everything mildly important - [ ] info print the initial system we're working with * TODO make test [2/3] - [-] write test cases [1/4] - [X] examples from paper - [ ] best cases - [ ] worst cases - [ ] average cases - [X] write a script to run over each test case and return pass/fail - [X] consolidate into makefile as `make test` * TODO Parametrise EquationSystem for Variable, too [0/1] - [ ] Give EquationSystem a template parameter for Variable I don't think this is necessary, but Thomas wants it. For now I'm going to hold off on it, though. * TODO Min-cost flow problem [1/3] - [X] Research min-cost flow libraries Potentially just use LEMON? It looks pretty decent. LEMON it is! - [ ] Implement the min-cost flow operator MCF It takes four construction-time arguments and one run-time argument. Construction time: - T (the template constraint matrix) - A (the multiplicative modification factor) - b (the additive modification factor) - c (the bound in the guard) Run-time: - d (the abstract value to be operated on) - [ ] Update test cases to include MCF * TODO Presentation [0/2] - [ ] Simplify "Even Faster" solver for explanation - [ ] Make slides [0/5] - [ ] Even Faster Solver - [ ] Strategy improvement - [ ] Example of scaling - [ ] Explain solution - [ ] Demonstrate implementation