dependent-type

    2

    3答えて

    Data.Vecがあるので、私たちはVecが何であるかを知っています。 NatとVecが同型であることを証明したいと思います。 は私はNATがVecをに変換できることを証明機能正常に作成されました: ℕ→vec : (n : ℕ) → Vec ⊤ n ℕ→vec zero = [] ℕ→vec (suc a) = tt ∷ ℕ→vec a 私は、対応するvec→ℕを書くしようとしていたとき

    2

    1答えて

    次のスニペットのための(番組の)実装を(https://stackoverflow.com/a/37461290/2129302)から検索された: tensor : Vect n Nat -> Type -> Type tensor [] a = a tensor (m :: ms) a = Vect m (tensor ms a) 私は次のように定義したいと思います: mkStr :

    4

    1答えて

    同じ要素を必要な長さに達するまで繰り返すことによってhvectを生成する関数hpureを作成しようとしています。各要素は異なる型を持つことができます。例:引数がshowの場合、各要素はshow関数の特殊化になります。 hpure show : HVect [Int -> String, String -> String, SomeRandomShowableType -> String] これ

    1

    1答えて

    私はLean proof assistantを学習しています。 https://leanprover.github.io/theorem_proving_in_lean/inductive_types.htmlのエクササイズは、自然数の先行関数を定義することです。誰かが私を助けることができますか? open nat definition pred : ℕ → ℕ | zero := zer

    2

    1答えて

    私はコインシデンスタイプを試していましたし、自然数とベクトル(型のサイズがリスト)のコインシデンスバージョンを定義することに決めました。私は彼らとように無限の数に定義: CoInductive conat : Set := | cozero : conat | cosuc : conat -> conat. CoInductive covec (A : Set) : conat -> Se

    3

    1答えて

    から定期的にリストを取得する私はあなたが以下のコードで見ることができるようProxyとnatValを使用してIntegerにNatを変換する方法見つけた: {-# LANGUAGE DataKinds #-} {-# LANGUAGE ScopedTypeVariables #-} module Main where import Data.Proxy (Proxy) import D

    3

    1答えて

    Agdaファイルをコンパイルしようとしていますが、標準ライブラリを見つけることができません。私は文書hereを見ました。 私はそれをインストールするために、スタックを使用しました: > which agda /home/joey/.local/bin/agda そして、私は私のAgdaディレクトリの環境変数を設定しました:正しいファイルが格納されている > echo $AGDA_DIR /

    2

    2答えて

    遅延コンストラクタなしでCoListを定義しようとしています。私はwith式を使用する問題に遭遇していますが、agdaはサブケースのタイプを洗練しません。 module Failing where open import Data.Unit open import Data.Empty open import Data.Maybe open import Data.Nat open i

    3

    1答えて

    Idrisでは、述語に基づいて要素を削除したい場合、filter,dropWhile、takeWhileがあります。ただし、これらの関数はすべて、従属ペア(n : Nat ** Vect n elem)を返します。 Vectタイプとして返​​される関数はありますか?私は考えることができるものについては : 変換後の長さのベクトルを示すタイプを実装Vect に依存ペアに変換Hereのように、(私はど