diff --git a/src/plugins/wp/ProofEngine.ml b/src/plugins/wp/ProofEngine.ml index 52c83f5c4e1185e2c53138d937303359c64509f5..c15320f187bc56bce139f65db7b595f621791e26 100644 --- a/src/plugins/wp/ProofEngine.ml +++ b/src/plugins/wp/ProofEngine.ml @@ -141,7 +141,7 @@ let iteri f tree = let rec depth node = match node.parent with | None -> 0 - | Some p -> depth p + | Some p -> succ @@ depth p (* -------------------------------------------------------------------------- *) (* --- Consolidating --- *) diff --git a/src/plugins/wp/ProverScript.ml b/src/plugins/wp/ProverScript.ml index cd6df4e64361be92262d373c2944ea071632d6c0..146c4e82eaae5e7aa074afc2ed5b094fcfe2ea5e 100644 --- a/src/plugins/wp/ProverScript.ml +++ b/src/plugins/wp/ProverScript.ml @@ -331,19 +331,20 @@ let rec sequence (f : 'a -> solver) = function | [] -> unknown | x::xs -> f x +>> sequence f xs -let rec explore_strategy env p s : solver = +let rec explore_strategy env process strategy : solver = sequence - (explore_alternative env p s) - (ProofStrategy.alternatives s) - -and explore_alternative env p s a : solver = - explore_provers env a +>> - explore_tactic env p s a +>> - explore_auto env p a +>> - explore_fallback env p a - -and explore_provers env a : solver = - let provers,timeout = ProofStrategy.provers ~default:env.Env.provers a in + (explore_alternative env process strategy) + (ProofStrategy.alternatives strategy) + +and explore_alternative env process strategy alternative : solver = + explore_provers env alternative +>> + explore_tactic env process strategy alternative +>> + explore_auto env process alternative +>> + explore_fallback env process alternative + +and explore_provers env alternative : solver = + let provers,timeout = + ProofStrategy.provers ~default:env.Env.provers alternative in sequence (explore_prover env timeout) provers and explore_prover env timeout prover node = @@ -354,13 +355,13 @@ and explore_prover env timeout prover node = let config = { VCS.default with timeout = Some timeout } in Env.prove env wpo ~config prover -and explore_tactic env process s a node = - match ProofStrategy.tactic env.tree node s a with +and explore_tactic env process strategy alternative node = + match ProofStrategy.tactic env.tree node strategy alternative with | None -> failed | Some nodes -> List.iter process nodes ; success -and explore_auto env process a node = - match ProofStrategy.auto a with +and explore_auto env process alternative node = + match ProofStrategy.auto alternative with | None -> failed | Some h -> match ProverSearch.search env.tree ~anchor:node [h] with @@ -369,10 +370,10 @@ and explore_auto env process a node = List.iter (fun (_,node) -> process node) @@ snd @@ ProofEngine.commit fork ; success -and explore_fallback env process a node = - match ProofStrategy.fallback a with +and explore_fallback env process alternative node = + match ProofStrategy.fallback alternative with | None -> failed - | Some s -> explore_strategy env process s node + | Some strategy -> explore_strategy env process strategy node let explore_hint env process node = if ProofEngine.depth node > env.Env.depth then failed