“设 $K,L\subseteq\Sigma^ $ 是正则语言。则下列语言运算的结果仍然正则:”
形式陈述
设
把字连接逐点提升到集合,得到
语言的幂与 Kleene 星定义为
而
若先给每个符号指定字
直觉
集合运算只关心一个完整字是否属于语言;连接与星则利用字内部的先后次序。
一个结果字可能有多种合法切分。若 aaa 既可分成 a·aa,也可分成 aa·a。语言连接只记录结果是否存在某种切分,不记录切分见证,更不承诺唯一解析。需要保留语法树或捕获组时,语言集合本身的信息已经不够。
同态把每个输入符号替换成一个固定字,随后保持连接;它适合描述编码、擦除和 token 展开。逆同态从目标约束反推哪些源字会被映入其中。两者看似只是“替换字符串”,在闭包证明中却方向不同:像会合并多个源字,逆像则把一个目标语言拉回整个源空间。
例子与边界
设
令
它不包含 aabb,因为星重复的是整个片段 ab。同样,
连接一般不交换:
取 a:在第一边切成
有限闭包不能越过到无限并。每个单点语言
并不正则。一个语言类对二元并封闭,只能推出任意有限并封闭,不能跨过量词直接推广到可数并。
推论与应用
正则表达式正是以并、连接和 Kleene 星作为递归构造器。正则语言闭包性质进一步说明,有限自动机所识别的语言经过哪些运算仍可由有限状态描述,并给出相应构造。
编译器用连接组织 token 序列,用并组合不同词法规则;协议规格把合法阶段语言连接起来;同态则能把详细事件归并为较粗类别,或把 token 展开成字符编码。每次使用补集或逆像时,都应同时检查字母表与映射的定义域,否则“所有其他输入”的范围会悄然改变。
参考资料
- John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006, §§1.1–1.2 and Chapter 3.
- Jean-Éric Pin, Mathematical Foundations of Automata Theory, 2022, Chapters I–II.