根据Coq参考手册(8.5p1),我的印象是revert
与intro
相反,但在某种程度上generalize
也是如此。例如,下面的revert
和generalize dependent
似乎相同。
Goal forall x y: nat, 1 + x = 2 + y -> 1 + x + 5 = 7 + y.
intros x y. revert x y.
intros x y. generalize dependent y. generalize dependent x.
只是generalize
比revert
更强大吗?
此外,文档在解释有关generalize
:
这种策略适用于任何目标。它概括了结论 尊重某个词。
generalize
是否与lambda演算中的抽象运算符类似?
答案 0 :(得分:3)
是的,generalize
更强大。您通过使用revert
模拟revert
,证明它至少具有与generalize
相同的能力。
请注意,generalize
适用于任何条款,revert
- 仅适用于标识符。
例如,revert
无法执行手册中的示例:
x, y : nat ============================ 0 <= x + y + y Coq < generalize (x + y + y). 1 subgoal x, y : nat ============================ forall n : nat, 0 <= n
至于&#34;循环&#34;在定义中,真正的解释正好在示例下面:
如果目标是
G
且t
是目标中T
类型的子项,那么generalize t
将forall x:T, G0
替换为目标{}通过G0
替换G
的所有匹配项,从t
获取1}}。
基本上,这表示x
将您的目标包含在generalize
中,将一些字词替换为新变量(forall
)。
当然,x
应该谨慎使用,因为在使用它之后可能会得到一个虚假陈述:
generalize
答案 1 :(得分:1)
根据我的记忆,<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingBottom="5dp"`enter code here`
android:paddingLeft="5dp"
android:paddingRight="5dp">
<LinearLayout
android:background="@color/colorPrimary"
android:weightSum="10"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_weight="6"
android:id="@+id/startbtn"
android:textStyle="bold"
android:alpha="0.8"
android:textColor="#fff"
android:text="start"
android:layout_centerInParent="true"
android:background="@drawable/common_ic_googleplayservices"
android:layout_width="match_parent"
android:layout_height="150dp"/>
<LinearLayout
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:orientation="vertical"
android:layout_weight="3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="2">
<TextView
android:textColor="#fff"
android:id="@+id/tv_challange_title"
android:textSize="20sp"
android:text="Early-Bird Challange"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:id="@+id/tv_challange_desc"
android:alpha="0.5"
android:textColor="#000"
android:textSize="15sp"
android:layout_marginTop="5dp"
android:text="Take 100 steps five times within.. "
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
只是revert
的一种简单形式,通常更容易用于新手:它与generalize
相反。使用intro
的味道,你可以做更多的事情(尤其是术语和类型之间的依赖)。