let add (t : ('a,'b,'c,'d) t) x y = let bin = t.proj x in let accu = Hashtbl.find t.table bin |? t.zero in Hashtbl.replace t.table bin (t.add y accu)