Up to index of Isabelle/HOL/sHowe
theory Kleene = Divrg(* File: Kleene.thy Author: Simon Ambler (sja4@mcs.le.ac.uk), modified by AM Copyright: Leicester University, 1998. Kleene equivalence of terms. *) Kleene = Divrg + constdefs kleene :: "[uexp, uexp] => bool" ("((_) /<kleene> (_) )" [50,50] 50) "kleene p q == cloexp p & cloexp q & (! v. (p >> v) = (q >> v))" (* constdefs expAbstr :: "[uexp => uexp] => bool" "expAbstr e == abstr e & (!t. isexp t --> isexp (e t))" *) end
theorem kleene_cloexp1:
s <kleene> t ==> cloexp s
theorem kleene_cloexp2:
s <kleene> t ==> cloexp t
theorem kleene_cloexp:
s <kleene> t ==> cloexp s & cloexp t
theorem kleene_refl:
cloexp s ==> s <kleene> s
theorem kleene_sym:
s <kleene> t ==> t <kleene> s
theorem kleene_trans:
[| s <kleene> t ; t <kleene> u |] ==> s <kleene> u
theorem kleene_beta:
[| cloAbstr e; cloexp t |] ==> (lam x. e x) $ t <kleene> e t
theorem eval_same_kleene:
[| s >> v; t >> v |] ==> s <kleene> t
theorem eval_kleene:
s >> v ==> s <kleene> v
theorem kleene_eval2:
EX v. p >> v & q >> v ==> p <kleene> q
theorem kleene_App:
[| s <kleene> t ; cloexp u |] ==> s $ u <kleene> t $ u