私は Agda を初めて使用し、Decidable
関数とDec
型を理解するために助けが必要です。
私は一次論理述語を定義しようとしていますが、ある種のブール値を証明してエンコードしたいと考えています。これを行う方法は Dec タイプを使用することです..
今、私が知る限り、これを行うには、すべての論理演算子をセット型ではなく決定可能な型に再定義する必要があります。そうするために、私はそれを新しい型に埋め込んだのです。これは、and 演算子に対して行った方法です。
data _∧_ (A B : Set) : Set where
_&_ : A → B → A ∧ B
Dec∧ : {A B : Set} → A ∧ B → Dec (A ∧ B)
Dec∧ A∧B = yes (A∧B)
それはそれを行う方法ですか、それとも別の方法がありますか?
次に、この演算子を使用して Nat 値の関係を定義したいので、次のようにしました。
_◆_ : ℕ → ℕ → Dec∧ (Rel ℕ lzero) (ℕ → Set)
x ◆ y = (0 < x) ∧ (x ² ≡ 2 * y ²)
しかし、これは型エラーを与えます..
論理ステートメントを証明するためにそれを使用するチュートリアルまたは例に誰かが私Dec
を案内してくれれば幸いです..