在coq中定义无向图的边

在coq中定义无向图的边,coq,Coq,因此,我试图在一个具有特定节点的无向加权图中定义边(在我的例子中,节点只是一个数字)。(nat)->前两个nat表示两个节点n1、n2,最后一个nat表示边缘权重。(边缘b/t n1和n2) 我的问题是IDK为什么会有错误。 下面是我的代码 Definition vertices := list(nat). Definition edges := list(nat*nat*nat). Definition Graph := (vertices,edges). Compute Graph. Co

因此,我试图在一个具有特定节点的无向加权图中定义边(在我的例子中,节点只是一个数字)。(nat)->前两个nat表示两个节点n1、n2,最后一个nat表示边缘权重。(边缘b/t n1和n2) 我的问题是IDK为什么会有错误。 下面是我的代码

Definition vertices := list(nat).
Definition edges := list(nat*nat*nat).
Definition Graph := (vertices,edges).

Compute Graph.
Compute edges.


Definition myEdges : edges := [(1,2,2);(1,3,2);(2,3,4)].
在最后一个命令上弹出错误消息:

错误消息:

术语“1”的类型为“nat” 而它应该具有类型“type”


有人能解释并帮助我吗???非常感谢

以下功能在我的计算机上运行:

Require Import Coq.Lists.List.
Import ListNotations.

Definition vertices := list(nat).
Definition edges := list(nat*nat*nat).
Definition Graph := (vertices,edges).

Compute Graph.
Compute edges.

Definition myEdges : edges := [(1,2,2);(1,3,2);(2,3,4)].

您是否忘记在代码片段中包含某些内容?

以下内容在我的计算机上运行:

Require Import Coq.Lists.List.
Import ListNotations.

Definition vertices := list(nat).
Definition edges := list(nat*nat*nat).
Definition Graph := (vertices,edges).

Compute Graph.
Compute edges.

Definition myEdges : edges := [(1,2,2);(1,3,2);(2,3,4)].
您是否忘记在代码段中包含某些内容?

这对
(1,1)
是一个值,实际上只是
对1
的一个符号。它是一个类型为
prod-nat-nat
的术语,具有替代符号
(nat*nat)
。所以
(nat*nat)
是一种类型,而不是一个值

因此,如果您想创建一个类型,请使用
*
,并且通常您还必须向Coq解释,您的意思不是
*
针对
nat
,而是
*
针对类型,您可以通过注释要使用的范围(“符号上下文”)来实现<代码>(nat*nat)%type

我想您要做的是将
Graph
定义为一个类型,然后您要使用
Graph
类型创建特定的图形实例作为值

如果要检查术语和类型,执行以下操作很有用

Set Printing All. 
Check (1,2).
打印出的术语没有任何符号。在这种情况下,它会打印

@pair nat nat (S O) (S (S O))
     : prod nat nat
(1,1)
是一个值,实际上只是对
对1
的一个符号。它是一个类型为
prod-nat-nat
的术语,具有替代符号
(nat*nat)
。所以
(nat*nat)
是一种类型,而不是一个值

因此,如果您想创建一个类型,请使用
*
,并且通常您还必须向Coq解释,您的意思不是
*
针对
nat
,而是
*
针对类型,您可以通过注释要使用的范围(“符号上下文”)来实现<代码>(nat*nat)%type

我想您要做的是将
Graph
定义为一个类型,然后您要使用
Graph
类型创建特定的图形实例作为值

如果要检查术语和类型,执行以下操作很有用

Set Printing All. 
Check (1,2).
打印出的术语没有任何符号。在这种情况下,它会打印

@pair nat nat (S O) (S (S O))
     : prod nat nat

是否应改为定义图:=(顶点、边)be
定义图:=顶点*边
?是否应改为定义图:=(顶点、边)be
定义图:=顶点*边