Regex 正则语言闭包非连接

Regex 正则语言闭包非连接,regex,concatenation,regular-language,set-theory,set-union,Regex,Concatenation,Regular Language,Set Theory,Set Union,我正试图找到一种可以接受一种常规语言并将其与另一种语言“无关”的操作。例如: a*L-a*=L |其中L是一种正则语言 我知道差(减法)不是我想要的手术。但我相信我已经明白我的意思了 另一种方法是,如果有一个逻辑上等于(a)的集合L∪ B) ,但我们无法获得A。因此,如果我们只能使用L,B及其派生词,我们能否以某种方式导出A。基本上: L-B=A | L=(A∪ (B) 我在这个问题上花了很多心思,使用了许多常规语言的补语、交集和其他闭包属性,但我就是搞不懂 我想到的最好的办法是: A=((L-

我正试图找到一种可以接受一种常规语言并将其与另一种语言“无关”的操作。例如:

a*L-a*=L |其中L是一种正则语言

我知道差(减法)不是我想要的手术。但我相信我已经明白我的意思了

另一种方法是,如果有一个逻辑上等于(a)的集合L∪ B) ,但我们无法获得A。因此,如果我们只能使用L,B及其派生词,我们能否以某种方式导出A。基本上:

L-B=A | L=(A∪ (B)

我在这个问题上花了很多心思,使用了许多常规语言的补语、交集和其他闭包属性,但我就是搞不懂

我想到的最好的办法是:

A=((L-B)∪ (一)∩ B) | L=(A)∪ (B)

但是,这需要在右侧设置一个

如果L=A U B,定义一个运算符,使L-B=A

这方面的问题是运算符-没有很好的定义:给定L和B,可能有几种语言满足L=A U B。特别是,如果A是L的子集和L\B的任何(可能不合适的)超集,则A是一个解决方案;也就是说,如果A=(L\B)U C,其中C是A(可能不合适的)B的子集,那么L-B也可以等于那个集合

现在,你可以定义-来表示所有这类A的集合,在这种情况下,你可以使用集合差分,并集和幂集操作符来实现这一点。然后,L-B=Q,其中Q={(L\B)U{},(L\B)U{B[0]},,(L\B)U{B=L}

如果指定-始终返回Q的“最小”元素(对于有限集,返回元素最少的元素;对于无限集,返回所有其他集的子集),则可以对此进行定义,在这种情况下,只需恢复L\B即可

如果L=B.A,定义一个运算符,使L-B=A

这里存在类似的问题:可能有几种语言,当附加到B时,例如给L.,考虑B= A*,以及A:*和{e}的两种选择。,只包含空集的语言。您可以不费吹灰之力地显示a*a*=a*e,因此L在两种方式中都是相同的,B是相同的,并且L-B现在必须生成两个不同的值:a*或{e}