有没有快速制作这样的逻辑表的方法?

有没有快速制作这样的逻辑表的方法?

这是 Elliott Mendelson 的典型表格数理逻辑导论

在此处输入图片描述

这是确定语句形式是否为重言式的方法的一部分。我希望能够以有效的方式重现它。

答案1

你可以快速完成,也可以做得很好。两者很难兼顾。你会注意到,即使是你发布的那个,据我所知,它是直接从门德尔松出版的书中摘录的,也是搞砸了。第 2 行中的 T 应该在双条件下,而不是在 A 下。

我能想到的最佳方法是使用数组(或表格)。困难的是让顶部的公式具有类似于其通常的数学间距。如果将每个语句和连接词分成自己的单元格,则通常的 LaTeX 数学间距规则将被忽略。因此,您基本上要做的是@{…}在每列之间使用列说明符,并在二进制连接词之前和之后添加空格@{\ },并删除其他地方的所有列间空格@{}

最终的代码有点丑陋:

\documentclass{article}
\usepackage{array}
\usepackage{amssymb}
\usepackage{mathpazo}% optional: a font more like Mendelson's
\newcommand{\F}{\mathrm{F}}
\newcommand{\T}{\mathrm{T}}
\begin{document}

\newcounter{tableline}
\setcounter{tableline}{0}
\newcommand{\advline}{\refstepcounter{tableline}\thetableline}
\[
\begin{array}%
{@{}r@{}c@{\ }c@{\ }          r@{}r@{}  c@{}l@{\ }c@{\ }c@{}l@{\ }c@{\ }      r@{}r@{}  c@{}l@{\ }c@{\ }      c@{}l@{\ }c@{}}
    ((  &A    &\Leftrightarrow&(( &\lnot&B  &)    &\lor &C  &))   &\Rightarrow&(( &\lnot&A  &)    &\Rightarrow&B  &))   & \\
        &     &               &   &     &   &     &     &   &     &\F         &   &     &   &     &           &   &     & \advline\\
        &     &\T             &   &     &   &     &     &   &     &           &   &     &   &     &\F         &   &     & \advline\\
        &     &               &   &     &   &     &     &   &     &           &   &\T   &   &     &           &\F &     & \advline\\
        &\F   &               &   &     &   &     &     &   &     &           &   &     &\F &     &           &   &     & \advline\\
        &     &               &   &     &   &     &\F   &   &     &           &   &     &   &     &           &   &     & \advline\\
        &     &               &   &\F   &   &     &     &\F &     &           &   &     &   &     &           &   &     & \advline\\
        &     &               &   &     &\T &     &     &   &     &           &   &     &   &     &           &   &     & \advline\\
\end{array}
\]
\end{document}

我在列说明符中插入了空格,这样您就可以看到哪个列说明与哪个列相匹配。(我将左括号的列右对齐,将右括号的列左对齐,以符合它们的适用范围,但我认为这并不重要。)

输出如下所示:

简略真值表

您可能可以使用 lua 编写一个脚本,该脚本可以自动解析语句并输入正确的间距(同时,填写表格的其余部分,因为计算机非常擅长真值函数逻辑...)但这比我愿意为 StackExchange 答案做的工作要多。

相关内容