123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081(************************************************************************)(* * The Coq Proof Assistant / The Coq Development Team *)(* v * Copyright INRIA, CNRS and contributors *)(* <O___,, * (see version control and CREDITS file for authors & dates) *)(* VV/ **************************************************************)(* // * This file is distributed under the terms of the *)(* * GNU Lesser General Public License Version 2.1 *)(* * (see LICENSE file for the text of the license) *)(************************************************************************)(************************************************************************)(* SerAPI: Coq interaction protocol with bidirectional serialization *)(************************************************************************)(* Copyright 2016-2019 MINES ParisTech -- License LGPL 2.1+ *)(* Copyright 2019-2023 Inria -- License LGPL 2.1+ *)(* Written by: Emilio J. Gallego Arias and others *)(************************************************************************)openPpx_hash_lib.Std.Hash.BuiltinopenPpx_compare_lib.BuiltinopenSexplib.StdmoduleONames=NamesmoduleCEphemeron=Ser_cEphemeronmoduleNames=Ser_namesmoduleConstr=Ser_constrmoduleDeclarations=Ser_declarationsmoduleMod_declarations=Ser_mod_declarationsmoduleEntries=Ser_entriesmoduleCooking=Ser_cookingmoduleUniv=Ser_univmoduleVmemitcodes=Ser_vmemitcodes(* Side_effects *)typecertificate={certif_struc:Mod_declarations.structure_body;certif_univs:Univ.ContextSet.t;}[@@derivingsexp,yojson,hash,compare]typeside_effect={seff_certif:certificateCEphemeron.key;seff_constant:Names.Constant.t;seff_body:(Constr.t,Vmemitcodes.body_codeoption)Declarations.pconstant_body;seff_univs:Univ.ContextSet.t;}[@@derivingsexp,yojson,hash,compare]moduleSeffOrd=structtypet=side_effect[@@derivingsexp,yojson,hash,compare]endmoduleSeffSet=Set.Make(SeffOrd)moduleSerSeffSet=Ser_cSet.Make(SeffSet)(SeffOrd)modulePC=struct(* t private_constants *)typet=Safe_typing.private_constantstype_t={seff:side_effectlist;elts:SerSeffSet.t}[@@derivingsexp,yojson,hash,compare]endmoduleB_=SerType.Pierce(PC)typeprivate_constants=B_.t[@@derivingsexp,yojson,hash,compare](*
type 'a effect_entry =
[%import: 'a Safe_typing.effect_entry]
[@@deriving sexp_of]
(* XXX: Typical GADT Problem *)
let _effect_entry_of_sexp (_f : Sexp.t -> 'a) (x : Sexp.t) : 'a effect_entry =
let open Sexp in
match x with
| Atom "PureEntry" ->
Obj__magic PureEntry
| Atom "EffectEntry" ->
Obj__magic EffectEntry
| _ ->
Sexplib.Conv_error.no_variant_match ()
*)