小编use*_*475的帖子

在Coq中使用存在证明定义常量

在证明存在性陈述之后,为该定理的某些见证者引入一个常数符号通常在符号上很方便。

作为一个简单的例子,编写起来要简单得多(以典型的数学符号表示)

?x. ? ? x.
Run Code Online (Sandbox Code Playgroud)

比写

?x. ?y. empty(y) and y ? x.
Run Code Online (Sandbox Code Playgroud)

我希望在Coq中复制这种效果。这是我遇到的基本情况以及导致错误的尝试(现在在真实的Coq代码中):

Variable A:Type.
Hypothesis inhabited: exists x:A, x=x.

Definition inhabitant:A.
  destruct inhabited.  
  (*Error: Case analysis on sort Type is not allowed for inductive definition ex.*)
Run Code Online (Sandbox Code Playgroud)

我想知道此错误消息的含义,以及是否有任何方法可以解决此问题。谢谢!

coq

5
推荐指数
1
解决办法
329
查看次数

标准库中inl和inr的注入性

在Coq标准库中我可以找到一个说明inlinr注射的引理吗?也就是说forall (A B : Type)(x y : A), inl B x = inl B y -> x = y,并且类似于右手情况.我自己没有问题证明这一点,但这些似乎是非常有用和重要的引理,我必须想象它们已经在某个地方的标准库中了.

coq

2
推荐指数
1
解决办法
261
查看次数

有没有办法控制GHC如何派生`Eq`实例?

假设我有一个包含10个元素的简单枚举类型:

data Test = A | B  | C | D | E | F | G | H | I | J
  deriving Eq
Run Code Online (Sandbox Code Playgroud)

GHC Eq按照您的预期派生实例:

==================== Derived instances ====================
Derived class instances:
  instance GHC.Classes.Eq Test.Test where
    (GHC.Classes.==) (Test.A) (Test.A) = GHC.Types.True
    (GHC.Classes.==) (Test.B) (Test.B) = GHC.Types.True
    (GHC.Classes.==) (Test.C) (Test.C) = GHC.Types.True
    (GHC.Classes.==) (Test.D) (Test.D) = GHC.Types.True
    (GHC.Classes.==) (Test.E) (Test.E) = GHC.Types.True
    (GHC.Classes.==) (Test.F) (Test.F) = GHC.Types.True
    (GHC.Classes.==) (Test.G) (Test.G) = GHC.Types.True
    (GHC.Classes.==) (Test.H) (Test.H) = GHC.Types.True
    (GHC.Classes.==) …
Run Code Online (Sandbox Code Playgroud)

haskell ghc

1
推荐指数
1
解决办法
81
查看次数

标签 统计

coq ×2

ghc ×1

haskell ×1