This might sound good to a TDD practitioner, but I'd suggest that the value of tests is that they independently verify an implementation. Couple them directly and soon you will be writing tests on your tests.
OTOH, saying "this must be true" and letting the compiler work it out sounds a lot like logic programming.