| GrafiteAst.Merge _ -> NTactics.merge_tac
;;
+let eval_ng_non_punct (_text, _prefix_len, punct) =
+ match punct with
+ | GrafiteAst.Focus (_,l) -> NTactics.focus_tac l
+ | GrafiteAst.Unfocus _ -> NTactics.unfocus_tac
+ | GrafiteAst.Skip _ -> NTactics.skip_tac
+;;
+
let eval_ng_tac (text, prefix_len, tac) =
match tac with
| GrafiteAst.NApply (_loc, t) -> NTactics.apply_tac (text,prefix_len,t)
else
let obj =
prerr_endline "CSC: here we should fix the height!!!";
- uri,height,[],[],
- NCicUntrusted.map_obj_kind (NCicUntrusted.apply_subst subst) obj
+ (uri,height,[],[],
+ NCicUntrusted.map_obj_kind (NCicUntrusted.apply_subst subst)
+ obj) in
+ NCicTypeChecker.typecheck_obj obj;
+ NCicLibrary.add_obj uri obj;
+ let objs = NCicElim.mk_elims obj in
+ let uris =
+ uri::
+ List.map
+ (fun (uri,_,_,_,_) as obj ->
+ NCicTypeChecker.typecheck_obj obj;
+ NCicLibrary.add_obj uri obj;
+ uri
+ ) objs
in
- NCicTypeChecker.typecheck_obj obj;
- NCicLibrary.add_obj uri obj;
{status with
GrafiteTypes.ng_status =
- GrafiteTypes.CommandMode lexicon_status },`New [uri]
+ GrafiteTypes.CommandMode lexicon_status },`New uris
| _ -> raise (GrafiteTypes.Command_error "Not in proof mode"))
| GrafiteAst.Relation (loc, id, a, aeq, refl, sym, trans) ->
Setoids.add_relation id a aeq refl sym trans;
in
eval_tactical status
(punctuation_tactical_of_ast (text,prefix_len,punct)),`Old []
+ | GrafiteAst.NNonPunctuationTactical (_, non_punct, punct) ->
+ (match status.GrafiteTypes.ng_status with
+ | GrafiteTypes.CommandMode _ -> assert false
+ | GrafiteTypes.ProofMode nstatus ->
+ let nstatus = eval_ng_non_punct (text,prefix_len,non_punct) nstatus in
+ let nstatus = eval_ng_punct (text,prefix_len,punct) nstatus in
+ NTacStatus.pp_tac_status nstatus;
+ { status with GrafiteTypes.ng_status= GrafiteTypes.ProofMode nstatus },
+ `New [])
| GrafiteAst.Command (_, cmd) ->
eval_command.ec_go ~disambiguate_command opts status (text,prefix_len,cmd)
| GrafiteAst.Macro (loc, macro) ->