人工智能AI Agent多模态语音AI 应用【免费下载链接】ten-frameworkOpen-source framework for conversational voice AI agents项目地址https://gitcode.com/TEN-framework/ten-framework点击查看免费下载导读本文围绕 clingo 仓库中 austere 示例 展开介绍一类特殊的逻辑程序——austere logic programsaustere 意为朴素/极简此处特指程序中默认否定not只出现在约束规则中的程序。文章将带你理解这类程序的意义掌握clingo --outputreify物化reify输出与meta.lp/encoding.lp元编码配合的完整求解调用链并通过逐行拆解元编码解释其如何用约束替代规则体中的默认否定来定义稳定模型。读完本文你将能够独立运行并扩展这套元求解方案理解 Answer Set ProgrammingASP中用元程序解释程序的经典思路。austere 逻辑程序默认否定只出现在约束中在经典 Answer Set Programming 中稳定模型stable model的定义依赖程序约简program reduct对程序P与解释X将P中规则体里所有被X满足的默认否定文字删除得到约简P^X再要求X恰好是P^X的最小模型。这一过程把默认否定内嵌到了每一条规则里。Austere 逻辑程序则是一种更受限、也更干净的形式程序中的所有默认否定not都只出现在约束constraint中即出现在形如:- not a, b.的规则里而普通规则正规则、析取规则、选择规则、加权和规则中不再出现not。这样稳定模型的语义可以绕开复杂的最小模型 约简操作退化为一个更朴素的条件候选模型必须满足程序中的所有约束而满足约束的结果天然对应原程序的稳定模型。仓库中的示例程序 example.lp 是一个经典的双否定循环a :- not b. b :- not a.这个程序有两个稳定模型{a}与{b}。但它并不是 austere 形式——两条规则体中都带有not。其 austere 等价的思路是把默认否定语义迁移到约束层由元编码统一处理。整体求解调用链reify 元编码示例 README 给出的一行命令即可完成全部稳定模型求解$ clingo --outputreify example.lp | clingo -Wno-atom-undefined - encoding.lp 0这条管道式命令拆解如下片段作用clingo --outputreify example.lp先对原程序进行物化reify即把example.lp的规则本身转成一组rule/3、literal_tuple/2、atom_tuple/2、weighted_literal_tuple/3等事实输出的是关于程序的程序\| clingo -Wno-atom-undefined - encoding.lp 0把物化结果通过标准输入-喂给第二个 clingo 实例并连同元编码 encoding.lp 一起求解-Wno-atom-undefined关闭未定义原子告警物化输出中的辅助谓词在元编码内才会被定义末尾的0表示求出全部模型clingo --outputreify是 clingo 自带的物化后端。它不会直接求解程序而是把程序结构作为数据输出。整个 reify 示例目录examples/reify都建立在同一套物化事实格式之上目录内common/提供了通用元编码 meta.lp各子目录simple、classical、ht、austere、optimization、supported、many、gac则针对不同语义目标提供专门的encoding.lp。运行该命令输出即为原程序的两个稳定模型以show语句选出的原子呈现Answer: 1 a Answer: 2 b这与直接运行clingo example.lp 0的结果一致验证了元编码的正确性。元编码逐行拆解约束如何取代默认否定austere 元编码 encoding.lp 的核心设计是不再在规则体中解释not而是把每个可能原子拆成hold(A)为真与nhold(A)为假两个标志原子再强制二者互斥且完备最后用约束收紧候选集。规则体求值只认正字面量conjunction(B) :- literal_tuple(B), hold(L) : literal_tuple(B, L), L 0; nhold(L) : literal_tuple(B,-L), L 0. body(normal(B)) :- rule(_,normal(B)), conjunction(B). body(sum(B,G)) :- rule(_,sum(B,G)), #sum { W,L : hold(L), weighted_literal_tuple(B, L,W), L 0 ; W,L : nhold(L), weighted_literal_tuple(B,-L,W), L 0 } G.物化阶段把原规则a :- not b.表达为rule(normal(B), ...)literal_tuple(B, 1)正字面量aliteral_tuple(B, -2)负字面量not b。注意此处默认否定已经在物化数据里被符号化为负字面量-L元编码中对应的nhold(L)表示该原子不成立。因此conjunction(B)只依赖正字面量对应的hold(L)与负字面量对应的nhold(L)元程序本身的规则体不再出现not——这就是 austere 语义在元层面的落实。对于加权和规则rule(sum(B,G), ...)元编码用#sum聚合所有成立hold与不成立nhold字面量的权重W要求总权重不低于阈值G从而把#sum规则体也翻译为无not的形式。规则头部的推导hold(A) : atom_tuple(H,A) :- rule(disjunction(H),B), body(B). { hold(A) : atom_tuple(H,A) } :- rule( choice(H),B), body(B).对析取规则rule(disjunction(H), B)一旦规则体成立头部原子元组中至少一个hold(A)必须成立条件字面量集合的强推导对选择规则rule(choice(H), B)规则体成立时头部原子集合可以任意选择成立子集用花括号选择规则表达。这两行把原程序中所有正头规则的语义搬运过来且不引入默认否定。收敛输出#show. #show T : output(T,B), conjunction(B).第一行#show.清空默认显示第二行只输出满足规则体的规则头部原子避免物化产生的内部谓词rule/3、hold/1等污染结果视图。关键原子的完备性约束% atoms that occur negated atom(L) :- literal_tuple(B,-L), L 0. atom(L) :- weighted_literal_tuple(B,-L), L 0. % open fresh atoms, and constrain their truth value { nhold(L) } :- atom(L). :- hold(L), nhold(L), atom(L). :- not hold(L), not nhold(L), atom(L).这是 austere 元编码区别于通用元编码 meta.lp 的关键所在。比较两份编码可以看出通用版 meta.lp 直接在规则体中使用not hold(L)例如conjunction(B) :- ... not hold(L) : literal_tuple(B,-L), L 0.——它把默认否定留在了元程序的规则体内austere 版则先收集所有以负字面量出现的原子atom(L)为它们开辟一个未定标志{ nhold(L) }再用两条约束强制完备性:- hold(L), nhold(L), atom(L). % hold 与 nhold 不可同时成立 :- not hold(L), not nhold(L), atom(L). % 二者必须至少成立其一注意第二条约束:- not hold(L), not nhold(L), atom(L).自身带有默认否定但它是约束头部为空完全符合 austere 定义中默认否定只出现在约束中的要求。这样一来任何候选模型对每个原子都必须给出成立/不成立的唯一判定等价于经典稳定模型对原子真值的排他性要求而由于负字面量对应的nhold(L)已被约束钉死规则体求值时不再需要not便得到了与原程序稳定模型一一对应的模型集合。为什么能成立约束层语义从语义角度看:- not a.这类约束在稳定模型语义中等价于强制a成立否则约简后约束体为空、约束永不满足。austere 程序的稳定模型因此可以描述为在不假设任何负文字成立的前提下所有规则产生的模型候选再经约束筛选后留下的解释。元编码用nhold与两条完备性约束精确复刻了这一过程这也是 [1] 中 Answer Set Programming Made Easy 的核心动机——把稳定模型语义化简为满足约束的模型。实战验证与扩展验证命令在仓库的 austere 示例目录内可以分别查看物化输出与最终结果# 1. 查看物化后的程序事实 clingo --outputreify example.lp # 2. 完整求解所有稳定模型 clingo --outputreify example.lp | clingo -Wno-atom-undefined - encoding.lp 0用--text观察 grounding 的影响与 classical 示例 中提示的一致grounding 阶段可能引入简化、消除部分原子。可先观察原程序的地面化结果clingo --text example.lp若担心 grounding 简化影响物化事实的完整性可在原程序中添加外部声明如#external a.保留原子这与 classical 示例example1.lp的做法一致。横向对照其他 reify 示例austere 编码与同目录其他元编码共享物化事实格式可对照阅读simple/README.md最简元编码直接复现物化程序的回答集clingo --outputreify example.lp | clingo -Wno-atom-undefined - ../common/meta.lp 0common/meta.lp通用元编码规则体内直接使用not与 austere 版形成规则体否定 vs 约束否定的直观对比ht/README.md用-c option1/2/3在同一元编码上切换 Here-and-There 模型、最小化 Here 世界与 Equilibrium 模型optimization/README.md展示--rewrite-minimize --outputreify --reify-sccs与optimize(0,1,card)/optimize(0,1,incl)配合实现基数最小化与子集最小化并建议用clingo --pre ... | reify --sccs预处理提升性能。这些示例共同验证了一个结论物化reify把 clingo 变成了可以解释任意程序的元解释器而 austere 编码则是其中把否定语义收敛到约束层的一种优雅实现。小结austere 逻辑程序默认否定只出现在约束中的程序其稳定模型可被简化理解为满足约束的模型标准求解调用clingo --outputreify example.lp | clingo -Wno-atom-undefined - encoding.lp 0两阶段分别负责物化与元求解元编码要点正字面量用hold、负字面量用nhold规则体求值只依赖正条件析取/选择/加权和规则分别翻译最后用两条约束强制hold/nhold互斥且完备完成对默认否定语义的约束化还原对照价值与 common/meta.lp 对比可清晰看到规则体否定与约束否定两种元编码风格的差异理解 austere 编码在语义上更贴近 [1] 中Answer Set Programming Made Easy的化简目标。参考资料[1] Jorge Fandinno, Seemran Mishra, Javier Romero, Torsten Schaub:Answer Set Programming Made Easy投稿中——该工作即 austere 逻辑程序元编码的思想来源示例 README 中明确标注。相关文件索引均可从仓库根目录访问austere 示例 READMEaustere 元编码austere 示例程序通用元编码reify 示例目录赞分享人工智能AI Agent多模态语音AI 应用【免费下载链接】ten-frameworkOpen-source framework for conversational voice AI agents项目地址https://gitcode.com/TEN-framework/ten-framework点击查看免费下载相关推荐Wasp 如何为静态页面启用路由预渲染让搜索引擎与 AI 爬虫直接读取内容Wasp 如何为静态页面启用路由预渲染让搜索引擎与 AI 爬虫直接读取内容 Wasp 应用默认是单页应用SPA浏览器下载 JavaScript再由 Re人工智能AI Agent多模态语音AI 应用yuzu Switch模拟器上手从AVX2核对到60帧调优附排障清单yuzu Switch模拟器上手从AVX2核对到60帧调优附排障清单 yuzu 是一款用 C 编写的开源任天堂 Switch 模拟器目标是把 Swi人工智能AI Agent多模态语音AI 应用如何启动 CAMEL RemoteHttpRuntime 远程运行服务并通过 HTTP 调用注册的工具如何启动 CAMEL RemoteHttpRuntime 远程运行服务并通过 HTTP 调用注册的工具 在 CAMEL 中 RemoteHttpRuntim人工智能AI Agent多模态语音AI 应用上一篇React Native 后台地理位置插件推荐下一篇如何快速上手LLaMA2-7B从环境搭建到首次文本生成的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
OpenRouter AI模型API:打破模型壁垒,TaoToken重构全球AI服务新生态 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:06:48
Prompt 焚诀——一个模板,终结你和 AI 的所有沟通问题(TaoToken 配置版) /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:06:41
5G NR中SRS与CSI-RS信号:原理、配置与外场调优实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:39:29
不用装软件,浏览器 37 秒修好一张图:Inpaint-web 图像修复上手实录 不用装软件,浏览器 37 秒修好一张图:Inpaint-web 图像修复上手实录 【免费下载链接】inpaint-web A free and open-source inpainting & image-upscaling tool powered by webgpu and wasm on the browser。| 基于 Webgpu 技术和 wasm 技术的免费开源… · 2026/9/26 2:39:10
ChatGPT-Shortcut 账户管理完全指南:三种登录方式、密码重置与提示词数据备份 AI 应用提示工程人工智能前端 【免费下载链接】ChatGPT-Shortcut Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词&… · 2026/9/26 2:39:10
PaddleGAN SinGAN 实战指南:单图训练、多任务推理与源码解析 人工智能深度学习计算机视觉媒体生成视频处理图像处理 【免费下载链接】PaddleGAN PaddlePaddle GAN library, including lots of interesting applications like First-Order motion transfer, Wav2Lip, picture repair, image editing, photo2cartoon, image style transfer,… · 2026/9/26 2:39:10
Strands Evals v0.1.17 发布详解:多模态评估器、根因分析 RCA 与安全评估器全面升级 人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务 【免费下载链接】harness-sdk Build an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python & TypeScript - any model, any cloud. 项目地址: https://… · 2026/9/26 2:39:10
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46