]> matita.cs.unibo.it Git - helm.git/commitdiff
some interfaces improved
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Thu, 12 Nov 2009 19:15:43 +0000 (19:15 +0000)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Thu, 12 Nov 2009 19:15:43 +0000 (19:15 +0000)
helm/software/lambda-delta/basic_ag/bagType.ml
helm/software/lambda-delta/basic_rg/brgReduction.ml
helm/software/lambda-delta/basic_rg/brgSubstitution.ml
helm/software/lambda-delta/basic_rg/brgType.ml
helm/software/lambda-delta/common/hierarchy.ml
helm/software/lambda-delta/common/hierarchy.mli
helm/software/lambda-delta/common/library.ml
helm/software/lambda-delta/common/output.ml
helm/software/lambda-delta/common/output.mli
helm/software/lambda-delta/toplevel/top.ml

index 30d8ac48b17823b8929efbb85f062b26c6f5a6bf..dbf1bd4ebdc11cea0d652d5ab6fff5e9384f0ec0 100644 (file)
@@ -51,7 +51,7 @@ let rec b_type_of f ~si g c x =
    log1 "Now checking" c x;
    match x with
    | B.Sort h                    ->
-      let f h = f x (B.Sort h) in H.apply f g h
+      let h = H.apply g h in f x (B.Sort h) 
    | B.LRef i                    ->
       let f = function
          | Some (_, B.Abst w)               -> f x w
index 1ae73652d7d9f0778cba8ec7b6705bd5ad3319a0..5dff4647b43db3bd06f56153f146e443a4660dd8 100644 (file)
@@ -20,9 +20,9 @@ module O = BrgOutput
 module E = BrgEnvironment
 
 type kam = {
-   e: B.lenv;
-   s: (B.lenv * B.term) list;
-   i: int
+   e: B.lenv;                 (* environment *)
+   s: (B.lenv * B.term) list; (* stack       *)
+   d: int                     (* depth       *)
 }
 
 (* Internal functions *******************************************************)
@@ -122,12 +122,12 @@ let rec step st m x =
 
 let push m a b = 
    assert (m.s = []);
-   let a, i = match b with
-      | B.Abst _ -> Y.Apix m.i :: a, succ m.i
-      | b        -> a, m.i
+   let a, d = match b with
+      | B.Abst _ -> Y.Apix m.d :: a, succ m.d
+      | b        -> a, m.d
    in
    let e = B.push m.e m.e a b in
-   {m with e = e; i = i}
+   {m with e = e; d = d}
 
 let rec ac_nfs st (m1, r1, u) (m2, r2, t) =
    log2 "Now converting nfs" m1.e u m2.e t;
@@ -180,7 +180,7 @@ and ac_stacks st m1 m2 =
 (* Interface functions ******************************************************)
 
 let empty_kam = { 
-   e = B.empty; s = []; i = 0
+   e = B.empty; s = []; d = 0
 }
 
 let get m i =
index 40859b2d5e54f75a97eb1a31f179f8e8bbc7e908..5c9d91a8bdd14009ffb14b0c256ffe2dc480c95b 100644 (file)
       V_______________________________________________________________ *)
 
 module B = Brg
+(* module O = Output *)
+
+let rec icm a = function
+   | B.Sort _
+   | B.LRef _
+   | B.GRef _                -> succ a
+   | B.Bind (_, B.Void, t)   -> icm (succ a) t
+   | B.Cast (_, u, t)        -> icm (icm a u) t
+   | B.Appl (_, u, t)
+   | B.Bind (_, B.Abst u, t)
+   | B.Bind (_, B.Abbr u, t) -> icm (icm (succ a) u) t
 
 let iter map d =
    let rec iter_bind d = function
@@ -30,4 +41,6 @@ let lift_map h _ a i =
    if i + h >= 0 then B.LRef (a, i + h) else assert false
 
 let lift h d t =
-   if h = 0 then t else iter (lift_map h) d t
+   if h = 0 then t else begin
+(*      O.icm := succ (* icm *) !O.icm (*t*); *) iter (lift_map h) d t
+   end
index 79949a3a745753596a391a32f05f5c07f7ebde4e..728e3ff416e75c0e2322b65c65b11fa1a2cc4a24 100644 (file)
@@ -66,7 +66,7 @@ let rec b_type_of err f st g m x =
    log1 "Now checking" m x;
    match x with
    | B.Sort (a, h)           ->
