signature S1 = sig type t val zero : t end signature S2 = sig type t = int val zero : t end structure S = struct type t = int val zero = 0 end structure S1 : S1 = S structure S2 : S2 = S type t = S1.t val zero : t = S1.zero type t = S2.t val zero : int = S2.zero structure T = S1 val main : S1.t = T.zero