+++ /dev/null
-(*
- ||M|| This file is part of HELM, an Hypertextual, Electronic
- ||A|| Library of Mathematics, developed at the Computer Science
- ||T|| Department, University of Bologna, Italy.
- ||I||
- ||T|| HELM is free software; you can redistribute it and/or
- ||A|| modify it under the terms of the GNU General Public License
- \ / version 2 or (at your option) any later version.
- \ / This software is distributed as is, NO WARRANTY.
- V_______________________________________________________________ *)
-
-module H = Hashtbl
-module S = Scanf
-module C = Cps
-
-type graph = string * (int -> int)
-
-let sorts = 2
-let sort = H.create sorts
-let index = ref 0
-
-(* Internal functions *******************************************************)
-
-let set_sort f (h:int) (s:string) =
- H.add sort h s; f (succ h)
-
-(* Interface functions ******************************************************)
-
-let set_new_sorts f ss =
- let f i = index := i; f i in
- C.list_fold_left f set_sort !index ss
-
-let get_sort f h =
- try f (Some (H.find sort h))
- with Not_found -> f None
-
-let string_of_graph f (s, _) = f s
-
-let apply f (_, g) h = f (g h)
-
-let graph_of_string f s =
- try
- let x = S.sscanf s "Z%u" C.start in
- if x > 0 then f (Some (s, fun h -> x + h)) else f None
- with
- S.Scan_failure _ | Failure _ | End_of_file -> f None
-
-let graph =
- ref (graph_of_string (function Some g -> g | None -> assert false) "Z2")