| GrafiteAst.Merge _ -> NTactics.merge_tac
;;
-let rec eval_ng_tac (text, prefix_len, tac) =
+let eval_ng_tac tac =
+ let rec aux f (text, prefix_len, tac) =
match tac with
| GrafiteAst.NApply (_loc, t) -> NTactics.apply_tac (text,prefix_len,t)
| GrafiteAst.NAssert (_loc, seqs) ->
| GrafiteAst.NUnfocus _ -> NTactics.unfocus_tac
| GrafiteAst.NWildcard _ -> NTactics.wildcard_tac
| GrafiteAst.NTry (_,tac) -> NTactics.try_tac
- (eval_ng_tac (text, prefix_len, tac))
+ (aux f (text, prefix_len, tac))
| GrafiteAst.NAssumption _ -> NTactics.assumption_tac
+ | GrafiteAst.NBlock (_,l) ->
+ NTactics.block_tac (List.map (fun x -> aux f (text,prefix_len,x)) l)
+ |GrafiteAst.NRepeat (_,tac) ->
+ NTactics.repeat_tac (f f (text, prefix_len, tac))
+ in
+ aux aux tac (* trick for non uniform recursion call *)
;;
let subst_metasenv_and_fix_names status =
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 height = NCicTypeChecker.height_of_obj_kind uri [] obj_kind in
(* fix the height inside the object *)
let rec fix () = function
| NCic.Const (NReference.Ref (u,spec)) when NUri.eq u uri ->