@@ -983,7 +983,7 @@ let unfold_match env sigma sk app =
983
983
let is_rew_cast = function RewCast _ -> true | _ -> false
984
984
985
985
let subterm all flags (s : 'a pure_strategy ) : 'a pure_strategy =
986
- let rec aux { state ; env ; unfresh ;
986
+ let aux { state ; env ; unfresh ;
987
987
term1 = t ; ty1 = ty ; cstr = (prop , cstr ) ; evars } =
988
988
let cstr' = Option. map (fun c -> (ty, Some c)) cstr in
989
989
match EConstr. kind (goalevars evars) t with
@@ -1091,7 +1091,7 @@ let subterm all flags (s : 'a pure_strategy) : 'a pure_strategy =
1091
1091
else TypeGlobal. arrow_morphism
1092
1092
in
1093
1093
let (evars', mor), unfold = arr env evars n.binder_name tx tb x b in
1094
- let state, res = aux { state ; env ; unfresh ;
1094
+ let state, res = s.strategy { state ; env ; unfresh ;
1095
1095
term1 = mor ; ty1 = ty ;
1096
1096
cstr = (prop,cstr) ; evars = evars' } in
1097
1097
let res =
@@ -1109,7 +1109,7 @@ let subterm all flags (s : 'a pure_strategy) : 'a pure_strategy =
1109
1109
let forall = if prop then PropGlobal. rocq_forall else TypeGlobal. rocq_forall in
1110
1110
(app_poly_sort prop env evars forall [| dom; lam |]), TypeGlobal. unfold_forall
1111
1111
in
1112
- let state, res = aux { state ; env ; unfresh ;
1112
+ let state, res = s.strategy { state ; env ; unfresh ;
1113
1113
term1 = app ; ty1 = ty ;
1114
1114
cstr = (prop,cstr) ; evars = evars' } in
1115
1115
let res =
@@ -1205,7 +1205,7 @@ let subterm all flags (s : 'a pure_strategy) : 'a pure_strategy =
1205
1205
match try Some (fold_match env (goalevars evars) t) with Not_found -> None with
1206
1206
| None -> state, c'
1207
1207
| Some (cst , t' ) ->
1208
- let state, res = aux { state ; env ; unfresh ;
1208
+ let state, res = s.strategy { state ; env ; unfresh ;
1209
1209
term1 = t' ; ty1 = ty ;
1210
1210
cstr = (prop,cstr) ; evars } in
1211
1211
let res =
0 commit comments