I'm looking at Hoare Logic and I'm having problems understanding the method of finding the loop invariant.
Can someone explain the method used to calculate the loop invariant?
And what should a loop invariant should contain to be a "useful" one?
I'm only dealing with simple examples, finding invariants and proving partial and complete correction in examples like:
{ i ≥ 0 } while i > 0 do i := i−1 { i = 0 }