You can use calculation (provided you fix a couple of things) or define your own environment.
\documentclass[fleqn]{article}
\usepackage{amsmath}
\usepackage{stmaryrd}
\usepackage{calculation}
\usepackage{showframe}
% generic command
\newcommand{\catam}[1]{\llparenthesis#1\rrparenthesis}
% for csproof
\newenvironment{csproof}
{\begin{equation*}\begin{aligned}}
{\end{aligned}\end{equation*}}
\newcommand{\pline}[1]{\\}
\newcommand{\eline}[1]{{=}\quad&\quad\{\text{#1}\}\\}
% for calculation
\renewcommand{\Hsep}{0pt}
\makeatletter % fix the error of the package
\AtBeginDocument{\calc@indent\mathindent}
\makeatother
\begin{document}
This equation can be verified as follows:
\begin{csproof}
\pline{\langle\catam{h},\catam{k}\rangle\cdot\alpha}
\eline{split fusion}
\pline{\langle\catam{h}\cdot\alpha,\catam{k}\cdot\alpha\rangle}
\eline{catamorphisms}
\pline{\langle h\cdot\mathsf{F}\catam{h},k\cdot\mathsf{F}\catam{k}\rangle}
\eline{split cancellation (backwards)}
\pline{\langle
h\cdot\mathsf{F}(\mathit{outl}\cdot\langle\catam{h},\catam{k}\rangle,
k\cdot\mathsf{F}(\mathit{outr}\cdot\langle\catam{h},\catam{k}\rangle
\rangle}
\eline{$\mathsf{F}$ functor}
\pline{\langle
h\cdot\mathsf{F}\mathit{outl}\cdot\mathsf{F}\langle\catam{h},\catam{k}\rangle,
k\cdot\mathsf{F}\mathit{outr}\cdot\mathsf{F}\langle\catam{h},\catam{k}\rangle
\rangle}
\eline{split fusion (backwards)}
\pline{\langle h\cdot\mathsf{F}\mathit{outl},k\cdot\mathsf{F}\mathit{outr}\rangle
\cdot\langle\catam{h},\catam{k}\rangle}
\end{csproof}
This equation can be verified as follows:
\begin{calculation}
\langle\catam{h},\catam{k}\rangle\cdot\alpha
\step{split fusion}
\langle\catam{h}\cdot\alpha,\catam{k}\cdot\alpha\rangle
\step{catamorphisms}
\langle h\cdot\mathsf{F}\catam{h},k\cdot\mathsf{F}\catam{k}\rangle
\step{split cancellation (backwards)}
\langle
h\cdot\mathsf{F}(\mathit{outl}\cdot\langle\catam{h},\catam{k}\rangle,
k\cdot\mathsf{F}(\mathit{outr}\cdot\langle\catam{h},\catam{k}\rangle
\rangle
\step{$\mathsf{F}$ functor}
\langle
h\cdot\mathsf{F}\mathit{outl}\cdot\mathsf{F}\langle\catam{h},\catam{k}\rangle,
k\cdot\mathsf{F}\mathit{outr}\cdot\mathsf{F}\langle\catam{h},\catam{k}\rangle
\rangle
\step{split fusion (backwards)}
\langle
h\cdot\mathsf{F}\mathit{outl},k\cdot\mathsf{F}\mathit{outr}\rangle
\cdot\langle\catam{h},\catam{k}
\rangle
\end{calculation}
\end{document}
The error of calculation is to set \mathindent before \begin{document}, whereas amsmath sets it at that point. The code has the necessary fix to make the calculation environment to respect the fleqn math indent.
The showframe package is only used to add a frame around the text block.
