遅延コンストラクタなしでCoListを定義しようとしています。私はwith式を使用する問題に遭遇していますが、agdaはサブケースのタイプを洗練しません。 module Failing where
open import Data.Unit
open import Data.Empty
open import Data.Maybe
open import Data.Nat
open i
Agda標準ライブラリでは、我々はRawMonad、RawApplicative、などがあります。.. RawMonad : ∀ {f} → (Set f → Set f) → Set _
RawMonad M = RawIMonad {I = ⊤} (λ _ _ → M)
RawMonadZero : ∀ {f} → (Set f → Set f) → Set _
RawMonadZer
thisのドキュメントには、replaceを使用して証明を完成させる方法が記載されていますが、rewriteが使用されています。これはreplaceという文章砂糖のようです。私はそれを明示的に使用する方法を理解することに興味があります。 私が正しく理解していれば、反射性によって証明可能となり、k = plus k 0という証拠与えられ、S (plus k 0) = S (plus k 0)としてS
マイコード: law : ∀ a x → ((suc a) * (suc a) ÷ (suc a) ⟨ x ⟩) →ℕ ≡ (suc a , refl)
law a x = refl
(このコードはちょうど私の考えを説明し、それがコンパイルされません)私はあまりにも多くのsuc aがあると思うと、私は、suc aにのようなものを別名を与えたい: law : ∀ a x → ((s : suc
Agda Standard Libraryは、紙に書いたことと同様の方法で証明書を書くことができる演算子や、Haskellコミュニティでどのように教えられているかを書き出す演算子をエクスポートします。あなたはwith抽象化、rewriteまたはヘルパー補助を使用して目標を洗練することによって、「慣習的な」Agdaプルーフを幾分体系的なやり方で書くことができますが、等価推論プリミティブを使った証明が