(1) S_0 = ∅
(2) S_{i+1} = {true,false,0}
∪ {succ t1,pred t1,iszero t1 | t1 in Si}
∪ {if t1 then t2 else t3 | t1,t2,t3 in S_i}
(3) S = ⋃ {S_i} (starting with i = 0)$
这是一种使用集合构建器符号归纳描述语言的方法。每个较大索引的S
将包含较小索引S
的子项。让我们努力为您提供一个想法。
我们知道S_0
是一个空集,因此它不包含任何术语。 S_1
是一组常量。
S_1 = {true,0}
通过在方程式(2)中放入i = 1,我们可以生成S_2
S_2 = {true,0}
∪ {succ t1,iszero t1 | t1 in S_1}
∪ {if t1 then t2 else t3 | t1,t3 in S_1}
因此S_2
将是一个包含术语的集合:
S_2 = { true,succ true,pred true,iszero true,succ false,pred false,iszero false,succ zero,pred zero,iszero zero,if true then true else true,if true then true else t3 false,if true then true else t3 zero,if true then false else t3 true,...,if false then zero else zero,if zero then zero else zero}
请注意,S_2中术语的子项只能是S_1中的术语,即常量。因此,只会出现一次succ,pred,iszero和if。
S_3
将包含以下术语,使得S_2
和S_1
的术语是其子术语。因此它可以有succ,pred,iszero和if出现1或2次。
基本上,您可以将t1
视为S_{i+1}
模板中的一个漏洞,其中
您可以插入S_{i}
个字词。最后,完整的语言S
是所有这些S_i术语的并集。
本文链接:https://www.f2er.com/3148005.html