) seqs)
| GrafiteAst.NAuto (_loc, (None,a)) ->
NnAuto.auto_tac ~params:(None,a) ?trace_ref:None
- | GrafiteAst.NAuto (_loc, (Some l,a)) ->
+ | GrafiteAst.NAuto (_loc, (Some (_,l),a)) ->
NnAuto.auto_tac
~params:(Some List.map (fun x -> "",0,x) l,a) ?trace_ref:None
| GrafiteAst.NBranch _ -> NTactics.branch_tac ~force:false
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) ->
+ | GrafiteAst.NCoercion (loc, name, None) ->
+ let status, t, ty, source, target =
+ let o_t = NotationPt.Ident (name,`Ambiguous) in
+ let metasenv,subst, status,t =
+ GrafiteDisambiguate.disambiguate_nterm
+ status None [] [] [] ("",0,o_t) in
+ assert( metasenv = [] && subst = []);
+ let ty = NCicTypeChecker.typeof status [] [] [] t in
+ let source, target =
+ let clean = function
+ | NCic.Appl (NCic.Const _ as r :: l) ->
+ NotationPt.Appl (NotationPt.NCic r ::
+ List.map (fun _ -> NotationPt.Implicit `JustOne)l)
+ | NCic.Const _ as r -> NotationPt.NCic r
+ | _ -> assert false in
+ let rec aux = function
+ | NCic.Prod (_,_, (NCic.Prod _ as rest)) -> aux rest
+ | NCic.Prod (name, src, tgt) -> (name, clean src), clean tgt
+ | _ -> assert false in aux ty in
+ status, o_t, NotationPt.NCic ty, source, target in
let status, composites =
NCicCoercDeclaration.eval_ncoercion status name t ty source target in
let mode = GrafiteAst.WithPreferences in (* MATITA 1.0: fixme *)
let aliases = GrafiteDisambiguate.aliases_for_objs status composites in
eval_alias status (mode,aliases)
- | GrafiteAst.NQed loc ->
+ | GrafiteAst.NCoercion (loc, name, Some (t, ty, source, target)) ->
+ let status, composites =
+ NCicCoercDeclaration.eval_ncoercion status name t ty source target in
+ let mode = GrafiteAst.WithPreferences in (* MATITA 1.0: fixme *)
+ let aliases = GrafiteDisambiguate.aliases_for_objs status composites in
+ eval_alias status (mode,aliases)
+ | GrafiteAst.NQed (loc,index) ->
if status#ng_mode <> `ProofMode then
raise (GrafiteTypes.Command_error "Not in proof mode")
else
let obj = uri,height,[],[],obj_kind in
let old_status = status in
let status = NCicLibrary.add_obj status obj in
- let index_obj =
+ let index_obj = index &&
match obj_kind with
NCic.Constant (_,_,_,_,(_,`Example,_))
| NCic.Fixpoint (_,_,(_,`Example,_)) -> false
else
nstatus
with
- | MultiPassDisambiguator.DisambiguationError _
+ | GrafiteDisambiguate.Error _
| NCicTypeChecker.TypeCheckerFailure _ ->
(*HLog.warn "error in generating projection/eliminator";*)
status
let _,_,menv,_,_ = invobj in
(match menv with
[] -> eval_ncommand ~include_paths opts status
- ("",0,GrafiteAst.NQed Stdpp.dummy_loc)
+ ("",0,GrafiteAst.NQed (Stdpp.dummy_loc,false))
| _ -> status))
(* XXX *)
with _ -> (*HLog.warn "error in generating inversion principle"; *)
status (name,t,cpos,arity) in
let aliases = GrafiteDisambiguate.aliases_for_objs status nuris in
eval_alias status (mode,aliases)
- with MultiPassDisambiguator.DisambiguationError _->
+ with GrafiteDisambiguate.Error _ ->
HLog.warn ("error in generating coercion: "^name);
status)
status coercions
let status = status#set_stack ninitial_stack in
let status = subst_metasenv_and_fix_names status in
let status = status#set_ng_mode `ProofMode in
- eval_ncommand ~include_paths opts status ("",0,GrafiteAst.NQed Stdpp.dummy_loc)
+ eval_ncommand ~include_paths opts status ("",0,GrafiteAst.NQed (Stdpp.dummy_loc,false))
| GrafiteAst.NObj (loc,obj) ->
if status#ng_mode <> `CommandMode then
raise (GrafiteTypes.Command_error "Not in command mode")
let status = status#set_ng_mode `ProofMode in
(match nmenv with
[] ->
- eval_ncommand ~include_paths opts status ("",0,GrafiteAst.NQed Stdpp.dummy_loc)
+ eval_ncommand ~include_paths opts status ("",0,GrafiteAst.NQed (Stdpp.dummy_loc,true))
| _ -> status)
| GrafiteAst.NDiscriminator (_,_) -> assert false (*(loc, indty) ->
if status#ng_mode <> `CommandMode then
(match menv with
[] ->
eval_ncommand ~include_paths opts status
- ("",0,GrafiteAst.NQed Stdpp.dummy_loc)
+ ("",0,GrafiteAst.NQed (Stdpp.dummy_loc,false))
| _ -> assert false)
| GrafiteAst.NUnivConstraint (loc,u1,u2) ->
eval_add_constraint status [`Type,u1] [`Type,u2]
List.fold_left
(fun status tac ->
let status = eval_ng_tac (text,prefix_len,tac) status in
+ prerr_endline "prima di subst_metasenv_and_fix_names";
subst_metasenv_and_fix_names status)
status tacl
in