我试图了解线性逻辑,以更好地了解线性类型系统。但是,当我阅读规则时,却无法像在模态逻辑中所做的那样获得直觉-表示是必需的,就像在Kripke框架中一样对每个可到达的世界都是必需的[ is is可以比照。但是我找不到任何关于二元性的直观解释,以及哪些连词/取对(如果有)对应于和。一个一个◊ 一个一个 ∧ ∨
我试图了解线性逻辑,以更好地了解线性类型系统。但是,当我阅读规则时,却无法像在模态逻辑中所做的那样获得直觉-表示是必需的,就像在Kripke框架中一样对每个可到达的世界都是必需的[ is is可以比照。但是我找不到任何关于二元性的直观解释,以及哪些连词/取对(如果有)对应于和。一个一个◊ 一个一个 ∧ ∨
Answers:
我不确定这个问题是否适合CSTheory,但是鉴于它已经在收集投票,因此,如果将该问题发布在cs.stackexchange上,则可能有人会给出答案。
为了理解线性逻辑的对偶性的概念,它使合取和分离的作用远比我们在常规逻辑中所习惯的分开,我建议不要在资源方面考虑线性逻辑(尽管这是一个重要的读物)。而是将线性逻辑公式A 视为在端口/名称/通道进行通信的进程。据我所知,这种解释已首先在(1)中得到充实,但在吉拉德的原始作品中已经提到过。如图:
(我不知道如何正确地中心的图像在这里。)线性结合被解释为正在运行的进程一个 和乙在并行。过程甲⊗ 乙 通信对(一个,b )在它的端口,其中一个来自 阿和b是乙的通信。
对偶化 (这是线性逻辑的取反)用于切换输入和输出。因此,双甲⊗ 乙 是
在该读出是处理与连通甲⊗ 乙。
线性逻辑等效的析取可以给出类似的过程理论读数。公式
还应该将它们视为并行的两个进程和B,但是它们没有主动发送消息,而是等待环境决定运行哪个进程。因此,A &B坐在那里,在其通道上等待一些信息,这些信息决定了A &B是应以A还是以B的身份运行。这是一个“平行”版本我˚F /吨ħ ë ñ / é 升小号ê在顺序programmaning语言。双重 (A 和B )⊥的是
可以看作是向发送1位信息的过程,即:“以A继续”或“以B继续”。这类似于在 我˚F 吨ř ü Ë 吨ħ é Ñ P Ë 升小号ë Q评估到P而 我˚F ˚F 一升小号ë 吨ħ é Ñ P Ë 升小号ë Q评估到Q,不同之处在于选择之间和 B现在由环境制成。
!运算符还具有过程理论的解释:如果 视为过程,则!可以将A理解为并行运行无限多个进程A。在该读出公理线性逻辑成为简单的“线”的,从过程转发消息甲⊥到过程甲。对公理的这种解释已经在吉拉德的证明网中(3)。
这个过程理论的解释很有影响力,并引起了很多后续工作,例如会话类型的(2)。尽管如此,在某些极端情况下它还是有些尴尬,据我所知,即使在2017年,它也无法完美地适用于完整线性逻辑。
1. S. Abramsky,《线性逻辑的计算解释》。
2. P. Wadler,命题作为会议。
3.维基百科,证明网。