2016-06-24 11 views
2

コック(8.5p1)は、いくつかのトラブルなど、次の例のように-(x + y)、などの「負」の表現を理解しているようです(-xとCoqIDEで(-(c+a))のための)エラー:コック:私が得た、上記の場合</p> <pre><code>Require Import ZArith. (* Open Scope Z_scope. *) Goal (forall x:Z, x + (-x) = 0) -> forall a b c:Z, a + b + c + (-(c+a)) = b. </code></pre> <p>:負の整数式の不明な解釈

Error: Unknown interpretation for notation "- _".

このエラーはなぜ起こるか私は混乱しています。また、私がコメントのようにOpen Scope Z_scope.を行うか、整数(Z)を有理数(Q)に置き換えると、エラーはなくなります。私には、ZQはネガを取るという点で同じでなければなりません。

これには理由がありますか?

+1

あなたは '(-x)'の部分は大丈夫であることを確認していますか?私は単に 'Goal(forall x:Z、x +(-x)= 0)'を実行すると同じエラーが発生します。 –

+0

@ MarkDickinsonあなたは正しいです。私はCoqIDEが2番目のインスタンスだけを強調しているのを見て、それが2番目の部分だと思った。私は私の質問を編集します。 – tinlyx

+1

奇妙な部分は、それが有権者と一緒に働くことです。どうやら 'Require Import QArith'は自動的に' Q_scope'スコープを開きます。これは私を驚かせます。 –

答えて

3

CoqのリファレンスマニュアルV8.5:

Remark: Open Scope and Close Scope do not survive the end of sections where they occur. When defined outside of a section, they are exported to the modules that import the module where they occur.

マークは彼のコメントで述べたように、Require Import QArith.Qscopeスコープ(セクションの外)を開きます。しかし、ZArithモジュールから輸出されたものは、ローカルでLocal Open Scope Z_scope.Z_scopeを開くか、最後にClose Scope Z_scope.を使用します。

Print Visibility.を使用すると、現在利用可能な表記法と開いているスコープを確認できます。

Require Import Coq.ZArith.ZArith. 
Print Visibility. 
(* does not show anything interesting *) 

別テイク:有理数のため

Require Import Coq.ZArith.ZArith. 
Open Scope Z_scope.  
Print Visibility. 
(* ... 
    Visible in scope Z_scope 
    ... 
    "- x" := Z.opp x (* that's what we want! *) 
*) 

そして今:

Require Import Coq.QArith.QArith. 
Print Visibility. 
(* ... 
    Visible in scope Q_scope 
    ... 
    "- x" := Qopp x 
*) 
関連する問題

 関連する問題