let check_input sgn result (in_key, mark) =
    let add_if_needed m_sgn (in_key, m_input) (marks, more) =
      if debug then
        Format.printf "check_input : sgn=%a ; needed=%a\n"
          M.pretty m_sgn M.pretty m_input;
      let missing_m = M.missing_input ~call:m_sgn ~called:m_input in
        match missing_m with
          | None -> marks, more
          | Some missing_m ->
              let new_input = M.is_bottom m_sgn in
                (in_key, missing_m) :: marks, more || new_input
    in
    let m_sgn =
      try Signature.find_in_info sgn in_key
      with Not_found -> M.bottom
    in add_if_needed m_sgn (in_key, mark) result