1を構築するための標準ライブラリ、または簡単なワンライナーでベクトルのメンバーシップ関数があり、または私は機能を自分で書く必要があるのですか?
これはわかりません。 right notionsはそこにありますが、検索機能AFAICTはありません。私が残りの答えで説明するコマンドを使用しても結果は得られません。
Agdaで標準ライブラリをどのように学びますか?良いガイドやチュートリアル、またはホグルのようなツールがありますか?
emacsの内部では、C-c C-z
を使用してスコープ内の定義を検索できます。両方の識別子(型を記述した定義を選択します)と文字列リテラル(識別子にその文字列が含まれているものを選択します)を使用できます。
結果として、図書館を探索する1つの方法は、多くのモジュールをopen import
にして、慎重に選択したキーワードにC-c C-z
を使用することです。例えば。以下のモジュールで
module Explore where
open import Data.Nat
open import Data.Nat.Divisibility
open import Data.Nat.Properties
open import Data.Nat.Properties.Simple
キーストロークC-c C-z _*_ _+_ RET
リターン:
Definitions about _*_, _+_
+-*-suc : (m n : ℕ) → m * suc n .Agda.Builtin.Equality.≡ m + m * n
/-cong : {i j : ℕ} (k : ℕ) → i + k * i ∣ j + k * j → i ∣ j
distribʳ-*-+
: (m n o : ℕ) → (n + o) * m .Agda.Builtin.Equality.≡ n * m + o * m
im≡jm+n⇒[i∸j]m≡n
: (i j m n : ℕ) →
i * m .Agda.Builtin.Equality.≡ j * m + n →
(i ∸ j) * m .Agda.Builtin.Equality.≡ n
isCommutativeSemiring
: .Algebra.Structures.IsCommutativeSemiring
.Agda.Builtin.Equality._≡_ _+_ _*_ 0 1
nonZeroDivisor-lemma
: (m q : ℕ) (r : .Data.Fin.Fin (suc m)) →
.Data.Fin.toℕ r .Relation.Binary.Core.≢ 0 →
suc m ∣ .Data.Fin.toℕ r + q * suc m → .Data.Empty.⊥