(* File: Cord.thy Author: Simon Ambler (sja4@mcs.le.ac.uk) Copyright: Leicester University, 1998. Time-stamp: <99/08/26 12:00:25 sja4> Contextual ordering of expressions. *) Cord = Context + Howe + Diverges + constdefs cord :: "(typ list * expr * expr * typ) set" "cord == {(env,p,q,a) . env |- p ::: a & env |- q ::: a \ \ & (! c b. ((env, a, []) |-- c ::: b) \ \ --> converges (c p) --> converges (c q))}" syntax "@cord" :: "[typ list, expr, expr, typ] => bool" ("((_) |- (_) /<cord> (_) /::: (_))" [50,50,50] 50) translations "env |- p <cord> q ::: a" == "(env, p, q, a) : cord" end
env |- s <cord> t ::: a ==> env |- s ::: a
env |- s <cord> t ::: a ==> env |- t ::: a
env |- s ::: a ==> env |- s <cord> s ::: a
[| env |- s <cord> t ::: a; env |- t <cord> u ::: a |] ==> env |- s <cord> u ::: a
[| (env1, a, env2) |-- c ::: b; env1 @ env2 |- s <opensim> t ::: a |] ==> env2 |- c s <opensim> c t ::: b
env |- s <opensim> t ::: a ==> env |- s <cord> t ::: a
s <kleene> t ::: a ==> env |- s <cord> t ::: a
[| (env1, a, env2) |-- c ::: b; env1 @ env2 |- s <cord> t ::: a |] ==> env2 |- c s <cord> c t ::: b
[] |- s <cord> t ::: a ==> s <sim> t ::: a
[| b # env |- s <cord> t ::: a; [] |- p ::: b |] ==> env |- s [p / 0] <cord> t [p / 0] ::: a
env |- s <cord> t ::: a ==> env |- s <opensim> t ::: a
cord = opensim