- let elim sort status =
- try
- let uri,obj = CicElim.elim_of ~sort uri 0 in
- MatitaSync.add_obj uri obj status
- with CicElim.Can_t_eliminate -> status
- in
- List.fold_left (fun status sort -> elim sort status) status
- [ Cic.Prop; Cic.Set; (Cic.Type (CicUniv.fresh ())) ]
+ let status' = ref status in
+ let elim sort =
+ try
+ let uri,obj = CicElim.elim_of ~sort uri 0 in
+ status' := MatitaSync.add_obj uri obj !status'
+ with CicElim.Can_t_eliminate -> ()
+ in
+ try
+ List.iter elim [ Cic.Prop; Cic.Set; (Cic.Type (CicUniv.fresh ())) ];
+ !status'
+ with exn ->
+ MatitaSync.time_travel ~present:!status' ~past:status;
+ raise exn