Up to index of Isabelle/HOL/sHowe
theory Sim = Kleene(* File: Sim.thy Author: Simon Ambler (sja4@mcs.le.ac.uk), modified by AM Copyright: Leicester University, 1998. Simulation for terms under normal order reduction. *) Sim = Kleene + consts sim :: "(uexp * uexp ) set" syntax "@sim" :: "[uexp,uexp] => bool" ("((_) /<sim> (_) )" [50,50] 50) translations "s <sim> t " == "(s,t) : sim" constdefs bisim :: "[uexp,uexp] => bool" ("(_) /=~= (_) " [50,50] 50) "s =~= t == s <sim> t & t <sim> s" coinductive sim intrs sim_Fun "[|cloexp r; cloexp s;! t. r >> lam x . t x --> ( cloAbstr t --> (? u. s >> lam x . u x & cloAbstr u & (! p. cloexp p --> (t p) <sim> (u p) )))|] ==> r <sim> s" end
theorem sim_cloexp:
s <sim> t ==> cloexp s & cloexp t
theorem sim_refl:
cloexp s ==> s <sim> s
theorem sim_trans:
[| s <sim> t ; t <sim> u |] ==> s <sim> u
theorem kleene_sim:
p <kleene> q ==> p <sim> q
theorem sim_beta_conv1:
[| cloAbstr e; cloexp t |] ==> (lam x. e x) $ t <sim> e t
theorem sim_beta_conv2:
[| cloAbstr e; cloexp t |] ==> e t <sim> (lam x. e x) $ t
theorem sim_eval1:
p >> q ==> p <sim> q
theorem sim_eval2:
q >> p ==> p <sim> q
theorem not_converges_sim:
[| cloexp p; cloexp q; ¬ converges p |] ==> p <sim> q
theorem divrg_sim:
[| cloexp q; divrg p |] ==> p <sim> q
theorem sim_converges:
[| s <sim> t ; converges s |] ==> converges t
theorem bisim_refl:
cloexp s ==> s =~= s
theorem bisim_sym:
s =~= t ==> t =~= s
theorem bisim_trans:
[| s =~= t ; t =~= u |] ==> s =~= u