Logic Program Reading Group

Nanjing University - 2025 Summer

2025年-逻辑编程-读书班

nju_logo nju
开始学习

简介

Prolog(Programming in logic)是一种声明式编程语言,与常见的命令式语言(如 C、Python)不同,它基于形式逻辑的原理,特别适合用于符号推理、知识表示、规则学习等任务。本次暑期读书班由南京大学戴望州老师课题组主办,涵盖本、硕、博各年级学生,专注于讲解 Prolog 编程语言的用法,旨在夯实逻辑和 Prolog 基础,深入学习 Prolog 的思想,不涉及数学证明。

先修要求: 数理逻辑基础 参考课程

学习目标

  • 理解声明式编程范式的思想与优势
  • 熟练掌握 Prolog 语言语法与语义
  • 运用逻辑程序设计解决实际问题
  • 资源

    Prolog 示例代码

    % 明太祖朱元璋家族(简化版)
    
    parent(朱元璋, 朱标).
    parent(朱元璋, 朱棣).
    parent(朱标, 朱允炆).
    parent(朱棣, 朱高炽).
    parent(马皇后, 朱标).
    
    father(X, Y) :- parent(X, Y), male(X).
    mother(X, Y) :- parent(X, Y), female(X).
    grandparent(X, Z) :- parent(X, Y), parent(Y, Z).
    
    male(朱元璋).  
    male(朱标).
    male(朱棣).
    male(朱允炆).
    male(朱高炽).
    
    female(马皇后).   % 朱元璋正妻
    
    % Prolog 查询示例
    % ?- father(X, 朱标).          % 朱标的父亲是谁?   X = 朱元璋
    % ?- grandparent(朱元璋, 朱允炆).   % 朱元璋是朱允炆的祖父吗?  true
    
    % 中国历史小故事:
    % 明太祖朱元璋驱除鞑虏,建立明朝,登基为帝,定都南京,其太子朱标英年早逝,隔代传位给皇太孙朱允炆,是为建文帝。
    % 建文帝即位后开始削藩,引起四叔燕王朱棣(朱元璋第四子)不满,发动靖难之役起兵造反,最终攻破南京,建文帝不知所踪。
    % 朱棣即位,是为永乐帝,据传派郑和下西洋的目的之一是寻找失踪的建文帝。永乐帝在位期间,迁都北京,而南京保留为陪都。
    

    内容

    序号 时间 主讲人 参考 主题 录播
    1 2025.07.01 苏珉乐

    胡亦宽

    [1] 0~5/16节
    逻辑编程与 Prolog 基础
    • Introduction
    • Facets of Prolog
    • Logical Foundations
    • Basic Concepts
    • Data Structures
    • Reading Prolog Programs
    • Global Variables
    B站视频
    2 2025.07.05 苏浩 [1] 6~8/15/26节

    [2] Cut

    Prolog 的程序写作
    • Writing Prolog Programs
    • Termination
    • Nontermination
    • Sorting and Searching
    • Logic Puzzles
    • Cut
    B站视频
    3 2025.07.07 周昱辙

    宋奥齐

    [1] 10~14节
    Prolog 的逻辑纯度与调试
    • Higher-order Predicates
    • Logical Purity
    • Declarative Testing
    • Declarative Debugging
    • Definite Clause Grammars
    B站视频
    4 2025.07.09 张欣爽

    桑世杰

    [1] 17/18/21/25节
    Prolog 的应用
    • Thinking in States
    • Meta-interpreters
    • Expert Systems
    • Theorem Proving
    B站视频
    5 2025.07.11 袁雪容 [3] 1~3节
    ASP 简介与 Clingo 语法入门
    • Introduction
    • Quickstart
    • Input Languages
    B站视频
    6 2025.07.15 周桢瑜

    李墨晗

    [3] 5~8节
    进阶语法
    • Theory Solving
    • Examples
    • Command Line Options
    • Errors, Warnings, and Infos
    B站视频
    7 2025.07.17 何语丛

    王炯达

    [3] 9~11节

    [4] ILASP

    ASP 的应用
    • Meta-Programming
    • Heuristic-driven Solving
    • Optimization and Preference Handling
    • ILASP
    • B站视频

      Github 仓库链接

      前沿

      ILP(归纳逻辑程序设计)

      Inductive Logic Programming (ILP) 由 Stephen H.Muggleton 首创,是一种结合逻辑推理与机器学习的方法,它在给定背景知识和正反例的基础上,自动归纳出可解释的逻辑程序,用于分类、预测或知识发现,广泛应用于生物信息、自然语言等领域。

    • 归纳逻辑程序设计综述
    • ILP系统 Metagol
    • ILP系统 Popper
    • ILP系统 DeepLog
    • ABL(反绎学习)

      Abductive learning (ABL) 是戴望州等人提出的人工智能研究新范式,能有效结合机器学习与逻辑推理的优势,通过端对端的学习方式实现从原始输入到输出的直接控制。得益于保留了完整的归纳和演绎能力,反绎学习框架灵活而实用,在某些推理任务中的表现超越了目前最先进的深度学习模型。

    • Bridging machine learning and logical reasoning by abductive learning (NeurIPS 2019)
    • Efficient Rectification of Neuro-Symbolic Reasoning Inconsistencies by Abductive Reflection (AAAI 2025 杰出论文奖)
    • ABLkit 工具包
    • ABL 极简实现
    • 团队

      picture

      戴望州 副教授

      南京大学 智能科学与技术学院

      邮箱:daiwz@nju.edu.cn

      主页:https://daiwz.net

      博士生

      何语丛

      23级博士生

      宋奥齐

      24级博士生

      袁雪容

      25级博士生

      桑世杰

      25级直博生

      硕士生

      周昱辙

      23级硕士生

      张欣爽

      23级硕士生

      苏浩

      24级硕士生

      周桢瑜

      24级硕士生

      李墨晗

      25级硕士生

      本科生

      王炯达

      23级本科生

      苏珉乐

      23级本科生

      胡亦宽

      23级本科生

      邱昱宁

      24级硕士生