Prolog 中的逻辑探险:学习9组逻辑蕴涵公式

news2024/10/6 0:33:02

在这里插入图片描述

引言

上次写了16组等价公式定律,今天继续用Prolog写9组逻辑蕴涵公式。
感觉这些公式的名称与公式挺难一一对应来记忆的,只能多练习了.

1. 附加律 (Addition)

A ⇒ A∨B
当你拿到一个苹果(A),突然你知道,即使有了梨(B),你依然拥有苹果。这就是附加律的奇妙之处!如同魔术师,展示了这种简单却深刻的真理。

fun1(A,B,Z):-
	member(A,[false,true]),
	member(B,[false,true]),
	((A->(A;B);true)->Z=true;Z=false),
	format('A = ~w,B = ~w, Z = ~w~n',[A,B,Z]),fail.
2. 化简律 (Simplification)

(A∧B)⇒A
有了一篮子水果(A 和 B),但你只想要一个苹果(A)。化简律就像是从繁到简的艺术,巧妙地帮你从复杂中找到简单。

fun2(A,B,Z):-
	member(A,[false,true]),
	member(B,[false,true]),
	(((A,B)->A;true)->Z=true;Z=false),
	format('A = ~w,B = ~w, Z = ~w~n',[A,B,Z]),fail.
3. 假言推理 (Modus Ponens)

(A→B)∧A⇒B
如果吃苹果(A)能让你快乐(B),那么当你吃苹果时,快乐就会随之而来。就是这样一个快乐的制造者!

fun3(A,B,Z):-
	member(A,[false,true]),
	member(B,[false,true]),
	((((A->B;true),A)->B;true)->Z=true;Z=false),
	format('A = ~w,B = ~w, Z = ~w~n',[A,B,Z]),fail.
4. 拒取式 (Modus Tollens)

(A→B)∧¬B⇒¬A
如果苹果能带来快乐,但你不快乐,那么你可能没有吃苹果。这就是其聪明之处,通过否定的结果找到原因。

fun4(A,B,Z):-
	member(A,[false,true]),
	member(B,[false,true]),
	((((A->B;true),\+ B)-> \+ A;true)->Z=true;Z=false),
	format('A = ~w,B = ~w, Z = ~w~n',[A,B,Z]),fail.
5. 析取三段论 (Disjunctive Syllogism)

(A∨B)∧¬B⇒A
苹果或梨(A 或 B),如果不是梨,那肯定是苹果。就像是逻辑世界的侦探,排除不可能,找到答案。

fun5(A,B,Z):-
	member(A,[false,true]),
	member(B,[false,true]),
	((((A;B), \+ B ) -> A ; true)->Z=true;Z=false),
	format('A = ~w,B = ~w, Z=~w~n',[A,B,Z]),fail.
6. 假言三段论 (Hypothetical Syllogism)

(A→B)∧(B→C)⇒(A→C)
苹果带来快乐,快乐带来舞蹈,那么苹果就能带来舞蹈!展示了这一系列逻辑链条的美妙。

fun6(A,B,C,Z):-
	member(A,[false,true]),
	member(B,[false,true]),
 	member(C,[false,true]),
	((((A->B;true),(B->C;true))->(A->C;true);true)->Z=true;Z=false),
	format('A = ~w,B = ~w,C = ~w, Z = ~w~n',[A,B,C,Z]),fail.
7. 等价三段论

(A↔B)∧(B↔C)⇒(A↔C)
如果苹果像梨,梨像桃子,那么苹果就像桃子。逻辑世界中的等价转换大师。

fun7(A,B,C,Z):-
	member(A,[false,true]),
	member(B,[false,true]),
 	member(C,[false,true]),
	(((equal(A,B),equal(B,C)->equal(A,C));true)->Z=true;Z=false),
	format('A = ~w,B = ~w,C = ~w, Z = ~w~n',[A,B,C,Z]),fail.
8. 构造性二难 (Constructive Dilemma)

(A→B)∧(C→D)∧(A∨C)⇒(B∨D)
如果苹果能让你快乐,梨能让你舞蹈,那么苹果或梨都能给你快乐或舞蹈。你得到很多选项时,也同样要面对开心选择的烦恼。

