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

在这里插入图片描述
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.mzph.cn/news/158282.shtml

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

相关文章

干货分享:本地生活服务商入驻申请需要哪些条件?附更快捷的方法!

在数字化时代,本地服务市场已经成为各大平台争夺的重要阵地。抖音不仅在短视频市场占有一席之地,同时也在如火如荼的开发着本地服务市场,相继支付宝、视频号也推出了本地生活服务商模式。本文将介绍抖音本地生活服务商的申请条件,…

dedecms标签

【Arclist 标记】这个标记是DedeCms最常用的一个标记,也叫自由列表标记,其中 hotart、coolart、likeart、artlist、imglist、imginfolist、specart、autolist 这些标记都是由这个标记所定义的不同属性延伸出来的别名标记。功能说明:获取指定的…

WIN10 WIN11 12代 13代 大小核;性能核;电源选项;P-core,E-core;

WIN10 WIN11 12代 13代 大小核;性能核;电源选项;P-core,E-core; WIN10 WIN11 12代 13代 大小核;性能核;电源选项;P-core,E-core;说明:方法:1。右键开始菜单,选择“Window…

时序预测 | MATLAB实现基于ELM-AdaBoost极限学习机结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于ELM-AdaBoost极限学习机结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于ELM-AdaBoost极限学习机结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.Matlab实现ELM-Adaboost时间序列预测,极…

Django 集成 Celery 实现高效的异步任务处理

概要 在复杂的 Web 应用中,处理长时间运行的任务或定期任务是一项挑战。Django 作为一个强大的 Python Web 框架,可以通过集成 Celery 这一异步任务队列来优化这些任务的处理。Celery 不仅能提高应用性能,还能改善用户体验。本文将深入探讨如…

理解系统内核linux phy驱动

PHY设备驱动是基于device、driver、bus的连接方式,驱动涉及如下几个重要部分: 总线 - sturct mii_bus (mii stand for media independent interface) 设备 - struct phy_device 驱动 - struct phy_driver。PHY驱动函数驱动功能: 函数名称 功能描述 s…

arcgis中投影文件(.prj)和地理转换文件(.gtf)存储路径

1、投影文件(自定义的.prj)的存储路径 C:\Users\14635\AppData\Roaming\ESRI\Desktop10.5\ArcMap\Coordinate Systems 2、地理转换文件(.gtf)--自定义 C:\Users\14635\AppData\Roaming\ESRI\Desktop10.5\ArcToolbox\CustomTransfo…

Android Studio App开发实战项目之实现淘宝电商App首页界面(附源码,可用于大作业参考)

需要源码和图片集请点赞关注收藏后评论区留言或者私信~~~ 各家电商的App首页都是动感十足,页面元素丰富令人眼花缭乱,其中运用了Android的多种组合控件,可以说是App界面开发的集大成之作,下面我们也动手实现一个。 一、需求描述 …

2022年12月 电子学会青少年软件编程 中小学生Python编程 等级考试一级真题答案解析(选择题)

2022年12月Python编程等级考试一级真题解析 选择题(共25题,每题2分,共50分) 1、关于Python语言的注释,以下选项中描述错误的是 A、Python语言有两种注释方式:单行注释和多行注释 B、Python语言的单行注释以#开头 C、Python多行注释使用###来做为标记 D、注释用于解…

goland 远程调试 remote debug

1、远程服务器装好go环境,并设置国内源 linux go安装 参考: 如何在 Debian / Ubuntu 上安装 Go 开发环境 - 知乎 设置国内源 go env -w GOPROXYhttps://goproxy.cn,direct 2、远程服务器安装dlv git clone https://github.com/derekparker/delve.gi…

MeterSphere | 接口测试请求体中,int类型的入参实现动态化变量

项目场景: 在接口自动化的时候,要把上一个接口的 Int 变量传入到 下一个接口中进行使用,但编译器会出现 红色的 X 符号 问题描述 如何实现 int 类型的入参实现动态化变量? 解决方案: 忽视掉这个红色 X 号&#xff0…

【Linux】xfs文件系统的xfs_info命令

xfs_info命令 ① 查看命令工具自身的版本号 xfs_info -V ② 查看指定XFS设备的详细信息 xfs_info <device_name> 其他的一些命令可以使用man xfs_info去查阅man手册&#xff1a;

优化记录 -- 记一次搜索引擎(SOLR)优化

业务场景 某服务根据用户相关信息&#xff0c;使用搜索引擎进行数据检索 软件配置 solr 1台&#xff1a;32c 64g 数据10gb左右&#xff0c;版本 7.5.5 应用服务器1台&#xff1a;16c 64g 应用程序 3节点 问题产生现象 1、因业务系统因处理能不足&#xff0c;对业务系统硬件…

不看后悔系列 | 秒做BI报表,告别低效分析

根据经验来看&#xff0c;做企业数据分析&#xff0c;通常是由业务提出需求&#xff0c;交给IT去取数开发&#xff0c;当业务通过分析报表有了新的需求时&#xff0c;仍需交给IT去取数分析&#xff0c;这就导致业务的分析效率低。进入大数据时代&#xff0c;这样的低效数据分析…

稳定性保障8个锦囊,建议收藏!

稳定性保障&#xff0c;是一切技术工作的出发点和落脚点&#xff0c;也是 IT 工作最核心的价值体现&#xff0c;当然也是技术人员最容易“翻车”的阴沟。8个稳定性保障锦囊&#xff0c;分享给各位技术人员择机使用。 #1 设定可量化的、业务可理解的可用性目标 没有度量就没有改…

2304. 网格中的最小路径代价 : 从「图论最短路」过渡到「O(1) 空间的原地模拟」

题目描述 这是 LeetCode 上的 「2304. 网格中的最小路径代价」 &#xff0c;难度为 「中等」。 Tag : 「最短路」、「图」、「模拟」、「序列 DP」、「动态规划」 给你一个下标从 0 开始的整数矩阵 grid&#xff0c;矩阵大小为 m x n&#xff0c;由从 0 到 的不同整数组成。 你…

深入理解JSON及其在Java中的应用

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a;每天一个知识点 ✨特色专栏&#xff1a…

集成电路工厂用什么ERP?哪家的集成电路ERP比较好

集成电路通常对制造工艺、生产设备、品质检验等方面有较高的要求&#xff0c;而随着智能技术和自动化技术的发展成熟&#xff0c;如今集成电路行业逐渐迈入数字化和智能化阶段&#xff0c;而至这个时代背景当中&#xff0c;很多集成电路工厂借助ERP实现信息化转型升级。 时至今…

喜爱拍拍宝宝照片的,一定要制作照片书方便保存

​制作照片书&#xff0c;让美好记忆长久保存。随着数码技术的普及&#xff0c;我们拥有了越来越多的照片&#xff0c;但如何妥善保存这些珍贵的回忆呢&#xff1f;一张张照片随意夹在相册里&#xff0c;时间一长&#xff0c;容易丢失或混乱。而照片书则不同&#xff0c;它把多…