Nightjar vs.
mypy + pytest
Types and tests vs. mathematical proof
mypy proves types are consistent. pytest proves that specific inputs produce specific outputs. Neither proves that no input can violate a contract. Nightjar's formal verification closes this gap: it proves universally quantified properties over all possible inputs.
mypy + pytest is necessary but not sufficient. They cannot prove absence of bugs — only presence of correct behavior on tested inputs. Nightjar adds the missing layer: mathematical proof of correctness for all inputs.
Nightjar strengths
- ·Universal quantification — proves all inputs, not just tested ones
- ·Dafny formal proof with machine-checkable certificate
- ·Auto-generates property-based tests from specs
- ·CEGIS loop finds counterexamples and repairs them
- ·Specs survive code regeneration unchanged
mypy + pytest strengths
- ·mypy: industry standard type checking, free and fast
- ·pytest: enormous ecosystem, excellent tooling
- ·Both are widely understood by all Python developers
- ·Incremental adoption with no spec language required
- ·pytest fixtures and parametrize cover many edge cases
Feature Comparison
See what Nightjar finds in your code
Free to try. AGPL open source.