[巴黎高师课程] 同步反应式系统(2024-2025)

在2024-2025学期的巴黎高师MPRI硕士课程中,包含了Marc Pouzet 与 Timothy Bourke 讲授的同步反应式系统。该课程的主题覆盖了同步语言的语义与逻辑基础、同步语言的编译技术、面向同步语言的模型检测形式化验证等。详细内容可参考 MPRI 中该课程介绍 Synchronous Reactive Systems

课程目标

同步语言是一类专用于设计和实现嵌入式实时软件的编程语言,这些软件通常既极其复杂,又要求极高的安全性。例如:民航客机的制动和飞行控制系统、汽车的电动机和电池管理系统、列车的车载控制和路由系统、核电站的紧急停机系统等。许多这类关键软件都是使用同步编程语言 SCADE Suite 开发的,SCADE 源自同步语言的研究成果,并融合了编程领域的基础研究成果。

同步语言基于同步并行模型。系统使用高级编程语言描述,语言构造特别适用于描述反应式系统,并在编译阶段提供强大的安全保证:语义的确定性、死锁的消除、以及可在有限时间和内存内执行的顺序代码生成。

本课程将介绍同步语言的数学原理、其语义和逻辑基础、编译成软件的相关技术、通过模型检测进行形式化验证的方法,以及该领域的最新研究进展;尤其包括与混合系统建模语言(如 Simulink)之间的联系,这类语言结合了离散时间和连续时间的建模。本课程还将展示同步编程与类型化函数式编程之间的联系。

今年的课程将从介绍最新研究成果开始:

  • 使用证明辅助工具对 Velus 编译器进行语义形式化和编译算法的端到端正确性证明。

  • 第二部分聚焦于从 Lustre 出发的同步语言,并从类型化函数式语言的视角进行探讨:我们将研究高阶、控制结构(例如模块化重置、分层自动机)等特性对语义的影响,包括其静态语义和动态语义。我们将看到,例如某些属性(如确定性)可以通过专门的类型系统以模块化方式描述和验证。

  • 第三部分将介绍两个新的扩展方向:

    • 编写混合模型,将同步语言(离散时间)的构造与常微分方程(ODE)结合,用以描述软件与其物理环境之间的交互。我们将讨论这一设计在静态和动态语义、编译以及运行时系统(与 ODE 求解器对接)方面所带来的问题。

    • 在反应式语言中表达周期性计算 —— 这是一个在工业界长期存在的常见场景,尤其是在飞机飞行控制系统中。我们将学习如何通过专用的类型系统(“时钟计算”)验证其一致性,并生成高效的顺序代码。

课程大纲:

同步并行性的基础

  • 连续时间与离散时间
  • 同步抽象;同步序列与同步序列的函数
  • Kahn 进程网络
  • 因果性、连续性、同步并行组合
  • 布尔电路;自动机的并行组合;层级结构与抢占机制

同步语言

  • 基于序列的语言案例(如 Lustre)
  • 模块化重置
  • 分层自动机:指称语义与操作语义
  • 专用类型系统(因果性分析与时钟计算)
  • 从 Lustre 到 Clight 的形式化验证编译(Velus 编译器)
  • 混合同步语言的设计、语义与实现(Zelus 语言)
  • 弱同步模型:N-同步模型、周期性多时钟系统、准同步模型

同步系统的验证与证明

  • 同步观察者:安全性属性的编码
  • 模型检测:状态空间的布尔正向/反向编码;BDD 与 SAT(k-归纳)求解器

你可能感兴趣的:(同步数据流语言及其实现,Lustre,Scade)