# 学习 Prolog 和 离散逻辑的16个等价公式:一趟有趣的逻辑之旅

news/2024/2/27 22:47:35

Prolog 的语法很奇怪,需要一些时间来适应,所以我花了点时间,想用Prolot来表示和验证离散逻辑的16组等价公式。

在这里插入图片描述

1. 双重否定律 (Double Negation Law)

A ⇔¬¬A
首先,我们来看看双重否定律。在 Prolog 中,我们可以这样验证它:

fun1(A,Z):-member(A,[false,true]),(((Z1 = not(A),Z2=not(Z1)) , equal(A,Z2)) ->Z=true;Z=false),format('A = ~w , Z = ~w~n',[A,Z]),fail.

这个函数检查一个值和它的双重否定是否相等。是不是感觉就像在镜子里看镜子?

2. 幂等律 (Idempotent Laws)

A ⇔ A∨A
A ⇔ A∧A
接下来是幂等律,这听起来像是一种超级能力,但实际上它很简单:

fun2_1(A,Z):-member(A,[false,true]),(((Z1=(A;A)),equal(A,Z1))->Z=true;Z=false),format('A = ~w , Z = ~w~n',[A,Z]),fail.fun2_2(A,Z):-member(A,[false,true]),(((Z1=(A,A)),equal(A,Z1))->Z=true;Z=false),format('A = ~w , Z = ~w~n',[A,Z]),fail.

就像说“给我再多的杨幂,不如只给我一个杨幂就够了"。

3. 交换律 (Commutative Laws)

A∨B ⇔ B∨A
A∧B ⇔ B∧A
交换律告诉我们,顺序不重要,就像在决定先穿袜子还是裤子一样:

fun3_1(A,B,Z):-member(A,[false,true]),member(B,[false,true]),((Z1=(A;B),Z2=(B;A),equal(Z1,Z2))->Z=true;Z=false),format('A = ~w , B = ~w, Z = ~w~n',[A,B,Z]),fail.fun3_2(A,B,Z):-member(A,[false,true]),member(B,[false,true]),((Z1=(A,B),Z2=(B,A),equal(Z1,Z2))->Z=true;Z=false),format('A = ~w , B = ~w, Z = ~w~n',[A,B,Z]),fail.

4. 结合律 (Associative Laws)

