let interp_annot state ca =
    let fold state (pred,status_update) =
      let result = eval_predicate state pred in
      Value_parameters.result ~once:true ~current:true
                "Assertion got status %s."
                (match result with
                 | Unknown ->
                     status_update
                       (Checked {emitter = "value analysis";
                                 valid = Maybe});
                     "unknown"
                 | True ->
                     status_update
                       (Checked {emitter = "value analysis";
                                 valid = Cil_types.True});
                     "valid"
                 | False ->
                     status_update
                       (Checked {emitter = "value analysis";
                                 valid = Cil_types.False});
                     "invalid (stopping propagation).");
      ( match result with
        | False -> State_set.empty
        | True | Unknown ->
            reduce_by_disjunction
              state
              (Value_parameters.SemanticUnrollingLevel.get ())
              pred)
    in
    List.fold_left fold state ca