首页 > 其他分享 >谓词在命题逻辑词中的展开方法

谓词在命题逻辑词中的展开方法

时间:2024-01-14 21:01:00浏览次数:32  
标签:right exists 词中 neg Leftrightarrow 谓词 命题逻辑 forall left

title: 谓词在命题逻辑词中的展开方法
date: 2022-10-29
categories: 数学
mathjax: true
tags:
- 离散数学
- 逻辑学

前言

一天,数学家觉得自己已受够了数学,于是他跑到消防队去宣布他想当消防员。

消防队长说:「您看上去不错,可是我得先给您一个测试。」

消防队长带数学家到消防队后院小巷,巷子里有一个货栈,一只消防栓和一卷软管。

消防队长问:「假设货栈起火,您怎么办?」

数学家回答:「我把消防栓接到软管上, 打开水龙头,把火浇灭。」

消防队长说:「完全正确。最后一个问题:假设您走进小巷,而货栈没有起火,您怎么办?」
数学家疑惑地思索了半天,终于答道:「我就把货栈点着。」

消防队长大叫起来:「什么?太可怕了,您为什么要把货栈点着?」

数学家回答:「这样我就把问题化简为一个我已经解决过的问题了。」

这个笑话虽然是开玩笑,但也反映了数学思维的解题方法。在学到谓词逻辑的时候,我就在想要是能把谓词转化为命题逻辑词,用与、或、非来判断,该有多方便。

定义

首先给出所有逻辑词的递归定义(只用与、或、非表达)。这些定义书上都有,也易证。

名词 符号 定义
否定 \(\neg P\)
合取 \(P\wedge Q\)
析取 \(P\vee Q\)
条件 \(P\rightarrow Q\) \(\neg P\vee Q\)
同或 \(P\leftrightarrow Q\) \(\left(P\wedge Q\right)\vee\left(\neg P\wedge \neg Q\right)\)
与非 \(P\uparrow Q\) \(\neg P\vee\neg Q\)
或非 \(P\downarrow Q\) \(\neg P\wedge\neg Q\)
条件否定 \(P\mapsto Q\) \(P\wedge\neg Q\)
异或 \(P\nabla Q\) \(\left(P\wedge\neg Q\right)\vee\left(\neg P\wedge Q\right)\)
任意 \(\forall P\in\left\{P_i\right\}\) \(\bigwedge P_i\)
存在 \(\exists P\in\left\{P_i\right\}\) \(\bigvee P_i\)

接下来我们做一些约定:

用分号「 \(;\) 」分隔表达式,效果等同于合取。

这点数学上广泛使用的做法是用逗号「 \(,\) 」分隔,例如:

x、y是实数,并且x大于0

\[x,y\in\mathbb R,x>0 \]

这里可以看出缺点是分隔两个变量的逗号和分隔表达式的逗号任意混淆,看不清,所以这里我们先使用分号代替:

\[x,y\in\mathbb R;x>0 \]

谓词公式改写

谓词公式改写
接下来我们改写只包含一个谓词的公式:

自然语言:对于任意实数x,x一定大于0

只用逻辑词的写法: \(\forall x\in\mathbb R\to x>0\)

这里用「条件」连接了前提和推论,从直观上看是没问题的,如果分类讨论,会发现也没问题:

如果x不是实数:不在命题讨论范围内,与命题不冲突;假→真=假→假=真

如果x是大于0的实数:命题成立,与命题不冲突;真→真=真

如果x是小于0的实数:命题不成立,与命题冲突;真→假=假

可见相同,存在量词也是一样的,不多证明了。

如果是两个谓词呢,先不考虑无限集:

对于任意 \(x\in\left\{x_1,x_2,x_3\right\}\) ,存在 \(y\in\left\{y_1,y_2,y_3\right\}\) ,可以使 \(x>y\) 。

展开可得:

\[\begin{aligned} &\left(x_1>y_1并且x_2>y_1并且x_3>y_1\right)\\ 或&\left(x_1>y_2并且x_2>y_2并且x_3>y_2\right)\\ 或&\left(x_1>y_3并且x_2>y_3并且x_3>y_3\right) \end{aligned}\]

将其换为数学符号,并且提取相同的项可得:

\[\bigvee_j\left(\left(\bigwedge_i x_i\right)\wedge y_j\right)\to x>y \]

显然内层括号里面就是任意的符号:

\[\forall x\exists y\Leftrightarrow\bigvee_j\left(\forall x;y_j\right) \]

同理如果是先存在后任意

\[\exists x\forall y\Leftrightarrow\bigwedge_j\left(\exists x;y_j\right) \]

如果是两个任意

\[\forall x\forall y\Leftrightarrow \bigwedge_j\left(\forall x;y_j\right)\Leftrightarrow \left(\bigwedge_ix_i\right)\wedge\left(\bigwedge_jy_j\right)\Leftrightarrow \forall x,y\Leftrightarrow \forall y\forall x\]

这也是为什么发现经常多个变量合在一个任意里,还有如果没有任意的多个并列条件,可以交换先后(因为它们默认都是任意,而任意之间可以交换)。

如果是两个存在

