- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个目标,我想重写一个函数体,但是一些函数参数妨碍了重写。我用身份函数重新创建了这种情况。
如果函数是Defined
,那么它可以工作,但是当函数是一个参数,我有一个公理说明如何重写,我是无法重写。
我只能通过假设功能可扩展性来让它工作。是否可以在不假设功能可扩展性的情况下以某种方式重写?
Axiom functional_extensionality: forall {A B} (f g:A->B) , (forall x, f x = g x) -> f = g.
Variables A B : Type.
Variable f : A -> B.
Definition Id (x : B) := x. (* here my function is Defined *)
Goal (fun x => Id (f x)) = f. (* I'd like to rewrite inside the fun *)
Proof. auto. Qed. (* This works (eta reduction). *)
Variable Id' : B -> B. (* Here I don't have the function definition *)
Axiom ID : forall x, Id' x = x. (* only proof that it does the same thing *)
Goal (fun x => Id' (f x)) = f.
Proof.
rewrite ID. (* this doesnt work *)
eauto using functional_extensionality, ID. (* but this works *)
最佳答案
不幸的是,如果不假设功能可扩展性,就不可能证明这一点; Coq 要求 fun x => Id' (f x)) = fun x => f x
“定义地”成立。
这里的“定义上”是什么意思?简而言之,这意味着这两个术语在语法上 必须具有相同的范式。回想一下,在 Coq 中,每个项都有一个(主要)由 beta 缩减引起的范式。
然而,我们只知道 Id' x = x
“判断”。因此,Coq 无法执行归约 Id' x ~> x
,从而防止上述两项“定义上”变得相等。
这确实是 Coq 理论的局限性,据我所知,类型检查仍然是可判定的。
完成此证明的另一种方法是推导满足此等式的唯一函数是 fun x => x
(参数化)。这将为您提供一个假设 Hid: ID' = (fun x => x)
,您可以使用它来完成证明。不幸的是,Hid
在 Coq 内部是不可证明的。
关于Coq 功能扩展性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36224461/
下午好 我创建了一个将 Verilog 语言注册为有效内容类型的 visual studio 包。 我的语法高亮、大纲、智能缩进等都可以正常工作。 但是,我希望能够让 Visual Studio 通过
我处于工具窗口的焦点中。通过在 TreeView 节点上双击,光标必须移动到打开的源代码文档中的特定行。我通过调用 Edit.GoTo Line 命令解决了这个问题,如下所示: var command
我需要为自定义项目模板实现某种可扩展性。 打开 C# 代码文件,如果...: ...当前项目有一些特定的类型 ID。 ...代码文件是一个类,继承了一些具体的基类。 ...用户按下了 F5。 ...我
我已经阅读了大量关于 VS2010 中可扩展性故事的改进(即基于 MEF 等)的大量改进,但还没有弄脏我的手。我最近遇到了一个让我想深入研究的真实场景,但我很惊讶没有找到很多关于启动和运行我想要构建的
我的一位客户要求我们开发一个“VBA 宏”。然而,在 2010 年代,仍然使用这种过时的语言对我来说似乎很奇怪,我正在考虑尝试说服客户使用 VSTO dev。然而,由于我对这两个世界都是新手,我需要帮
我正在将 Git 集成添加到我的 Visual Studio 扩展 Diff All Files ,它允许快速比较(即比较)Team Explorer 窗口中的所有文件与以前的版本。我让它与 Git
我是一名优秀的程序员,十分优秀!