prolog语言

2023-11-15

prolog解释器的提示符号为“?-”

lovers(X,Y):-love(X,Y),love(Y,X).

逻辑编程 什么叫逻辑编程?也许你还没有一个整体的印象,还是让我们首先来研究一个简单的例子吧。运用经典的逻辑理论,我们可以说“所有的人(person)都属于人类(moral)”,如果用 Prolog 的语言来说就是“对于所有的 X,只要 X 是一个人,它就属于人类。” moral(X):-person(X). 同样,我们还可以加入一些简单的事实,比如:苏格拉底(socrates)是一个人。person(socrates).有了这两条逻辑声明,Prolog 就可以判断苏格拉底是不是属于人类。在 Prolog 的 Listener 中键入如下的命令:

?-mortal(socrates). (此句中的’?-'是 Listener 的提示符,本句表示询问苏格拉底是不是属于人类。) Linstener 将给出答案: yes我们还可以询问,“谁属于人类?” ?-mortal(X). 我们会得到如下的答案: X= socrates

事实 (facts)
事实(facts)是 prolog 中最简单的谓词(predicate)。它和关系数据库中的记录十分相似。在下一章中我们会把事实作为数据库来搜索。

谓词: Prolog 语言的基本组成元素,可以是一段程序、一个数据类型或者是一种关系。它由谓词名和参数组成。两个名称相同而参数的数目不同的谓词是不同的谓词。 事实的语法结构如下: pred(arg1, arg2, … argN).其中 pred 为谓词的名称。arg1,…为参数,共有 N 个。
‘.’是所有的 Prolog 子句的结束符。没有参数的谓词形式如下: pred. 参数可以是以下四种之一:
· 整数(integer)· 绝对值小于某一个数的正数或负数。
· 原子(atom)· 由小写字母开头的字符串。
· 变量(variable)· 由大写字母或下划线(_)开头。
· 结构(structure)· 在以后的章节介绍。 不同的 Prolog 还增加了一些其他的数据类型,例如浮点数和字符串等。

Prolog 字符集包括:
大写字母,A-Z;小写字母,a-z;数字,0-9;±/^,.~:.?#$等。
原子通常是字母和数字组成,开头的字符必须是小写字母。例如:

hello twoWordsTogetherx14

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

prolog语言 的相关文章

  • 在 prolog 中将浮点数转换为整数

    如何在prolog中将浮点数转换为整数 I tried integer truncate sqrt 9 false integer round sqrt 9 false 谓词integer 1你使用的是真的iff它的参数是一个整数 自任期以
  • 在Prolog中,可以按随机顺序选择解决方案吗?

    如果我有以下情况 a X X 1 X 2 X 3 X 4 我可以按确定性顺序生成解决方案 a X X 1 X 2 X 3 X 4 是否有任何方法可以要求系统以非确定性 随机顺序产生解决方案 例如 a X X 4 X 1 X 3 X 2 我知
  • 如何在SWI-Prolog中启用所有统一中的发生检查?

    根据维基百科 https en wikipedia org wiki Occurs check 为所有统一提供声音统一的实现是 Qu Prolog 和 Strawberry Prolog 以及 可选地 通过运行时标志 XSB SWI Pro
  • 在 dll 中嵌入 prolog 引擎

    我最近一直在开发一个嵌入 prolog 推理引擎的 C 应用程序 正如标题中所述 我现在尝试生成一个 DLL 而不是可执行文件 以便我可以在另一个项目中使用它 由于我是 DLL 开发的新手 我想我可以从一个小例子开始 我有3个文件 like
  • 编写 Prolog 谓词的最佳实践是什么,以便它以指定参数的不同方式工作

    我正在尝试实现一些简单的谓词 例如 my length 或 my append 如果我们事先知道我们想要找到列表的长度 或者我们想要附加两个列表 这对我来说很容易 即我知道什么是输入 什么是输出 在 Prolog 中 可以用其他方式做事 如
  • 展平列表

    尝试解决练习 07http www ic unicamp br meidanis courses mc336 2009s2 prolog problemas http www ic unicamp br meidanis courses m
  • 如何在 SWI-Prolog 中创建事实?

    我只想创建类似的东西 like x y 我已经尝试了很长时间了 真的很沮丧 谁能告诉我该怎么做 我假设您正在交互地使用 swi 并尝试输入事实会给您一个如下错误 1 like x y ERROR toplevel Undefined pro
  • 在 Prolog 中编辑 Eliza 聊天机器人

    我一直在努力尝试在 Prolog 中编辑 Eliza 聊天机器人 每次我尝试编辑某些内容时 都会出现新的错误 它是否受到任何形式的编辑保护 我使用 SWI prolog 编辑器进行编辑 问题是我试图在没有完全理解代码的情况下最小化代码 我正
  • 如何使用 Prolog 查找二叉树的深度

    我正在学习 Prolog 并试图找到一个深度二叉树使用 Prolog 我代表一棵树是这样的 nil is a tree tree 1 nil nil this is a leaf tree 1 tree 1 nil nil nil this
  • Prolog,如何在 write() 中显示多个输出

    go match Mn Fn write Matching Result nl write Mn write match with write Fn match Mn1 Fn1 person may female 25 blue perso
  • Prolog - 删除非唯一元素

    我有一个谓词来检查元素是否是列表的成员 并且看起来如下 member X X member X T member X T 当我打电话时 member 1 2 3 1 4 我明白了 是的 现在我必须使用它来编写谓词 该谓词将从列表列表中删除所
  • Prolog 中的聊天机器人

    我一直在尝试在序言中创建一个聊天机器人 作为作业 到目前为止 我已经在 pl 文件中创建了一个数据库 并且列出了很多可能的对话 我知道序言是这样工作的 例如如果我们有 Chatbot good 然后我们输入 Chatbot good 它会回
  • 如何在 Prolog 中为变量(如字符串)分配多个值?

    今天早些时候 我寻求帮助以在序言中构建数据库以及如何通过参数搜索 有人提出了这个 您还可以向每个处理器添加术语列表 例如 processor pentium g4400 brand intel family pentium series g
  • 如何在Prolog中编写cmp_list/3函数?

    Write a predicate cmp list 3 the first 2 arguments are 2 lists and the last one is Comparison which means ge lt le or gt
  • 在序言中减去或添加列表的列表?

    我对序言相当陌生 正在尝试摆弄列表列表 我很好奇如何添加两个列表列表或减去它们从而得到一个列表列表 如果我有两个列表 可以说 SomeList 1 2 3 4 5 6 7 8 SomeList2 1 2 3 4 5 6 7 8 我该如何添加
  • Prolog 管线任务

    我有一项任务是在序言中制作一张简化的地铁地图 其中一部分要求制定一项规则来检查两个车站是否在同一条线上 我有一条规则 但它似乎不起作用 这就是我到目前为止所拥有的 adjacent nh lg central 4 adjacent lg o
  • 非成员规则在 Prolog 中无法按预期工作

    我正在尝试在 Prolog 中创建一个迷宫程序 其目的是找到一条从迷宫起点到迷宫中心点 m 的路线 迷宫由使用四种颜色之一连接的正方形组成 蓝色 绿色 紫色或橙色 从起点到中心的路线遵循四种颜色的重复图案 我创建了以下代码 link2 A
  • 列表中的连续元素

    我正在阻止一个谓词来编码Prolog 我需要对两个谓词进行编码 如果我打电话 u a b c d e f X 它会给X a b X b c X c d 如果我打电话 v a b c d e f X 它会给X a b X c d X e f
  • Prolog 罗马数字(属性语法)

    我正在做一项作业prolog questions tagged prolog扫描数字列表并应返回该列表是否是有效的罗马数字以及数字的十进制值 前任 1 roman N I N 1 true 2 当我运行我认为应该工作的程序时 十进制值总是正
  • 如何找到排列的索引

    index List Idx Predicate will get List with permutation and I want to know index of permutation For example index 4 1 3

随机推荐

  • Rxjava学习(一)简单分析Rxjava调用流程

    本篇以Rxjava最简短的调用流程为例来分析 下面是要分析的实例代码 Observable create new ObservableOnSubscribe
  • 1140 石子游戏 II

    题目描述 亚历克斯和李继续他们的石子游戏 许多堆石子 排成一行 每堆都有正整数颗石子 piles i 游戏以谁手中的石子最多来决出胜负 亚历克斯和李轮流进行 亚历克斯先开始 最初 M 1 在每个玩家的回合中 该玩家可以拿走剩下的 前 X 堆
  • C++中传送函数指针

    随时随地阅读更多技术实战干货 获取项目源码 学习资料 请关注源代码社区公众号 ydmsq666 函数指针是一种非常好的类型 因此 可以编写一个函数 它的一个参数是函数指针 然后 在 外部 函数使用其函数指针参数时 就间接地调用在调用函数时对
  • vue路由

    路由 理解 一个路由 route 就是一组映射关系 key value 多个路由需要路由器 router 进行管理 前端路由 key是路径 value是组件 路由标签
  • 基于共享内存 实现Python 和c++ 传输图片

    需求 c 将图片写入共享内存 python读取 将c 写的共享内存的操作封装为一个so库 c 和python共同调用这个库 便于双方的操作 省去信号量的管理操作 一 c 写入端 int main int argc char argv Sha
  • GDB的使用方法

    GDB的使用方法 一 GDB的静态调试启动方法 1 当需要在命令行通过gdb来启动可执行程序的时候 可使用一下命令 gdb lt 可执行程序名 gt 这个时候gdb会加载可执行程序的符号表和堆栈 并为启动程序作好准备 接下来 需要设置可执行
  • Knight Moves_dfs_2018_3_10

    A friend of you is doing research on the Traveling Knight Problem TKP where you are to find the shortest closed tour of
  • Golang 中实现注解功能的思路分析

    文章目录 注解的作用 一些实现注解的开源 Golang 工程 Golang 中实现注解的基本思路 第一步 源码词法分析 第二步 代码生成 第三步 自动执行 番外 Golang 中一种代替注解的方案 注解的作用 提到注解 需要短暂的说明其前世
  • 开源协议(OSS License)详解

    表1 各种协议代表软件 BSD 也称修正BSD FreeBSD NetBSD OpenBSD MPL Firefox Thunderbird GPL Linuxkernel GIMP LGPL GTK OpenOffice org 表2 许
  • Win10上配置Paddle的PARL运行环境

    安装是根据B站百度强化学习视频中的方法 在Windows10环境上配置PARL 由于版本不匹配问题掉过坑 耽误了些时间 在此记录下 避免后续入坑 配置过程中从CSDN上也找到了一些有参考意义的文章 一并记录 方便学习 推荐好文强化学习PAR
  • 【1.9w字】彻底搞懂HTTP知识的面试题,建议精读收藏

    我很早之前写过一篇关于 HTTP 和 HTTPS 的文章 但对于 HTTPS 介绍还不够详细 只讲了比较基础的部分 所以这次我们再来深入一下 HTTPS 用实战抓包的方式 带大家再来窥探一次 HTTPS 如何理解 URI URI 全称为 U
  • 常见的部署类型(停机部署、蓝绿部署、滚动部署、灰度部署、AB测试等)

    目录 一 常见部署类型 二 停机部署 三 蓝绿部署 四 滚动部署 五 灰度部署 金丝雀 六 AB测试 一 常见部署类型 停机部署 Big Bang Recreate 把现有版本的服务停机 然后部署新的版本 蓝绿部署 Blue Green S
  • 误删Server后Tomcat服务器报错The Tomcat server configuration at \Servers\Tomcat v8.5 Server at localhost-conf

    The Tomcat server configuration at Servers Tomcat v8 5 Server at localhost config is missing 不小心误删Server服务器本地项目 发现run se
  • 【Node.js】中间件

    目录 什么是中间件 定义中间件函数 最简单的中间件函数 全局生效的中间件 定义多个全局中间件 局部生效的中间件 中间件的分类 应用级别的中间件 路由级别的中间件
  • 华为MateBook 16 2021款锐龙版R7(CREM-WFD9)(CREM-WFG9)原装出厂Win11系统工厂模式,恢复原厂系统

    HUAWEI华为笔记本电脑 MateBook 16 2021款 锐龙版 R7 CREM WFD9 CREM WFG9 原厂Windows11系统 带F10恢复功能 原装OEM专用系统 恢复出厂状态 系统自带所有驱动 出厂主题壁纸LOGO O
  • Python期末大作业 —— 射靶

    Python期末作业 作业的具体要求总结 Question 1 用turtle画图就不说了 不难 Question 2 最多有五个组 每个组最多有3个人 在添加成员时当超过3个时 需要跳出信息框进行提醒处理 添加成员的姓名不能为空 若没有输
  • 阿里云ecs上的一次神奇操作导致系统盘被占用但是找不到数据在哪里问题

    问题描述 在Linux中使用df hT命令查看硬盘占用情况 系统盘显示占用92 但是使用du h max depth 1 查看 目录实际占用情况 并没有全部占用 重上面两个图可以看出系统盘实际使用才36G 多出来51G被谁偷走了呢 问题出现
  • TartanVO: A Generalizable Learning-based VO 论文阅读

    论文信息 题目 TartanVO A Generalizable Learning based VO 作者 Wenshan Wang Yaoyu Hu 来源 CoRL 时间 2021 代码地址 https github com castac
  • java的Comparator接口中equals方法不一定要实现的相关问题

    Comparator接口中有两个方法 compare和equals 实践中 equals方法不实现也不会报错 关于这个问题 java核心技术I有相关答案 原文如下 为了便于理解 建议加两个字 难道 不是所有接口中的所有方法都是抽象的吗 实际
  • prolog语言

    prolog解释器的提示符号为 lovers X Y love X Y love Y X 逻辑编程 什么叫逻辑编程 也许你还没有一个整体的印象 还是让我们首先来研究一个简单的例子吧 运用经典的逻辑理论 我们可以说 所有的人 person 都