Up to index of Isabelle/HOL/sHowe
theory Divrg = DynDivrg = Dyn +
consts
divrg :: "(uexp) set"
syntax
"@divrg" :: "uexp => bool"
translations
"divrg e" == "e : divrg"
coinductive divrg
intrs
div1 "[|cloexp e1; cloexp e2; divrg e1|] ==> divrg (e1 $ e2)"
div2 "[|e1 >> lam x. E x ; abstr E; cloexp e2; divrg (E e2)|] ==> divrg (e1 $ e2)"
constdefs
omega :: uexp
"omega == (lam x . x $ x) $ (lam x . x $ x)"
end
theorem divrg_cloexp:
divrg p ==> cloexp p
theorem omega_diverges:
divrg omega
theorem divrg_Abs_E:
divrg (bLam E) ==> P
theorem divrg_App_E:
[| divrg (e $ e1);
!!e1a e2. [| e = e1a & e1 = e2; cloexp e1a; cloexp e2; divrg e1a |] ==> P;
!!E e1a e2.
[| e = e1a & e1 = e2; e1a >> bLam E; abstr E; cloexp e2; divrg (E e2) |]
==> P |]
==> P
theorem converges_imp_not_divrg:
converges s ==> s ~: divrg
theorem divrg_imp_not_converges:
divrg s ==> ¬ converges s