Coqのモジュールから定義をインポートするのに問題があります。Coqは初めてですが、言語のリファレンスマニュアルまたはオンラインチュートリアルを使用して問題を解決できませんでした。有限集合の署名と公理を定義するモジュールがあり、これを別のモジュールに実装する予定です。それだけではありませんが、次のようになります(参考までに、有限オートマトンに関するFilliatreの論文を厳密にフォローしています)。
Module FinSet.
...
Parameter fset : Set -> Set.
Parameter member : forall A : Set, A -> finset A -> Prop.
Parameter emptyset : forall A : Set, fset A.
Parameter union : forall A : Set, fset A -> fset A -> fset A.
...
Axiom axiom_emptyset :
forall A : Set, forall a : A, ~ (member a (emptyset A)).
Axiom axiom_union :
forall A : Set, forall a b : fset A, forall x : A, i
member x (union a b) <-> (member x a) \/ (member x b).
...
End FinSet.
を使用してモジュールをコンパイルし、コマンドを使用して、またはなどcoqc
の別のモジュールにロードしようとします。モジュールをインポートしようとすると、Coq(Proof General経由)が警告を発行します。FinSetList
FinSetRBT
Require Import FinSet
Warning: trying to mask the absolute name "FinSet"!
さらに、で定義されているものが表示されませんFinSet
。あるモジュールから別のモジュールに定義(この場合は公理)をインポートするにはどうすればよいですか?私は基本的に、Pierceの「SoftwareFoundations」講義で概説されている手順に従いました。しかし、彼らは私のために働いていません。