Skip to content
Snippets Groups Projects
Commit 9fffb0b9 authored by Ralf Jung's avatar Ralf Jung
Browse files

docs: derive Löb induction

parent 795fbfbd
No related branches found
No related tags found
No related merge requests found
...@@ -24,10 +24,10 @@ Changes in and extensions of the theory: ...@@ -24,10 +24,10 @@ Changes in and extensions of the theory:
trace has a matching list of events. Change WP so that it is told the entire trace has a matching list of events. Change WP so that it is told the entire
future trace of observations from the beginning. Use this in heap_lang to future trace of observations from the beginning. Use this in heap_lang to
implement prophecy variables. implement prophecy variables.
* [#] The Löb rule is now a derived rule; it follows from later-intro, later * The Löb rule is now a derived rule; it follows from later-intro, later
being contractive and the fact that we can take fixpoints of contractive being contractive and the fact that we can take fixpoints of contractive
functions. functions.
* [#] Add atomic updates and logically atomic triples, including tactic support. * Add atomic updates and logically atomic triples, including tactic support.
See `heap_lang/lib/increment.v` for an example. See `heap_lang/lib/increment.v` for an example.
* [#] heap_lang now uses right-to-left evaluation order. This makes it * [#] heap_lang now uses right-to-left evaluation order. This makes it
significantly easier to write specifications of curried functions. significantly easier to write specifications of curried functions.
......
...@@ -380,9 +380,9 @@ Furthermore, we have the usual $\eta$ and $\beta$ laws for projections, $\textlo ...@@ -380,9 +380,9 @@ Furthermore, we have the usual $\eta$ and $\beta$ laws for projections, $\textlo
{\prop \proves \propB} {\prop \proves \propB}
{\later\prop \proves \later{\propB}} {\later\prop \proves \later{\propB}}
\and \and
\inferhref{L{\"o}b}{Loeb} \infer[$\later$-I]
{} {}
{(\later\prop\Ra\prop) \proves \prop} {\prop \proves \later\prop}
\and \and
\begin{array}[c]{rMcMl} \begin{array}[c]{rMcMl}
\All x. \later\prop &\proves& \later{\All x.\prop} \\ \All x. \later\prop &\proves& \later{\All x.\prop} \\
......
...@@ -6,6 +6,10 @@ These are not ``extensions'' in the sense that they change the proof power of th ...@@ -6,6 +6,10 @@ These are not ``extensions'' in the sense that they change the proof power of th
\subsection{Derived Rules about Base Connectives} \subsection{Derived Rules about Base Connectives}
We collect here some important and frequently used derived proof rules. We collect here some important and frequently used derived proof rules.
\begin{mathparpagebreakable} \begin{mathparpagebreakable}
\inferhref{L{\"o}b}{Loeb}
{}
{(\later\prop\Ra\prop) \proves \prop}
\infer{} \infer{}
{\prop \Ra \propB \proves \prop \wand \propB} {\prop \Ra \propB \proves \prop \wand \propB}
...@@ -33,14 +37,14 @@ We collect here some important and frequently used derived proof rules. ...@@ -33,14 +37,14 @@ We collect here some important and frequently used derived proof rules.
\infer{} \infer{}
{\later(\prop \wand \propB) \proves \later\prop \wand \later\propB} {\later(\prop \wand \propB) \proves \later\prop \wand \later\propB}
\infer{}
{\prop \proves \later\prop}
\infer{} \infer{}
{\TRUE \proves \plainly\TRUE} {\TRUE \proves \plainly\TRUE}
\end{mathparpagebreakable} \end{mathparpagebreakable}
Noteworthy here is the fact that $\prop \proves \later\prop$ can be derived from Löb induction, and $\TRUE \proves \plainly\TRUE$ can be derived via $\plainly$ commuting with universal quantification ranging over the empty type $0$. Noteworthy here is the fact that Löb induction can be derived from $\later$-introduction and the fact that we can take fixed-points of functions where the recursive occurrences are below $\later$.%
\footnote{See \url{https://en.wikipedia.org/wiki/L\%C3\%B6b\%27s_theorem}.}
Furthermore, $\TRUE \proves \plainly\TRUE$ can be derived via $\plainly$ commuting with universal quantification ranging over the empty type $0$.
To derive that existential quantifiers commute with separating conjunction requires an intermediate step using a magic wand: From $P * \exists x, Q \vdash \Exists x. P * Q$ we can deduce $\Exists x. Q \vdash P \wand \Exists x. P * Q$ and then proceed via $\exists$-elimination.
\subsection{Persistent Propositions} \subsection{Persistent Propositions}
We call a proposition $\prop$ \emph{persistent} if $\prop \proves \always\prop$. We call a proposition $\prop$ \emph{persistent} if $\prop \proves \always\prop$.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment