X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matitaB%2Fcomponents%2Fgrafite_engine%2FnCicCoercDeclaration.ml;fp=matitaB%2Fcomponents%2Fgrafite_engine%2FnCicCoercDeclaration.ml;h=03e3f87e18d452c0f2ee5305800969acf7827650;hb=928af763320668168206e88d93e8a77698f3b925;hp=52b074c4afc63982fbc644f7b0f923460d216242;hpb=c9c6cae5121a25b05450ea42578f14f74569cfbf;p=helm.git diff --git a/matitaB/components/grafite_engine/nCicCoercDeclaration.ml b/matitaB/components/grafite_engine/nCicCoercDeclaration.ml index 52b074c4a..03e3f87e1 100644 --- a/matitaB/components/grafite_engine/nCicCoercDeclaration.ml +++ b/matitaB/components/grafite_engine/nCicCoercDeclaration.ml @@ -262,11 +262,11 @@ let close_graph name t s d to_s from_d p a status = ;; (* idempotent *) -let basic_index_ncoercion (name,t,s,d,position,arity) status = +let basic_index_ncoercion (name,_compose,t,s,d,position,arity) status = NCicCoercion.index_coercion status name t s d arity position ;; -let basic_eval_ncoercion (name,t,s,d,p,a) status = +let basic_eval_ncoercion (name,compose,t,s,d,p,a) status = let to_s = NCicCoercion.look_for_coercion status [] [] [] skel_dummy s in @@ -274,10 +274,11 @@ let basic_eval_ncoercion (name,t,s,d,p,a) status = NCicCoercion.look_for_coercion status [] [] [] d skel_dummy in let status = NCicCoercion.index_coercion status name t s d a p in - let composites = close_graph name t s d to_s from_d p a status in + let composites = + if compose then close_graph name t s d to_s from_d p a status else [] in List.fold_left (fun (uris,infos,st) ((uri,_,_,_,_ as obj),name,t,s,d,p,a) -> - let info = name,t,s,d,p,a in + let info = name,compose,t,s,d,p,a in let st = NCicLibrary.add_obj st obj in let st = basic_index_ncoercion info st in uri::uris, info::infos, st) @@ -285,19 +286,17 @@ let basic_eval_ncoercion (name,t,s,d,p,a) status = ;; let record_ncoercion = - let aux (name,t,s,d,p,a) ~refresh_uri_in_term = + let aux (name,compose,t,s,d,p,a) ~refresh_uri_in_term = let t = refresh_uri_in_term t in let s = refresh_uri_in_term s in let d = refresh_uri_in_term d in - basic_index_ncoercion (name,t,s,d,p,a) + basic_index_ncoercion (name,compose,t,s,d,p,a) in let aux_l l ~refresh_uri_in_universe ~refresh_uri_in_term ~refresh_uri_in_reference ~alias_only status = if not alias_only then - List.fold_right - (aux ~refresh_uri_in_term:(refresh_uri_in_term - (status:>NCicEnvironment.status))) l status + List.fold_right (aux ~refresh_uri_in_term:(refresh_uri_in_term (status:>NCicEnvironment.status))) l status else status in @@ -310,17 +309,17 @@ let basic_eval_and_record_ncoercion infos status = ;; let basic_eval_and_record_ncoercion_from_t_cpos_arity - status (name,t,cpos,arity) + status (name,compose,t,cpos,arity) = let ty = NCicTypeChecker.typeof status ~subst:[] ~metasenv:[] [] t in let src,tgt = src_tgt_of_ty_cpos_arity status ty cpos arity in let status, uris = - basic_eval_and_record_ncoercion (name,t,src,tgt,cpos,arity) status + basic_eval_and_record_ncoercion (name,compose,t,src,tgt,cpos,arity) status in status,uris ;; -let eval_ncoercion (status: #GrafiteTypes.status) name t ty (id,src) tgt = +let eval_ncoercion (status: #GrafiteTypes.status) name compose t ty (id,src) tgt = let metasenv,subst,status,ty = GrafiteDisambiguate.disambiguate_nterm status None [] [] [] ("",0,ty) in assert (metasenv=[]); @@ -332,7 +331,7 @@ let eval_ncoercion (status: #GrafiteTypes.status) name t ty (id,src) tgt = let status, src, tgt, cpos, arity = src_tgt_cpos_arity_of_ty_id_src_tgt status ty id src tgt in let status, uris = - basic_eval_and_record_ncoercion (name,t,src,tgt,cpos,arity) status + basic_eval_and_record_ncoercion (name,compose,t,src,tgt,cpos,arity) status in status,uris ;;