1234567891011121314151617181920212223242526272829303132333435363738394041(**************************************************************************)(* *)(* OCaml *)(* *)(* The OCaml programmers *)(* *)(* Copyright 2022 Institut National de Recherche en Informatique et *)(* en Automatique. *)(* *)(* All rights reserved. This file is distributed under the terms of *)(* the GNU Lesser General Public License version 2.1, with the *)(* special exception on linking described in the file LICENSE. *)(* *)(**************************************************************************)(* Type equality witness *)type(_,_)eq=Equal:('a,'a)eq(* Type identifiers *)moduleId=structtype_id=..moduletypeID=sigtypettype_id+=Id:tidendtype!'at=(moduleIDwithtypet='a)letmake(typea)():at=(modulestructtypet=atype_id+=Id:tidend)let[@inline]uid(typea)((moduleA):at)=Obj.Extension_constructor.id(Obj.Extension_constructor.of_valA.Id)letprovably_equal(typeab)((moduleA):at)((moduleB):bt):(a,b)eqoption=matchA.IdwithB.Id->SomeEqual|_->Noneend