如何完成以下证明?
1 subgoals
IHt1 : {t' : some_type | something_using t'}
IHt2 : {t' : some_type | something_else_using t'}
______________________________________(1/1)
{t' : some_type | another_thing_involving t'}
我明白{x|P x}
符号是sig定义的简写,但我真的无法理解如何使用它。
答案 0 :(得分:2)
{x : D | P x}
直观地说是包含满足谓词D
的元素的域P
的子集。作为一个命题,如果该子集是非空的,即x0
中有证人D
,P x0
为真,则确实如此。
{x : D | P x}
类型的对象是包含元素x0 : D
和P x0
证明的对。当您查看{x : D | P x}
的定义时,这是可见的,sig (fun x:D => P x)
是Inductive sig (D:Type) (P:D -> Prop) : Type :=
exist : forall x:D, P x -> sig P.
D
构造函数的类型是依赖对类型;该对的第一个元素具有类型P x
,第二个元素具有x
类型,其中{x : D | P x}
是第一个元素。
要使用destruct
形式的假设,最基本的方法是使用x0 : D
策略将其分解为两个组成部分:证人H : P x0
和证明destruct IHt1.
1 subgoals
t' : some_type
H : something_using t'
IHt2 : {t'0 : some_type | something_else_using t'0}
______________________________________(1/1)
{t'0 : some_type | another_thing_involving t'0}
。
{x : D | P x}
为了证明exist
形式的目标,最基本的是使用exists u.
⋮
______________________________________(1/1)
another_thing_involving u
策略来介绍预期的见证。这留下了一个子目标,证明证人具有所需的财产。
{{1}}