比较coq的功能
我想做一个coq中自然数比较的函数 我声明了一组包含sup,inf,egal的不变量比较coq的功能,coq,Coq,我想做一个coq中自然数比较的函数 我声明了一组包含sup,inf,egal的不变量 Inductive invr:Type:=inf | sup | egal. 我定义了一个函数 Definition comparaison (inv:invr)(a b:nat):bool:= match invr with |inf => if (a < b) then true else false |sup => if (a > b) then true els
Inductive invr:Type:=inf | sup | egal.
我定义了一个函数
Definition comparaison (inv:invr)(a b:nat):bool:=
match invr with
|inf => if (a < b) then true else false
|sup => if (a > b) then true else false
|egal=> if (a = b) then true else false
end.
定义比较(inv:invr)(a b:nat):bool:=
匹配invr
|inf=>如果(a如果(a>b),则为真,否则为假
|egal=>如果(a=b),则为true,否则为false
结束。
但它不起作用!谢谢你的回复 您试图将type(set)invr与其构造函数的值(而不是变量inv)匹配,因此会出现错误 术语“invr”的类型为“Set”,而预期的类型为“Set” “invr” 您需要对
inv
进行匹配,而不是invr
Definition comparaison (inv:invr)(a b:nat):bool:=
match inv with
|inf => if (a < b) then true else false
|sup => if (a > b) then true else false
|egal=> if (a = b) then true else false
end.
您试图将type(set)invr与其构造函数值(而不是变量inv)匹配,因此会出现错误 术语“invr”的类型为“Set”,而预期的类型为“Set” “invr” 您需要对
inv
进行匹配,而不是invr
Definition comparaison (inv:invr)(a b:nat):bool:=
match inv with
|inf => if (a < b) then true else false
|sup => if (a > b) then true else false
|egal=> if (a = b) then true else false
end.
这是一个典型的初学者错误
这是一个典型的初学者错误
“它不起作用”不是解释问题的正确方法。“它不起作用”不是解释问题的正确方法。
lt : nat -> nat -> Prop
beq_nat: nat -> nat -> bool
leb: nat -> nat -> bool
(* or the more informative versions which return proofs of what they decide *)
eq_nat_dec: forall n m : nat, {n = m} + {n <> m}
lt_dec: forall n m : nat, {n < m} + {~ n < m}
if beq_nat a b then true else false
beq_nat a b