let formals params args old_values state =
      try
        List.fold_left2
          (fun (state, new_values) v a ->
             let loc = loc_of_varinfo v in
             { state with subst = Subst.add v a state.subst },
             Relations_type.Model.add_binding
               ~with_alarms:CilE.warn_none_mode ~exact:(valid_cardinal_zero_or_one loc)
               new_values
               loc
               (!Value.eval_expr ~with_alarms:CilE.warn_none_mode old_values a))
          (state, old_values)
          params
          args
      with Invalid_argument _ ->
        Options.warning ~once:true ~current:true
          "variadic call detected. Using only %d argument(s)."
          (min (List.length args) (List.length params));
        state, old_values