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

FeatureNightjarmypy + pytest
Coverage
Type safetyYESYES
Tested-input correctnessYESYES
All-input proofYESNO
Temporal invariantsYESNO
Workflow
Auto-generates tests from specsYESNO

See what Nightjar finds in your code

Free to try. AGPL open source.

Get started →
← All comparisons