形式陈述
设 K , L ⊆ Σ ∗ 是同一字母表上的语言 公理库 形式语言 Formal language · Language over an alphabet 固定字母表上有限字的任意集合,是识别器、文法与判定问题共同描述的对象。 。并、交、差按通常的集合运算 公理库 集合运算 Set operations · Union, intersection, difference 用逻辑条件逐元素定义并、交、差、补与对称差,并扩展到集合族。 定义,补集必须相对于已固定的全集:
L ― = Σ ∗ ∖ L . 把字连接 公理库 字符串连接 String concatenation 把第二个字的符号接在第一个字之后形成的新字及相应结合运算。 逐点提升到集合,得到
K L = { u v : u ∈ K , v ∈ L } . 语言的幂与 Kleene 星定义为
L 0 = { ε } , L n + 1 = L n L , L ∗ = ⋃ n ≥ 0 L n , 而 L + = ⋃ n ≥ 1 L n = L L ∗ 表示一次或多次连接。反转逐字作用,L R = { w R : w ∈ L } ,并满足 ( K L ) R = L R K R ;次序反转是不可省略的。
若先给每个符号指定字 h ( a ) ∈ Γ ∗ ,这个映射会唯一扩张为保持连接的同态 h : Σ ∗ → Γ ∗ ,满足 h ( u v ) = h ( u ) h ( v ) 与 h ( ε ) = ε 。语言的同态像和逆像分别为
h ( L ) = { h ( w ) : w ∈ L } , h − 1 ( K ) = { w ∈ Σ ∗ : h ( w ) ∈ K } . 直觉
集合运算只关心一个完整字是否属于语言;连接与星则利用字内部的先后次序。K L 表达“先选择一段符合 K 的字,再选择一段符合 L 的字”,L ∗ 表达把这种片段重复任意有限次。所谓任意包括零次,所以空字总在 L ∗ 中;所谓有限则表示星不会产生无限字。
一个结果字可能有多种合法切分。若 K = L = { a , a a } ,字 aaa 既可分成 a·aa,也可分成 aa·a。语言连接只记录结果是否存在某种切分,不记录切分见证,更不承诺唯一解析。需要保留语法树或捕获组时,语言集合本身的信息已经不够。
同态把每个输入符号替换成一个固定字,随后保持连接;它适合描述编码、擦除和 token 展开。逆同态从目标约束反推哪些源字会被映入其中。两者看似只是“替换字符串”,在闭包证明中却方向不同:像会合并多个源字,逆像则把一个目标语言拉回整个源空间。
例子与边界
设 D = { 0 , 1 , … , 9 } ,S = { ε , + , − } 。那么 S D + 描述带可选符号且至少含一位数字的十进制整数字面量。这里 S 是一个确实含三个字的语言,并未借用正则表达式的问号操作符;D + 排除了只写正负号的输入。若还要禁止前导零,需要再与一个更精确的语言组合,改变示例数字无法补上这条规则。
令 L = { ab } ,则
L ∗ = { ε , ab , abab , … } . 它不包含 aabb,因为星重复的是整个片段 ab。同样,∅ ∗ = { ε } :正次数的幂都为空,零次幂仍贡献连接单位元。{ ε } ∗ 也等于 { ε } ,但原因是每次选择的片段本身都为空。
连接一般不交换:{ a } { b } = { a b } ,而 { b } { a } = { b a } 。它对并分配,例如 K ( L ∪ M ) = K L ∪ K M ,却不会对交给出同样的等式;一个结果字在左右两边可能采用不同切分,因此通常只有 K ( L ∩ M ) ⊆ K L ∩ K M 。
有限闭包不能越过到无限并。每个单点语言 { 0 n 1 n } 都是正则语言,但
⋃ n ≥ 0 { 0 n 1 n } = { 0 n 1 n : n ≥ 0 } 并不正则。一个语言类对二元并封闭,只能推出任意有限并封闭,不能跨过量词直接推广到可数并。
推论与应用
正则表达式 公理库 正则表达式 Regular expression 从空语言、空字与单符号语言出发,经并、连接和 Kleene 星有限构造的语言表达式。 正是以并、连接和 Kleene 星作为递归构造器。正则语言闭包性质 公理库 正则语言闭包性质 Closure properties of regular languages 正则语言经有限布尔组合、连接、星、反转以及同态像和逆像后仍是正则语言。 进一步说明,有限自动机所识别的语言经过哪些运算仍可由有限状态描述,并给出相应构造。
编译器用连接组织 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.