一般的なパラメータNのための定義方法:nat、N個の要素の有限集合、$ A_ {0}、... A_ {N-1} $? 再帰的な定義でそれを行うためのエレガントな方法はありますか?誰かが私にそのような構造についての推論の良い例を指摘できますか?CoqでN個の要素の有限集合を定義するには?
1
A
答えて
5
A非常に便利なソリューションをレコードとしてn
番目序、'I_n
を定義することです:
Definition ordinal n := {
val :> nat;
_ : val < n;
}.
、自然数のペアを言うことです、プラス、このような自然数未満であることを証明n
、< : nat -> nat -> bool
です。計算可能な比較演算子を使用することは非常に便利です。特に、証明自体はあまり「重要」ではないことを意味します。これは通常あなたが望むものです。
これはmath-compで使用されるソリューションであり、そしてそれはあなたがあなたの新しいデータ型でnat
上で標準的な操作のほとんどを再利用できることを意味し、素敵な性質、val
の主単射、val_inj : injective val
を持っています。加算をadd i j := max n.-1 (i+j)
または(i+j) %% n
として定義することができます。
さらに、上記にリンクされたライブラリは、有限型を扱う一般的な定義を提供します。
+0
レコード序数nにしてはいけませんか? – jaam
関連する問題
- 1. typescriptで5要素の有限集合を定義するには?
- 2. 有限オートマトンCoqを定義する
- 3. Agdaの有限集合の定義
- 4. CoqのN個の要素のすべての関数を含む型
- 5. Coqの無限表現の有限部分集合を使った計算
- 6. 可能な入力の集合に対する制限付きのcoqにおける再帰関数定義
- 7. リストnをn個の要素で移動する方法
- 8. 最初の要素を共有する構造体の和集合は未定義の動作ですか?
- 9. 追加はn個の要素
- 10. 子要素をn個取得する
- 11. いくつかの方法で、n個の要素の集合からK個の要素を選んで数Xを形成できますか?
- 12. C++の配列のn個の要素
- 13. 集合Nからのk要素の組み合わせ
- 14. Java:ストリームソースの上位n個の要素
- 15. 最後のn個の要素
- 16. Iは、リチウムのn個を有する
- 17. MongoDB集約 - 個別のカウント固有の要素
- 18. PrologリストでN個の要素をスキップする
- 19. ダスクアレイのn個の個別の要素のスライシング
- 20. R:dplyr tibble内の特定の要素を中心とするn個の要素を抽出する
- 21. RxJava2のリストから一度にn個の要素を取る
- 22. CUDAを使ってM個の要素からN個の最大要素を得るにはどうすればいいですか?N << M?
- 23. 与えられたN個の要素を持つBSTを構築するのはO(n lg n)ですか?
- 24. リストの最後のN個の要素を削除する
- 25. 要素をN個のバケットに無作為に入れます
- 26. すでにn個の要素を含むバイナリヒープにn個の要素を挿入する漸近的な時間の複雑さ
- 27. RedisのリーダーボードをN個の要素に制限する方法はありますか?
- 28. MATLAB:マトリックスのn個のサブセットを定義する
- 29. n個の要素を含むベクトルからm個の要素をランダムに選択します。
- 30. MySql:少なくともN個の要素を取得する
再帰的な定義については、標準ライブラリの['Fin.t'](https://coq.inria.fr/library/Coq.Vectors.Fin.html#t)を参照してください。 –
はい、あります。そのような多数の依存関係がなくても、私はもっと単純なものを探しています – kakaz
「依存関係が大変」とは何ですか?申し訳ありませんが、私はフォローしていません。それは標準ライブラリにあります。モジュールをインポートしない場合は、定義をコピーできます。確かに、ejgallegoの提案とは異なり、使いやすいタイプではありません。 –