COQ中的一個證明語句如下所示。如何在Coq語句中對給定集合進行證明
Require Import Vector.
Import VectorNotations.
Require Import Fin.
Definition v:=[1;2;3;4;5;6;7;8].
Lemma L: forall (x: Fin.t 8), (nth v x) > 0.
或者,假設你有一個數字給定的名單,你想證明,沒有數量在列表中出現兩次。
也許人們必須編寫一個引理類型的算法。但我不知道如何做到這一點。
順便說一句,它不是一個功課練習。
這很容易證明(在Coq或手中),因爲它只是一個特定的列表。你的最終目標是證明由別的東西產生的列表嗎?在這種情況下,您需要證明有關生成列表的代碼/函數/過程的內容。這就是它變得有趣的地方。 –
如果列表變得複雜,證明「手工」是不可能的。例如,考慮使用需要大型1000x1000矩陣作爲參數的COQ模型。必須確保矩陣具有完整的等級。假設您需要完整的排名屬性來驗證模型的屬性。當然可以用計算機代數系統檢查模型的每個單獨實例,並將「滿秩」屬性作爲模型的公理。但是,這有點奇怪... – Cryptostasis
我認爲問題在於COQ對依賴類型的歸納有一些限制。該網站http://homes.cs.washington.edu/~jrw12/dep-destruct.html試圖解釋它,但我有一些難以遵循他們的論點。 – Cryptostasis