지연 생성자가없는 CoList을 정의하려고합니다. with 표현식을 사용하지만 agda가 하위 케이스의 유형을 수정하지 않는 문제가 발생했습니다. module Failing where
open import Data.Unit
open import Data.Empty
open import Data.Maybe
open import Data.Nat
op
저는 Agda 언어가 처음이고 Agda를 사용하여 공식 언어를 연구 중입니다. 언어의 연결이 연관성이 있음을 증명할 때 몇 가지 문제가 있습니다. LangAssoc : ∀{Σ}{l1 l2 l3 : Language Σ}{w : Word Σ} → (LangConc l1 (LangConc l2 l3)) w → (LangConc (LangConc l1 l2) l3
Data.Vec이 (가) 있으므로 Vec은 무엇인지 알고 있습니다. Nat와 Vec이 동형임을 증명하고 싶습니다. 내가 성공적으로 냇가 VEC로 변환 할 수 있습니다 증명하는 함수를 만들었습니다 : I는 해당 vec→ℕ을 쓰기 위해 노력하고있어 ℕ→vec : (n : ℕ) → Vec ⊤ n
ℕ→vec zero = []
ℕ→vec (suc a) = tt
이드리스에서 술어를 기반으로 요소를 제거하려면 filter, dropWhile, takeWhile이 있습니다. 그러나이 모든 함수는 종속 쌍 (n : Nat ** Vect n elem)을 반환합니다. Vect 유형으로 돌아 오는 기능이 있습니까? 내가 생각할 수있는 것을 들어 : 은 변환 후 길이 벡터를 나타내는 유형을 구현 Vect 에 의존 쌍의 변환은
(https://stackoverflow.com/a/37461290/2129302)에 대한 구현 (쇼를) 찾기 : mkStr : (Show a) => tensor shape a -> String
mkStr x = show x
하지만 그 대신이 : tensor : Vect n Nat -> Type -> Type
tensor [] a = a
tens
제목과 마찬가지로 말입니다. (Agda와 Coq)에 익숙한 다른 종속 시스템에서 벡터 유형은 Vect : Type -> Nat -> Type으로 정의됩니다. 색인 앞에 매개 변수를 두는 것이 나에게 의미가 있으며, 어쨌든 벡터 유형의 표준 인 것처럼 보입니다. Idris가 왜 Vect : Nat -> Type -> Type을 사용합니까?
의 발현을 감소 만들기, 나는 open import Data.Nat
open import Relation.Binary.PropositionalEquality
open import Relation.Nullary
foo : ℕ -> ℕ -> ℕ
foo x y with x ≟ y
foo x .x | yes refl = x
foo x y | no co
전 (coinductive) 유형을 시험해 보았고 자연수와 벡터 (유형에서 크기가 같은 목록)의 동시 유도 버전을 정의하기로 결정했습니다. 나는 그들과 같은 그래서 무한한 수의 정의 : CoInductive conat : Set :=
| cozero : conat
| cosuc : conat -> conat.
CoInductive covec (A :
에서 일반 목록을 얻기 나는 아래의 코드에서 볼 수 있듯이 Proxy 및 natVal를 사용하여 Integer에 Nat를 변환하는 방법을 발견했습니다 {-# LANGUAGE DataKinds #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Main where
import Data.Proxy (Proxy)
im
Agda 파일을 컴파일하려고하는데 표준 라이브러리를 찾는 데 문제가 있습니다. 문서 here을 보았습니다. 나는 그것을 설치하는 스택을 사용했습니다 : > which agda
/home/joey/.local/bin/agda
을 그리고 난 내 AGDA 디렉토리를 환경 변수를 설정 한 : 올바른 파일로 채워집니다 > echo $AGDA_DIR
/home