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