将PVS转换为Coq

将PVS转换为Coq,coq,pvs,Coq,Pvs,我想将以下PV转换为Coq: 当typetrans具有type env->env->bool时,我将Coq代码编写如下: Definition trans := env -> env -> bool. Definition dseq (P Q : trans) : trans := fun s1 s2 => andb (P s1 s') (Q s' s2). 但是,我不知道如何在Coq中表示Exists(s:env)。这个定义的目的是存在一个满足(ps1s)和(pss

我想将以下PV转换为Coq:

当typetrans具有type env->env->bool时,我将Coq代码编写如下:

Definition trans := env -> env -> bool.

Definition dseq (P Q : trans) : trans :=
  fun s1 s2 => andb (P s1 s') (Q s' s2).
但是,我不知道如何在Coq中表示Exists(s:env)。这个定义的目的是存在一个满足(ps1s)和(pss2)的值s。我不想使用逻辑,因为我想证明以下定理:

Theorem dseq_comm:
  forall (F G H : trans), dseq (desq F G) H = dseq F (dseq G H).

很可能你想使用
Prop
而不是bool。然后你可以写:

Parameter env : Type.

Definition trans := env -> env -> Prop.

Definition dseq (P Q : trans) : trans :=
  fun s1 s2 => exists s', P s1 s' /\ Q s' s2.
你将能够证明

Theorem dseq_assoc:
  forall (F G H : trans), dseq (desq F G) H = dseq F (dseq G H).

如果你愿意假设。

很可能你想使用
道具而不是bool。然后你可以写:

Parameter env : Type.

Definition trans := env -> env -> Prop.

Definition dseq (P Q : trans) : trans :=
  fun s1 s2 => exists s', P s1 s' /\ Q s' s2.
你将能够证明

Theorem dseq_assoc:
  forall (F G H : trans), dseq (desq F G) H = dseq F (dseq G H).

如果你愿意假设。

命题扩展性在Coq中的地位如何?几年前,在Coq邮件列表上有这样一个讨论:[[Coq Club]命题扩展性在Coq中不一致]()。第一篇文章中的例子不再为Coq所接受,但它现在已经完全解决了吗?作为参考,请参阅和关于命题扩展性。AFAIK Coq应该与单价兼容(这意味着命题扩展性),所以我猜它已经被修复了?好的,是的,在V8.5beta1中,它似乎已经被修复,并且对固定点具有更严格的保护条件,我想知道[functional_extensionality]在这种情况下是否有用。我得到的子目标为(exists s s':env,(exists s'0:env,fs'0/\gs'0')/\hs'x0)=(exists s s':env,fs'/\(exists s s'0:env,gs'0/\hs'0 x0))@Gallais命题扩展性在Coq中的地位是什么?几年前,在Coq邮件列表上有这样一个讨论:[[Coq Club]命题扩展性在Coq中不一致]()。第一篇文章中的例子不再为Coq所接受,但它现在已经完全解决了吗?作为参考,请参阅和关于命题扩展性。AFAIK Coq应该与单价兼容(这意味着命题扩展性),所以我猜它已经被修复了?好的,是的,在V8.5beta1中,它似乎已经被修复,并且对固定点具有更严格的保护条件,我想知道[functional_extensionality]在这种情况下是否有用。我得到的子目标为(exists s s':env,(exists s'0:env,fs'0/\gs'0')/\hs'x0)=(exists s s':env,fs'/\(exists s s'0:env,gs'0/\hs'0 x0))@加拉斯