我有一個可以重寫lambda術語的小系統。它具有通常的(三個)確定性按值重寫規則。我沒有在這裏列出。證明一系列步驟終止
重寫模擬爲Step
從一個Term
到另一個。我也有可達項之間的關係,其中後者可以由第一個零或更多重寫步驟產生。
我現在想表明重寫終止(帶有值或卡住)。我已經刪除了細節,因爲我不認爲他們在這裏重要,但如果需要,我可以添加更多細節。
這裏是(在瀏覽器中或here CollaCoq)代碼:
Variable Term: Type.
Variable Step: Term -> Term -> Prop.
Inductive StarStep: Term -> Term -> Prop :=
| StepNone : forall t, StarStep t t
| StepOne : forall t t', Step t t' -> forall t'', StarStep t' t'' -> StarStep t t''.
Goal forall t : Term,
~ (forall t', StarStep t t' -> exists t'', Step t' t'') ->
exists t', StarStep t t' /\ forall t'', ~ Step t' t''.
所以,我想告訴
如果不是那「從所有到達的情況下,說明有可能 又一步「那麼存在可從
t
到達的狀態t'
,使得它是不可能從中走出來的。
我被困在如何繼續。我是否需要更多的信息,例如誘導或破壞(=個案分析)t
?當它被否定時,我該如何使用假設中的信息?
編輯:Here are more details about Term
and Step
注意,您可以'評論「PKGS:COQ-雷亞爾」 .'你collacoq文件的開頭,它將讓你不加載更多勒柯克庫必須重新實現字符串。 – ejgallego