In reply to patgizz:
I agree with everything you said.
My earlier post was certainly not a suggestion that Dave argue for full reimbursement. The fair thing to do is to pay for the services rendered (assuming the quality is ok).
However, as a starting point for negotiations, from a legal perspective the contract has been breached, and the contractor owes $40K for failure to fulfill the contract. It's a powerful ace in the hand.
Hopeful, it's not needed at all. As I said, the goal is to end with a handshake.
But if that can't happen, the contract breach is a strong position, which will hopefully lead to a fair and balanced ending like you described.