1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253(******************************************************************************)(* *)(* Alt-Ergo: The SMT Solver For Software Verification *)(* Copyright (C) 2013-2018 --- OCamlPro SAS *)(* *)(* This file is distributed under the terms of the license indicated *)(* in the file 'License.OCamlPro'. If 'License.OCamlPro' is not *)(* present, please contact us to clarify licensing. *)(* *)(******************************************************************************)openOptionsopenFormattypeview={hs:Hstring.t;id:int;}typet=viewletcpt=ref0letof_hstringhs=incrcpt;{hs;id=!cpt}letof_strings=incrcpt;{hs=Hstring.makes;id=!cpt}letviewv=vletcompareab=letc=a.id-b.idinifc<>0thencelsebeginassert(Hstring.equala.hsb.hs);cendletequalab=compareab=0lethash{id;_}=idletto_string{hs;id}=sprintf"%s~%d"(Hstring.viewhs)idletprintfmtv=fprintffmt"%s"(to_stringv)moduleSet=Set.Make(structtypet=viewletcompare=compareend)moduleMap=Map.Make(structtypet=viewletcompare=compareend)