设L1和L2为两种语言,使得不存在属于L1和L2的字符串w。 我正在努力学习如何证明,如果L1和L2都是共同图灵可识别的,那么存在一个可判定的语言A,使得L1⊆A和L2⊆A`。 A` - A的补充
答案 0 :(得分:0)
我们可以假设L1
和L2
都不是可判定的,因为如果是,则解决方案很简单(如果A = L1
,请A' = L2
或L1
}或L2
分别是可判定的。特别是,L1
和L2
都不是图灵可识别的。
鉴于此,A
必须等于集合L1
,并添加更多元素(如果要成为超集,则必须至少包含A1
中的元素)。由于L2
是A'
的子集,因此添加到L1
以形成A
的元素都不能在L2
中。此外,我们必须添加无限多个项目,因为添加有限的项目无法呈现A
可判定的L1
不在哪里。
将L1
或L2
以外的内容拆分为两种语言R1
和R2
,以便这些语言没有任何共同之处,每个字符串都只是其中之一L1
,L2
,R1
和R2
。此外,选择R1
和R2
,以便R1
具有图灵可识别性,R2
是图灵可识别的,两个集合都是无限的。让A = L1 U R1
。现在,A' = L2 U R2
。
A
是图灵可识别的。如果w
不在L1
,我们最终会认识到这一事实。如果w
不在R1
,我们可以决定这一事实。因此,我们最终可能会发现w
都不在。
L2
是c-Turing识别的。如果w
不在L2
,我们最终会认识到这一事实。如果它不在L2
中,则它位于A
或R2
中。但我们可以决定w
R2
是否在R2
,因为w
是可判定的。因此,如果我们发现L2
不在R2
并且确定它不在w
中,我们就会发现A
位于A
。因此,A
是图灵可识别的。
我们在1中看到A
是图灵可识别的,而在{2} A
是图灵可识别的。因此,A'
是可判定的。因此,L1
可以判定。
请注意,当我们将L2
或use Symfony\Component\Validator\Validation;
use Symfony\Component\Validator\Constraints as Assert;
$validator = Validation::createValidator();
$constraint = new Assert\Collection(array(
// the keys correspond to the keys in the input array
'name' => new Assert\Collection(array(
'first_name' => new Assert\Length(array('min' => 101)),
'last_name' => new Assert\Length(array('min' => 1)),
)),
'email' => new Assert\Email(),
'simple' => new Assert\Length(array('min' => 102)),
'gender' => new Assert\Choice(array(3, 4)),
'file' => new Assert\File(),
'password' => new Assert\Length(array('min' => 60)),
));
$violations = $validator->validate($input, $constraint);
内的内容“分割”成两种无限语言时,我们会在那里挥手,一种是图灵可识别的,另一种是图灵 - 识别。似乎可以安全地假设在任何无限的语言中,必须存在可识别但不可判定的该语言的适当子集。您可能希望单独查看和/或单独验证以进行验证。证明的观点:任何无限集的元素都可以按照字典顺序排列,在这种情况下,所有字符串的语言都会出现在字母表中;因为在所有字符串集上都有这种可识别但不可判定的语言,因此在这组字符串上也必须有可识别但不可判定的语言。重要的是要注意(L1 U L2)'是可识别的,因为可能需要使任何参数严格。