struct
 type ('a, 'b) t = ('a,'b) relation
 let create ?n () = 
  create [] ident (fun x xs -> x :: xs)
 let add = add
 let stream = stream
 let of_stream xs = 
  let r = create () in
  Stream.iter
   ~f:(fun (x,y) -> add r x y)
   xs ;
  r
end