在 COQ 中使用功能扩展性的缺点是什么

What is the downside of using functional extensionality in COQ

将公理添加到 COQ 通常会使证明更容易,但也会引入一些副作用。例如,通过使用 经典 公理,人们离开了直觉领域,证明不再是可计算的。我的问题是,使用 函数外延性 公理的缺点是什么?

对我来说,使用函数可扩展性的缺点与在 Coq 中使用任何其他公理或多或少相同:它增加了系统的复杂性以及我们需要信任的程度。尽管在理论上我们相当了解使用这些众所周知的公理的逻辑后果(例如,必须避免公理的哪些组合以确保一致性),但在实践中我们有时会措手不及。例如,recently found out 命题外延性 公理与 8.4 版中的 Coq 理论不一致,尽管人们普遍认为它是一致的。这个看似自然的公理只是说等价命题是相等的,并在许多 Coq 开发中被采用:

Axiom propositional_extensionality :
  forall P Q : Prop, (P <-> Q) -> P = Q.  

在回答 linked above 中,Andrej Bauer 认为这种脆弱性可能与这些没有计算规则的公理有关,这与 Coq 的其他理论相反。

除了这个一般性的评论之外,我还听到有人说默认情况下具有功能扩展性可能是不可取的,因为它等同于具有非常不同的计算行为的功能(例如,冒泡排序和快速排序),并且我们可能希望这些差异的原因。我个人不赞成这个论点,因为 Coq 已经等同了许多 values,它们的计算方式非常不同,例如 047^1729 - 47 mod 1729。我不知道不想承担功能扩展性的其他原因。