![自然演繹のための論理証明破線ボックス](https://rvso.com/image/328799/%E8%87%AA%E7%84%B6%E6%BC%94%E7%B9%B9%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E8%AB%96%E7%90%86%E8%A8%BC%E6%98%8E%E7%A0%B4%E7%B7%9A%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9.png)
私はロジックプルーフFitch スタイルで証明を書くためのパッケージ。証明を書く手間を省くために、表形式を使用して環境を作成します。
次の例のように、サブプルーフで破線のボックスを作成する方法がわかりません。
今のところはこれが私の考えです。ただし、2 番目のサブ証明では破線のボックスを使用する必要があります。
\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}
logicproof を使用して破線のサブ証明を作成できるかどうか知っている人はいますか?
それが不可能な場合、どのようにしてサブプルーフ環境に似た環境を作成すればよいのでしょうか?
答え1
ほぼ 1 か月間誰もこれに答えていないので、他の誰かがこの挑戦を引き受けてくれることを期待して、部分的な解決策を投稿します。
このパッケージはtabular
、基本的に環境を使用して証明を構築します。\cline
水平線を描画するために使用します。したがって、破線に置き換えることができれば、問題の半分を解決できます。
arydshln
tabular
および環境では、破線の水平線と垂直線がサポートされています。そのため、 を標準の の代わりにarray
使用できます。\cdashline{}
\cline{}
logicproof
これを実現するには、 のコマンドの修正コピー\lp@cr@clines
( と呼びます) と、の環境\lp@cr@cdashlines
の修正コピー ( と呼びます)を作成します。ではが使用され、 ではが使用される場所が になります。logicproof
subproof
subproofd
subproofd
\lp@cr@cdashlines
subproof
\lp@cr@clines
\lp@cr@cdashlines
\cdashline{}
\lp@cr@clines
cline{}
この結果、 のsubproofd
代わりに を使用subproof
して、ボックスの水平線が実線ではなく破線になっているサブプルーフをタイプセットできるようになります。
明らかに、残る問題はボックスの垂直線を破線にすることです。問題は、for /仕様arydshln
の代替手段を提供することで、垂直破線ルールをサポートすることです。|
tabular
array
しかし、logicproof
標準の列仕様が示すように、ボックスの垂直線を描画するためにこのメカニズムは使用されません。
{{r@{~~~}*{#1}{l}@{~}>{$}l<{$}@{~~~~}l@{~}*{#1}{r}}}
代わりに、それは使用し\vline
、私はどのように作るか分かりませんこれら環境にダッシュしましたsubproofd
。
\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}