在这里:幻灯片23上的http://www.cse.chalmers.se/~coquand/equality.pdf,他们定义了一个非常有趣的类型iscontr A
。我认为它转化为:
record iscontr {A : Set} : Set where
constructor _exists_unique
field
a : A
singleton : (x : A) -> a == x
我没有看到他们正在制造的微妙之处。他们声称,起初看起来这似乎只是A
居住着多个但是(路径)连接值的证明 - 这正是我在这里看到的;但事实上,他们声称,这证明了A
类型中有一个居民。
鉴于在引入iscontr
之前引入J
(并且实际上用于给出归纳公理的替代定义,J
),这个事实必须源于事物除了归纳。
好的,起初我认为居住这种类型意味着生成一个可以映射类型A
的任何值的函数 - 包括那些不规范的函数(例如由公理引入的) )(记住,我们不能在这里进行通常的模式匹配,因为我们还没有感应公理)。这意味着即使使用公理,也不会以某种方式将新值添加到A
。这个事实向我清楚地表明,我们几乎必须通过公理引入一个iscontr
类型的居民(这是他们在下面的幻灯片上对类型(x,α)所做的)。但我不知道这是如何排除A
类型的多个值的存在,在singleton
函数中列举为每个值生成a == x
。
(另外,我不会理解来自toposes,groupoids等的例子;所以很高兴看到基于幻灯片23之前引入的公理的简单推理的解释)
答案 0 :(得分:1)
或许说服你is-contr A
真正意味着A
只有一个居民的最佳方式是显示任何可缩小类型和单位类型之间的等价,如前面评论中所述。为此,我需要一些定义:
我们已经具有收缩性,但让我使用这个口袋版本:
is-contr : ∀ {a} (A : Set a) → Set _
is-contr A = Σ A λ a → ∀ x → a ≡ x
接下来:等价。我将使用HoTT书中使用的is-equiv
版本:
-- Homotopies.
infix 1 _~_
_~_ : ∀ {a b} {A : Set a} {B : A → Set b}
(f g : ∀ a → B a) → Set _
f ~ g = ∀ x → f x ≡ g x
-- Equivalence.
is-equiv : ∀ {a b} {A : Set a} {B : Set b}
(f : A → B) → Set _
is-equiv {A = A} {B = B} f
= (Σ (B → A) λ g → f ∘ g ~ id)
× (Σ (B → A) λ h → h ∘ f ~ id)
最后:
_≃_ : ∀ {a b} (A : Set a) (B : Set b) → Set _
A ≃ B = Σ (A → B) is-equiv
因此,如果函数f
同时具有左反转,则它是等价的。
这应该提醒你通常将等价(同构)定义为一对函数f
和g
,使得f ∘ g ~ id
和g ∘ f ~ id
,实际上,它是在逻辑上等同于上面的定义(参见本答复的评论以证明)。
无论如何,我们现在可以制定最终声明:
contr-≃⊤ : ∀ {a} {A : Set a} → is-contr A → A ≃ ⊤
证据很简单:
contr-≃⊤ : ∀ {a} {A : Set a} → is-contr A → A ≃ ⊤
contr-≃⊤ (a , p)
= (λ _ → tt)
, ((λ _ → a) , (λ _ → refl))
, ((λ _ → a) , p)
因此,我们的左右反向只是所选元素的常量函数(来自is-contr A
)。
连接性,如HoTT书中所定义(我希望unicode字符显示给你)
is-conn : ∀ {a} (A : Set a) → Set _
is-conn A = Σ A λ a → ∀ x → ∥ a ≡ x ∥
事实上,不能用于证明这种等价性。当您在p
证明中展开contr-≃⊤
时,可以最好地看到这一点:
contr-≃⊤ (a , p)
= (λ _ → tt)
, ((λ _ → a) , (λ _ → refl))
, ((λ _ → a) , (λ x → p x))
我们需要知道从a
到x
(即p x : a ≡ x
)的实际路径才能证明这一点。但是,∥ a ≡ x ∥
要弱得多 - 它只告诉我们这样的路径存在但不告诉我们路径是什么样的。
这也是类型理论选择定理(而不是公理)的原因。存在量化的建设性使证明变得微不足道。但是,如果你删除了有关实际居民的任何信息,只留下这样的事实,那么你就会得到通常的选择公理。如果需要,请查看HoTT书中的第3.7和3.8章。