You can prefix the theorem counter with a section-specific numbering scheme:

\documentclass{article}
\usepackage{amsthm,etoolbox}
\newtheorem{theorem}{Theorem}
\newtheorem{definition}[theorem]{Definition}
\newtheorem{lemma}[theorem]{Lemma}
\makeatletter
\@addtoreset{theorem}{section}% Reset theorem counter with every section
\@addtoreset{theorem}{subsection}
\@addtoreset{theorem}{subsubsection}
\newcommand{\theoremprefix}{}
\let\thetheoremsaved\thetheorem
\renewcommand{\thetheorem}{\theoremprefix\thetheoremsaved}
\let\sectionsaved\section
\patchcmd{\@startsection}{\par}{\renewcommand{\theoremprefix}{\csname the#1\endcsname.}}{}{}
\makeatother
\begin{document}
\section{Section}
\begin{theorem}
Th 1
\end{theorem}
\begin{definition}
Df 1
\end{definition}
\subsection{Subsection}
\begin{theorem}
Th 2
\end{theorem}
\begin{lemma}
Lm 1
\end{lemma}
\section{Two}
\begin{theorem}
Th 3
\end{theorem}
\begin{lemma}
Lm 2
\end{lemma}
\subsection{Other}
\begin{theorem}
Th 4
\end{theorem}
\subsection{Other 2}
\begin{definition}
Df 2
\end{definition}
thmtoolsfor? – skpblack Sep 05 '14 at 01:14