]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/helena/src/basic_ag/bagType.ml
update in helena
[helm.git] / helm / software / helena / src / basic_ag / bagType.ml
index 4a3d37eccdbcf32e111b3cc9d826a15a40b0d19f..c7ecb151259e890a5fa6cd68ac2452fe2db93c2c 100644 (file)
 
 module U  = NUri
 module C  = Cps
-module W  = Share
+module S  = Share
 module L  = Log
+module G  = Options
 module H  = Hierarchy
 module E  = Entity
-module G  = Options
-module S  = Status
 module Z  = Bag
 module ZO = BagOutput
 module ZE = BagEnvironment
 module ZR = BagReduction
 
+IFDEF TYPE THEN
+
 (* Internal functions *******************************************************)
 
-let level = 3
+let level = 4
 
-let log1 s c t =
-   let sc, st = s ^ " in the envireonment", "the term" in
-   L.log ZO.specs level (L.et_items1 sc c st t)
+let log1 st s c t =
+   let s1, s2 = s ^ " in the envireonment", "the term" in
+   L.log st ZO.specs (pred level) (L.et_items1 s1 c s2 t)
 
 let error1 err st c t =
    let sc = "In the envireonment" in
@@ -46,11 +47,13 @@ let mk_gref u l =
 
 let rec b_type_of err f st c x = 
 (*   L.warn "Entering T.b_type_of"; *)
-   if !G.trace >= level then log1 "Now checking" c x;
+IFDEF TRACE THEN
+   if !G.ct >= level then log1 st "Now checking" c x
+ELSE () END;
    match x with
-   | Z.Sort h                    ->
+   | Z.Sort h                   ->
       let h = H.apply h in f x (Z.Sort h) 
-   | Z.LRef i                    ->
+   | Z.LRef i                   ->
       let err0 () = error1 err "variable not found" c x in
       let f _ = function
          | Z.Abst w               -> f x w
@@ -59,58 +62,60 @@ let rec b_type_of err f st c x =
         | Z.Void                 -> error1 err "reference to excluded variable" c x     
       in
       Z.get err0 f c i
-   | Z.GRef uri                  ->
+   | Z.GRef uri                 ->
       let f = function
-         | _, _, _, E.Abst w               -> f x w
-        | _, _, _, E.Abbr (Z.Cast (w, v)) -> f x w
-        | _, _, _, E.Abbr _               -> assert false
-        | _, _, _, E.Void                 -> assert false
+         | _, _, _, E.Abst (_, w)             -> f x w
+        | _, _, _, E.Abbr (_, Z.Cast (w, v)) -> f x w
+        | _, _, _, E.Abbr _                  -> assert false
+        | _, _, _, E.Void                    -> assert false
       in
       ZE.get_entity f uri   
-   | Z.Bind (a, l, Z.Abbr v, t) ->
+   | Z.Bind (y, l, Z.Abbr v, t) ->
       let f xv xt tt =
-         f (W.sh2 v xv t xt x (Z.bind_abbr a l)) (Z.bind_abbr a l xv tt)
+         f (S.sh2 v xv t xt x (Z.bind_abbr y l)) (Z.bind_abbr y l xv tt)
       in
       let f xv cc = b_type_of err (f xv) st cc t in
-      let f xv = Z.push "type abbr" (f xv) c a l (Z.Abbr xv) in
+      let f xv = Z.push "type abbr" (f xv) c y l (Z.Abbr xv) in
       let f xv vv = match xv with 
         | Z.Cast _ -> f xv
          | _        -> f (Z.Cast (vv, xv))
       in
       type_of err f st c v
-   | Z.Bind (a, l, Z.Abst u, t) ->
+   | Z.Bind (y, l, Z.Abst u, t) ->
       let f xu xt tt =
-        f (W.sh2 u xu t xt x (Z.bind_abst a l)) (Z.bind_abst a l xu tt)
+        f (S.sh2 u xu t xt x (Z.bind_abst y l)) (Z.bind_abst y l xu tt)
       in
       let f xu cc = b_type_of err (f xu) st cc t in
-      let f xu _ = Z.push "type abst" (f xu) c a l (Z.Abst xu) in
+      let f xu _ = Z.push "type abst" (f xu) c y l (Z.Abst xu) in
       type_of err f st c u
-   | Z.Bind (a, l, Z.Void, t)   ->
+   | Z.Bind (y, l, Z.Void, t)   ->
       let f xt tt = 
-         f (W.sh1 t xt x (Z.bind a l Z.Void)) (Z.bind a l Z.Void tt)
+         f (S.sh1 t xt x (Z.bind y l Z.Void)) (Z.bind y l Z.Void tt)
       in
       let f cc = b_type_of err f st cc t in
-      Z.push "type void" f c a l Z.Void   
-   | Z.Appl (v, t)            ->
+      Z.push "type void" f c y l Z.Void   
+   | Z.Appl (v, t)              ->
       let f xv vv xt tt = function
-        | ZR.Abst w                             -> 
-           if !G.trace > level then L.log ZO.specs (succ level) (L.t_items1 "Just scanned" c w);
+        | ZR.Abst w -> 
+IFDEF TRACE THEN
+           if !G.ct > level then L.log st ZO.specs level (L.t_items1 "Just scanned" c w)
+ELSE () END;
            let f a =                
 (*            L.warn (Printf.sprintf "Convertible: %b" a); *)
-              if a then f (W.sh2 v xv t xt x Z.appl) (Z.appl xv tt)
+              if a then f (S.sh2 v xv t xt x Z.appl) (Z.appl xv tt)
               else error3 err c xv vv w
            in
            ZR.are_convertible f st c w vv
-        | _                                    -> 
+        | _         -> 
            error1 err "not a function" c xt
       in
       let f xv vv xt tt = ZR.ho_whd (f xv vv xt tt) st c tt in
       let f xv vv = b_type_of err (f xv vv) st c t in
       type_of err f st c v
-   | Z.Cast (u, t)            ->
+   | Z.Cast (u, t)              ->
       let f xu xt tt a =  
          (* L.warn (Printf.sprintf "Convertible: %b" a); *)
-        if a then f (W.sh2 u xu t xt x Z.cast) xu else error3 err c xt tt xu
+        if a then f (S.sh2 u xu t xt x Z.cast) xu else error3 err c xt tt xu
       in
       let f xu xt tt = ZR.are_convertible (f xu xt tt) st c xu tt in
       let f xu _ = b_type_of err (f xu) st c t in
@@ -119,3 +124,5 @@ let rec b_type_of err f st c x =
 (* Interface functions ******************************************************)
 
 and type_of err f st c x = b_type_of err f st c x
+
+END