let inject_unification_hint =
let basic_eval_unification_hint (t,n)
~refresh_uri_in_universe ~refresh_uri_in_term ~refresh_uri_in_reference
let inject_unification_hint =
let basic_eval_unification_hint (t,n)
~refresh_uri_in_universe ~refresh_uri_in_term ~refresh_uri_in_reference
assert (metasenv=[]);
let t = NCicUntrusted.apply_subst subst [] t in
let status = basic_eval_unification_hint (t,n) status in
assert (metasenv=[]);
let t = NCicUntrusted.apply_subst subst [] t in
let status = basic_eval_unification_hint (t,n) status in
-let basic_eval_interpretation (dsc, (symbol, args), cic_appl_pattern) status =
+let basic_eval_interpretation ~alias_only (dsc, (symbol, args), cic_appl_pattern) status =
let inject_interpretation =
let basic_eval_interpretation (dsc, (symbol, args), cic_appl_pattern)
~refresh_uri_in_universe ~refresh_uri_in_term ~refresh_uri_in_reference
let inject_interpretation =
let basic_eval_interpretation (dsc, (symbol, args), cic_appl_pattern)
~refresh_uri_in_universe ~refresh_uri_in_term ~refresh_uri_in_reference
| NotationPt.ApplPattern l -> NotationPt.ApplPattern (List.map refresh l)
in
let cic_appl_pattern = refresh cic_appl_pattern in
| NotationPt.ApplPattern l -> NotationPt.ApplPattern (List.map refresh l)
in
let cic_appl_pattern = refresh cic_appl_pattern in
- basic_eval_interpretation (dsc, (symbol, args), cic_appl_pattern)
+ basic_eval_interpretation ~alias_only (dsc, (symbol, args), cic_appl_pattern)
in
GrafiteTypes.Serializer.register#run "interpretation"
basic_eval_interpretation
;;
let eval_interpretation status data=
in
GrafiteTypes.Serializer.register#run "interpretation"
basic_eval_interpretation
;;
let eval_interpretation status data=
- let status = basic_eval_interpretation data status in
- let dump = inject_interpretation data::status#dump in
- status#set_dump dump
+ let status = basic_eval_interpretation ~alias_only:false data status in
+ NCicLibrary.dump_obj status (inject_interpretation data)
basic_eval_alias (mode,diff)
in
GrafiteTypes.Serializer.register#run "alias" basic_eval_alias
basic_eval_alias (mode,diff)
in
GrafiteTypes.Serializer.register#run "alias" basic_eval_alias
let inject_input_notation =
let basic_eval_input_notation (l1,l2)
~refresh_uri_in_universe ~refresh_uri_in_term ~refresh_uri_in_reference
let inject_input_notation =
let basic_eval_input_notation (l1,l2)
~refresh_uri_in_universe ~refresh_uri_in_term ~refresh_uri_in_reference
- let l1 =
- CicNotationParser.refresh_uri_in_checked_l1_pattern
- ~refresh_uri_in_term ~refresh_uri_in_reference l1 in
- let l2 = NotationUtil.refresh_uri_in_term
- ~refresh_uri_in_term ~refresh_uri_in_reference l2
- in
- basic_eval_input_notation (l1,l2)
+ if not alias_only then
+ let l1 =
+ CicNotationParser.refresh_uri_in_checked_l1_pattern
+ ~refresh_uri_in_term ~refresh_uri_in_reference l1 in
+ let l2 = NotationUtil.refresh_uri_in_term
+ ~refresh_uri_in_term ~refresh_uri_in_reference l2
+ in
+ basic_eval_input_notation (l1,l2) status
+ else
+ status
let inject_output_notation =
let basic_eval_output_notation (l1,l2)
~refresh_uri_in_universe ~refresh_uri_in_term ~refresh_uri_in_reference
let inject_output_notation =
let basic_eval_output_notation (l1,l2)
~refresh_uri_in_universe ~refresh_uri_in_term ~refresh_uri_in_reference
- let l1 =
- CicNotationParser.refresh_uri_in_checked_l1_pattern
- ~refresh_uri_in_term ~refresh_uri_in_reference l1 in
- let l2 = NotationUtil.refresh_uri_in_term
- ~refresh_uri_in_term ~refresh_uri_in_reference l2
- in
- basic_eval_output_notation (l1,l2)
+ if not alias_only then
+ let l1 =
+ CicNotationParser.refresh_uri_in_checked_l1_pattern
+ ~refresh_uri_in_term ~refresh_uri_in_reference l1 in
+ let l2 = NotationUtil.refresh_uri_in_term
+ ~refresh_uri_in_term ~refresh_uri_in_reference l2
+ in
+ basic_eval_output_notation (l1,l2) status
+ else
+ status
(*prerr_endline (string_of_int height);*)
let data = compute_keys status uri height kind in
let status = basic_index_obj data status in
(*prerr_endline (string_of_int height);*)
let data = compute_keys status uri height kind in
let status = basic_index_obj data status in
if newstatus#eq_cache == status#eq_cache then status
else
((*prerr_endline ("recording " ^ (NUri.string_of_uri uri));*)
if newstatus#eq_cache == status#eq_cache then status
else
((*prerr_endline ("recording " ^ (NUri.string_of_uri uri));*)
- let u1 = refresh_uri_in_universe u1 in
- let u2 = refresh_uri_in_universe u2 in
- basic_eval_add_constraint (u1,u2)
+ if not alias_only then
+ let u1 = refresh_uri_in_universe u1 in
+ let u2 = refresh_uri_in_universe u2 in
+ (* NCicLibrary.add_constraint adds the constraint to the NCicEnvironment
+ * and also to the storage (for undo/redo). During inclusion of compiled
+ * files the storage must not be touched. *)
+ NCicEnvironment.add_lt_constraint u1 u2;
+ status
+ else
+ status
in
GrafiteTypes.Serializer.register#run "constraints" basic_eval_add_constraint
;;
let eval_add_constraint status u1 u2 =
in
GrafiteTypes.Serializer.register#run "constraints" basic_eval_add_constraint
;;
let eval_add_constraint status u1 u2 =
- let status = basic_eval_add_constraint (u1,u2) status in
- let dump = inject_constraint (u1,u2)::status#dump in
- let status = status#set_dump dump in
- status
+ let status = NCicLibrary.add_constraint status u1 u2 in
+ NCicLibrary.dump_obj status (inject_constraint (u1,u2))
| GrafiteAst.NCut (_loc, t) -> NTactics.cut_tac (text,prefix_len,t)
(*| GrafiteAst.NDiscriminate (_,what) -> NDestructTac.discriminate_tac ~what:(text,prefix_len,what)
| GrafiteAst.NSubst (_,what) -> NDestructTac.subst_tac ~what:(text,prefix_len,what)*)
| GrafiteAst.NCut (_loc, t) -> NTactics.cut_tac (text,prefix_len,t)
(*| GrafiteAst.NDiscriminate (_,what) -> NDestructTac.discriminate_tac ~what:(text,prefix_len,what)
| GrafiteAst.NSubst (_,what) -> NDestructTac.subst_tac ~what:(text,prefix_len,what)*)
| GrafiteAst.NDestruct (_,dom,skip) -> NDestructTac.destruct_tac dom skip
| GrafiteAst.NDot _ -> NTactics.dot_tac
| GrafiteAst.NElim (_loc, what, where) ->
| GrafiteAst.NDestruct (_,dom,skip) -> NDestructTac.destruct_tac dom skip
| GrafiteAst.NDot _ -> NTactics.dot_tac
| GrafiteAst.NElim (_loc, what, where) ->
| GrafiteAst.NUnfocus _ -> NTactics.unfocus_tac
| GrafiteAst.NWildcard _ -> NTactics.wildcard_tac
| GrafiteAst.NTry (_,tac) -> NTactics.try_tac
| GrafiteAst.NUnfocus _ -> NTactics.unfocus_tac
| GrafiteAst.NWildcard _ -> NTactics.wildcard_tac
| GrafiteAst.NTry (_,tac) -> NTactics.try_tac
| GrafiteAst.NAssumption _ -> NTactics.assumption_tac
| GrafiteAst.NBlock (_,l) ->
NTactics.block_tac (List.map (fun x -> aux f (text,prefix_len,x)) l)
| GrafiteAst.NAssumption _ -> NTactics.assumption_tac
| GrafiteAst.NBlock (_,l) ->
NTactics.block_tac (List.map (fun x -> aux f (text,prefix_len,x)) l)
let rec eval_ncommand ~include_paths opts status (text,prefix_len,cmd) =
match cmd with
| GrafiteAst.Include (loc, mode, fname) ->
let rec eval_ncommand ~include_paths opts status (text,prefix_len,cmd) =
match cmd with
| GrafiteAst.Include (loc, mode, fname) ->
- let _root, baseuri, _fullpath, _rrelpath =
+ let _root, baseuri, fullpath, _rrelpath =
- let status,obj =
- GrafiteTypes.Serializer.require ~baseuri:(NUri.uri_of_string baseuri)
- status in
- let status = status#set_dump (obj::status#dump) in
- let status = status#set_dependencies (fname::status#dependencies) in
- (*assert false;*) (* MATITA 1.0mode must be passed to GrafiteTypes.Serializer.require
- somehow *)
- status
+ let baseuri = NUri.uri_of_string baseuri in
+ (* MATITA 1.0: keep WithoutPreferences? *)
+ let alias_only = (mode = GrafiteAst.OnlyPreferences) in
+ GrafiteTypes.Serializer.require
+ ~alias_only ~baseuri ~fname:fullpath status
| GrafiteAst.UnificationHint (loc, t, n) -> eval_unification_hint status t n
| GrafiteAst.NCoercion (loc, name, t, ty, source, target) ->
let status, composites =
| GrafiteAst.UnificationHint (loc, t, n) -> eval_unification_hint status t n
| GrafiteAst.NCoercion (loc, name, t, ty, source, target) ->
let status, composites =
(*prerr_endline (NCicPp.ppobj obj);*)
let boxml = NCicElim.mk_elims obj in
let boxml = boxml @ NCicElim.mk_projections obj in
(*prerr_endline (NCicPp.ppobj obj);*)
let boxml = NCicElim.mk_elims obj in
let boxml = boxml @ NCicElim.mk_projections obj in
-(*
- let objs = [] in
- let timestamp,uris_rev =
- List.fold_left
- (fun (status,uris_rev) (uri,_,_,_,_) as obj ->
- let status = NCicLibrary.add_obj status obj in
- status,uri::uris_rev
- ) (status,[]) objs in
- let uris = uri::List.rev uris_rev in
-*)
let status = status#set_ng_mode `CommandMode in
let xxaliases = GrafiteDisambiguate.aliases_for_objs [uri] in
let mode = GrafiteAst.WithPreferences in (* MATITA 1.0: fixme *)
let status = status#set_ng_mode `CommandMode in
let xxaliases = GrafiteDisambiguate.aliases_for_objs [uri] in
let mode = GrafiteAst.WithPreferences in (* MATITA 1.0: fixme *)