Given maps $f:A'\pmap A$ and $g:B\pmap B'$. Then there are maps
$(f\pmap C):(A\pmap C)\pmap(A'\pmap C)$ and $(C\pmap g):(C\pmap B)\pmap(C\pmap B')$ given by
precomposition with $f$, resp. postcomposition with $g$. The map $\lam{g}C\pmap g$ preserves the basepoint, giving rise to a map $$(C\pmap({-})):(B\pmap B')\pmap(C\pmap B)\pmap(C\pmap B').$$
Also, the following square commutes
\begin{center}
\begin{tikzcd}
(A\pmap B) \arrow[r,"A\pmap g"]\arrow[d,"f\pmap B"]& (A\pmap B')\arrow[d,"f\pmap B'"]\\
If $x$ is either $\auxl$ or $\auxr$ it is similar but easier. For completeness, we will write down the square we have to fill in the case that $x$ is $\auxr$.
\textbf{$e$ is natural in $A$}. Suppose that $f:A'\pmap A$. Then the following diagram commutes. The left square commutes by naturality of $({-})\smash B$ in the first argument and the right square commutes because composition on the left commutes with composition on the right.
\begin{center}
\begin{tikzcd}
(A\pmap B\pmap C) \arrow[r,"({-})\smash B"]\arrow[d,"f\pmap B\pmap C"]&
(A\smash B\pmap (B\pmap C)\smash B) \arrow[r,"A\smash B\pmap\epsilon"]\arrow[d,"f\smash B\pmap\cdots"]&
(A\smash B\pmap C)\arrow[d,"f\smash B\pmap C"]\\
(A'\pmap B\pmap C) \arrow[r,"({-})\smash B"]&
(A'\smash B\pmap (B\pmap C)\smash B) \arrow[r,"A\smash B\pmap\epsilon"]&
(A'\smash B\pmap C)
\end{tikzcd}
\end{center}
\textbf{$e$ is natural in $C$}. Suppose that $f:C\pmap C'$. Then in the following diagram the left square commutes by naturality of $({-})\smash B$ in the second argument (applied to $B\pmap f$) and the right square commutes by applying the functor $A\smash B \pmap({-})$ to the naturality of $\epsilon$ in the second argument.
\begin{center}
\begin{tikzcd}
(A\pmap B\pmap C) \arrow[r]\arrow[d]&
(A\smash B\pmap (B\pmap C)\smash B) \arrow[r]\arrow[d]&
\item Instead of showing that $e$ is natural, we could instead show that $e^{-1}$ is natural. In
that case we need to show that the map $A\to({-}):(B\to C)\to(A\to B)\to(A\to C)$ is natural in
$A$, $B$ and $C$. This might actually be easier, since we don't need to work with any higher
inductive type to prove that.
\end{rmk}
\section{Notes on the formalization}
The order of arguments are different in the formalization here and there.
Also, some smashes are commuted. This is because some unfortunate choices have been made in the formalization. Reversing these choices is possible, but probably more work than it's worth (the final result is exactly the same).
\section{Bergen December 2017}
We aim to prove that the smash product is a (1-coherent) symmetric monoidal product [REF: Brunerie] for pointed types, i.e., that
is a symmetric monoidal category, with the type of booleans $\two$ (pointed in $0_\two$) as unit, and for suitable instances of $\alpha$, $\lambda$, $\rho$ and $\gamma$ witnessing associativity, left- and right unitality and the braiding for $\smash$ and satisfying appropriate coherence relations (associativity pentagon; unitors triangle; braiding-unitors triangle; associativity-braiding hexagon; double braiding).
We will make use of the following lemma.
\begin{lem}[Yoneda]\label{lem:yoneda}
Let $A$, $B$ be pointed types, and assume, for all pointed types $X$, a pointed equivalence $\phi_X : (A \to X)\simeq(B \to X)$, natural in $X$, i.e. making the following diagram commute for all $f : X \to X'$:
\begin{center}
\begin{tikzcd}
(A \to X)
\arrow[r, "\phi_X"]
\arrow[d, swap, "f \o -"]
& (B \to X)
\arrow[d, "f \o -"]
\\
(A \to X')
\arrow[r, swap,"\phi_{X'}"]
& (B \to X')
\end{tikzcd}
\end{center}
Then we have a pointed equivalence $\yoneda_\phi : B \simeq A$.
\end{lem}
\begin{proof}
We define $\yoneda_\phi\defeq\phi_A(\idfunc[A]) : B \to A$ and $\yoneda_\phi\sy\defeq\phi_B\sy(\idfunc[B])$. The given naturality square for $X \defeq A$ and $g \defeq\yoneda_\phi\sy$ yields $\yoneda_\phi\sy\o\phi_A (\idfunc[A])\judgeq\yoneda_\phi\sy\o\yoneda_\phi\sim\phi_B (\yoneda_\phi\sy\o\idfunc[A])\judgeq\phi_B (\phi_B\sy(\idfunc[B]))\sim\idfunc[B]$, and similarly for the inverse composition.
\end{proof}
By \autoref{lem:yoneda} we can prove associativity, left- and right unitality and braiding equivalences for the smash product, in the following way.
\begin{defn}\label{def:equiv-precursors}
The following pointed equivalences are defined for $A$, $B$, $C$ and $X$ pointed types:
\begin{itemize}
\item$\alphabar_X : (A \smash(B \smash C)\to X)\simeq((A \smash B)\smash C \to X)$ as the composition of the equivalences:
\begin{align*}
A \smash (B \smash C)\to X&\simeq A \to B\smash C\to X && (e\sy)\\
&\simeq A \to B\to C\to X && (A \to e\sy)\\
&\simeq A \smash B\to C\to X && (e)\\
&\simeq (A \smash B)\smash C\to X. && (e)
\end{align*}
\item$\lambdabar_X : (B \to X)\simeq(\two\smash B \to X)$, where $\two$ is the type of booleans, as the composition of the equivalences:
\begin{align*}
B \to X &\simeq\two\to B \to X && (t\sy)\\
&\simeq\two\smash B \to X && (e)
\end{align*}
with $t : (\two\to X)\simeq X$ the pointed equivalence, natural in $X$, sending $f : \two\to X$ to $f(1_\two) : X$;
\item$\rhobar_X : (A \to X)\simeq(A \smash\two\to X)$ as the composition of the equivalences:
\begin{align*}
A \to X &\simeq A \to\two\to X && (A \to t\sy)\\
&\simeq A \smash\two\to X && (e)
\end{align*}
with $t$ as above;
\item$\gammabar_X : (B \smash A \to X)\simeq(A \smash B \to X)$ as the composition of the equivalences:
\begin{align*}
B \smash A \to X &\simeq B \to A \to X && (e\sy)\\
&\simeq A \to B \to X && (c)\\
&\simeq A \smash B \to X && (e)
\end{align*}
where $c : (A \to B \to X)\simeq(B \to A \to X)$ is the obvious pointed equivalence, natural in $A$, $B$ and $X$.
The equivalences defined in \autoref{def:equiv-precursors} are natural in all their arguments by naturality of $e$ (\autoref{e-natural}), $c$ and $t$. In particular, we will use:
\begin{align*}
f \o\alphabar(g) &\sim\alphabar(f \o g) & f \o\lambdabar(g) &\sim\lambdabar(f \o g)\\
f \o\rhobar(g) &\sim\rhobar(f \o g) & f \o\gammabar(g) &\sim\gammabar(f \o g)
\end{align*}
\end{rmk}
\begin{defn}\label{def:smash-alrg}
We define the following equivalences, natural in all their arguments, with inverses provided as in \autoref{lem:yoneda}:
\begin{itemize}
\item$\alpha\defeq\alphabar_{A \smash(B \smash C)}(\idfunc) : (A \smash B)\smash C \simeq A \smash(B \smash C)$ (associativity of the smash product), with inverse $\alpha\sy\defeq\alphabar\sy_{(A \smash B)\smash C}(\idfunc)$;
\item$\lambda\defeq\lambdabar_B(\idfunc) : \two\smash B \simeq B$ and $\rho\defeq\rhobar_A(\idfunc) : A \smash\two\simeq A$ (left- and right unitors for the smash product), with inverses $\lambda\sy\defeq\lambdabar_{\two\smash B}\sy(\idfunc)$ and $\rho\sy\defeq\rhobar_{A\smash\two}\sy(\idfunc)$, respectively;
\item$\gamma\defeq\gammabar_{B\smash A}(\idfunc) : A \smash B \simeq B \smash A$ (braiding for the smash product), with inverse $\gamma\sy\defeq\gammabar_{A \smash B}\sy(\idfunc)$.
\end{itemize}
$\alpha$, $\lambda$, $\rho$ and $\gamma$ are natural in all their arguments, as $\alphabar$, $\lambdabar$, $\rhobar$ and $\gammabar$ are.
We articulate the proof in several steps. A map homotopic to both sides of the sought homotopy will be constructed via the equivalence
\begin{align*}
\alphabar^4 : (A \smash (B \smash (C \smash D)) \to X) &\simeq (((A \smash B) \smash C) \smash D \to X)
\intertext{(natural in all its arguments), defined as the composite:}
A \smash (B \smash (C \smash D)) \to X
&\simeq A \to B \smash (C \smash D) \to X &&\text{($e\sy$)}\\
&\simeq A \to B \to C \smash D \to X &&\text{($A \to e\sy$)}\\
&\simeq A \to B \to C \to D \to X &&\text{($A \to B \to e\sy$)}\\
&\simeq A \smash B \to C \to D \to X &&\text{($e$)}\\
&\simeq (A \smash B) \smash C \to D \to X &&\text{($e$)}\\
&\simeq ((A \smash B) \smash C) \smash D \to X &&\text{($e$)}
\intertext{giving $\alphabar^4(\idfunc) : ((A \smash B)\smash C)\smash D)\simeq A \smash(B \smash(C \smash D))$. Moreover, in order to simplify the expressions of $\alpha\smash D$ and $A \smash\alpha$, we also define:}
\alphabar^R : ((A \smash (B \smash C)) \smash D \to X) &\simeq (((A \smash B) \smash C) \smash D \to X)
\intertext{as the composite:}
(A \smash (B \smash C)) \smash D \to X
&\simeq A \smash (B \smash C) \to D \to X &&\text{($e\sy$)}\\
&\simeq (A \smash B) \smash C \to D \to X &&\text{($\alphabar$)}\\
&\simeq ((A \smash B) \smash C) \smash D \to X &&\text{($e$)}
\intertext{and}
\alphabar^L : (A \smash (B \smash (C \smash D)) \to X) &\simeq (A \smash ((B \smash C) \smash D) \to X)
\intertext{as the composite:}
A \smash (B \smash (C \smash D)) \to X
&\simeq A \to B \smash (C \smash D) \to X &&\text{($e\sy$)}\\
&\simeq A \to (B \smash C) \smash D \to X &&\text{($A \to\alphabar$)}\\
&\simeq A \smash ((B \smash C) \smash D) \to X &&\text{($e$)}
\end{align*}
also natural in their arguments. Evaluating these equivalences to the identity function, we get new arrows that fit in the original diagram:
\begin{center}
\begin{tikzcd}
&((A \smash B) \smash (C \smash D))
\arrow[dr, "\alpha"]
\\
(((A \smash B) \smash C) \smash D)
\arrow[ru, "\alpha"]
\arrow[d, swap, "\alpha \smash D"]
\arrow[d, bend left=40, "\alphabar^R(\idfunc)"]
\arrow[rr, "\alphabar^4(\idfunc)"]
&& (A \smash (B \smash (C \smash D)))
\\
((A \smash (B \smash C)) \smash D)
\arrow[rr, swap, "\alpha"]
&& (A \smash ((B \smash C) \smash D))
\arrow[u, swap, "A \smash \alpha"]
\arrow[u, bend left=40, "\alphabar^L(\idfunc)"]
\end{tikzcd}
\end{center}
The theorem is then proved once we show the chain of homotopies:
&\sim (\alphabar^R \o\alphabar\o\alphabar^L)(\idfunc) &&\text{(nat. of $\alphabar$ and $\alphabar^R$)}\\
&\judgeq (e \o\alphabar\o e\sy\o e \o e \o (A \to e\sy) \o e\sy\o e \o (A \to\alphabar) \o e\sy)(\idfunc)\\
&\sim (e \o\alphabar\o e \o (A \to e\sy) \o (A \to\alphabar) \o e\sy)(\idfunc) &&\text{(cancelling)}\\
&\sim (e \o\alphabar\o e \o (A \to (e\sy\o\alphabar)) \o e\sy)(\idfunc) &&\text{(funct. of $A\to-$)}\\
&\judgeq (e \o e \o e \o (A \to e\sy) \o e\sy\o e \\
&\hspace{3em}\o (A \to (e\sy\o e \o e \o (B \to e\sy) \o e\sy)) \o e\sy)(\idfunc)\\
&\sim (e \o e \o e \o (A \to ((B \to e\sy) \o e\sy)) \o e\sy)(\idfunc) &&\text{(cancelling)}\\
&\sim (e \o e \o e \o (B \to A \to e\sy) \o (A \to e\sy) \o e\sy)(\idfunc) &&\text{(funct. of $A \to-$)}\\
&\judgeq\alphabar^4(\idfunc)
\end{align*}
In order to prove the last homotopy in [NUMBER], it is sufficient to show that $\alphabar^R(\idfunc)\sim\alpha\smash D$ and that $\alphabar^L(\idfunc)\sim A \smash\alpha$. We have:
\begin{align*}
\alphabar^R(\idfunc)
&\judgeq e(\alphabar (e\sy(\idfunc)))\\
&\sim e (\alphabar (\eta)) &&\text{(unit-counit)}\\
&\sim e (\eta\o\alphabar(\idfunc)) &&\text{(naturality of $\alphabar$)}\\
&\judgeq\epsilon\o (\eta\o\alpha) \smash D\\
&\sim\epsilon\o (\eta\smash D) \o (\alpha\smash D) &&\text{(distrib. of $\smash$)}\\
For $A$ and $B$ pointed types, there is a homotopy
\[(A \smash\lambda)\o\alpha\sim(\rho\smash B)\]
making the following diagram commute:
\begin{center}
\begin{tikzcd}
((A \smash\two) \smash B)
\arrow[rr, "\alpha"]
\arrow[dr, swap, "\rho \smash B"]
&& (A \smash (\two\smash B))
\arrow[dl, "A \smash \lambda"]
\\
& (A \smash B)
\end{tikzcd}
\end{center}
\end{thm}
\begin{proof}
By an argument similar to the one for $\alphabar^L$ and $\alphabar^R$ in \autoref{thm:smash-associativity-pentagon}, one can verify the homotopies $A \smash\lambda\sim(e \o(A \to\lambdabar)\o e\sy)(\idfunc)$ and $\rho\smash B \sim(e \o\rhobar\o e)(\idfunc)$, simplifying the expressions in the sought homotopy. Then:
The proof is structured similarly to the one for \autoref{thm:smash-associativity-pentagon}: the homotopies
\begin{align*}
B \smash\gamma&\sim\gammabar^L(\idfunc) &\text{with\ \ }\gammabar^L &\defeq e \o (B \to\gammabar) \o e\sy\\
\gamma\smash C &\sim\gammabar^R(\idfunc) &\text{with\ \ }\gammabar^R &\defeq e \o\gammabar\o e\sy
\end{align*}
can be proven in exactly the same way and, using these simplifications, we will show that both sides of the sought homotopy are homotopic to the same equivalence. Indeed we have:
For $A$ and $B$ pointed types, there is a homotopy
\[\gamma\o\gamma\sim\idfunc\]
making the following diagram commute:
\begin{center}
\begin{tikzcd}
(A \smash B)
\arrow[r, "\gamma"]
\arrow[dr, equals]
& (B \smash A)
\arrow[d, "\gamma"]
\\
& (A \smash B)
\end{tikzcd}
\end{center}
\end{thm}
\begin{proof}
Using that $c \o c \sim\idfunc$, we get:
\begin{align*}
\gamma\o\gamma
&\judgeq\gammabar(\idfunc) \o\gammabar(\idfunc)\\
&\sim (\gammabar\o\gammabar)(\idfunc) &&\text{(naturality of $\gammabar$)}\\
&\judgeq (e \o c \o e\sy\o e \o c \o e\sy)(\idfunc)\\
&\sim\idfunc&&\text{(cancelling)}
\end{align*}
as desired.
\end{proof}
\begin{cor}
$(\pType,\,\two,\,\smash,\,\alpha,\,\lambda,\,\rho,\,\gamma)$ has a structure of a symmetric monoidal category, for $\alpha$, $\lambda$, $\rho$ and $\gamma$ as in \autoref{def:smash-alrg}.
The smash product is associative: there is an equivalence $\alpha : (A \smash B)\smash C \simeq A \smash(B \smash C)$ which is natural in $A$, $B$ and $C$.
\end{thm}
\begin{proof}
For a pointed type $X$, let $\alphabar_X$ be the composite of the following equivalences:
\begin{align*}
A \smash (B \smash C)\to X&\simeq A \to B\smash C\to X && (e\sy)\\
&\simeq A \to B\to C\to X && (A \to e\sy)\\
&\simeq A \smash B\to C\to X && (e)\\
&\simeq (A \smash B)\smash C\to X. && (e)
\end{align*}
$\alphabar_X$ is natural in $A,B,C,X$ by repeatedly applying \autoref{e-natural}. Let
$\alpha\defeq\alphabar_{A \smash(B \smash C)}(\idfunc)$ and
$\alpha\sy\defeq\alphabar\sy_{(A \smash B)\smash C}(\idfunc)$. These maps are inverses by \autoref{lem:yoneda}; lastly, $\alpha$ is natural in $A$, $B$
and $C$, since $\alphabar_X$ is.
\end{proof}
\begin{thm}[Unitors]\label{thm:smash-unitors}
The type of booleans $\two$ is a left- and right unit for the smash product: there are equivalences
$\lambda : (\two\smash B)\simeq B$ and $\rho : (A \smash\two)\simeq A$, respectively natural in $B$ and in $A$.
\end{thm}
\begin{proof}
We define $\lambdabar_X$ as the following composition of equivalences:
\begin{align*}
B \to X &\simeq\two\to B \to X && (t\sy)\\
&\simeq\two\smash B \to X && (e)
\end{align*}
and, similarly, $\rhobar_X$ as the composition:
\begin{align*}
A \to X &\simeq A \to\two\to X && (A \to t\sy)\\
&\simeq A \smash\two\to X && (e)
\end{align*}
for any pointed type $X$, where $t : (\two\to X)\simeq X$ is the pointed equivalence with underlying function sending $f : \two\to X$ to $f(1_\two) : X$. Both $\lambdabar_X$ and $\rhobar_X$ are natural in their arguments by multiple applications of \autoref{e-natural}. By an argument similar to \autoref{thm:smash-associativity}, we can define $\lambda\defeq\lambdabar_B(\idfunc)$ and $\rho\defeq\rhobar_A(\idfunc)$ together with the corresponding inverses, yielding the sought natural equivalences.
\end{proof}
\begin{thm}[Braiding]\label{thm:smash-braiding}
The smash product is symmetric, i.e. there are equivalences $\gamma : A \smash B \simeq B \smash A$, natural in $A$ and $B$.
\end{thm}
\begin{proof}
We define $\gammabar_X$, for $X$ a pointed type, as the composition of the following equivalences:
\begin{align*}
B \smash A \to X &\simeq B \to A \to X && (e\sy)\\
&\simeq A \to B \to X && (c)\\
&\simeq A \smash B \to X && (e)
\end{align*}
where $c : (A \to B \to X)\simeq(B \to A \to X)$ is the obvious pointed equivalence, natural in $A$, $B$ and $X$. $\gamma_X$ is then also natural in all its arguments, by myltiple applications of \autoref{e-natural}; then, as in \autoref{thm:smash-associativity}, we can define $\gamma\defeq\gammabar_{B\smash A}(\idfunc)$ and $\gamma\sy\defeq\gammabar_{A \smash B}\sy(\idfunc)$