The invariant pyramid constitutes of:
These go from strongest to weakest, where having more invariants captured in the program > tests > documentation.
You want few invariants that are unknown, and want to hoist most of the invariants as high up as you can.