fun8(A,B,C,D,Z):-
	member(A,[false,true]),
	member(B,[false,true]),
 	member(C,[false,true]),
	member(D,[false,true]),
	(((contain(A,B),contain(C,D),(A;C)->(B;D));true)->Z=true;Z=false),
	format('A = ~w,B = ~w,C = ~w,D = ~w,Z = ~w~n',[A,B,C,D,Z]),fail.
9. 破坏性二难 (Destructive Dilemma)

(A→B)∧(C→D)∧(¬B∨¬D)⇒(¬A∨¬C)
如果苹果不再快乐,梨不再跳舞,那么失去苹果或梨都将失去快乐或舞蹈。 揭示了逻辑中的另一个面,有时也需面对失去的选择障碍。

fun9(A,B,C,D,Z):-
	member(A,[false,true]),
	member(B,[false,true]),
 	member(C,[false,true]),
	member(D,[false,true]),
	(((contain(A,B),contain(C,D),(\+B;\+D)->(\+A;\+C));true)->Z=true;Z=false),
	format('A = ~w,B = ~w,C = ~w,D = ~w,Z = ~w~n',[A,B,C,D,Z]),fail.
结语

希望通过这些生动的比喻和 Prolog 代码,让我们记住逻辑蕴涵推理的魅力。其实,逻辑不仅是理性的,还挺有乐趣和需要充分想象力的!

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

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

相关文章

SAP smartform和ALV如何使用图片 如何下载SE78上传的图片到本地

原文链接1:https://mp.weixin.qq.com/s/gb3LCoDLNhZGnpplG68cyA 原文链接2:https://mp.weixin.qq.com/s/iFFhGwFEK93QiddR1biXyA 1.如何在SMARTFORM中打印图片 在使用SmartForms进行打印单据开发时候,经常需要将公司的LOGO、公司印章、管理人…

HCIP-二、MSTP+Eth-trunk

二、MSTPEth-trunk 实验拓扑实验需求及解法 实验拓扑 实验需求及解法 //1.如图所示,配置设备名称和 IP 地址。 //2.在 SW1 与 SW2 之间配置链路聚合协议 LACP,完成以下需求: //2.1 SW1 作为主动端,设置系统优先级为最高。 [SW1]l…

百度地图,地市区域描边

描边首先需要各个点的经纬度数据 json数据下载 直接复制粘贴进入页面ctrls保存就可以了。 如果需要某省中的各个地市描边可以点击这个省的进行下载,这里以山东为例,我是先下载了山东的json数据,但是发现只有山东省下各个市的描边,于是又下了中…

深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序 计算机竞赛

文章目录 0 简介1 背景意义2 数据集3 数据探索4 数据增广(数据集补充)5 垃圾图像分类5.1 迁移学习5.1.1 什么是迁移学习?5.1.2 为什么要迁移学习? 5.2 模型选择5.3 训练环境5.3.1 硬件配置5.3.2 软件配置 5.4 训练过程5.5 模型分类效果(PC端) 6 构建垃圾…

弄懂Rust编程中的Trait

1.定义 trait trait 定义了某个特定类型拥有可能与其他类型共享的功能。可以通过 trait 以一种抽象的方式定义共享的行为。可以使用 trait bounds 指定泛型是任何拥有特定行为的类型。 一个类型的行为由其可供调用的方法构成。如果可以对不同类型调用相同的方法的话&#xff…

【C#二开业务冠邑】通过界面查看数据来源

