let check_postconditions header state behaviors =
List.fold_left
(fun state b ->
if b.b_ensures = [] && b.b_assumes = [] then state
else
let vc = Ast_info.behavior_postcondition b in
let res = eval_predicate state vc in
Value_parameters.result ~once:true ~current:true "%s behavior %s: postcondition got status %s"
header b.b_name
(string_of_status res);
match res with False -> State_set.empty
| True | Unknown ->
reduce_by_disjunction state
(Value_parameters.SemanticUnrollingLevel.get ())
vc
)
state behaviors