如何定义用于 LyX 的语义逻辑“隐含”和“非”运算符

如何定义用于 LyX 的语义逻辑“隐含”和“非”运算符

在谢克特的经典和非经典逻辑中,他通过用运算符号圈起来的方式,将语义层面的符号与句法层面的符号区分开来。例如,形式逻辑使用“∧”( ) 表示合取,而语义逻辑使用带圆圈的版本,可以通过以下方式\wedge实现\owedge包裹stmaryrd

欠边符号

\rightarrow但蕴涵(“→”, )和否定(“¬”, )对应的语义运算\neg符在通常的符号。如何生成这些内容以便能够从 LyX 中使用?

答案1

就我个人而言,我将所有数学宏保存在一个单独的 LyX 文件中,然后我可以从其他 LyX 文档中包含该文件(通过“插入”>“文件”>“子文档”)。解决方案需要将一些 LaTeX 代码放在 LyX 序言中(因为 LyX 宏无法处理\mathpalette宏的结构)。因此,我还为序言代码准备了一个单独的 LaTeX 文件,然后我可以\input{…}在子 LyX 文档和父 LyX 文档的“LaTeX 序言”设置中使用它。

在 中math-macros-preamble.tex,我放置:

\newcommand{\semanticlogic}[2]{\ooalign{$\m@th#1\ocircle$\cr\scalebox{0.9}[1]{$\m@th#1#2$}\cr}}

\newcommand{\encircled}[1]{\mathpalette\semanticlogic{#1}}

\semanticlogic是一个宏,其参数为 (1) 样式宏(由 提供\mathpalette)和 (2) 要包围的运算符。该\encircled宏会进行包装\mathpalette,因此很容易在 LyX 宏中使用。

在 中math-macros.lyx,我\input{math-macros-preamble}向其前言中添加内容,然后从 定义一个宏\newcommand{\oimplies}{\mathbin{\encircled{\shortrightarrow}}},为其提供 LyX 表示,如\mathbin{$\ocircle\shortrightarrow$},以便在内联到父文档时看起来更美观。同样,我创建\onot\encircled{\mkern1mu \neg}

在父文档中,我使用逻辑运算符,也添加到它的序言中,并将其作为子文档\input{math-macros-preamble}包含。math-macros.lyx

与运算符的示例语义关系

答案2

圆圈稍微粗了一点,但我相信模拟是可以通过的。

\documentclass{article}
\usepackage{amsmath,stmaryrd,graphicx}

\makeatletter
\newcommand{\orightarrow}{\mathrel{\mathpalette\math@circled\rightarrow}}
\newcommand{\oleftarrow}{\mathrel{\mathpalette\math@circled\leftarrow}}
\newcommand{\olnot}{\mathord{\mathpalette\math@circled\lnot}}

\newcommand{\math@circled}[2]{%
  \begingroup
  \sbox0{$\m@th#1\owedge$}%
  \sbox2{$\m@th#1\mskip1mu$}%
  \raisebox{\wd2}{%
    \resizebox{\wd\z@}{!}{%
      \ooalign{$\m@th#1\varbigcirc$\cr\hidewidth$\m@th#1#2$\hidewidth\cr}%
    }%
  }%
  \endgroup
}
\makeatother

\begin{document}

$X\orightarrow Y\owedge \olnot Z\oleftarrow U$

{\ooalign{$\orightarrow$\cr$\owedge$\cr}}

\end{document}

在此处输入图片描述

第二行表示符号具有相同的尺寸。

我不知道您是否可以将其与 LyX 一起使用。

相关内容