pub proof fn strengthen_next<T>(
spec: TempPred<T>,
next: ActionPred<T>,
inv: StatePred<T>,
next_and_inv: ActionPred<T>,
)Expand description
requires
spec.entails(always(lift_action(next))),spec.entails(always(lift_state(inv))),lift_action(next_and_inv).entails(lift_action(next).and(lift_state(inv))),lift_action(next).and(lift_state(inv)).entails(lift_action(next_and_inv)),ensuresspec.entails(always(lift_action(next_and_inv))),Strengthen next with inv.
§Preconditions
spec ⊧ □nextspec ⊧ □inv⊧ next ∧ inv <=> next_and_inv
§Postconditions
spec ⊧ □next_and_inv