Added
- Docstrings to ``builder.rs``, ``schema.rs``, ``affine.rs``, ``afftree.rs``, ``iter.rs``, ``node.rs``, ``graph.rs``, ``iter.rs``
- Improved formatting of ``AffFuncBase``, configurable through ``FormatOptions``
- Tests to ``builder.rs``, ``affine.rs``, ``afftree.rs``
- Section on development tools to ``README.md``
- LeakyReLU to ``Layer`` enum
- Compilation error if both feature flags ``minilp`` and ``highs`` are supplied
- License headers updated and added where missing
- Dependencies to ``Cargo.toml``
- Struct ``Dot`` for simpler formatting to graphviz's dot language
- Struct ``PerformanceCounter`` to keep track of infeasible elimination
- Struct ``Bfs``which implements breath-first traversal
- Trait ``CompositionSchema`` for implementing other compositional operations over ``AffTree``
- Trait ``CompositionVisitor``for tracing composition steps
- Trait ``TraversalMut`` which allows modifications to the tree while iterating, but which can also be downgraded to a normal iterator
- Trait implementations ``AbsDiffEq`` and ``RelativeEq`` for ``AffFuncBase``
- Trait implementations ``Add``, ``Sub``, ``Mul``, ``Div``, and ``Rem`` for ``AffFuncBase`` and ``&AffFuncBase`` (covering owned data and views)
- Trait implementations ``Add``, ``Sub``, ``Mul``, and ``Div`` for ``AffTree`` and ``&AffTree``
- Trait implementations ``Add``, ``Sub``, ``Mul``, and ``Div`` for ``AffTree`` and ``&AffTree`` where the second argument is of type ``AffFuncBase`` (scalar / element-wise operations)
- Methods ``AffFuncBase::{from_row_iter, remove_zero_rows, remove_zero_columns, display_with}``
- Methods ``PolytopeG::{axis_bounds, distances_raw, apply_pre, apply_post, rotate}``
- Method ``AffTree::reduce`` for removing redundant decisions of the bottom of the tree (cascading upwards as long as possible)
Changed
- Extract infeasible elimination and composition from ``afftree.rs`` into ``impl_infeasible_elim.rs`` and ``impl_composition``
- AffFuncBase now accepts any basis type for its underlying arrays as long as it implements ``num_traits::float::Float``
- Tree iterators now all implement ``TraversalMut``
- Use nightly toolchain for ``rust fmt``
- Bound maximal space reserved in advance for nodes in distillation
- Tests in ``polyhedron.rs`` reorganized an checked against scipy
- Renamed ``display.rs`` to ``impl_affineformat.rs``
- Rename ``AffFuncBase::get_marix`` to ``matrix_view``
- Rename ``AffFuncBase::get_bias`` to ``bias_view``
- Method ``PolytopeG::convert_to`` takes ownership of self
- Method ``AffTree::from_poly`` now accepts an optional node for paths not following the given polytope
- Method ``AffTree::evaluate_to_terminal`` renamed to ``find_terminal``, max_iter removed, panic behavior changed
- Method ``AffTree::evaluate_node`` renamed to ``evaluate_decision``
Fixed
- Input dim of distillation now acts on precondition if one is supplied
Security