簡體   English   中英

你能在 Coq 中枚舉一個歸納類型的所有值嗎?

[英]Can you enumerate all values of an inductive type in Coq?

有沒有辦法在 Coq 中枚舉有限歸納類型的值?

例如,考慮類型:

Inductive state := A | B | C | D | E.

有什么方法可以采用此定義並從中以編程方式訪問ABCDE 我知道在證明中我可以使用induction策略來證明每種情況,但我希望能夠遍歷類型的值。

這取決於您所說的“枚舉”是什么意思。 在數學組件庫中,有一個finType接口用於具有有限多個元素的類型 ( https://math-comp.github.io/htmldoc/mathcomp.ssreflect.fintype.html )。 如果T : finType ,術語enum T收集列表中T所有元素。

過去,您必須手動構建此接口的實例。 由於這個過程很乏味,我構建了一個來自動化它。 也許該庫對您的需求來說太過分了,但是有一些代碼可以根據其歸納原理推斷類型的所有構造函數。 如果您對此感興趣,我可以更詳細地解釋它的工作原理。

我也聽說 Ltac2 策略語言允許您訪問歸納類型的構造函數列表,但我不知道這是如何工作的......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM