Eles são equivalentes, no sentido de que toda vez que você pode aplicar a regra do livro didático, também pode aplicar sua própria regra e vice-versa. O invariante para as duas regras é semelhante, mas não é o mesmo.
Convertendo uma instância de regra de livro didático em uma instância de sua regra
Suponha que tenhamos uma aplicação ou sua regra de livro didático. seja, encontramos alguns para os quais:I
I⇒V≥0 junto com[I∧C∧V=v0]S[I∧V<v0]
Então, graças à implicação acima, também temos . Usando a regra PrePost, podemos reescrever a invariante em seu equivalente e obtemos uma aplicação da sua regra:I⟺I∧V≥0
[I∧C∧V≥0∧V=v0]S[I∧V≥0∧V<v0]
Aqui, usamos o mesmo invariante da regra do livro.
Convertendo uma instância de sua regra em uma instância de regra de livro didático
Agora, para a direção inversa. Suponha que encontramos para sua regra:I
[I∧C∧V≥0∧V=v0]S[I∧V≥0∧V<v0]
Agora, não podemos assumir , portanto, não podemos usar para a regra do livro didático. No entanto, podemos usar como um novo invariante . Nós trivialmente temos por construção (*). Além disso, a partir da hipóteseI⇒V≥0II′:=I∧V≥0I′⇒V≥0
[I∧C∧V≥0∧V=v0]S[I∧V≥0∧V<v0]
podemos obter (pelo PrePost)
[I′∧C∧V=v0]S[I′∧V<v0] (**)
As propriedades (*) e (**) são exatamente o que precisamos para aplicar a regra do livro.