![Logiksichere gestrichelte Kästen für natürliche Deduktion](https://rvso.com/image/328799/Logiksichere%20gestrichelte%20K%C3%A4sten%20f%C3%BCr%20nat%C3%BCrliche%20Deduktion.png)
Ich verwende dieLogiksicherPaket zum Schreiben von Beweisen im Fitch-Stil. Es erstellt Umgebungen mit tabellarischer Darstellung, um das Schreiben von Beweisen weniger mühsam zu machen.
Ich kann einfach nicht herausfinden, wie ich in einem Unterbeweis eine gestrichelte Box wie in diesem Beispiel erstellen kann:
Das ist, was ich bisher habe. Der zweite Teilbeweis sollte jedoch eine gestrichelte Box verwenden.
\documentclass{article}
\usepackage{logicproof}
\usepackage{amssymb}
\begin{document}
\begin{logicproof}{2}
\begin{subproof}
\square p \land \square q & assumption\\
\square p & $\land \mathrm{e}_1$ 1\\
\square q & $\land \mathrm{e}_2$ 1\\
\begin{subproof} %This should have a dashed box
p & $\square \mathrm{e}$ 2\\
q & $\square \mathrm{e}$ 3\\
p \land q & $\land \mathrm{i}$ 4, 5
\end{subproof}
\square (p \land q) & $\square \mathrm{i}$ 4--6
\end{subproof}
\square p \land \square q \to \square (p \land q) & $\to \mathrm{i}$ 1--7
\end{logicproof}
\end{document}
Weiß jemand, ob es möglich ist, mit Logicproof einen gestrichelten Unterbeweis zu erstellen?
Wenn dies nicht möglich ist, wie würde man eine Umgebung erstellen, die der Subproof-Umgebung ähnelt?
Antwort1
Da seit fast einem Monat niemand darauf geantwortet hat, werde ich meine Teillösung veröffentlichen, in der Hoffnung, dass sich jemand anderes der Herausforderung stellt.
Das Paket verwendet tabular
grundsätzlich eine Umgebung, um den Beweis zu konstruieren. Es verwendet sie, \cline
um die horizontalen Linien zu zeichnen. Wenn wir also gestrichelte Linien ersetzen können, könnten wir die Hälfte des Problems lösen.
arydshln
unterstützt gestrichelte horizontale und vertikale Linien in tabular
und Umgebungen. Daher können wir es durch das Standard array
ersetzen .\cdashline{}
\cline{}
Wir tun dies, indem wir eine geänderte Kopie des logicproof
Befehls von erstellen \lp@cr@clines
, die wir aufrufen \lp@cr@cdashlines
, und eine geänderte Kopie logicproof
der Umgebung von subproof
, die wir aufrufen subproofd
. subproofd
verwendet , \lp@cr@cdashlines
wo subproof
verwendet wird \lp@cr@clines
, und \lp@cr@cdashlines
verwendet \cdashline{}
, wo \lp@cr@clines
verwendet wird cline{}
.
Dies hat zur Folge, dass wir subproofd
anstelle von verwenden können subproof
, um einen Unterbeweis zu setzen, dessen horizontale Linien der Box gestrichelt statt durchgezogen sind.
Offensichtlich besteht das verbleibende Problem darin, die vertikalen Linien der Box gestrichelt darzustellen. Das Problem besteht darin, dass arydshln
vertikale gestrichelte Regeln unterstützt werden, indem eine Alternative zu |
for tabular
/ array
-Spezifikationen bereitgestellt wird.
Verwendet diesen Mechanismus jedoch logicproof
nicht zum Zeichnen der vertikalen Linien seiner Boxen, wie die Standard-Spaltenspezifikation zeigt:
{{r@{~~~}*{#1}{l}@{~}>{$}l<{$}@{~~~~}l@{~}*{#1}{r}}}
Stattdessen verwendet es \vline
und ich bin nicht sicher, wie mandiesein der subproofd
Umgebung gestrichelt dargestellt.
\documentclass{article}
\usepackage{logicproof}
\usepackage{arydshln}
\usepackage{amssymb}
\newcommand*{\nec}{\ensuremath{\mathord{\square}}}
\makeatletter
\newcommand{\lp@cr@cdashlines}{% modified copy of lp@cr@clines
\lp@set@clines%
\lp@orig@arraycr%
\cdashline{\value{lp@cline@1}-\value{lp@cline@2}}%
}
\newenvironment{subproofd}{% modified copy of subproof
\ifthenelse{%
\value{lp@total@nests}>\value{lp@nested}%
}{% All is well; don't do anything.
}{%
\PackageError{logicproof}{Too many nested subproofs!}{%
Increase the maximum number of nested subproofs allowed
in the current logicproof environment.%
}%
}%
\endgroup%
\lp@stop@proof@line%
\lp@orig@arraycr%
\lp@add@space%
\lp@go@up@a@line%
\stepcounter{lp@nested}%
\lp@cr@cdashlines%
&%
\lp@continue@proof@line%
}{%
\ifthenelse{%
0<\value{lp@nested}%
}{% All is well; don't do anything.
}{%
\PackageError{logicproof}{Cannot end a subproof before it begins}{%
You must have a \protect\begin{subproof} before you can use %
\protect\end{subproof}.%
}%
}%
\lp@stop@proof@line%
\lp@cr@cdashlines%
\addtocounter{lp@nested}{-1}%
\lp@extend@space%
\lp@start@proof@line%
\begingroup%
\def\@currenvir{subproofd}%
}
\makeatother
\begin{document}
\begin{logicproof}{2}
\begin{subproof}
\nec p \land \nec q & assumption\\
\nec p & $\land \mathrm{e}_1$ 1\\
\nec q & $\land \mathrm{e}_2$ 1\\
\begin{subproofd} %This should have a dashed box
p & $\nec \mathrm{e}$ 2\\
q & $\nec \mathrm{e}$ 3\\
p \land q & $\land \mathrm{i}$ 4, 5
\end{subproofd}
\nec (p \land q) & $\nec \mathrm{i}$ 4--6
\end{subproof}
\nec p \land \nec q \to \nec (p \land q) & $\to \mathrm{i}$ 1--7
\end{logicproof}
\end{document}