[英]Can you enumerate all values of an inductive type in Coq?
有沒有辦法在 Coq 中枚舉有限歸納類型的值?
例如,考慮類型:
Inductive state := A | B | C | D | E.
有什么方法可以采用此定義並從中以編程方式訪問A
、 B
、 C
、 D
和E
? 我知道在證明中我可以使用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.