X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Flambda-delta%2Fbasic_rg%2FbrgUntrusted.ml;h=4c1ae61dbc47cfd6cd40220d5832c4e95201f15e;hb=da284829d696ab53dfa437e169fa669c8e58de7d;hp=80a9d4fe78d67433636b98e34155c5ce8e600eb6;hpb=41bf338d7e638ebb5d97e525055bff05b1f0f045;p=helm.git diff --git a/helm/software/lambda-delta/basic_rg/brgUntrusted.ml b/helm/software/lambda-delta/basic_rg/brgUntrusted.ml index 80a9d4fe7..4c1ae61db 100644 --- a/helm/software/lambda-delta/basic_rg/brgUntrusted.ml +++ b/helm/software/lambda-delta/basic_rg/brgUntrusted.ml @@ -9,17 +9,30 @@ \ / This software is distributed as is, NO WARRANTY. V_______________________________________________________________ *) +module U = NUri +module L = Log +module Y = Entity module B = Brg module E = BrgEnvironment +module R = BrgReduction module T = BrgType (* Interface functions ******************************************************) -let type_check f g = function - | None -> f None - | Some ((_, _, B.Abst t) as obj) - | Some ((_, _, B.Abbr t) as obj) -> - let f tt obj = f (Some (tt, obj)) in - let f tt = E.set_obj (f tt) obj in - T.type_of f g B.empty_context t - | Some (_, _, B.Void) -> assert false +(* to share *) +let type_check err f st = function + | a, uri, Y.Abst t -> + let f xt tt = + let e = E.set_entity (a, uri, Y.Abst xt) in f tt e + in + L.loc := U.string_of_uri uri; T.type_of err f st R.empty_kam t + | a, uri, Y.Abbr t -> + let f xt tt = + let xt = match xt with + | B.Cast _ -> xt + | _ -> B.Cast ([], tt, xt) + in + let e = E.set_entity (a, uri, Y.Abbr xt) in f tt e + in + L.loc := U.string_of_uri uri; T.type_of err f st R.empty_kam t + | _, _, Y.Void -> assert false