| ▲ | akoboldfrying 3 days ago | |||||||
> Major flaws in a specification for one function are usually quickly picked up when the proof for another function relies on the missing specification properties Great point! > supplementing with standard e.g. unit tests helps catch specification bugs like this I don't think it does -- any specific input+output pair that a unit test tests for will satisfy all the constraints of a complete spec, so it will necessarily also satisfy an incomplete spec (i.e., a subset of those constraints). You could detect overly strong spec constraints this way, but not insufficiently strong ones. | ||||||||
| ▲ | IanCal 3 days ago | parent [-] | |||||||
I think you’re picturing the unit test case the opposite way around to me, but what I see relies on having something generated for you. While a unit test case will also pass the weak specs, there exist spec meeting implementations that don’t pass the test. So either that requires “generate valid code and let’s test it” or that you can write a proof statement like: If : there is at least one implementation which is valid for the following properties, and does not meet this single property (fixed input output pair) - specifications are under defined. | ||||||||
| ||||||||