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

news2024/11/25 4:30:19

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.coloradmin.cn/o/1233125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【经验分享】Ubuntu如何设置swap交换

我的Linux小鸡内存只有512兆,经常爆内存,导致很多应用没有办法一直正常运行,可以通过设置swap来缓解一下,虽然和内存的速度无法媲美,但是能一定程度缓解一下问题 文章目录 1. 创建一个交换文件2. 设置正确的权限3. 设置…

程序员护城河 | 卓越的技术能力很重要,软实力同样不可或缺

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…

新手教师如何迅速成长

对于许多新手教师来说,迈出教学的第一步可能会感到非常困难。不过,通过一些关键的策略和技巧,还是可以快速提升教学能力的,我将为大家提供一些实用的建议,帮助各位在教育领域迅速成长。 深入了解学科知识 作为一名老师…

【离散数学】——刷题题库(范式)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

python连接hive报错:TypeError: can‘t concat str to bytes

目录 一、完整报错 二、解决 三、 其他报错 一、完整报错 Traceback (most recent call last): File "D:/Gitlab/my_world/hive2csv.py", line 18, in <module> conn hive.Connection(hosthost, portport, usernameusername, passwordpassword, data…

腾讯云5年服务器2核4G和4核8G配置租用价格表

腾讯云百科整理五年云服务器优惠活动 txybk.com/go/txy 配置可选2核4G和4核8G&#xff0c;公网带宽可选1M、3M或5M&#xff0c;系统盘为50G高性能云硬盘&#xff0c;标准型S5实例CPU采用主频2.5GHz的Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器&#xff0c;睿频3…

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

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

人工智能对我们的生活影响有多大

随着科技的飞速发展&#xff0c;人工智能已经渗透到我们生活的方方面面&#xff0c;并且越来越受到人们的关注。从智能语音助手到自动驾驶汽车&#xff0c;从智能家居系统到医疗诊断&#xff0c;人工智能技术正在改变着我们的生活方式。那么&#xff0c;人工智能对我们的生活影…

Golang基础-面向过程篇

文章目录 基本语法变量常量函数import导包匿名导包 指针defer静态数组动态数组(slice)定义方式slice追加元素slice截取 map定义方式map使用方式 基本语法 go语言输出hello world的语法如下 package mainimport ("fmt""time" )func main() {fmt.Println(&…

Pytorch完整的模型训练套路

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

PP-PicoDet算法训练行人检测模型

PP-PicoDet算法训练行人检测模型 1&#xff0c;效果图2&#xff0c;PP-PicoDet介绍3&#xff0c;使用飞浆框架训练模型1&#xff0c;准备好图片和对应的标注文件2&#xff0c;划分训练集和验证集3&#xff0c;vi label_list.txt4&#xff0c;目录结构5&#xff0c;修改配置文件…

Ubuntu文件系统损坏:The root filesystem on /dev/sda5 requires a manual fsck

前言 Ubuntu在启动过程中&#xff0c;经常会遇到一些开故障&#xff0c;导致设备无法正常开机&#xff0c;例如文件系统损坏等。 故障描述 Ubuntu系统启动过程中&#xff0c;出现以下文件系统损坏错误&#xff1a; 产生原因 该故障是由磁盘检测不能通过导致&#xff0c;可能是因…

WPS或Excel查找A列中有B列没有的值

就这一行代码&#xff1a; 在C列输入&#xff1a; IF(COUNTIF(B:B,A1)>0,"该行A列中值B列有","该行A列中值B列没有")

达梦数据库安装--注册服务类型错误

最近在学习达梦数据库&#xff0c;安装过程中遇到一点问题&#xff0c;做一下记录。 达梦数据库使用命令行的方式安装&#xff0c;最后一步为了用户管理及控制&#xff0c;需要把数据库服务注册为系统服务&#xff0c;在注册时出现以下错误&#xff1a; 在这我其实犯了一个自以…

Camtasia2024免费版mac电脑录屏软件

作为一个互联网人&#xff0c;没少在录屏软件这个坑里摸爬滚打。培训、学习、游戏、影视解说……都得用它。这时候没个拿得出手的私藏软件&#xff0c;还怎么混&#xff1f;说实话&#xff0c;录屏软件这两年也用了不少&#xff0c;基本功能是有但总觉得缺点什么&#xff0c;直…

CRM系统的客户细分有什么作用?

我们常常说&#xff0c;企业想要开展有针对性的营销活动&#xff0c;就需要进行客户细分。通过特定条件&#xff0c;将客户分为几类&#xff0c;从而对不同类型的客户提供不同的产品和服务。下面我们就针对这里来详细说说&#xff0c;CRM中客户细分是什么&#xff1f;如何细分客…

小程序开发平台源码系统 各行各业都可使用 功能强大 附带完整的搭建教程

当前&#xff0c;数字化转型已经成为各行各业的重要趋势&#xff0c;而小程序作为数字化转型的重要工具之一&#xff0c;具有广泛的应用前景。因此&#xff0c;我们开发了这个源码系统&#xff0c;以帮助各行各业快速开发出符合需求的小程序。 以下是部分代码示例&#xff1a;…

莫斯卡托·达斯蒂葡萄酒是庆祝活动的绝佳饮品首选

在阿斯蒂的山坡上种植莫斯卡托非常艰难&#xff0c;它们需要很长的生长期&#xff0c;在此期间葡萄非常容易受到虫害和疾病的影响&#xff0c;如灰腐病、霉变或浆果蛾。即使他们能在葡萄含糖量达到最佳水平的9月份到达收获季节&#xff0c;他们的产量也往往很低&#xff0c;因此…

Vue框架学习笔记——创建Vue实例、实例与容器对应关系

文章目录 创建Vue实例容器和Vue实例绑定容器中标签体的数据和实例中的数据动态绑定容器和实例一一对应 创建Vue实例 HTML文件中写下述代码&#xff0c;可以消除生产提示&#xff0c;创建Vue实例 <script type"text/javascript">Vue.config.productionTip fal…