Paranoid Scientist is a Python module for verifying scientific software which provides:
- Runtime verification of entry and exit conditions written in pure Python, including hyperproperties.
- Conditions specified using pure Python refinement types, i.e. types are defined by predicates.
- Automated unit testing of individual functions.
To learn more, read the documentation, conceptual FAQs, technical FAQs, or tutorial, or see the paper/preprint for more technical details.
If you use Paranoid Scientist in an academic work, please cite:
Shinn M. (2020) Refinement Type Contracts for Verification of Scientific Investigative Software. In: Chakraborty S., Navas J. (eds) Verified Software. Theories, Tools, and Experiments. VSTTE 2019. Lecture Notes in Computer Science, vol 12031. Springer, Cham. DOI: 10.1007/978-3-030-41600-3_10
- Python 3.5 or above
- Optional: Numpy (for Numpy types support)
All code is available under the MIT license. See LICENSE.txt for more information. Paranoid Scientist is copyright 2018-2020 Max Shinn. The logo is copyright 2018 Anastasia Ershova.