首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Isabelle/Simpl:使用hoarestate进行类型统一失败

Isabelle/Simpl:使用hoarestate进行类型统一失败
EN

Stack Overflow用户
提问于 2020-07-02 21:02:08
回答 1查看 85关注 0票数 0

我开始使用Isabelle/Simpl,并根据用户指南编写了以下理论:

代码语言:javascript
复制
theory Scratch
  imports Simpl.Simpl
begin

hoarestate newvars =
  N :: nat

lemma (in newvars) "Γ ⊢ {} ´N :== ´N + 1 {}"
  sorry
end

但Isabelle抱怨类型统一失败:

代码语言:javascript
复制
Type unification failed

Type error in application: operator not of function type

Operator:  N_' :: 'a
Operand:   s :: ??'a

Simpl本身(包括它的用户指南)成功编译。我怎么才能让它通过呢?

EN

回答 1

Stack Overflow用户

发布于 2020-07-03 21:51:34

正如Javier Díaz指出的那样,只导入Simpl.Vcg而不是Simpl.Simpl就可以了。

错误的原因似乎是与Simpl.SyntaxTest中定义的记录的名称冲突。它包含以下记录定义:

代码语言:javascript
复制
record 'g vars = "'g state" +
  A_' :: "nat list"
  AA_' :: "nat list list"
  I_' :: nat
  M_' :: nat
  N_' :: nat
  R_' :: int
  S_' :: int
  B_' :: bool
  Abr_':: string
  p_' :: ref
  q_' :: ref

Isabelle似乎更喜欢记录中的N_'而不是hoarestate中的N,尽管hoarestate是在稍后定义的。我不知道为什么会这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62697006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档