+ (*CSC: I throw away the arities *)
+ `Old (uri::lemmas)
+ | GrafiteAst.NQed loc ->
+ (match status.GrafiteTypes.ng_status with
+ | GrafiteTypes.ProofMode
+ { NTacStatus.istatus =
+ {NTacStatus.pstatus = pstatus; lstatus=lexicon_status} } ->
+ let uri,height,menv,subst,obj_kind = pstatus in
+ if menv <> [] then
+ raise
+ (GrafiteTypes.Command_error"You can't Qed an incomplete theorem")
+ else
+ let obj_kind =
+ NCicUntrusted.map_obj_kind
+ (NCicUntrusted.apply_subst subst []) obj_kind in
+ let height = NCicTypeChecker.height_of_obj_kind uri obj_kind in
+ let obj = uri,height,[],[],obj_kind 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
+ {status with
+ GrafiteTypes.ng_status =
+ 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;
+ status, `Old [] (*CSC: TO BE FIXED *)
+ | GrafiteAst.Set (loc, name, value) -> status, `Old []
+(* GrafiteTypes.set_option status name value,[] *)
+ | GrafiteAst.NUnivConstraint (loc,strict,u1,u2) ->
+ NCicEnvironment.add_constraint strict [false,u1] [false,u2];
+ status, `New [u1;u2]
+ | GrafiteAst.NObj (loc,obj) ->
+ let lexicon_status =
+ match status.GrafiteTypes.ng_status with
+ | GrafiteTypes.ProofMode _ -> assert false
+ | GrafiteTypes.CommandMode ls -> ls in
+ let lexicon_status,obj =
+ GrafiteDisambiguate.disambiguate_nobj lexicon_status
+ ~baseuri:(GrafiteTypes.get_baseuri status) (text,prefix_len,obj) in
+ let uri,height,nmenv,nsubst,nobj = obj in
+ let ninitial_stack = Continuationals.Stack.of_nmetasenv nmenv in
+ let status =
+ { status with
+ GrafiteTypes.ng_status =
+ GrafiteTypes.ProofMode
+ (subst_metasenv_and_fix_names
+ { NTacStatus.gstatus = ninitial_stack;
+ istatus = { NTacStatus.pstatus = obj; lstatus = lexicon_status}})
+ }
+ in
+ (match nmenv with
+ [] ->
+ eval_command.ec_go ~disambiguate_command opts status
+ ("",0,GrafiteAst.NQed Stdpp.dummy_loc)
+ | _ -> status,`New [])