James B. Wilson
(I)NTRODUCTION\[\frac{\Gamma, P\vdash Q}{\Gamma \vdash P\Rightarrow Q}\qquad (I_{\Rightarrow})\]
(naive version)
(E)LIMINATION \[\begin{array}{rl} \Gamma & \vdash P\Rightarrow Q\\ \Gamma & \vdash P \\ \hline \Gamma & \vdash Q\end{array}\qquad (E_{\Rightarrow})\]
(Modus Ponens)
(L)ANGUAGE.
\(\langle imp\rangle ::= \langle term\rangle \Longrightarrow \langle term\rangle\)
\[\frac{\begin{array}{rl} \Gamma,E & \vdash C\\ \Gamma,E & \vdash B\\ \hline \Gamma,E & \vdash (B\wedge C)\end{array} (I_{\wedge})}{\Gamma\vdash E \Rightarrow (B\wedge C)}(I_{\Rightarrow})\]
Recall \(\frac{\Gamma\vdash P,Q}{\Gamma \vdash P\wedge Q}(I_{\wedge})\)
Recall \(\frac{\Gamma,P\vdash Q}{\Gamma \vdash P\Rightarrow Q}(I_{\Rightarrow})\)
Logic is not a match for the situation!
\[\frac{\begin{array}{rl} \Gamma,E & \vdash C\\ \Gamma,E & \vdash B\\ \hline \Gamma,E & \vdash (B\wedge C)\end{array} (I_{\wedge})}{\Gamma\vdash E \Rightarrow (B\wedge C)}(I_{\Rightarrow})\]
\[\frac{\begin{array}{rl} \Gamma,E & \vdash C\\ \Gamma,E & \vdash B\\ \hline \Gamma,E,E & \vdash (B\wedge C)\end{array}}{\Gamma\vdash E,E \Rightarrow (B\wedge C)}\]
Suggested Alternative
Drop
(I)NTRODUCTION
\[\frac{\Gamma, \overbrace{P,\ldots,P}^n\vdash Q}{\Gamma \vdash \underbrace{P,\ldots,P}_n\Rightarrow Q}\qquad (I_{\Rightarrow})\]
(E)LIMINATION
\[\begin{array}{rl} \Gamma & \vdash \overbrace{P,\ldots,P}^n\Rightarrow Q\\ \Gamma & \vdash \overbrace{P,\ldots,P}^n \\ \hline \Gamma & \vdash Q\end{array}\qquad (E_{\Rightarrow})\]
(L)ANGUAGE \(\langle imp\rangle ::= \langle term\rangle \Longrightarrow \langle term\rangle\)
(I)NTRODUCTION
\[\frac{\Gamma, !^n P\vdash Q}{\Gamma \vdash !^n P\Rightarrow Q}\qquad (I_{\Rightarrow})\]
(E)LIMINATION
\[\begin{array}{rl} \Gamma & \vdash !^n P\Rightarrow Q\\ \Gamma & \vdash !^nP \\ \hline \Gamma & \vdash Q\end{array}\qquad (E_{\Rightarrow})\]
(L)ANGUAGE \(\langle imp\rangle ::= \langle term\rangle \Longrightarrow \langle term\rangle\)
Some implications cannot be viewed independent of each other.
To keep track of use be strict on the number of premises.
For a full account look into Linear Logic.
True for facts
False for scheduling (too many cooks in the kitchen)
True for facts
False for resources
Never allow "If True then False"
but allow
\[\begin{array}{|cc|c|} \hline P & Q & P\Rightarrow Q\\ \hline\hline \top & \top & \top\\ \top & \bot & \bot\\ \bot & \top & \top \\ \bot & \bot & \top\\ \hline \end{array}\]
Use this if you cannot explain a process but the data matches.
Because of implicit context, classical logic allows a meaningless "Formal" implication
If \(x>0\) then \(x^2>0\)
Sentence (i.e. what we can attempt to judge as true)
if list.length > 0 then print list.head
test
task
(L)ANGUAGE <imp> ::= if <term> then <term>
<imp> ::= <term> => <term>
\(\langle imp\rangle ::= \langle term\rangle \Longrightarrow \langle term\rangle\)
\[\frac{P\vdash Q}{P\Rightarrow Q}\qquad (I_{\Rightarrow})\]
(I)NTRODUCTION
\[\begin{array}{rl} & P\Rightarrow Q\\ & P \\ \hline & Q\end{array}\]
(E)LIMINATION