  Neural networks are one of the most investigated and widely used techniques
in Machine Learning. In spite of their success, they still find limited
application in safety- and security-related contexts, wherein assurance about
networks' performances must be provided. In the recent past, automated
reasoning techniques have been proposed by several researchers to close the gap
between neural networks and applications requiring formal guarantees about
their behavior. In this work, we propose a primer of such techniques and a
comprehensive categorization of existing approaches for the automated
verification of neural networks. A discussion about current limitations and
directions for future investigation is provided to foster research on this
topic at the crossroads of Machine Learning and Automated Reasoning.
