首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >软件基础阴影Ltac匹配符号

软件基础阴影Ltac匹配符号
EN

Stack Overflow用户
提问于 2015-04-17 02:00:07
回答 1查看 224关注 0票数 1

软件基础在几个符号中使用了|-。例如,在斯泰克

代码语言:javascript
复制
Reserved Notation "Gamma '|-' t '\in' T" (at level 40).

这会干扰Ltac匹配结构。例如,这是:

代码语言:javascript
复制
Ltac test :=
  match goal with
    H: _ |- _  => idtac
  end.

在Stlc之外工作很好,但是一旦定义了这个表示法,它就会失败,因为:

代码语言:javascript
复制
Toplevel input, characters 43-44:
Syntax error: "\in" expected after [constr:operconstr level 200] (in [constr:operconstr]).

除了更改Gamma '|-' t '\in' T表示法之外,还有什么可以做的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-17 02:18:38

据我所知,这里没有任何事情可以真正解决这个问题。Coq的可扩展解析器非常脆弱,这样的冲突可能导致某些事情变得无法解释。

解决办法是在模块中声明表示法:

代码语言:javascript
复制
(* Foo.v *)
Module MyNotation.

Reserved Notation "Gamma '|-' t '\in' T" (at level 40).

(* Include actual notation definition somewhere here *)

End MyNotation.

要使用表示法,只需导入模块:

代码语言:javascript
复制
(* Bar.v *)
Require Import Foo.

Import MyNotation.

Definition asdf := 4.

然后,您可以在其他地方使用FooBar,而不需要与ltac代码冲突符号:

代码语言:javascript
复制
(* Baz.v *)
Require Import Foo.
Require Import Bar.

Ltac test :=
  match goal with
  | H : _ |- _ => idtac
  end.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29688939

复制
相关文章

相似问题

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