我想寫一個函數來計算Coq中的自然分割,並且由於它不是結構遞歸,所以我在定義它時遇到了一些麻煩。 我的代碼是: Inductive N : Set :=
| O : N
| S : N -> N.
Inductive Bool : Set :=
| True : Bool
| False : Bool.
Fixpoint sum (m :N) (n
Test-Driven Development with Idris的第9章介紹了以下數據類型和removeElem函數。 import Data.Vect
data MyElem : a -> Vect k a -> Type where
MyHere : MyElem x (x :: xs)
MyThere : (later : MyElem x xs) -> MyEl
有沒有什麼像simpl的戰術Program Fixpoint s? 特別是,如何證明下面的瑣碎陳述? Program Fixpoint bla (n:nat) {measure n} :=
match n with
| 0 => 0
| S n' => S (bla n')
end.
Lemma obvious: forall n, bla n = n.
induction n. r
我試圖計算奇偶校驗與半的地板一起,在自然數: data IsEven : Nat -> Nat -> Type where
Times2 : (n : Nat) -> IsEven (n + n) n
data IsOdd : Nat -> Nat -> Type where
Times2Plus1 : (n : Nat) -> IsOdd (S (n + n)) n
考慮下面的玩具表現爲無類型演算: Require Import String.
Open Scope string_scope.
Inductive term : Set :=
| Var : string -> term
| Abs : string -> term -> term
| App : term -> term -> term.
Fixpoint print (ter
我有以下代碼: module Test
data Nat' = S' Nat' | Z'
Num Nat' where
x * y = ?hole
x + y = ?hole
fromInteger x = if x < 1 then Z' else S' (fromInteger (x - 1))
我得到最後一行一條錯誤消息: Test.id