\documentclass{article}
\oddsidemargin0cm
\topmargin-3cm
\textwidth16.5cm
\textheight23.5cm

\usepackage{latexsym}
\usepackage{amssymb}

\input{/afs/cs/user/fp/courses/linear/lib/tex/nd}

\let\ndnext=\bigcirc
\let\ndalways=\Box
% Temporal operators: next and all times
\def\ndnexti#1#2{\ndone {\hbox {$\strut #1$}}{\hbox {$\strut #2$}}{\hbox
{\hskip \ndlabelspace $\ndnext \hbox{I}$}}}
\def\ndnexte#1#2{\ndone {\hbox {$\strut #1$}}{\hbox {$\strut #2$}}{\hbox
{\hskip \ndlabelspace $\ndnext \hbox{E}$}}}
\def\ndalwaysi#1#2#3{\ndone {\hbox {$\strut #1$}}{\hbox {$\strut #2$}}{\hbox
{\hskip \ndlabelspace $\ndalways \hbox{I}^{#3}$}}}
\def\ndalwayse#1#2{\ndone {\hbox {$\strut #1$}}{\hbox {$\strut #2$}}{\hbox
{\hskip \ndlabelspace $\ndalways \hbox{E}$}}}

\begin{document}
\title{Linear Logic 15-816: Homework 1}
\author{Mark Plesko \\
	Edited by Frank Pfenning}
\date{\today}
\maketitle
\section*{1.2 Natural Deductions}
In the derivations below we do not label the undischarged hypotheses
so they are easier to discern in the derivation.  We tacitly use the
assumptions about variable occurrences to calculate substitutions.
% conclude, for example, that
% $[a/x](A \ndimp B) = ([a/x] A) \ndimp B$ if $x$ is not free in $B$.

\subsection*{1a. $(\ndexists x. A) \ndimp B \vdash \ndforall x. (A\ndimp B)$,
$x$ not free in $B$}
$$
\ndforalli
  {\ndimpi
    {\ndimpe
      {\vdash (\ndexists x. A) \ndimp B}
      {\ndexistsi
        {\ndlabel{\vdash [a/x](A)}
          {u}}
        {\vdash \ndexists x. A}}
      {\vdash B}}
    {\vdash [a/x](A\ndimp B)}{u}}
  {\vdash \ndforall x. (A\ndimp B)}
  {a}
$$
\subsection*{1b. $(\ndexists x. A) \ndimp B \dashv \ndforall x. (A\ndimp B)$,
$x$ not free in $B$}
$$
\ndimpi
  {\ndexistse
    {\ndlabel{\vdash \ndexists x. A}{u}}
    {\ndimpe
      {\ndforalle
         {\vdash \ndforall x. (A\ndimp B)}
         {\vdash ([a/x]A)\ndimp B}}
      {\ndlabel{\vdash [a/x]A}{w}}
      {\vdash B}}
    {\vdash B}
    {a, w}}
  {\vdash (\ndexists x. A) \ndimp B}
  {u}
$$
\subsection*{2a. $A \ndimp (\ndexists x. B)\vdash \ndexists x.(A\ndimp B)$,
$x$ not free in $A$}
 Not derivable in intuitionistic logic.
\subsection*{2b. $A \ndimp (\ndexists x. B)\dashv \ndexists x.(A\ndimp B)$,
$x$ not free in $A$}
$$
\ndexistse
  {\vdash\ndexists x.(A\ndimp B)}
  {\ndimpi
    {\ndexistsi
      {\ndimpe
        {\ndlabel{\vdash A}{u}}
        {\ndlabel{\vdash A \ndimp [a/x]B}{v}}
        {\vdash [a/x]B}}
      {\vdash \exists x. B}}
    {\vdash A\ndimp (\ndexists x. B)}
    {u}}
  {\vdash A \ndimp (\ndexists x. B)}
  {a, v}
$$
\subsection*{3a. $(\ndforall x.A)\ndimp B \vdash \ndexists x. (A\ndimp B)$,
$x$ not free in $B$}
 Not derivable in intuitionistic logic.
\subsection*{3b. $(\ndforall x.A)\ndimp B \dashv \ndexists x. (A\ndimp B)$,
$x$ not free in $B$}
$$
\ndimpi
  {\ndexistse
    {\vdash \ndexists x. (A\ndimp B)}
    {\ndimpe
      {\ndlabel{\vdash [a/x](A)\ndimp B}{v}}
      {\ndforalle
        {\ndlabel{\vdash(\ndforall x.A)}{u}}
        {\vdash[a/x]A}}
      {\vdash B}}
    {\vdash B}{a,v}}
  {\vdash(\ndforall x.A)\ndimp B}{u}
