Theory: apply_f_until_finished

Parents


Type constants


Term constants


Axioms


Definitions

apply_f_cond_n_times
|- (!finished f x. apply_f_cond_n_times finished f x 0 = x) /\
   (!finished f x n.
     apply_f_cond_n_times finished f x (SUC n) =
     ((finished (apply_f_cond_n_times finished f x n))
      => (apply_f_cond_n_times finished f x n)
      | (f (apply_f_cond_n_times finished f x n))))
apply_f_until_finished
|- !finished f x.
     apply_f_until_finished finished f x =
     (@y. finished y /\ (?n. apply_f_cond_n_times finished f x n = y))

Theorems

FINISHED_IMPLIES_NO_CHANGE
|- !finished f x.
     ?n0.
       finished (apply_f_cond_n_times finished f x n0) ==>
       (!n.
         n0 <= n ==>
         (apply_f_cond_n_times finished f x n =
          apply_f_cond_n_times finished f x n0))
FINISHED_IMPLIES_LOWEST
|- !finished f x.
     ?n.
       finished (apply_f_cond_n_times finished f x n) ==>
       (?!n0. finished (apply_f_cond_n_times finished f x n0))
FINISHED_UNIQUE
|- !finished f x y z.
     (finished z /\ (?n. apply_f_cond_n_times finished f x n = z)) /\
     finished y /\
     (?n. apply_f_cond_n_times finished f x n = y) ==>
     (z = y)
apply_f_until_finished_TERMINATE_CASE
|- !finished f y x.
     finished y /\ (?n. apply_f_cond_n_times finished f x n = y) ==>
     (apply_f_until_finished finished f x = y)