- ITERATION
-
|- !P g. ?f. !x. f x = (if P x then x else f (g x))
- WHILE_INDUCTION
-
|- !B C R.
WF R /\ (!s. B s ==> R (C s) s) ==>
!P. (!s. (B s ==> P (C s)) ==> P s) ==> !v. P v
- WHILE_RULE
-
|- !R B C.
WF R /\ (!s. B s ==> R (C s) s) ==>
HOARE_SPEC (\s. P s /\ B s) C P ==>
HOARE_SPEC P (WHILE B C) (\s. P s /\ ~B s)
- LEAST_INTRO
-
|- !P x. P x ==> P ($LEAST P)
- LESS_LEAST
-
|- !P m. m < $LEAST P ==> ~P m
- FULL_LEAST_INTRO
-
|- !x. P x ==> P ($LEAST P) /\ $LEAST P <= x
- LEAST_ELIM
-
|- !Q P.
(?n. P n) /\ (!n. (!m. m < n ==> ~P m) /\ P n ==> Q n) ==> Q ($LEAST P)
- LEAST_EXISTS
-
|- !p. (?n. p n) = p ($LEAST p) /\ !n. n < $LEAST p ==> ~p n
- LEAST_EXISTS_IMP
-
|- !p. (?n. p n) ==> p ($LEAST p) /\ !n. n < $LEAST p ==> ~p n