# Theory Ex1

Up to index of Isabelle/LCF/ex

theory Ex1
imports LCF
uses [Ex1.ML]
begin

    (* $Id: Ex1.thy,v 1.2 2005/09/03 15:54:11 wenzelm Exp $ *)

    header {*  Section 10.4 *}

    theory Ex1
    imports LCF
    begin

    consts
      P     :: "'a => tr"
      G     :: "'a => 'a"
      H     :: "'a => 'a"
      K     :: "('a => 'a) => ('a => 'a)"

    axioms
      P_strict:     "P(UU) = UU"
      K:            "K = (%h x. P(x) => x | h(h(G(x))))"
      H:            "H = FIX(K)"

    ML {* use_legacy_bindings (the_context ()) *}

    end

theorem H_unfold:

      H = K(H)

theorem H_strict:

      H(UU) = UU

theorem H_idemp_lemma:

      ∀x. H(FIX(K, x)) = FIX(K, x)

theorem H_idemp:

      ∀x. H(H(x)) = H(x)