常规语言关闭不一致

时间:2017-03-16 04:36:50

标签: regex concatenation regular-language set-theory set-union

我试图找到一种可以采用常规语言的操作,并且" noncatenate"与另一个。例如:

  

a * L - a * = L |其中L是常规语言

我知道差异(减法)不是我想要的操作。但我相信我已经明确了我的观点。

另一种看待它的方法是,如果有一个逻辑上等于(A∪B)的集合L,但我们无法访问A.所以如果我们只能使用L,B和这样的派生,我们能以某种方式得出A.基本上:

  

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

我已经对这个问题进行了大量的思考,使用了常规语言的恭维,交集和其他闭包属性的许多变体,但我根本无法弄清楚。

我设法提出的最好的是:

  

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

然而,这需要A在右侧。

1 个答案:

答案 0 :(得分:2)

  

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

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

现在,您可以定义 - 表示所有此类A的集合,在这种情况下,您可以使用set difference,union和power set运算符使其可行。然后,L - B = Q,其中Q = {(L \ B)U {},(L \ B)U {B [0]},...,(L \ B)UB = L}。

如果指定,你可以使这个定义良好 - 总是返回Q的“最小”元素(对于有限集,具有最少元素的元素;对于无限集,则是所有其他集的子集)在这种情况下,您只需恢复L \ B。

  

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

这里存在类似的问题:可能有几种语言,当附加到B时,给出L.例如,考虑B = a *,以及A的两种选择:a *和{e},该语言仅包含空集。你可以毫不费力地表明a * a * = a * e,所以L是相同的两种方式,B是相同的,而L - B现在必须产生两个不同的值:a *或{e}。