# How to change the font shape in the body of theorem environments?

\documentclass{article}
\usepackage{amsmath,amssymb}
\newtheorem{defn}{Definition}
\newtheorem{pro}{Problem}
\newtheorem{thm}{Theorem}
\begin{document}
\begin{defn}
This is the first definition
\end{defn}
\begin{thm}
This is the first theorem
\end{thm}
\end{document}


When I get the output, the body of definitions, theorems is in italic letters. Can I get these environments in normal letters?

Without any theorem-related package (using etoolbox to patch the LaTeX kernel):

\documentclass{article}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@begintheorem}{\itshape}{}{}{}
\patchcmd{\@opargbegintheorem}{\itshape}{}{}{}
\makeatother
\newtheorem{pro}{Problem}
\begin{document}
\begin{pro}
This is the first problem.
\end{pro}
\end{document}


With amsthm:

\documentclass{article}
\usepackage{amsthm}
\theoremstyle{definition}
\newtheorem{pro}{Problem}
\begin{document}
\begin{pro}
This is the first problem.
\end{pro}
\end{document}


With ntheorem:

\documentclass{article}
\usepackage{ntheorem}
\theorembodyfont{\normalfont}
\newtheorem{pro}{Problem}
\begin{document}
\begin{pro}
This is the first problem.
\end{pro}
\end{document}


With amsthm plus the thmtools frontend (can also be used with ntheorem):

\documentclass{article}
\usepackage{amsthm}
\usepackage{thmtools}
\declaretheoremstyle[bodyfont=\normalfont]{normalbody}
\declaretheorem[style=normalbody,name=Problem]{pro}
\begin{document}
\begin{pro}
This is the first problem.
\end{pro}
\end{document}