$$
\subsection*{4a. $A\ndimp (\ndforall x. B) \vdash \ndforall x. (A\ndimp B)$,
$x$ not free in $A$}
$$
\ndforalli
  {\ndimpi
    {\ndforalle
      {\ndimpe
        {\vdash A\ndimp (\ndforall x. B)}
        {\ndlabel{\vdash A}{u}}
        {\vdash \ndforall x. B}}
      {\vdash [a/x]B}}
    {\vdash A \ndimp [a/x]B}
    {u}}
  {\vdash \ndforall x. (A\ndimp B)}
  {a}
$$
\subsection*{4b. $A\ndimp (\ndforall x. B) \dashv \ndforall x. (A\ndimp B)$,
$x$ not free in $A$}
$$
\ndimpi
  {\ndforalli
    {\ndimpe
      {\ndforalle
        {\vdash\forall x.(A\ndimp B)}
        {\vdash A\ndimp [a/x]B}}
      {\ndlabel{\vdash A}{u}}
      {\vdash [a/x]B}}
    {\vdash\forall x.B}
    {a}}
  {\vdash A\ndimp(\ndforall x. B)}
  {u}
$$

\section*{1.5 Temporal Logic}
\begin{enumerate}
\item To modify rules for a simple temporal logic, change $\vdash$ 
  to $\vdash^t$ in all cases.  Examples follow:
$$
\ndimpi
  {\begin{array}{c}
    \ndlabel{\vdash^t A}{u}\\
    \vdots \\
    \vdash^t B
   \end{array}}
  {\vdash^t A\ndimp B}
  {u}
\qquad
\ndimpe
  {\vdash^t A\ndimp B}
  {\vdash^t A}
  {\vdash^t B}
\qquad
\ndforalli
  {\vdash^t [a/x]A}
  {\vdash^t \ndforall x.A}
\qquad
\ndforalle
  {\vdash^t \ndforall x.A}
  {\vdash^t [s/x]A}
$$
\item
Introduction and elimination rules for temporal operator $\ndnext A$:
$$
\ndnexti
  {\vdash^{t+1} A}
  {\vdash^t \ndnext A}
\qquad\qquad
\ndnexte
  {\vdash^t \ndnext A}
  {\vdash^{t+1} A}
$$
\item
Local reduction and expansion for $\ndnext A$:
$$
\ndnexte
  {\ndnexti
    {\begin{array}{c}
     {\cal D}\\
     \vdash^{t+1} A
    \end{array}}
    {\vdash^t \ndnext A}}
  {\vdash^{t+1} A}
\Rightarrow_R
\begin{array}{c}
{\cal D}\\
\vdash^{t+1} A
\end{array}
\qquad\qquad
\begin{array}{c}
{\cal D}\\
\vdash^t \ndnext A
\end{array}
\Rightarrow_E
\ndnexti
  {\ndnexte
    {\begin{array}{c}
       {\cal D}\\
       \vdash^{t} \ndnext A
     \end{array}}
    {\vdash^{t+1} A}}
  {\vdash^t \ndnext A}
$$
\item
Introduction and elimination rules for temporal operator $\ndalways A$:
$$
\ndalwaysi
  {\vdash^a A}
  {\vdash^t \ndalways A}
  {a}
\qquad\qquad
\ndalwayse
  {\vdash^t \ndalways A}
  {\vdash^s A}
$$
In the introduction rule $a$ is a new parameter ranging over time.
In the elimination rule, $s$ is an arbitrary time.  Note that these
rules are completely generic and do not assume anything about the
structure of time.  For example, if we assumed that time has the structure
of the natural numbers or the integers, we could use rules which
allow us to conclude $\ndalways A$ in more circumstances.
\item
Local reduction and expansion for $\ndalways A$:
$$
\ndalwayse
  {\ndalwaysi
    {\begin{array}{c}
     {\cal D}\\
     \vdash^a A
    \end{array}}
    {\vdash^t \ndalways A}
    {a}}
  {\vdash^s A}
\Rightarrow_R
\begin{array}{c}
[s/a]{\cal D}\\
\vdash^s A
\end{array}
\qquad\qquad
\begin{array}{c}
{\cal D}\\
\vdash^t \ndalways A
\end{array}
\Rightarrow_E
\ndalwaysi
  {\ndalwayse
    {\begin{array}{c}
       {\cal D}\\
       \vdash^{t} \ndalways A
     \end{array}}
    {\vdash^a A}}
  {\vdash^t \ndalways A}
  {a}
$$
\end{enumerate}

\end{document}
