theory week05B_demo imports Main begin inductive Ev :: "nat \ bool" where ZeroI: "Ev 0" | Add2I: "Ev n \ Ev (Suc(Suc n))" print_theorems -- --------------------------------------------------- section "Formalising Least Fixpoints" definition closed :: "('a set \ 'a set) \ 'a set \ bool" where "closed f B \ undefined" lemma closed_int: "\ mono f; closed f A; closed f B \ \ closed f (A \ B)" sorry definition lfpt :: "('a set \ 'a set) \ 'a set" where "lfpt f \ undefined" section {* Fix Point *} lemma lfpt_fixpoint: "mono f \ f (lfpt f) = lfpt f" sorry text {* lfpt is the least fix point *} lemma lfpt_least: assumes A: "f A = A" shows "lfpt f \ A" sorry section {* Rule Induction *} consts R :: "('a set \ 'a) set" definition R_hat :: "'a set \ 'a set" where "R_hat A \ undefined" lemma sound: assumes hyp: "\(H,x) \ R. ((\h \ H. P h) \ P x)" shows "\x \ lfpt R_hat. P x" sorry end