Lang.ModuleTypetype substitution = | ModuleEq of Paths.Fragment.Module.t * Module.Equation.t | 
| ModuleTypeEq of Paths.Fragment.ModuleType.t * expr | 
| TypeEq of Paths.Fragment.Type.t * TypeDecl.Equation.t | 
| ModuleSubst of Paths.Fragment.Module.t * Paths.Path.Module.t | 
| ModuleTypeSubst of Paths.Fragment.ModuleType.t * expr | 
| TypeSubst of Paths.Fragment.Type.t * TypeDecl.Equation.t | 
type simple_expansion = | Signature of Signature.t | 
| Functor of FunctorParameter.t * simple_expansion | 
module U : sig ... endtype with_t = {w_substitutions : substitution list; | 
w_expansion : simple_expansion option; | 
w_expr : U.expr; | 
}type expr = | Path of path_t | 
| Signature of Signature.t | 
| Functor of FunctorParameter.t * expr | 
| With of with_t | 
| TypeOf of typeof_t | 
type t = {id : Paths.Identifier.ModuleType.t; | 
doc : Comment.docs; | 
canonical : Paths.Path.ModuleType.t option; | 
expr : expr option; | 
}