]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/ng_tactics/zipTree.mli
new data structures for auto
[helm.git] / helm / software / components / ng_tactics / zipTree.mli
index 6a6c4d67f4a51d3dbb1ef937eb664680c319ba10..bed576157d099558613c0507d138a455057c13b6 100644 (file)
 
 (* $Id: nCic.ml 9058 2008-10-13 17:42:30Z tassi $ *)
 
-val repeat : ('a -> 'a option) -> 'a -> 'a
+type ('s,'g) tree = Node of 's * ('g * ('s,'g) tree) list | Nil 
+type ('a,'s,'g) position
 
-module type Elem = sig type t val pp : t -> string end ;;
+val start : ('s,'g) tree -> ('a,'s,'g) position
 
-module type ZipTree = sig
-  type t
-  type tree = Node of (t * tree) list
-  type position
+val up    : ('a,'s,'g) position -> ('b,'s,'g) position option
+val down  : ('a,'s,'g) position -> ('b,'s,'g) position option
+val left  : ('a,'s,'g) position -> ('b,'s,'g) position option
+val right : ('a,'s,'g) position -> ('b,'s,'g) position option
 
-  val start : tree -> position
+val is_top :  ('a,'s,'g) position -> bool
 
-  val up    : position -> position option
-  val down  : position -> position option
-  val left  : position -> position option
-  val right : position -> position option
+val root: ('a,'s,'g) position -> ('s,'g) tree
 
-  val root: position -> tree
-  val previsit: ('a -> t -> 'a) -> 'a -> position -> 'a
+val get: ('a,'s,'g) position -> 's * 'g
+val set: 's -> 'g -> ('a,'s,'g) position -> ('a,'s,'g) position
 
-  val get: position -> t
-  val set: t -> position -> position
+val inject: ('s,'g) tree -> ('a,'s,'g) position -> ('a,'s,'g) position
+val eject: ('a,'s,'g) position -> ('s,'g) tree
 
-  val inject: tree -> position -> position
-  val eject: position -> tree
+val dump: ('g -> string) -> ('s -> string -> Format.formatter -> unit) -> 
+            ('a,'s,'g) position -> Format.formatter -> unit
 
-  val dump: position -> Format.formatter -> unit
-
-end
-
-module Make(T : Elem) : ZipTree with type t = T.t