-      let f h = f x (B.Sort (a, h)) in H.apply f g h
+      let h = H.apply g h in f x (B.Sort (a, h)) 
    | B.LRef (_, i)           ->
       begin match R.get m i with
          | B.Abst w                  ->
index e00cfc72cd3f97a889c9bb8e04ec67a301b69f51..f8a58dc0f37bf180d4ec6c07eeb74e0ad743f910 100644 (file)
@@ -25,15 +25,15 @@ let set_sort h s =
 
 (* Interface functions ******************************************************)
 
-let set_sorts ss i =   
-   f (List.fold_left set_sort i ss)
+let set_sorts ss i =   
+   List.fold_left set_sort i ss
 
 let get_sort err f h =
    try f (H.find sort h) with Not_found -> err ()
 
-let string_of_graph f (s, _) = f s
+let string_of_graph (s, _) = s
 
-let apply f (_, g) h = f (g h)
+let apply (_, g) h = (g h)
 
 let graph_of_string err f s =
    try 
index a0790321cefca7880b778b73f08cc416066c62e2..19e94305453935e2641a95bcfce28c6fa9a90db1 100644 (file)
 
 type graph
 
-val set_sorts: (int -> 'a) -> string list -> int -> 'a
+val set_sorts: string list -> int -> int
 
 val get_sort: (unit -> 'a) -> (string -> 'a) -> int -> 'a
 
 val graph_of_string: (unit -> 'a) -> (graph -> 'a) -> string -> 'a
 
-val string_of_graph: (string -> 'a) -> graph -> 'a
+val string_of_graph: graph -> string
 
-val apply: (int -> 'a) -> graph -> int -> 'a
+val apply: graph -> int -> int
index 61af9792127f9c900992e4e1e9bfe4f636fc9105..94ee60bd3f188564aebca8408f3a6139bd927a5b 100644 (file)
@@ -119,7 +119,7 @@ let export_entity pp_term si g (a, u, b) =
       | Y.Void   -> assert false
    in
    let opts = if si then "si" else "" in
-   let shp = H.string_of_graph C.start g in
+   let shp = H.string_of_graph g in
    let attrs = ["hierarchy", shp; "options", opts] in
    tag root attrs ~contents out 0;
    close_out och
index 6dd526bfb71cc88dd9ecce3e1fb2f13ba533cc94..c2e43d460a2e5dc1ecc278c9b325089dbd302810 100644 (file)
@@ -12,6 +12,8 @@
 module P = Printf
 module L = Log
 
+let icm = ref 0
+
 type reductions = {
    beta   : int;
    zeta   : int;
@@ -67,6 +69,7 @@ let print_reductions () =
    L.warn (P.sprintf "      Reference typing:       %7u" rt);
    L.warn (P.sprintf "        Local:                %7u" r.lrt);
    L.warn (P.sprintf "        Global:               %7u" r.grt);
-   L.warn (P.sprintf "      Sort inclusion:         %7u" r.si)
+   L.warn (P.sprintf "      Sort inclusion:         %7u" r.si);
+   L.warn (P.sprintf "  Relocated nodes (icm):      %7u" !icm)
 
 let indexes = ref false
index 812531585efd349c3119955b30b883635925d73b..679346a191a9cc46c15099fc238f55fc729ad3d8 100644 (file)
@@ -11,6 +11,8 @@
 
 val indexes: bool ref
 
+val icm: int ref
+
 val clear_reductions: unit -> unit
 
 val add: 
index 1bab9136be2a569e51fd84ddb4e2f6cee8115a57..dff0bbe10864d38ff3ee1b0f2afd554aa2b25b61 100644 (file)
@@ -257,7 +257,7 @@ try
    let help_u = " activate sort inclusion" in
    let help_x = " export kernel entities (XML)" in
    L.box 0; L.box_err ();
-   H.set_sorts ignore ["Set"; "Prop"] 0;
+   let _ = H.set_sorts ["Set"; "Prop"] 0 in
    at_exit exit;
    Arg.parse [
       ("-S", Arg.Int set_summary, help_S);