{VQc55.5.0+dev0-2025-04-28/&Pqueue+OrderedTypeB!tA;@@@A@@@@@7../../stdlib/pqueue.mlii_ci_i@@@@&Pqueue@@A@'compare@&Pqueue+OrderedType!t@@@@&Pqueue+OrderedType!t@@@#int@@@@@@@@)l*l@@(A@@@@-g??.w  @,B@@#Min'E!tC;@@>A@@@@@=  ">  (@@@@K@@'pop_min@&Pqueue #Min!t@@@E&Pqueue#Min#elt@@@@@@@@@c^9=d^9Y@@bL@@*remove_min@&Pqueue#Min!t@@@'@@@@@@}b~b@@|M@@%clear @&Pqueue#Min!t@@@A@@@@@@ff@@N@@$copy!@&Pqueue#Min!t@@@&Pqueue#Min!t@@@@@@ii@@O@@(of_array"@%array&Pqueue#Min#elt@@@@@@&Pqueue#Min!t@@@@@@nrvnr@@P@@'of_list#@$list&Pqueue#Min#elt@@@@@@&Pqueue#Min!t@@@@@@r r *@@Q@@'of_iter$@@@&Pqueue#Min#elt@@@@@@@@@!x@E@@@@@@@@@ &Pqueue#Min!t@@@@@@@@9v:v@@8R@@.iter_unordered%@@&Pqueue#Min#elt@@@ @@@@@@&Pqueue!#Min!t@@@"@@@@@@@@fg@@eS@@.fold_unordered&@@#acc@E@@&Pqueue##Min#elt@@@@@@@@@&Pqueue$#Min!t@@@ @@@@@@@?@@T@@@@z  }@U@@ӱ'MakeMinLF@!E(Gp;H;@@@A@@@@@@@@@pA@f<@eF@@@@@@@@@@[@Z=@ @@@A@@@@@@ @O@N>@@@@FE@@@@@@.@B@A?@&@@@@G!t@@@6@@@@@@@@C@1@0@@;@@@@@@@@@M@@@@@@!S@@@@@@@@'Y@@@@@@@@@@f@@A@^@@@ 98@@@@@@@@@w@@B@o@@@GF@@@@@@@@C@|@@@WV@@@@@@@@@@@D@@@@@@@@@@@@E@@@@@@@@@@@@F@@@@@@@@@@@@G@J@@@@@@@@@@@@@@H@K@@@@@@@@@@@@@@I@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o@nJ@@@@@@@@@@@@@@ @@@@@@@@@[@ZK@@Y@@@@_@@@@@a@@@@f@@@@@@@,@C@@@,@X@@@#Max_K!tMI;@@A@@@@@@@@@Y@A@#eltNJ;@@A@@@@@@@@@Z@A@&createO@&@@@&Pqueue'#Max!t@@@@@@  @@ [@@&lengthP@&Pqueue(#Max!t@@@)@@@@@@%&@@$\@@(is_emptyQ@&Pqueue*#Max!t@@@+@@@@@@?@@@>]@@#addR@&Pqueue,#Max!t@@@@&Pqueue-#Max#elt@@@.@@@@@@@@ef @@d^@@(add_iterS@&Pqueue/#Max!t@@@@@@&Pqueue0#Max#elt@@@91@@@@@@!x@K@F2@@@@@@@@ M3@@@@@@@@@@  N@@_@@'max_eltT@&Pqueue4#Max!t@@@&Pqueue5#Max#elt@@@@@@@@@OSOo@@`@@+get_max_eltU@&Pqueue6#Max!t@@@ &Pqueue7#Max#elt@@@ @@ @ptp@@a@@'pop_maxV@&Pqueue8#Max!t@@@ &Pqueue9#Max#elt@@@ @@@@@@  @@ b@@*remove_maxW@&Pqueue:#Max!t@@@;@@@@@@$%@@#c@@%clearX@&Pqueue<#Max!t@@@=@@@@@@>?@@=d@@$copyY@&Pqueue>#Max!t@@@&Pqueue?#Max!t@@@@@@]^@@\e@@(of_arrayZ@A&Pqueue@#Max#elt@@@@@@&PqueueB#Max!t@@@@@@@@f@@'of_list[@D&PqueueC#Max#elt@@@@@@!&PqueueE#Max!t@@@"@@#@ :@@g@@'of_iter\@@@&PqueueF#Max#elt@@@$oG@@@%@@&@!x@/K@'|H@@@(@@)@@*@ &PqueueI#Max!t@@@+@@,@@-@;?;t@@h@@.iter_unordered]@@&PqueueJ#Max#elt@@@0K@@@1@@2@&PqueueL#Max!t@@@3M@@@4@@5@@6@ uy u@@ i@@.fold_unordered^@@#acc@@K@7@&PqueueN#Max#elt@@@8@@9@@:@@&PqueueO#Max!t@@@; @@<@@=@@>@89@@7j@@@@<oo=@;k@@ӱ'MakeMaxL@!E`MWjsN;@@@A@@@@@R#DS#\@@@@jA@`t@@@@+@@@*@@)@@U@Tu@ @@@(@@@'@@&@@H@Gv@@@@%@@@$@@#@+@;@:w@$@@@"@D!t@@@!@@@ @@@@@@@*@)x@9@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@c@@y@\@@@98@@@@@@@@@t@@z@m@@@GF@@@ @@ @@@{@z@@@ WV@@@ @@@ @@@@@|@@@@7@@@@@@@@}@@@@D@@@@@@@@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@{@@@@@@@@@@@@@@@@@j@i@@@@@@@@@@@@@@@@@@@@@@@V@U@@T@@@@Z@@@@@\@@@@a@@@@@@@'@>@@@y##'@wn@@@/OrderedPolyTypeP!tO;!a@-@AA@G@B@@@ Y ] Y f@@@@o@A@'compare@&PqueueQ/OrderedPolyType!t!a@:P@0@@@2@&PqueueR/OrderedPolyType!t!b@@AA@G@B@@@!f!j!f!s@@@@r@A@#eltR;!a@B@AA@G@B@@@!t!x!t!@@@@s@A@&create@T@@@E&PqueueU'MinPoly!t!a@KS@F@@@H@@I@!!!!@@t@@&length@&PqueueV'MinPoly!t!a@RS@L@@@NW@@@O@@P@0!!1!!@@/u@@(is_empty@&PqueueX'MinPoly!t!a@YS@S@@@UY@@@V@@W@Q!!R!!@@Pv@@#add@&PqueueZ'MinPoly!t!a@cS@Z@@@\@&Pqueue['MinPoly#elt@@@^)\@@@_@@`@@a@!!!!@@~w@@(add_iter@&Pqueue]'MinPoly!t!a@tS@d@@@f@@@&Pqueue^'MinPoly#elt@@@h[_@@@i@@j@!x@vS@kh`@@@l@@m@@n@ oa@@@o@@p@@q@@r@!"!"G@@x@@'min_elt@&Pqueueb'MinPoly!t!a@S@w@@@yҠ&Pqueuec'MinPoly#elt@@@{@@@}@@~@"H"L"H"n@@y@@+get_min_elt@&Pqueued'MinPoly!t!a@S@@@@&Pqueuee'MinPoly#elt@@@@@@ "o"s "o"@@ z@@'pop_min@&Pqueuef'MinPoly!t!a@S@@@@%&Pqueueg'MinPoly#elt@@@@@@@@@ D"" E""@@ C{@@*remove_min@&Pqueueh'MinPoly!t!a@S@@@@ i@@@@@@ e"" f""@@ d|@@%clear@&Pqueuej'MinPoly!t!a@S@@@@ 0k@@@@@@ "" ""@@ }@@$copy@&Pqueuel'MinPoly!t!a@S@@@@&Pqueuem'MinPoly!t@@@@@@ "" "#@@ ~@@(of_array@o&Pqueuen'MinPoly#elt!a@S@@@@@@@&Pqueuep'MinPoly!t@@@@@@ ## ##8@@ @@'of_list@r&Pqueueq'MinPoly#elt!a@S@@@@@@@&Pqueues'MinPoly!t@@@@@@ #9#= #9#]@@ @@@'of_iter@@@&Pqueuet'MinPoly#elt!a@S@@@@ u@@@@@@!x@S@ v@@@@@@@@ &Pqueuew'MinPoly!t%@@@@@@@@ F#^#b G#^#@@ EA@@.iter_unordered@@&Pqueuex'MinPoly#elt!a@S@@@@ y@@@@@@&Pqueuez'MinPoly!t@@@ %{@@@@@@@@ {## |##@@ zB@@.fold_unordered@@#acc@S@@&Pqueue|'MinPoly#elt!a@S@@@@@@@@@@&Pqueue}'MinPoly!t@@@(@@@@@@@ ## #$@@ C@@@@ !J!J $ $%@ D@@ӱ+MakeMinPolyT@!EUFV;@A@A@@@ $$ $$@@@@A@@@@@ @@@ @@ @@@@ @@@ @@@ @@ @ @@@@@@ @@@ @@ @.@@@'@@@ @I!t@@@ V@@@ @@ @@ @E@@@>@@@ @@@@@@ o@@@ @@ @xu@@@ @@ @@ @~{@@@ @@ @@ @@ @j@m@l@cd@@@ ^=<l@@@ @@@ @@ @}@T@S@vK@@@ MLP@@@ @@ @@<@;@3@@@ -_^;@@@ @@@ @@ @@#@"@@@@ @@@ @@ @@@@@@@ @@@ @@ @@@@@@@ @@@ @@ @@@@,@@@ @@@ ̠@@@ @@ @@@@-@@@ @@@ @@@ @@ @@@@@@@@@  @@@ @@ @ @@@ @@ @@ @@@@ @@ @@ @@@@@ݠ@@@  2@@@ @@ @@@@  <@@@ @@ @@ @+@x@w@@v@j@@@ }@@ @@ @@1r@@@ @@ @@ @@ @B@Z@@@ $^$^B@ G@@@'MaxPolyY!tW;!a@ @A "A@G@B@@@ #%?%C $%?%L@@@@ "H@A@#eltX;!a@ @A 2A@G@B@@@ 3%M%Q 4%M%\@@@@ 2I@A@&create@ @@@ &Pqueue'MaxPoly!t!a@ Y@ @@@ @@ @ T%]%a U%]%y@@ SJ@@&length@&Pqueue'MaxPoly!t!a@ Y@ @@@  M@@@ @@ @ u%z%~ v%z%@@ tK@@(is_empty@&Pqueue'MaxPoly!t!a@ Y@ @@@  @@@ @@ @ %% %%@@ L@@#add@&Pqueue'MaxPoly!t!a@ Y@ @@@ @&Pqueue'MaxPoly#elt@@@  n@@@ @@ @@ @ %% %%@@ M@@(add_iter@&Pqueue'MaxPoly!t!a@ Y@ @@@ @@@&Pqueue'MaxPoly#elt@@@  @@@ @@ @!x@ Y@  @@@ @@ @@ @  @@@ @@ @@ @@ @ %% %&!@@ N@@'max_elt@&Pqueue'MaxPoly!t!a@ Y@ @@@  &Pqueue'MaxPoly#elt@@@ @@@ @@ @ 6&"&& 7&"&H@@ 5O@@+get_max_elt@&Pqueue'MaxPoly!t!a@ $Y@ @@@ &Pqueue'MaxPoly#elt@@@ !@@ "@ ]&I&M ^&I&l@@ \P@@'pop_max@&Pqueue'MaxPoly!t!a@ .Y@ %@@@ ' j&Pqueue'MaxPoly#elt@@@ )@@@ +@@ ,@ &m&q &m&@@ Q@@*remove_max@&Pqueue'MaxPoly!t!a@ 5Y@ /@@@ 1 T@@@ 2@@ 3@ && &&@@ R@@%clear@&Pqueue'MaxPoly!t!a@ @@@ f@@@@@@ e @@@ d@@ c@x @@@ b@@ a@@ `@~ @@@ _@@ ^@@ ]@@ \@j@m@l@cd@@@ [^=<l@@@ Z@@@ Y@@ X@}@T@S@vK@@@ WMLP@@@ V@@ U@@<@;@3@@@ T-_^;@@@ S@@@ R@@ Q@@#@"@@@@ P @@@ O@@ N@@@@@@@ M @@@ L@@ K@@@@@@@ J@@@ I@@ H@@@@ q@@@ G@@@ F̠@@@ E@@ D@@@@ r@@@ C@@@ B@@@ A@@ @@@@@@@@@@ ? Z@@@ >@@ =@ `@@@ <@@ ;@@ :@@@@ 9@@ 8@@ 7@@@@@ݠ@@@ 6 w@@@ 5@@ 4@@@@ 3 @@@ 2@@ 1@@ 0@+@x@w@@v@j@@@ /}@@ .@@ -@@1r@@@ ,@@ +@@ *@@ )@B@Z@@@R(6(6B@P]@@@@30Priority queues.@) The p@@ module implements a data structure of priority queues, given a totally ordered type for elements. This is a mutable data structure. Both min- and max-priority queues are provided.@  The implementation uses a heap stored in a dynamic array, and is therefore reasonably efficient: accessing the minimum (resp. maximum) element takes constant time, and insertion and removal take time logarithmic in the size of the priority queue. Note that (of_array Q runs in linear time (and thus must be preferred to repeated insertions with #add").@ It is fine to have several elements with the same priority. Nothing is guaranteed regarding the order in which they will be popped. However, it is guaranteed that the element returned by 'min_elt% (or +get_min_elt <) is the one that is removed from the priority queue by 'pop_min% (or *remove_min ). This is important in many algorithms, (e.g. when peeking at several priority queues and then selecting one to remove from).@@@@#5.4@@@@@@@A7../../stdlib/pqueue.mli2Pqueue.OrderedType3 Input signature of the functors .Pqueue.MakeMin@@% and .Pqueue.MakeMax@@!.@@@@@@@@@@@@A#4Pqueue.OrderedType.t35The type of elements.@@@@@@@@@@@@@@A@@@@:Pqueue.OrderedType.compare3 .A total ordering function to compare elements.@ ) This is a two-argument function !f+ such that 'f e1 e2 ! is zero if the elements "e1% and "e2, are equal, 'f e1 e2 ! is strictly negative if "e11 is smaller than "e2&, and /f e1 e29 is strictly positive if "e11 is greater than "e2!.@ 4 The generic structural comparison function .Stdlib.compare@@ K is a suitable ordering function for element types such as #int$ or &string!.@@@@@@@@@@@@@ @ @@@@@@@*Pqueue.Min3 Output signature of the functor @@!.@@@@@@@@@@@@AA&pqueue3Min-priority queues@@#,Pqueue.Min.t3 Prio.t * 'a -> unit PrioQueue.min_elt: 'a PrioQueue.t -> (Prio.t * 'a) option @6Pqueue.OrderedPolyType3 Input signature of the functors 2Pqueue.MakeMinPoly@@% and 2Pqueue.MakeMaxPoly@@!.@@@@@@@@@@@@ KA:#8Pqueue.OrderedPolyType.t3 !The polymorphic type of elements.@@@@@@@@@@@@ RG@@A@@ N M@@>Pqueue.OrderedPolyType.compare3'compare $ is a total order on values of type E@!.@@@@@@@@@@@@ Y@ Z@ J@@@@ 6@@ 4 3@.Pqueue.MinPoly3 Output signature of the functor H@@!.@@@@@@@@@@@@  @@@@ o:Pqueue.MinPoly.get_min_elt@ j@G k@@@@ Q6Pqueue.MinPoly.pop_min@ L@P M@@@@ .9Pqueue.MinPoly.remove_min@ )@Y *@@@@ 4Pqueue.MinPoly.clear@ @b @@@@ 3Pqueue.MinPoly.copy@ @k @@@@ ࠕ7Pqueue.MinPoly.of_array@ @t @@@@ 6Pqueue.MinPoly.of_list@ @} @@@@ 6Pqueue.MinPoly.of_iter@ @ @ {@@@@ e=Pqueue.MinPoly.iter_unordered@ `@ a@ J@@@@ <=Pqueue.MinPoly.fold_unordered@ 7@ 8@ 9@ @@@@ @@  @/  3 lFunctor building an implementation of min-priority queues given a totally ordered type for the elements.@@@@@@@@@@@@A? &Pqueue~/OrderedPolyType/OrderedPolyType'@; with type 'a elt := 'a E.t@  @@@@@.Pqueue.MaxPoly3 Output signature of the functor +@@!.@@@@@@@@@@@@ Ad#0Pqueue.MaxPoly.t@ G@@A@@  @@#2Pqueue.MaxPoly.elt@ G@@A@@  @@5Pqueue.MaxPoly.create@ @ @@@@ 5Pqueue.MaxPoly.length@ @ @@@@ 7Pqueue.MaxPoly.is_empty@ @ @@@@ 2Pqueue.MaxPoly.add@ @  @ |@@@@ n7Pqueue.MaxPoly.add_iter@ i@ j@ Z@ G@@@@ 76Pqueue.MaxPoly.max_elt@ 2@( 3@@@@ :Pqueue.MaxPoly.get_max_elt@ @1 @@@@6Pqueue.MaxPoly.pop_max@@:@@@@Ӡ9Pqueue.MaxPoly.remove_max@@C@@@@4Pqueue.MaxPoly.clear@@L@@@@3Pqueue.MaxPoly.copy@@U@@@@7Pqueue.MaxPoly.of_array@@^@@@@a6Pqueue.MaxPoly.of_list@\@g]@@@@=6Pqueue.MaxPoly.of_iter@8@p9@s @@@@ =Pqueue.MaxPoly.iter_unordered@@|@@@@@᠕=Pqueue.MaxPoly.fold_unordered@@@@@@@@@@@/3 lFunctor building an implementation of max-priority queues given a totally ordered type for the elements.@@@@@@@@@@@@A)&Pqueue/OrderedPolyType/OrderedPolyType@; with type 'a elt := 'a E.t@}@@@@@@@A@@A@@@@@