[英]Using sets as hyphotesis and goal in COQ
怎樣才能像下面這樣證明?
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定義的簡寫,但我真的不明白如何使用它。
{x : D | P x}
{x : D | P x}
直覺上說,域D
的子集包含滿足謂詞P
的元素。 作為一個命題,如果那個子集是非空的,即在D
有一個見證人x0
使得P x0
為真,則為真。
{x : D | P x}
類型的對象 {x : D | P x}
是一對包含元素x0 : D
和P x0
的證明的對。 當您查看{x : D | P x}
的定義時,這是可見的{x : D | P x}
{x : D | P x}
,這是sig (fun 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}
{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}
{x : D | P x}
,最基本的是使用exist
策略來介紹預期的證人。 這留下了一個子目標,以證明證人具有所需的財產。
exists u.
⋮
______________________________________(1/1)
another_thing_involving u
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.