运行时验证与自动机学习的无上下文共生
1. 引言
随着计算机系统的复杂性不断增加,自动化计算机编程和硬件设计成为一个重要研究领域。特别是软件和硬件合成,旨在将给定的人类友好逻辑形式化规范转换为易于实现的形式,如有限自动机。本章提出了一种结合自动机学习和模型检查的方法,用于高效监控和验证无上下文系统的运行时行为。该方法特别适用于程序自动机系统(SPAs),这些系统描述了可以观察到进入和退出过程的上下文无关/程序化系统。通过引入基于SOS(结构化操作语义)的监控器,该监控器能够在不考虑全局系统完整跟踪的情况下验证各个程序的行为,并在检测到行为不匹配时高效地提取反例,从而提高终身学习环境中的性能。
2. 初步知识和相关工作
2.1 初步
我们的程序系统概念围绕程序行为和程序调用展开,其中程序行为代表当前活跃程序的原子行为,程序调用将执行委托给不同的程序。当通过无上下文文法描述程序系统时,程序行为和终端符号之间,以及程序调用和非终端符号之间会有一个很好的对应关系。列表1.1(顶部)显示了一个这样的程序系统示例,类似于回文语义。
F -> a | a F a | b | b F b | G | ε
G -> c | c G c | F
为了区分各个符号的不同角色,我们引入了SPA字母表的概念。定义SPA字母表Σ = Σcall ∪ Σint ∪ {r},其中Σcall表示调用字母表,Σint表示内部字母表,r表示返回符号。对于列表1.1中的例子,SPA字母表由Σ = {F, G} ∪ {a, b, c} ∪ {R}给出。 </