algebraic.hpp