Documented solver.py