src/HOLCF/ex/Hoare.thy
author huffman
Thu, 26 May 2005 02:23:27 +0200
changeset 16081 81a4b4a245b0
parent 14981 e73f8140af78
child 17291 94f6113fe9ed
permissions -rw-r--r--
cleaned up, added cpair_less and cpair_eq_pair, removed some obsolete stuff

(*  Title:      HOLCF/ex/hoare.thy
    ID:         $Id$
    Author:     Franz Regensburger

Theory for an example by C.A.R. Hoare

p x = if b1 x 
         then p (g x)
         else x fi

q x = if b1 x orelse b2 x 
         then q (g x)
         else x fi

Prove: for all b1 b2 g . 
            q o p  = q 

In order to get a nice notation we fix the functions b1,b2 and g in the
signature of this example

*)

Hoare = HOLCF + 

consts
        b1:: "'a -> tr"
        b2:: "'a -> tr"
         g:: "'a -> 'a"
        p :: "'a -> 'a"
        q :: "'a -> 'a"

defs

  p_def  "p == fix$(LAM f. LAM x.
                 If b1$x then f$(g$x) else x fi)"

  q_def  "q == fix$(LAM f. LAM x.
                 If b1$x orelse b2$x then f$(g$x) else x fi)"

end