前言 重构框架(CS【C#】转BS【Java】)时,突然发现公司的代码和数据库,有部分都没有写注释,嘎嘎,这不非常影响开发效率,于是乎,开始帮公司整理表结构和数据来源,也从而加…

ACREL DC energy meter Application in Indonesia

安科瑞 华楠 Abstract: This article introduces the application of Acrel DC meters in base station in Indonesia.The device is measuring current,voltage and energy together with hall current sensor. 1.Project Overview This company is located in Indonesia a…

企业省钱大法:如何通过更好的采购支出管理节省开支

在探讨如何通过更好的支出管理来增加利润之前,先来了解一下什么是支出管理。 支出管理是指通过收集、维护、分类和审查支出数据,来降低采购成本的过程。其目的还包括提高效率、监控工作流程以及保持合规性。 支出管理流程影响到整个采购周期的众多活动…

“三面一体”的业务调度方案在运营商订单运营的实践

在当前信息化时代,运营商的业务流程复杂度和多样性持续增长,多个系统、部门以及相关事务需要进行高效准确的调度。如何在这样的背景下,保证业务流程的顺畅,业务信息的实时传递以及业务决策的准确性,是业务运营面临的重…

KT142C语音芯片搭配HAA2018功放,两个板子,一个声音正常一个没有声音

KT142C芯片搭配HAA2018功放,焊了两个板子,一个声音正常,一个没有声音,该如何分析解决问题呢? 客户提出来的这个问题,原理图如下:分析问题的步骤如下: 可以看出来芯片的原理图部分没有…

深度了解LinkedBlockingQueue底层实现原理

文章目录 前言一、Queue接口的定义二、AbstractQueue实现Queue的基本操作1.AbstractQueue源码注释解析2.方法add、remove、element、clear、addAll的实现原理 三、BlockingQueue接口定义解析1.入列操作2.出列操作3.其他操作 四、LinkedBlockingQueue源码解析1.LinkedBlockingQu…

基于JAVA+SpringBoot+VUE+微信小程序的前后端分离咖啡小程序

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着社会的快速发展和…

报错!Jupyter notebook 500 : Internal Server Error

Jupyter notebook 报错 500 : Internal Server Error 问题背景 tensorflow-gpu环境,为跑特定代码专门开了一个环境,使用conda安装了Jupyter notebook,能够在浏览器打开Jupyter notebook,但是notebook打开ipynb会报错。 问题分析…

基于单片机的公共场所马桶设计(论文+源码)

1.系统设计 本课题为公共场所的马桶设计,其整个系统架构如图2.1所示,其采用STC89C52单片机为核心控制器,结合HC-SR04人体检测模块,压力传感器,LCD1602液晶,蜂鸣器,L298驱动电路等构成整个系统&…

7-tcp 三次握手和四次挥手、osi七层协议,哪七层,每层有哪些?tcp和udp的区别?udp用在哪里了?

1 tcp 三次握手和四次挥手 2 osi七层协议,哪七层,每层有哪些 3 tcp和udp的区别?udp用在哪里了? 1 tcp 三次握手和四次挥手 # tcp协议---》处于osi7层协议的传输层,可靠连接,使用三次握手,四次挥…

一文详解!SRM(供应商管理)助力实现采购端实现降本增效

供应商管理关系到企业各部门的正常运转,一个好的SRM供应商管理系统对于公司来说无疑是锦上添花,改善企业与供应商的关系,可以帮助企业实现采购端的降本增效。但在信息化转型的浪潮下,很多企业SRM信息化却遇到不少问题。 那么请花…

媒体格式转换软件Permute 3 mac中文版软件特点

Permute mac是一款媒体格式转换软件,可以帮助用户快速地将各种音频、视频和图像文件转换成所需格式,并提供了一些常用工具以便于用户进行编辑和处理。 Permute mac软件特点 - 支持大量格式:支持几乎所有常见的音频、视频和图像格式&#xff…

redis---非关系型数据库

关系数据库与非关系型数据库 redis非关系型数据库,又名缓存型数据库。数据库类型:关系型数据库和非关系型数据库关系型数据库是一 个机构化的数据库,行和列。 列:声明对象。 行:记录对象属性。 表与表之间的的关联。 sql语句&…

leetcode算法之分治-归并

目录 1.排序数组2.数组中的逆序对3.计算右侧小于当前元素的个数4.翻转对 1.排序数组 排序数组 //分治-归并 class Solution {int tmp[50010]; public:vector<int> sortArray(vector<int>& nums) {mergeSort(nums,0,nums.size()-1);return nums;}void mergeS…

Java核心知识点整理大全7-笔记

目录 4.1.9. JAVA 锁 4.1.9.1. 乐观锁 4.1.9.2. 悲观锁 4.1.9.3. 自旋锁 4.1.9.4. Synchronized 同步锁 Synchronized 作用范围 Synchronized 核心组件 Synchronized 实现 4.1.9.5. ReentrantLock Lock 接口的主要方法 非公平锁 公平锁 ReentrantLock 与 synchronized …