\[\exists x\exists y\Leftrightarrow \bigvee_j\left(\exists x;y_j\right)\Leftrightarrow \bigvee_{i,j}\left(x_i\wedge y_j\right)\Leftrightarrow \exists x,y\Leftrightarrow \exists y\exists x\]

同理,两个存在之间也可以合并和交换

结论

综上可得任意和存在同时出现时的性质:多个任意和存在内部可交换、合并,两者之间不行

最后以一个命题结尾:

由盖住的定义:

设任意集合A上有偏序关系,若a、b属于A,a不先于b、a不等于b,且A中不存在其他元素z,使得a不先于z且z不先于b,则称元素b盖住a

可写为(设条件逻辑符优先级最低):

\[b盖住a|\left<A,\preccurlyeq\right>;a,b\in A;a\neq b;a\preccurlyeq b;\nexists z\in A\to a\preccurlyeq z\preccurlyeq b \]

满足上式的a、b,即为b盖住a

标签:right,exists,词中,neg,Leftrightarrow,谓词,命题逻辑,forall,left
From: https://www.cnblogs.com/pokersang/p/17964179

相关文章

  • 数据库内核那些事|PolarDB查询优化:好好的谓词,为什么要做下推?
    导读 数据库的查询优化器是整个系统的"大脑",一条SQL语句执行是否高效在不同的优化决策下可能会产生几个数量级的性能差异,因此优化器也是数据库系统中最为核心的组件和竞争力之一。阿里云瑶池旗下的云原生数据库PolarDBMySQL版作为领先的云原生数据库,希望能够应对广泛用户场景......
  • STL-函数对象和谓词
    2STL-函数对象2.1函数对象2.1.1函数对象概念概念:重载函数调用操作符的类,其对象常称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数2.1.2函数对象使用特点:函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返......
  • 谓词
    1.谓词对于"张明生于北京这句话","张明"和"北京"叫做个体代表个体的变元叫做个体变元,刻画个体的性质或几个个体间关系的模式叫谓词,比如这句话的"生于"2.量词全称量词\(\forallx\)读作"对任一x",这里\(\forall是全称量词\)存在量词\(\existsx\)读作"存在一x",存在量......
  • 离散数学 第一章 命题逻辑 1-3命题公式与翻译
    前面已经提到,不包含任何联结词的命题叫做原子命题,至少包含一个联结词的命题称作复合命题。设p和q是任意两个命题,则┓p,p∨q,(p∧q)∨(p→q),p«(q∨┓p)等都是复合命题。若p和q是命题变元,则上述各式均称作命题公式。p和q称作命题公式的分量。必须注意:命题公式是没有真假值的,仅当在一个公式中......
  • 离散数学 第一章 命题逻辑 1-2 联结词
    在自然语言中,常常使用“或”,“与”,“但是”等一些联结词,对于这种联结词的使用,一般没有很严格的定义,因此有时显得不很确切。在数理逻辑中,复合命题是由原子命题与逻辑联结词组合而成,联结词是复合命题中的重要组成部分,为了便于书写和进行推演,必须对联结词作出明确规定并符号化。下面介......
  • 离散数学 第一章 命题逻辑 1-1 命题及其表示法
    在数理逻辑中,为了表达概念,陈述理论和规则,常常需要应用语言进行描述,但是日常使用的自然语言进行描述,往往叙述时不够确切,也易产生二义性,因此就需要引入一种目标语言,这种目标语言和一些公式符号,就形成了数理逻辑的形式符号体系。所谓目标语言就是表达判断的一些语言的汇集,而判断就是对......
  • UNION和GROUP BY连用 导致的无法谓词推入问题
    问题概述在分析客户环境的一条SQL时,发现了无法做谓词推入的现象。造成视图中的大表访问比较低效。故此对案例做了进一步分析及测试。以确定问题原因。问题SQL:SELECTSUM("A2"."PREM")FROM((SELECT"A5"."AGENT_ID",SUM("A5"."PREM")"PREM"FROMQUERY_DES......
  • Stream filter中自定义谓词变量
    在流式处理中,filter操作是用于筛选符合条件的元素并生成一个新的流。谓词(Predicate)是一个表示条件的函数式接口,用于定义筛选的条件。在Java中,StreamAPI提供了filter方法来执行筛选操作。filter方法接受一个谓词作为参数,该谓词描述了筛选的条件。谓词的函数式接口定义如......
  • 数理逻辑 (1) 命题逻辑
    命题表达式命题语言的字符集由和变量和命题运算符构成,由于\(\land,\lor,\leftrightarrow\)都能用\(\lnot,\to\)代替,故定义符号表:\[\Sigma:=\{(,),\lnot,\to,A_n|n\in\mathbbN\}\]其中\(A_n\)代表了可数个命题变量命题逻辑的有限符号串定义为:\[\Sigma^......
  • 谓词推入-push_pred
    概念描述谓词推入(PushingPredicate):当SQL语句中包含不能合并的视图,同时视图有谓词过滤(也就是where过滤条件),CBO会将谓词过滤条件推入视图中,这个过程就叫作谓词推入。谓词推入的主要目的就是让Oracle尽可能早地过滤掉无用的数据,从而提升查询性能。为什么谓词推入必须要有不能......