在论文中 Univalence as a Principle of Logic,Awodey在第7页写道:
让我们考虑内涵与外延型理论的例子。推广理论有一个明显“更强”的平等概念,因为它允许人们在所有情境中简单地用等于等于平等。相比之下,在内涵系统中,可以有一个= b和一个陈述Φ(a)但没有Φ(b)。
我不明白这一点,因为我认为这是平等的基本属性。
此外,在Coq中,我们可以简单地证明:
Theorem subs: forall (T:Type)(a b:T)(p:a=b)(P:T-> Prop), P a -> P b.
intros.
rewrite <- p.
assumption.
Qed.
答案 0 :(得分:3)
如果我没有记错,在Awodey的论文中,符号Φ(a)
意味着用Φ
中的一些隐式自由变量替换表达式a
。
在我的回答中,我将使用以下更明确的表示法(对应于论文中的Φ(a)
):
Φ[z ⟼ a]
这意味着在表达式Φ
中,自由变量z
将替换为表达式a
。
示例:
(x = z)[z ⟼ a]
结果
(x = a)
现在,我将假设您已经通过推理规则熟悉了类型理论的通常表述,如HoTT Book中的附录A.2所述。
类型理论使用两种平等概念。
标识类型:通常使用推理规则中的符号=
编写。为了得出像a = b
这样的陈述,我们需要为它提供一个证明术语。例如,让我们看一下身份类型的介绍规则:
a : A
---------------- (=)-INTRO
refl a : a = a
在这里,refl a
作为证明条款或证据证明我们声称a = a
成立(即refl a
代表琐碎或反身证明)。因此,像p : a = b
这样的声明表示由于证据a
而可以识别b
和p
。
定义平等:通常在推理规则中使用符号≡
编写。声明a ≡ b
表示a
和b
可互换,可在任何地方替换,或替代等效。这种平等通过定义&#34;,&#34;通过计算&#34;,&#34;通过简化&#34;来捕获诸如&#34;之类的概念。这种平等不带有证据用语,即它不是打字陈述。当你使用战术simpl
和compute
时,这是Coq隐式使用的那种平等。例如,让我们看一下≡
的反身性规则:
a : A
--------- (≡)-REFLE
a ≡ a
请注意,a ≡ a
左侧没有证据字词(与上面的(=)-INTRO
规则相比较)。在这种情况下,证明系统将a ≡ a
视为事实,而不需要明确说明其理由,因为在证明系统中唯一使用≡
将用于重写表达式。
≡
仅用于简化表达式,可以在其他推理规则中找到,例如≡
的类型保留规则:
a : A A ≡ B
------------------ (≡)-TYPE-PRESERV
a : B
换句话说,如果您从a
类型的A
开始,并且您知道A
和B
类型可以互换,则{{1} }}也有类型a
。请注意(以后这将是重要的!!)B
的证明术语或证据没有改变,它仍然与用于B
的证明术语相同。
我们现在可以提出这个问题了。
扩展类型理论(ETT)与像HoTT或CoC这样的整体类型理论的区别在于它们对待身份类型和定义平等的方式。
ETT通过添加以下推理规则使身份类型和定义相等可以互换:
A
换句话说,身份的 p : a = b
----------- (=)-EXT
a ≡ b
证据变得无关紧要,我们会在证明系统中将p
和a
视为可互换的(感谢像b
这样的规则和其他类似的规则)。
从假设(≡)-TYPE-PRESERV
和p : a = b
开始,在ETT中,我们可以执行以下操作:
a : A
a : A p : a = b
--------- (≡)-REFLE ----------- (=)-EXT
a ≡ a a ≡ b
------------------------------------- (=)-CONG (*1)
(a = a) ≡ (a = b)
是同余规则(即定义上等同的术语产生定义上相同的身份类型),我称之为推导(=)-CONG
。
使用(*1)
,我们可以推导出:
(*1)
在 a : A
----------------- (=)-INTRO -------------------- (*1)
refl a : a = a (a = a) ≡ (a = b)
-------------------------------------------------- (≡)-TYPE-PRESERV
refl a : a = b
中,我们插入了上面的推导。
换句话说,如果我们忽略假设(*1)
和中间步骤,就好像我们做了以下推断:
a : A
由于ETT将p : a = b refl a : a = a
-------------------------------------
refl a : a = b
和a
视为可互换(感谢假设b
和p : a = b
),{{1}的证明(=)-EXT rule
也可以看作refl a
的证明。因此,不难看出,在ETT中,拥有像a = a
这样的身份证明就足以在任何涉及{的任何声明中替换a = b
的{{1}}的部分或全部事件。 {1}}。
现在,在整体类型理论(ITT)中会发生什么?
在ITT中,不会假设a = b
规则。因此,我们无法执行上面的推导a
,特别是以下推理无效:
b
这是我们拥有身份a
的示例,但是从(=)-EXT
语句中,我们无法结束语句(*1)
。这是Awodey的论文所指的实例。
为什么这是无效的推断?因为p : a = b refl a : a = a
-------------------------------------
refl a : a = b
强制p : a = b
和(refl a : a = z)[z ⟼ a]
在定义上相等(即将(refl a : a = z)[z ⟼ b]
引入推导的唯一方法是通过refl a : a = b
规则),但从假设a
来看,这不一定正确。例如,在HoTT中,区间类型b
(HoTT Book中的第6.3节)有两个术语refl a
和(=)-INTRO
,它们在定义上并不相同,但我们有证据p : a = b
。
事实上,可能存在其他身份证明不是微不足道的或反身性的证明,它赋予故意类型理论丰富的内容。例如,它允许HoTT具有单价和更高的电感类型。
那么,我们可以从ITT中的假设I
和0 : I
得出什么结论呢?
在你的问题中,你在Coq中证明的定理被称为&#34; transport&#34;函数在HoTT中(HoTT Book中的第2.3节)。使用你的定理(删除隐式参数),你将能够进行以下推导:
1 : I
换句话说,我们可以得出结论seg : 0 = 1
,但我们对此的证明术语发生了变化!在ETT中,我们只是进行了替换(因为p : a = b
和refl a : a = a
是可互换的),允许我们在结论中使用相同的证据(即 p : a = b refl a : a = a
------------------------------------------
subs p (λx => a = x) (refl a) : a = b
)。但是在ITT中,由于身份类型的丰富性,我们无法将a = b
和a
视为替代等价物。为了反映这一意图,我们需要结合假设的证据,在结论中建立我们的新证据。
所以,从b
我们不能得出结论refl a
,但我们可以得出结论a
,这不是假设中简单替换的结果,就像在ETT中一样。
答案 1 :(得分:-3)
Coq中的rewrite
策略可能会失败 - 它可能会产生一个错误的术语。
如果我没记错的话,有时候可以通过一些谨慎的操作解决这个问题,但如果你通过(隐式或明确地)引入一个额外的公理,例如功能扩展性或JMeq_eq
来做到这一点,它就不再是第一个目标只是从第二个目标开始的情况。