type t = { a: a Global.t; b: b Global.t; } let create () = {a = Global.empty "a"; b = Global.empty "b"} let get_a x = Global.reify x.a (fun () -> 1) let get_b x = Global.reify x.b (fun () -> succ (get_a x))