小编Cry*_*sis的帖子

COQ中的Set究竟是什么

我仍然对COQ中排序Set的含义感到困惑.我何时使用Set,何时使用Type?

在Hott中,Set被定义为一种类型,其中身份证明是唯一的.但我认为在Coq中它有不同的解释.

type-theory coq

12
推荐指数
2
解决办法
1589
查看次数

被Coq进口混淆

有人可以告诉我之间的区别

  • Require 名字.
  • Require Import 名字.
  • Import 名称

?

import module coq

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

歧视策略如何运作?

我很好奇discriminate战术背后的策略是如何运作的.因此我做了一些实验.

首先是一个简单的归纳定义:

Inductive AB:=A|B.
Run Code Online (Sandbox Code Playgroud)

然后是一个简单的引理,可以通过discriminate策略证明:

Lemma l1: A=B -> False.
intro.
discriminate.
Defined.
Run Code Online (Sandbox Code Playgroud)

让我们看看证明的样子:

Print l1.

l1 = 
fun H : A = B =>
(fun H0 : False => False_ind False H0)
  (eq_ind A
     (fun e : AB => match e with
                    | A => True
                    | B => False
                    end) I B H)
     : A = B -> False
Run Code Online (Sandbox Code Playgroud)

这看起来相当复杂,我不明白这里发生了什么.因此,我试图更明确地证明相同的引理:

Lemma l2: A=B -> False.
apply (fun e:(A=B) => match e with end).
Defined. …
Run Code Online (Sandbox Code Playgroud)

coq coq-tactic

6
推荐指数
2
解决办法
649
查看次数

不同等式证明的示例

我在Coq中寻找一个不同的相等证明的例子.
这意味着:
给出一些类型T和两个元素x,y:T和两个样张p1,p2:x = y,其中p1 <> p2.

coq

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

简单策略在 COQ 中有什么作用

我想知道该simpl策略如何在 COQ 中发挥作用。
假设以下引理:

Parameter n:nat. 
Lemma test: S n + 0 = S (n+0).
Run Code Online (Sandbox Code Playgroud)

现在,simpl.战术产生

S (n + 0) = S (n + 0)
Run Code Online (Sandbox Code Playgroud)

我的理解是simpl执行一系列 cbv beta, delta, iota转换。我试过了,但无法获得与simpl. 基本问题是,在cbv delta展开之后,该plus术语一直在展开。我怎样才能去扩展它,即重新替换plus扩展定义的名称?
或者,谁能告诉我如何simpl通过手动执行更基本的策略来获得效果?

coq

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

在COQ中使用功能扩展的缺点是什么

将Axioms添加到COQ通常会使证明更容易,但也会引入一些副作用.例如,通过使用经典公理,人们离开了直觉主义领域,并且证明不再是可计算的.我的问题是,使用功能扩展性公理的缺点是什么?

coq

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

Prop 和 Type 的不同归纳原理

我注意到 Coq 综合了关于 Prop 和 Type 等式的不同归纳原理。有人对此有解释吗?

平等定义为

Inductive eq (A : Type) (x : A) : A -> Prop :=  eq_refl : x = x
Run Code Online (Sandbox Code Playgroud)

与之相关的归纳原理有以下类型:

eq_ind
 : forall (A : Type) (x : A) (P : A -> Prop),
   P x -> forall y : A, x = y -> P y
Run Code Online (Sandbox Code Playgroud)

现在让我们定义一个 eq 的 Type 挂件:

Inductive eqT {A:Type}(x:A):A->Type:= eqT_refl: eqT x x.
Run Code Online (Sandbox Code Playgroud)

自动生成归纳原理为

eqT_ind
 : forall (A : Type) (x : A) (P : forall a …
Run Code Online (Sandbox Code Playgroud)

coq

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

COQ和HOTT中等式定义的原因

在HOTT和COQ中,人们无法证明UIP,即
\ Prod_ {p:a = a} p = refl a

但是可以证明:
\ Prod_ {p:a = a}(a,p)=(a,refl a)

为什么定义它是这样的?是吗,因为人们希望有一个很好的同伦解释?或者这个定义有一些自然的,更深层次的原因吗?

equality coq homotopy-type-theory

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

不是 eq_refl 的 COQ 标识项

我仍然想知道eqCOQ 中相等类型的术语可以与eq_refl.

下面的术语是一个例子吗?

((fun x:nat => eq_refl x) 2).
Run Code Online (Sandbox Code Playgroud)

该术语在语法上与 不同eq_refl,但它计算为eq_refl。

是否存在不计算为的术语示例eq_refl?

PS 这不是作业问题;-)

equality coq

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

在 Coq 中证明共归纳惰性列表的相等性

我正在试验 Coq Coinductive 类型。我使用 Coq'Art 书(第 13.1.4 节)中的惰性列表类型:

Set Implicit Arguments.

CoInductive LList (A:Set) : Set :=
| LNil : LList A
| LCons : A -> LList A -> LList A.
Implicit Arguments LNil [A].

CoFixpoint LAppend (A:Set) (u v:LList A) : LList A :=
  match u with
  | LNil => v
  | LCons a u' => LCons a (LAppend u' v)
  end.
Run Code Online (Sandbox Code Playgroud)

为了匹配保护条件,我还使用了本书中的以下分解函数:

Definition LList_decomp (A:Set) (l:LList A) : LList A :=
  match l with
  | LNil => …
Run Code Online (Sandbox Code Playgroud)

coq lazy-sequences coinduction

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