(************************************************************************) (* * The Rocq Prover / The Rocq Development Team *) (* v * Copyright INRIA, CNRS and contributors *) (* module_implementation val mod_type : 'a generic_module_body -> module_signature val mod_type_alg : 'a generic_module_body -> module_expression option val mod_delta : 'a generic_module_body -> 'a delta_resolver val mod_global_delta : 'a generic_module_body -> 'a delta_resolver option (** [None] if the argument is a functor, [mod_delta] otherwise *) (** {6 Builders} *) val make_module_body : module_signature -> Mod_subst.mod_body Mod_subst.delta_resolver -> module_body val make_module_type : module_signature -> Mod_subst.mod_type Mod_subst.delta_resolver -> module_type_body val strengthen_module_body : src:ModPath.t -> module_signature -> mod_body delta_resolver -> module_body -> module_body val strengthen_module_type : structure_body -> mod_type delta_resolver -> module_type_body -> module_type_body val replace_module_body : structure_body -> mod_body delta_resolver -> module_body -> module_body val module_type_of_module : module_body -> module_type_body val module_body_of_type : module_type_body -> module_body val functorize_module : (Names.MBId.t * module_type_body) list -> module_body -> module_body (** {6 Setters} *) (* This is internal code used by the kernel, you should not mess with this. *) val set_implementation : module_implementation -> module_body -> module_body val set_algebraic_type : module_type_body -> module_expression -> module_type_body val set_signature : module_signature -> 'a generic_module_body -> 'a generic_module_body (** Replace the expanded type, keeping the implementation and the algebraic type. *) (** {6 Substitution} *) type subst_kind val subst_codom : subst_kind val subst_dom_codom : subst_kind val subst_signature : subst_kind -> substitution -> ModPath.t -> module_signature -> module_signature val subst_structure : subst_kind -> substitution -> ModPath.t -> structure_body -> structure_body val subst_module : subst_kind -> substitution -> ModPath.t -> module_body -> module_body val subst_modtype : subst_kind -> substitution -> ModPath.t -> module_type_body -> module_type_body (** {6 Hashconsing} *) val hcons_generic_module_body : 'a generic_module_body -> 'a generic_module_body val hcons_module_body : module_body -> module_body val hcons_module_type : module_type_body -> module_type_body (** {6 Cleaning a module expression from bounded parts } For instance: functor(X:T)->struct module M:=X end) becomes: functor(X:T)->struct module M:= end) *) val clean_structure : Names.MBId.Set.t -> structure_body -> structure_body