# 学习 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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/171186.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RK3588产测软件介绍

1. 简介 本公司研发的产测软件是用于在量产的过程中快速地甄别产品功能和器件的好坏,即重点 FCT(Functional Test)测试,进而提高生产效率和检测的准确性。 2. 产测软件介绍 QT开发的ARM平台产测图形化软件,一键开启傻…

『C++成长记』类和对象

🔥博客主页:小王又困了 📚系列专栏:C 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、类的引入 二、类的定义 三、类的访问限定符 四、类的作用域 五、类的实例化…

基于V100下Llama2-Atom大模型微调

文章目录 大规模的中文数据预训练模型部署模型微调Step1: 环境准备Step2: 数据准备Step3: 微调脚本Step4: 加载微调模型 一些BUG 大规模的中文数据预训练 原子大模型Atom在Llama2的基础上,采用大规模的中文数据进行持续预训练,包含百科、书籍、博客、新…

⑩⑦【MySQL】锁:全局锁、表级锁、行级锁

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ MySQL锁 ⑩⑦【MySQL】锁:全局锁、…

官宣!Sam Altman加入微软,OpenAI临时CEO曝光,回顾董事会‘’政变‘’始末

11月20日下午,微软首席执行官Satya Nadella在社交平台宣布,“微软仍然致力于与 OpenAI的合作伙伴关系。同时欢迎Sam Altman 和 Greg Brockman 及其团队加入微软,领导一个全新的AI研究团队”。 Sam第一时间对这个消息进行了确认。 此外&…

【机器学习】对比学习(contrastive learning)

对比学习是一种机器学习技术,算法学习区分相似和不相似的数据点。对比学习的目标是学习数据的表示,以捕捉不同数据点之间的基本结构和关系。 在对比学习中,算法被训练最大化相似数据点之间的相似度,并最小化不相似数据点之间的相似…

LOJ #10134. 「一本通 4.4 练习 1」Dis

分析 根据数据范围分析一下复杂度,Floyd和dj算法都必爆。 发现题目说的是树,还是边还是双向的(树本身就是无向的,连通无回路的无向图叫做无向树,简称树。如果题目说了树,那么默认边就是双向的&#xff09…

优思学院|现代质量管理实践与六西格玛方法论如何融合?

企业要解决质量问题必然需要涉及管理,然而,如果仅仅将六西格玛法视为一种质量管理方法,必定会导致六西格玛管理法的失败。六西格玛法是一种具有特定战略性的管理方法,它涉及到市场、顾客、产品、服务、流程、质量、价值链以及财务…

利用多核的Rust快速Merkle tree

1. 引言 利用多核的Rust快速Merkle tree,开源代码见: https://github.com/anoushk1234/fast-merkle-tree(Rust) 其具有如下属性: 可调整为任意高度构建root复杂度为O(n)提供了插入和获取叶子节点的方法获取某叶子节…

centos7 利用nc命令探测某个tcp端口是否在监听

脚本 # 安装nc yum install -y ncnc -vz 192.168.3.128 60001 if [ $? -eq 0 ]; thenecho "tcp succeed" elseecho "tcp failed" fi nc -vz 192.168.3.128 60001 探测192.168.3.128服务器上60001 tcp端口, -vz说明是探测TCP的 端口开启的情况 执行…

用不用Microsoft Defender是你的自由,但不用最好也得有替代品

Microsoft Defender是预装在Windows 11操作系统上的重要安全工具。安全套件已完全集成到操作系统中,以保护你的系统免受恶意软件的攻击,但并不是每个人都喜欢它。你是否更愿意安装另一种防病毒/反间谍软件,以将Microsoft Defender推向绝境&am…

ATA-304功率放大器的电子实验案例(案例合集)

ATA-304功率放大器凭借其优异的指标参数受到不少电子工程师的喜欢,其在电子实验中的应用也非常频繁,下面为大家整理出ATA-304功率放大器的应用案例合集,希望能对领域内各位工程师、研究人员有所帮助。 案例一:ATA-304功率放大器在…

并行与分布式 第4章 数据级并行:向量体系结构和GPU

文章目录 并行与分布式 第4章 数据级并行:向量体系结构和GPU4.1 什么叫数据级并行4.1.1 数据级并行与SPMD4.1.2数据级并行——传统器件的问题4.1.3 数据级并行——向量体系结构和GPU 4.2 向量体系结构4.2.1 向量以及计算方式4.2.2 向量体系结构4.2.3 向量运算的执行…

如何在公网环境下使用内网穿透工具实现用ipad pro进行代码开发

文章目录 前言1. 本地环境配置2. 内网穿透2.1 安装cpolar内网穿透(支持一键自动安装脚本)2.2 创建HTTP隧道 3. 测试远程访问4. 配置固定二级子域名4.1 保留二级子域名4.2 配置二级子域名 5. 测试使用固定二级子域名远程访问6. iPad通过软件远程vscode6.1 创建TCP隧道 7. ipad远…

解锁数据库运维秘籍:掌握AntDB-T动态共享内存,提升进程间通信效率

动态共享内存是AntDB数据库通信的重要手段,本文主要阐述AntDB-T数据库动态共享内存的实现原理、实现方式与使用方法。 AntDB-T数据库是一款企业级通用分布式关系型数据库,其数据库内核是基于进程模型实现的,因此进程间通信(IPC&am…

撸源代码破冰杀手锏(一):Spring Security系列

一: 禅悟人生,码砖破冰感悟 二: Spring Security安全阐述 忙着去耍帅,后期补充完整.................

腾讯云服务器标准型S5实例CPU性能如何?配置特性说明

腾讯云服务器CVM标准型S5实例具有稳定的计算性能,CVM 2核2G S5活动优惠价格280.8元一年自带1M带宽,15个月313.2元、2核4G配置748.2元15个月,CPU内存配置还可以选择4核8G、8核16G等配置,公网带宽可选1M、3M、5M或10M,腾…

日期格式转化成星期几部署到linux显示英文

异常收集 原因:解决办法仰天大笑出门去,我辈岂是蓬蒿人 传入一个时间获取这个时间对应的是星期几,在开发环境(window系统)中显示为星期几,部署到服务器(linux系统)中会显示英文的时间…

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

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

腾讯云标准型s5和s6有什么区别?CPU处理器有差异吗?

腾讯云服务器CVM标准型S5和S6有什么区别?都是标准型云服务器,标准型S5是次新一代云服务器规格,标准型S6是最新一代的云服务器,S6实例的CPU处理器主频性能要高于S5实例,同CPU内存配置下的标准型S6实例要比S5实例性能更好…