List.fold_left (fun status tac -> tac status) status l
;;
+
let compare_statuses ~past ~present =
let _,_,past,_,_ = past#obj in
let _,_,present,_,_ = present#obj in
((status#set_stack stack)#set_obj(sn:>lowtac_status)#obj)#set_estatus sn
;;
-let atomic_tac htac = distribute_tac (exec htac) ;;
+let atomic_tac htac : #tac_status as 'a -> 'a = distribute_tac (exec htac) ;;
+
+let repeat_tac t s =
+ let rec repeat t (status : #tac_status as 'a) : 'a =
+ try repeat t (t status)
+ with NTacStatus.Error _ -> status
+ in
+ atomic_tac (repeat t) s
+;;
+
let try_tac tac status =
try
let auto_tac ~params status =
distribute_tac (auto ~params) status
;;
+