]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/lambda-delta/basic_rg/brgUntrusted.ml
basic_rg: reduction was not tail recursive by mistake
[helm.git] / helm / software / lambda-delta / basic_rg / brgUntrusted.ml
index 77098b84ef8df8b4f09b3c6c32a060ef8ec89531..959a746194a1d9ca187843d6ccae60b783b54313 100644 (file)
@@ -22,8 +22,15 @@ module T = BrgType
 (* to share *)
 let type_check err f ?(si=false) g = function
    | a, uri, Y.Abst t ->
-      let f xt tt = E.set_entity (f tt) (a, uri, Y.Abst xt) in
-      L.loc := U.string_of_uri uri; T.type_of err f ~si g R.empty_kam t
+      let f xt tt = 
+         let e = E.set_entity (a, uri, Y.Abst xt) in f tt e
+      in
+      let st = Y.initial_status si in
+      L.loc := U.string_of_uri uri; T.type_of err f st g R.empty_kam t
    | a, uri, Y.Abbr t ->
-      let f xt tt = E.set_entity (f tt) (a, uri, Y.Abbr xt) in
-      L.loc := U.string_of_uri uri; T.type_of err f ~si g R.empty_kam t
+      let f xt tt = 
+         let e = E.set_entity (a, uri, Y.Abbr xt) in f tt e
+      in
+      let st = Y.initial_status si in
+      L.loc := U.string_of_uri uri; T.type_of err f st g R.empty_kam t
+   | _, _, Y.Void     -> assert false