(posted this answer so that the question can be considered to have received an answer)
You should familiarize yourself with the cleveref package and its user commands \cref and \crefrange. The \cref macro (and its start-of-sentence variant, \Cref) can take multiple arguments, which will be the arguments of \label instructions placed elsewhere in the document. The list of arguments needn't be sorted, and the list can contain labels associated with equation, theorem, section, figure, table, etc. objects.
Below is a compilable example that creates one instance each of theorem and lemma envirnonments. Note that cleveref is clever enough to distinguish between the two environments even though they share a common counter. It so happens that cleveref "knows" the names of these two environments (viz., "Theorem" and "Lemma"); if your document featured numbered environments of a type not already known to cleveref, you would need to use \crefname instructions to back-fill the missing name information. E.g., if you have an object called map (with an associated counter variable also called map), then \crefname{map}{map}{maps} informs cleveref how singular and plural forms of the object should be displayed in a cross-reference.

\documentclass{article}
\usepackage{amsthm} % or: \usepackage{ntheorem}
\usepackage[colorlinks,allcolors=blue]{hyperref} % optional
\usepackage[noabbrev,capitalize,nameinlink]{cleveref}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}[theorem]{Lemma}
\begin{document}
\begin{theorem} \label{thm:major} \dots \end{theorem}
\begin{lemma} \label{thm:minor} \dots \end{lemma}
\noindent
Cross-references to \cref{thm:major,thm:minor}.
\end{document}
cleveref's\crefcommand could be extremely helpful here. – moewe Apr 28 '19 at 16:37\autorefmacro (provided by the hyperref package) and especially the\crefand\crefrangemacros (provided by the cleveref package) can do exactly what you're looking to accomplish. – Mico Apr 28 '19 at 16:58cleverefpackage. Plus, I think that buried within the OP's question is an issue related to how one would cross-reference items that share a common counter; assuming that one wishes to use thecleverefpackage, the solution lies in specifying the\newtheoremdirectives after loadingcleveref. – Mico May 27 '19 at 16:28theorem1, because then it could end up beingLemma 2. You should use a semantic label likeBernoulliConvergence. That way, the label will still be correct when you rearrange your document (and you'll have a better chance of remembering the label when you're in a different part of the document). – Teepeemm Jun 07 '22 at 14:43