- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Coq Proof Assistant 来实现一个(小型)编程语言的模型(扩展了 Bruno De Fraine、Erik Ernst、Mario Südholt 对 Featherweight Java 的实现)。使用 induction
时不断出现的一件事策略是如何保留包装在类型构造函数中的信息。
我有一个子类型 Prop 实现为
Inductive sub_type : typ -> typ -> Prop :=
| st_refl : forall t, sub_type t t
| st_trans : forall t1 t2 t3, sub_type t1 t2 -> sub_type t2 t3 -> sub_type t1 t3
| st_extends : forall C D,
extends C D ->
sub_type (c_typ C) (c_typ D).
Hint Constructors sub_type.
extends
是Java中看到的类扩展机制,
typ
代表可用的两种不同类型,
Inductive typ : Set :=
| c_typ : cname -> typ
| r_typ : rname -> typ.
induction
时假设的策略,例如
H: sub_type (c_typ u) (c_typ v)
u : cname
v : cname
fsv : flds
H : sub_type (c_typ u) (c_typ v)
H0 : fields v fsv
============================
exists fs : flds, fields u (fsv ++ fs)
induction H.
丢弃有关
u
的所有信息和
v
.
st_refl
情况变成
u : cname
v : cname
fsv : flds
t : typ
H0 : fields v fsv
============================
exists fs : flds, fields u (fsv ++ fs)
u
和
v
与
typ
相关
H
中的构造函数,从而到
t
,丢失了。更糟糕的是,由于这个 Coq 无法看到
u
和
v
在这种情况下实际上必须相同。
inversion
时战术上
H
Coq 成功地看到了
u
和
v
是相同的。然而,这种策略在这里并不适用,因为我需要
induction
的归纳假设。生成证明
st_trans
和
st_extends
案件。
inversion
最好的战术?和
induction
在不破坏构造函数中包装内容的信息的情况下生成归纳假设并导出等式?或者,有没有办法手动获取我需要的信息?
info inversion H
和
info induction H
两者都表明许多转换是自动应用的(尤其是
inversion
)。这些促使我尝试使用
change
战术与
let ... in
build ,但没有任何进展。
最佳答案
当您需要归纳具有依赖类型 ( sub_type (c_typ u) (c_typ v)
) 且参数具有特定结构 ( c_typ u
) 的假设时,这是一个普遍问题。有一个通用的技巧,即有选择地将结构化参数重写为变量,保持环境中的相等性。
set (t1 := c_typ u) in H; assert (Eq1 : t1 = c_typ u) by reflexivity; clearbody t1.
set (t2 := c_typ u) in H; assert (Eq2 : t2 = c_typ u) by reflexivity; clearbody t2.
induction H. (*often "; try subst" or "; try rewrite Eq1; try rewrite Eq2" *).
remember term as ident in *goal_occurences*
.
Lemma subtype_r_left_equal :
forall r1 t2, sub_type (r_typ r1) t2 -> r_typ r1 = t2.
Proof.
intros.
remember (r_typ r1) as t1 in H.
induction H.
congruence.
solve [firstorder].
discriminate.
Qed.
Set
保持打字判断.将输入派生视为您正在推理的对象。我记得在类型推导中引入等式很方便的情况,这并不总是适用于
Prop
中的类型推导。 .
Problem.v
,这是反身性情况的证明。对于传递性,我怀疑您的归纳假设不够强。这可能是您简化问题的方式的副产品,尽管传递性通常确实需要令人惊讶的涉及归纳假设或引理。
Fact sub_type_fields: forall u v fsv,
sub_type (c_typ u) (c_typ v) -> fields v fsv ->
exists fs, fields u (fsv ++ fs).
Proof.
intros.
remember (c_typ u) as t1 in H.
remember (c_typ v) as t2 in H.
induction H.
(* case st_refl *)
assert (v = u). congruence. subst v t.
exists nil. rewrite <- app_nil_end. assumption.
(* case st_trans *)
subst t1 t3.
(* case st_extends *)
Admitted.
关于coq - 使用归纳法时保留信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4519692/
03-25 05:52:15.329 8029-8042/com.mgh.radio W/MediaPlayerNative: info/warning (703, 0) 03-25 05:52:15
我一直在 Internet 上到处寻找关于 FrameworkElementFactory 类的适当文档,但我似乎找不到有关它的适当教程或有用信息。 请问对这个问题了解更多的人可以给我更多的信息吗?这
我需要知道一个线程在进入等待状态之前如何将其ID发送到另一个线程。我想传递一个带有其ID的变量,但我不知道该怎么做。 最佳答案 如果只有一个线程及其父线程,则可以使用全局变量,因为它们在所有线程之间共
我正在尝试制作一个程序,该程序可以读取命令行上的所有单词,然后将其打印在新行上,而我想要做的是这样的: Some text: hello 但是相反,我得到了这样的东西: Some text: Hell
我有一个连接到rabbitmq服务器的python程序。当该程序启动时,它连接良好。但是当rabbitmq服务器重新启动时,我的程序无法重新连接到它,并留下错误“Socket已关闭”(由kombu产生
我正在设置CI / CD管道。部署步骤运行以下命令: kubectl apply -f manifest.yml --namespace kubectl rollout status Deploym
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
这是我在文件上运行 svn info 时输出的一部分: Last Changed Author: [user] Last Changed Rev: 269612 Last Changed Date:
所以我正在构建这个音乐应用程序,到目前为止它只扫描 SD 卡内的特定文件夹。这将返回路径,然后播放它们。 几个小时前我得知android系统中有一个媒体文件数据库所以 我想知道这个媒体文件数据库是否存
我正在绘制树形图,并且想知道如何绘制树类的相对百分比,即 A组=100 B地=30 C地=50 D 地 =20 然后,在图中,应该添加: A 组“50%” B 组“15%” 等在其“Group X”标
我正在构建一个社交网站,我想知道如何在用户首次登录时显示交互式教程和信息。比如只有在第一次登录时,用户才会被要求在他们的个人资料中填写更多信息。我怎样才能通过 php 和 mysql 实现这一点?例子
我是 java servlet 的新手。我研究了一些关于 servlet 的代码,但我真的很想知道更多基本的东西以及它是如何工作的。我只是想知道什么类型的 Material /内容可以从 java s
我想知道是否有办法为 user_id、sender_user_id 和 recipient_user_id 提供 name 信息来自 this fiddle 中的模式. 我现在唯一能想到的办法就是做这
这是我存储2个大学生信息的源代码。我想从输入中获取每个人的姓名、姓氏、ID 和 5 分,然后在输出中显示它们。我在输出中显示分数时遇到问题。 请帮忙 #include using namespace
假设我有一张带有条形图的图像,如下所示: 我想提取条形图和标签的值,除了训练 ML 模型之外,还有其他方法吗? 我有一堆图像,我为其生成了图表和一些描述。我目前正尝试仅从我能够做到的描述中提取信息,但
有没有办法从 GKTurnBasedParticipant 对象中检索玩家的名字?似乎除了根据类引用的难看的 playerID 之外,没有办法显示有关游戏玩家的相关信息。还是我遗漏了什么? 谢谢...
我有一个随机抛出“KeyNotFoundException”的 C# Silverlight 应用程序。我不知道找不到什么 key 。这让我想到了两个问题: KeyNotFoundException
本文实例为大家分享了ios获取本地音频文件的具体代码,供大家参考,具体内容如下 获取本地音频文件地址: ?
下面为大家介绍利用SQL查询语句获取Mysql数据库中表的表名,表描述、字段ID、字段名、数据类型、长度、精度、是否可以为null、默认值、是否自增、是否是主键、列描述 1、查询表信息(表名/表
问题 有没有办法获取代码中使用属性的位置,或声明成员变量的位置? 我不是在寻找解决此问题的方法,只是寻求一个简单的答案,无论这在技术上是否可行。 一些背景信息 我已经定义了一个属性,该属性使用提供给属
我是一名优秀的程序员,十分优秀!