(A∨B)∨C ⇔ (A∨(B∨C)
(A∧B)∧C ⇔ (A∧(B∧C)
结合律就像是一位擅长变魔术的艺术家。就像是在告诉我们:“不管你怎么组合这些逻辑片段,结果都像是经过了魔术师的手,神奇地保持不变!”

fun4_1(A,B,Z):-member(A,[false,true]),member(B,[false,true]),((Z1=((A;B);C),Z2=((A;(B;C)),equal(Z1,Z2)))->Z=true;Z=false),format('A = ~w , B = ~w, Z = ~w~n',[A,B,Z]),fail.fun4_2(A,B,Z):-member(A,[false,true]),member(B,[false,true]),((Z1=((A,B),C),Z2=((A,(B,C)),equal(Z1,Z2)))->Z=true;Z=false),format('A = ~w , B = ~w, Z = ~w~n',[A,B,Z]),fail.

5. 分配律 (Distributive Laws)

A∨(B∧C) ⇔ (A∨B)∧(A∨C)
A∧(B∨C) ⇔ (A∧B)∨(A∧C)
分配律像是在进行一场精彩的逻辑舞蹈。它轻松地在不同逻辑结构之间跳跃

fun5_1(A,B,C,Z):-member(A,[false,true]),member(B,[false,true]),member(C,[false,true]),(((Z1=(A;(B,C))),(Z2=((A;B),(A;C))),equal(Z1,Z2))->Z=true;Z=false),format('A = ~w , B = ~w , C = ~w , Z = ~w~n',[A,B,C,Z]),fail.fun5_2(A,B,C,Z):-member(A,[false,true]),member(B,[false,true]),member(C,[false,true]),(((Z1=(A,(B;C))),(Z2=((A,B);(A,C))),equal(Z1,Z2))->Z=true;Z=false),format('A = ~w , B = ~w , C = ~w , Z = ~w~n',[A,B,C,Z]),fail.

6. 德摩根律 (De Morgan Laws)

¬(A∨B) ⇔ ¬A∧¬B
¬(A∧B) ⇔ ¬A∨¬B
德摩根律就像是逻辑世界的一面镜子。当你通过这面镜子看逻辑表达式时,一切都被反转了,但令人惊奇的是,结果依然成立!

fun6_1(A,B,Z):-member(A,[false,true]),member(B,[false,true]),((Y1=(A;B),Z1=(\+Y1),Z2=(\+A,\+B),equal(Z1,Z2))->Z=true;Z=false),format('A = ~w , B = ~w, Z = ~w~n',[A,B,Z]),fail.
fun6_2(A,B,Z):-member(A,[false,true]),member(B,[false,true]),((Y1=(A,B),Z1=(\+Y1),Z2=(\+A;\+B),equal(Z1,Z2))->Z=true;Z=false),format('A = ~w , B = ~w, Z = ~w~n',[A,B,Z]),fail.

7. 吸收根律 (Absorption Laws)

A∨(A∧B) ⇔ A
A∧(A∨B) ⇔ A
吸收根律就像是一个厨师,能将一桌丰盛的菜肴减少到最基本的几样,但味道依然美妙

fun8_1(A,Z):-member(A,[false,true]),(((Z1=(A;true)),equal(Z1,true))->Z=true;Z=false),format('A = ~w , Z = ~w~n',[A,Z]),fail.fun8_2(A,Z):-member(A,[false,true]),(((Z1=(A,false)),equal(Z1,false))->Z=true;Z=false),format('A = ~w , Z = ~w~n',[A,Z]),fail.

8. 9. 零律和同一律 (Domination Laws & Identity Laws)

A∧1 ⇔ A
A∨0 ⇔ A
零律和同一律就像则是Prolog中的基本常量,它们是逻辑世界中的稳定点,始终如一

fun8_1(A,Z):-member(A,[false,true]),(((Z1=(A;true)),equal(Z1,true))->Z=true;Z=false),format('A = ~w , Z = ~w~n',[A,Z]),fail.fun8_2(A,Z):-member(A,[false,true]),(((Z1=(A,false)),equal(Z1,false))->Z=true;Z=false),format('A = ~w , Z = ~w~n',[A,Z]),fail.fun9_1(A,Z):-member(A,[false,true]),(((Z1=(A,true)),equal(Z1,A))->Z=true;Z=false),format('A = ~w , Z = ~w~n',[A,Z]),fail.fun9_1(A,Z):-member(A,[false,true]),(((Z1=(A,true)),equal(Z1,A))->Z=true;Z=false),format('A = ~w , Z = ~w~n',[A,Z]),fail.fun9_2(A,Z):-member(A,[false,true]),(((Z1=(A;false)),equal(Z1,false))->Z=true;Z=false),format('A = ~w , Z = ~w~n',[A,Z]),fail.

10. 11. 排中律与矛盾律 (Law of the Excluded Middle Laws & Law of Contradiction )

A∨¬A ⇔ 1
A∧¬A ⇔ 0
排中律与矛盾律这两个法则展示了逻辑的极端情况,一方面是充分性,另一方面是不可能性。

fun10(A,Z):-member(A,[false,true]),(((Z1=(A;\+A)),equal(Z1,true))->Z=true;Z=false),format('A = ~w , Z = ~w~n',[A,Z]),fail.fun11(A,Z):-member(A,[false,true]),(((Z1=(A,\+A)),equal(Z1,false))->Z=true;Z=false),format('A = ~w , Z = ~w~n',[A,Z]),fail.

12. 13. 蕴涵律和等价律 (Implication Laws & Eqivalence Laws)

A→B ⇔ ¬A∨B
A↔B ⇔ (A→B )∧(B→A)
蕴涵律和等价律是理解逻辑关系的核心

fun12(A,B,Z):-member(A,[false,true]),member(B,[false,true]),((Z1=(A->B;true),Z2=(\+A;B),equal(Z1,Z2))->Z=true;Z=false),format('A = ~w , B = ~w, Z = ~w~n',[A,B,Z]),fail.fun13(A,B,Z):-member(A,[false,true]),member(B,[false,true]),((Z1=equal(A,B),Z2=(contain(A,B),contain(B,A)),equal(Z1,Z2))->Z=true;Z=false),format('A = ~w , B = ~w, Z = ~w~n',[A,B,Z]),fail.

14. 15. 假言易位律与等价否定律 (Contraposition Laws and Negation of Equivalence Laws)

A→B ⇔ ¬B→¬A
A↔B ⇔ ¬A↔¬B
假言易位律与等价否定律展示了逻辑表达式的巧妙转换,就像是逻辑世界的变形术,展示了多种面貌

fun14(A,B,Z):-member(A,[false,true]),member(B,[false,true]),((Z1=contain(A,B),Y1=(\+B),Y2=(\+A),Z2=(contain(Y1,Y2)),equal(Z1,Z2))->Z=true;Z=false),format('A = ~w , B = ~w, Z = ~w~n',[A,B,Z]),fail.fun15(A,B,Z):-member(A,[false,true]),member(B,[false,true]),((Z1=equal(A,B),Y1=(\+A),Y2=(\+B),Z2=(equal(Y1,Y2)),equal(Z1,Z2))->Z=true;Z=false),format('A = ~w , B = ~w, Z = ~w~n',[A,B,Z]),fail.

16. 归谬律 (Reductio ad Absurdum)

(A→B) ∧(A→¬B) ⇔ ¬A
归谬律是Prolog中逻辑推理的终极检验,它揭示了逻辑中的悖论和矛盾

fun16(A,B,Z):-member(A,[false,true]),member(B,[false,true]),((Y1=(\+B),Z1=(contain(A,B),contain(A,Y1)),Z2=(\+A),equal(Z1,Z2))->Z=true;Z=false),format('A = ~w , B = ~w, Z = ~w~n',[A,B,Z]),fail.

http://www.ppmy.cn/news/1230920.html

相关文章

接口自动化项目落地之HTTPBin网站

原文:https://www.cnblogs.com/df888/p/16011061.html 接口自动化项目落地系列 找个开源网站或开源项目,用tep实现整套pytest接口自动化项目落地,归档到电子书,作为tep完整教程的项目篇一部分。自从tep完整教程发布以后&#…

使用 Core Tools 在本地开发 Azure Functions

学习模块 使用 Core Tools 在本地创建和运行 Azure Functions - Training | Microsoft Learn 文档 使用 Core Tools 在本地开发 Azure Functions | Microsoft Learn GitHub - Azure/azure-functions-core-tools: Command line tools for Azure Functions 其它 安装适用于 A…

公网环境固定域名异地远程访问内网BUG管理系统

文章目录 前言1. 本地安装配置BUG管理系统2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射本地服务3. 测试公网远程访问4. 配置固定二级子域名4.1 保留一个二级子域名5.1 配置二级子域名6. 使用固定二级子域名远程 前言 BUG管理软件,作为软件测试工程师的必备工具之一。在…

深入分析TaskView源码之触摸相关

问题背景 hi,粉丝朋友们: 大家好!android 10以后TaskView作为替代ActivityView的容器,在课程的分屏pip自由窗口专题也进行了相关的详细介绍分析。 这里再补充一下相关的TaskView和桌面内嵌情况下的触摸分析 主要问题点&#xff…

NGINX缓存详解之服务端缓存

服务端缓存 proxy cache属于服务端缓存,主要实现 nginx 服务器对客户端数据请求的快速响应。 nginx 服务器在接收到被代理服务器的响应数据之后,一方面将数据传递给客户端,另一方面根据proxy cache的配置将这些数据缓存到本地硬盘上。 当客户端再次访问相同的数据时,nginx…

合并区间(排序、贪心)

LCR 074. 合并区间 - 力扣(LeetCode) 题目描述 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中…

Pytorch完整的模型训练套路

Pytorch完整的模型训练套路 文章目录 Pytorch完整的模型训练套路以CIFAR10为例实践 数据集加载步骤 使用适当的库加载数据集,例如torchvision、TensorFlow的tf.data等。 将数据集分为训练集和测试集,并进行必要的预处理,如归一化、数据增强等…

【头歌-Python】Python第二章作业(初级)

文章目录 第1关:三角形周长及面积任务描述输入格式输出格式示例参考代码 第2关:三角函数计算任务描述输入格式输出格式示例参考代码 第3关:表达式求值任务描述输入格式输出格式示例参考代码 第4关:计算矩形面积任务描述输入格式输…

计算机基础知识54

ORM的介绍 # ORM是什么? 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(增、删、改、查),而一旦谈到数据的管理操作,就需要用到数据库管理软件,例如mysql、oracle…

数据集笔记:NGSIM (next generation simulation)

1 数据集介绍 数据介绍s Next Generation Simulation (NGSIM) Open Data (transportation.gov) 数据地址:Next Generation Simulation (NGSIM) Vehicle Trajectories and Supporting Data | Department of Transportation - Data Portal 时间2005年到2006年间地…

桌面运维。

Windows运行命令: color 01/02切换字符颜色cls 清屏ipconfig 设备的ip信息ipconfig /all 设备ip的所有信息 破解系统密码: 进PE系统,使用里面的工具破解 vmware workstation安装 网卡 网卡:ncpa.cpl window远程控制 mstsc …

2023年中国聚氨酯树脂涂料需求量、市场规模及行业趋势分析[图]

聚氨酯是一种新兴的有机高分子材料,被誉为“第五大塑料”,因其卓越的性能而被广泛应用于国民经济众多领域。产品应用领域涉及轻工、化工、电子、纺织、医疗、建筑、建材、汽车、国防、航天、航空等。2022年中国聚氨酯产量已达1600万吨。 2012-2022年中国…

人机交互——机器人形态

1.聊天机器人 2.任务型机器人 3.面向FAQ的问答机器人 4.面向KB的问答机器人

HT8699R AB类和D类的升压双声道音频功率放大器

HT8699R是一款内置BOOST升压模块的立体声音频功率放大器。 HT8699R在D类模式下,内置的BOOST升压模块可通过外置电阻调节升压值,即使是锂电池供电,在升压至7V时,10% THDN,4Ω负载条件下,能连续输出25.5W 的…

数字化转型与企业创新—基于中国上市公司年报的经验证据(2007-2022年)

参照潘红波(2022)的做法,对来自中南大学学报《数字化转型与企业创新—基于中国上市公司年报的经验证据》一文中的基准回归部分进行复刻。文章实证检验数字化转型对企业创新的影响。用年报词频衡量 一、数据介绍 数据名称:数字化转…

什么是单片机?聊聊它的历史

前言 1946年2月15日,第一台电子数字计算机 ENIAC问世,这标志着计算机时代的到来。 ENIAC 是电子管计算机,时钟频率虽然仅有 100 kHz,但能在1s 的时间内完成 5000 次加法运算。与现代的计算机相比,ENIAC有许多不足&am…

【U8+】用友U8账套引入/还原,提示:逻辑文件‘UFModel’不是数据库的一部分。

【问题描述】 用友U8+账套引入(恢复账套)的时候,提示: 逻辑文件‘UFModel’不是数据库‘UFDATA_001_2015’的一部分。 请使用RESTORE FILELISTONLY来列出逻辑文件名。-2147217900 【解决方法】 查看用友U8+账套库正确的逻辑名称为【UFMODEL】和【UFMODEL_log】。 【案例…

数据结构中树、森林 与 二叉树的转换

1 树转换为 二叉树 将树转换成二叉树的步骤是: 加线。在所有的兄弟结点之间加一条线。去线。对于树中的每个结点,只保留它与第一个孩子结点的连线,删除该结点其他孩子结点之间的连线。调整。以树的根结点为轴心,将整个树顺时针旋…

【网络学习笔记】

记录一下关于域名,dns,反向代理知识的一些内容 通过阿里云函数进行反向代理 阿里云函数计算fanxiangdaili 逻辑 和cloudflare的workers的差不多(前几天突然不能用了,使用魔法还能用,不过今天又莫名其妙恢复了&#xf…

智能门禁刷脸照片格式gif、bmp,png转换,转换base64

随着刷脸闸机的普及,很多场所都使用了刷脸金闸机,很多时候对方传来的照片格式不对。 刷脸闸机对应的格式都是jpg 照片来源:访客手机上传,管理员上传,团队购票上传 在转换的语言很多,在网站中php使用较为…
最新文章