Q:

How to avoid widow lines after displayed equations

If a displayed equation is close to the bottom of the page, TeX likes to insert a page break even if the current paragraph contains only one more line after the equation, as e.g. in
... it follows that
\[
  a_n = ...
\]
for all $n\in\N$.

(And this happens although there is enough space in the current page.) The problem appears to be that TeX doesn't regard a widow line following a displayed equation as a widow.
Since I don't like this behaviour, I came up with the following workaround: I write \avoidbreak before the closing \], where \avoidbreak is defined by
\newcommand{\avoidbreak}{\postdisplaypenalty=100}

Of course it's a nuisance that now I have to write \avoidbreak at every instance of a possibly "bad" page break. I don't want to globally define \postdisplaypenalty=100 since this would discourage page breaks after displayed equations even at the end of a paragraph: For a new paragraph right after the display it is quite alright if it starts on the next page (even if it consists of only one line, see also the MWE below).
Now my question: Is there a clean solution that works without having to manually add something like \avoidbreak? I'd appreciate some code that I can just add to my preamble.
\documentclass{article}
%Remove the following % to get "one line of text" onto the first page:
%\postdisplaypenalty=100
\setlength\textheight{3.65cm}
\setlength\textwidth{4cm}
\begin{document}
Two lines of text followed by a formula
\[a=b\]
Two lines of text followed by a formula
\[a=b\]
%With my code, there will be no change if you put an empty line at this place!
%If "one line of text" below starts a new paragraph, then
%that paragraph should be allowed (even encouraged) to start on a new page.
%I only want to try and avoid the page break if no new paragraph is started here.
one line of text

New paragraph
\end{document}

(Let me mention that TeX has a \displaywidowpenalty parameter, but this one is about widows before displayed equations.)

A:

I can't see any problems with setting \postdisplaypenalty globally—if you encounter any problems, they are probably signs of a package bug. The default values are probably fine for Knuth; but these settings are implemented as parameters because you should customize them.

A:

Ok, I don't know how much of a bad hack this is, but here's an attempt which tries to redefine \par at the end of \] so that it can detect whether it comes directly after the displayed math.
\documentclass{article}
\usepackage{etoolbox}
%Remove the following % to get "one line of text" onto the first page:
\postdisplaypenalty=100
\setlength\textheight{3.65cm}
\setlength\textwidth{4cm}

\makeatletter
\patchcmd\]{\ignorespaces}
{%
   % We are in horizontal mode here again!
   % Insert a penalty so we can recognize whether \par comes directly
   % after. 
   \penalty6666
   % This might conflict with \par redefinitions in lists, so only
   % proof of concept!
   \def\par
   {%
     % check whether we are directly behind formula
     \@tempcnta=\lastpenalty\unpenalty
     \@par
     % in that case - insert negative penalty!
     \ifnum6666=\@tempcnta\addpenalty\m@ne\fi
   }%
   \ignorespaces
}{}{}
\makeatother

\begin{document}
\tracingoutput1
\showboxdepth1000
\showboxbreadth1000
Two lines of text followed by a formula
\[a=b\]
Two lines of text followed by a formula
\[a=b\]
%With my code, there will be no change if you put an empty line at this place!
%If "one line of text" below starts a new paragraph, then
%that paragraph should be allowed (even encouraged) to start on a new page.
%I only want to try and avoid the page break if no new paragraph is
%started here.

one line of text

New paragraph
\end{document}

It's probably at best a first proof of concept, but at least you can start doing a real test based on this.

