75 lines
2.3 KiB
TeX
75 lines
2.3 KiB
TeX
|
\chapter{Abstract functional extensionality}
|
|||
|
\label{app:abstract-funext}
|
|||
|
In two places in my formalization was the computational behaviours of
|
|||
|
functional extensionality used. The reduction behaviour can be
|
|||
|
disabled by marking functional extensionality as abstract. Below the
|
|||
|
fully normalized goal and context with functional extensionality
|
|||
|
marked abstract has been shown. The excerpts are from the module
|
|||
|
%
|
|||
|
\begin{center}
|
|||
|
\sourcelink{Cat.Category.Monad.Voevodsky}
|
|||
|
\end{center}
|
|||
|
%
|
|||
|
where this is also written as a comment next to the proofs. When
|
|||
|
functional extensionality is not abstract the goal and current value
|
|||
|
are the same. It is of course necessary to show the fully normalized
|
|||
|
goal and context otherwise the reduction behaviours is not forced.
|
|||
|
|
|||
|
\subsubsection*{First goal}
|
|||
|
Goal:
|
|||
|
\begin{verbatim}
|
|||
|
PathP (λ _ → §2-3.§2 omap (λ {z} → pure))
|
|||
|
(§2-fromMonad
|
|||
|
(.Cat.Category.Monad.toKleisli ℂ
|
|||
|
(.Cat.Category.Monad.toMonoidal ℂ (§2-3.§2.toMonad m))))
|
|||
|
(§2-fromMonad (§2-3.§2.toMonad m))
|
|||
|
\end{verbatim}
|
|||
|
Have:
|
|||
|
\begin{verbatim}
|
|||
|
PathP
|
|||
|
(λ i →
|
|||
|
§2-3.§2 K.IsMonad.omap
|
|||
|
(K.RawMonad.pure
|
|||
|
(K.Monad.raw
|
|||
|
(funExt (λ m₁ → K.Monad≡ (.Cat.Category.Monad.toKleisliRawEq ℂ m₁))
|
|||
|
i (§2-3.§2.toMonad m)))))
|
|||
|
(§2-fromMonad
|
|||
|
(.Cat.Category.Monad.toKleisli ℂ
|
|||
|
(.Cat.Category.Monad.toMonoidal ℂ (§2-3.§2.toMonad m))))
|
|||
|
(§2-fromMonad (§2-3.§2.toMonad m))
|
|||
|
\end{verbatim}
|
|||
|
\subsubsection*{Second goal}
|
|||
|
Goal:
|
|||
|
\begin{verbatim}
|
|||
|
PathP (λ _ → §2-3.§1 omap (λ {X} → pure))
|
|||
|
(§1-fromMonad
|
|||
|
(.Cat.Category.Monad.toMonoidal ℂ
|
|||
|
(.Cat.Category.Monad.toKleisli ℂ (§2-3.§1.toMonad m))))
|
|||
|
(§1-fromMonad (§2-3.§1.toMonad m))
|
|||
|
\end{verbatim}
|
|||
|
Have:
|
|||
|
\begin{verbatim}
|
|||
|
PathP
|
|||
|
(λ i →
|
|||
|
§2-3.§1
|
|||
|
(RawFunctor.omap
|
|||
|
(Functor.raw
|
|||
|
(M.RawMonad.R
|
|||
|
(M.Monad.raw
|
|||
|
(funExt
|
|||
|
(λ m₁ → M.Monad≡ (.Cat.Category.Monad.toMonoidalRawEq ℂ m₁)) i
|
|||
|
(§2-3.§1.toMonad m))))))
|
|||
|
(λ {X} →
|
|||
|
fst
|
|||
|
(M.RawMonad.pureNT
|
|||
|
(M.Monad.raw
|
|||
|
(funExt
|
|||
|
(λ m₁ → M.Monad≡ (.Cat.Category.Monad.toMonoidalRawEq ℂ m₁)) i
|
|||
|
(§2-3.§1.toMonad m))))
|
|||
|
X))
|
|||
|
(§1-fromMonad
|
|||
|
(.Cat.Category.Monad.toMonoidal ℂ
|
|||
|
(.Cat.Category.Monad.toKleisli ℂ (§2-3.§1.toMonad m))))
|
|||
|
(§1-fromMonad (§2-3.§1.toMonad m))
|
|||
|
\end{verbatim}
|