Module V4.Replicated_signatures

We have to duplicate the content of src/lib_protocol_environment/sigs/v3/set.mli (and a few other signatures from the same directory) so we can refer to them in src/lib_protocol_environment/environment_V3.ml. Indeed, it is impossible to refer to components of Mavryk_protocol_environment_sigs.V3.T (such as the Set component) because T is a module type (not a module).

It might be possible to change the way that the signatures are exported and thus allow access to some of the sub-components, at which point this whole file can be removed. Note, however, that some components make reference to others (e.g., here we need to introduce the type error_monad_trace which we then substitute for Error_monad.trace) so simply exporting the components will not suffice because there will be unbound types.

Ultimately, it might be easier to provide each struct as a partial or full set of legacy libraries which used to be present at the time the environment was made. For the signatures below, we would include a full implementation of Lwtreslib as it appeared when the environment v3 was cut.

module Compare : sig ... end
module Set : sig ... end
module Map : sig ... end