For this type of situation, I'd be tempted to defined my own environment rather than hack into the internals of an existing package.
In the code below, I've defined two environments for you to play with, depending on what you want. Both approaches rely on the etoolbox for a few commands- the second environment needs xparse for an environment with two optional arguments.
Both environments add to \jobname.prb which is created using the \@starttoc command.
Problem
This environment takes an optional argument, which will be added to .prb if not empty.
% define the Problem environment
%
% Takes an optional description- if it is not empty,
% then it is added to \jobname.prb
\newcounter{problem}
\newenvironment{problem}[1][]{\refstepcounter{problem}%
{\bfseries Problem~\theproblem} %
\ifstrempty{#1}%
{%
% if #1 is empty, do nothing
}%
{%
% otherwise add it to jobname.prb
\addcontentsline{prb}{subsection}{#1}%
}%
}{}
This can be used as either
\begin{problem}
\lipsum[2]
\end{problem}
or
\begin{problem}[Description goes here, and added to jobname.prb]
\lipsum[2]
\end{problem}
Otherproblem
This one is a bit more intricate as it takes two optional arguments.
% define another Problem environment, just for demonstration
%
% Takes TWO optional arguments:
% #1: long description, used for \jobname.prb if #2 is not present
% #2: short description, used for \jobname.prb if present
\newcounter{otherproblem}
\NewDocumentEnvironment{otherproblem}{O{} O{}}{\refstepcounter{otherproblem}%
{\bfseries Problem~\theotherproblem} %
\ifstrempty{#2}%
{%
% if #2 is empty, then check for #1, and
% use it for jobname.prb if present
\ifstrempty{#1}%
{%
% if #1 is empty, do nothing
}%
{%
% otherwise, display it, and add it to
% \jobname.prb
{[\bfseries #1]}%
\addcontentsline{prb}{subsection}{#1}%
}%
}%
{%
% if #2 is not empty, use it for the
% \jobname.prb
\addcontentsline{prb}{subsection}{#2}%
\ifstrempty{#1}%
{}%
{%
{[\bfseries #1]}%
}%
}%
}{}
Sample usage
\begin{otherproblem}[Long description][Short description for list]
\lipsum[2]
\end{otherproblem}
or
\begin{otherproblem}[Long description displayed and added to list]
\lipsum[2]
\end{otherproblem}
or
\begin{otherproblem}[][Short description for list, nothing displayed]
\lipsum[2]
\end{otherproblem}
Here's the complete MWE to play with- let me know if you need help changing the style of the environments.
\documentclass{article}
\usepackage{lipsum}% just to generate text
\usepackage{etoolbox}
\usepackage{xparse}
% this sets up \jobname.prb which will store the
% contentslines added on each problem
\makeatletter
\newcommand\listproblemname{List of problems}
\newcommand\listofproblems{%
\section*{\listproblemname}\@starttoc{prb}}
\makeatother
% define the Problem environment
%
% Takes an optional description- if it is not empty,
% then it is added to \jobname.prb
\newcounter{problem}
\newenvironment{problem}[1][]{\refstepcounter{problem}%
{\bfseries Problem~\theproblem} %
\ifstrempty{#1}%
{%
% if #1 is empty, do nothing
}%
{%
% otherwise add it to jobname.prb
\addcontentsline{prb}{subsection}{#1}%
}%
}{}
% define another Problem environment, just for demonstration
%
% Takes TWO optional arguments:
% #1: long description, used for \jobname.prb if #2 is not present
% #2: short description, used for \jobname.prb if present
\newcounter{otherproblem}
\NewDocumentEnvironment{otherproblem}{O{} O{}}{\refstepcounter{otherproblem}%
{\bfseries Problem~\theotherproblem} %
\ifstrempty{#2}%
{%
% if #2 is empty, then check for #1, and
% use it for jobname.prb if present
\ifstrempty{#1}%
{%
% if #1 is empty, do nothing
}%
{%
% otherwise, display it, and add it to
% \jobname.prb
{[\bfseries #1]}%
\addcontentsline{prb}{subsection}{#1}%
}%
}%
{%
% if #2 is not empty, use it for the
% \jobname.prb
\addcontentsline{prb}{subsection}{#2}%
\ifstrempty{#1}%
{}%
{%
{[\bfseries #1]}%
}%
}%
}{}
\begin{document}
\listofproblems
\clearpage
\begin{problem}[Regular problem environment]
\lipsum[1]
\end{problem}
\begin{otherproblem}[Long description][Short description for list]
\lipsum[2]
\end{otherproblem}
\begin{problem}
\lipsum[2]
\end{problem}
\begin{problem}
\lipsum[2]
\end{problem}
\end{document}
plainstyle definition? I've made it a separate question. – Adobe Dec 10 '12 at 10:35ntheorem.sty, searching for\newtheoremstyle. – egreg Dec 10 '12 at 10:36\hskip\labelsep \theorem@headerfont ##1\ \hspace{1in} ##2\theorem@separator-- it compiles but doesn't work. – Adobe Feb 17 '13 at 20:13\makeatletter\def\thm@@thmline#1#2{\@dottedtocline{-2}{0em}{5em}{\protect\numberline{#2}}}\makeatother(here I'm powered solely by trial-and-error). – Adobe Feb 17 '13 at 20:30