Как выбрать текстовое представление переменных, принадлежащих какому-либо модулю? (См. Комментарии внутри кода ниже. Это похоже на нотацию для модулей.) Я хочу использовать его, потому что желательно видеть исходное значение терминов. (и разделять разные типы с той же реализацией: SetVars.t, FuncSymb.t, PredSymb.t и т. д.)
Require Import Coq.Structures.Equalities.
Require Import Arith.PeanoNat.
Module mod1 (SetVars : UsualDecidableTypeFull).
Definition h:SetVars.t->SetVars.t := fun x => x. (*example*)
End mod1.
Module mod2.
Module SetVars := PeanoNat.Nat.
Module X := mod1 SetVars.
Import X.
Theorem q:SetVars.t->SetVars.t.
Proof. exact h. Defined. (* Here everything is OK *)
Check h. (*"h : nat -> nat"*)
(*But I want to see "h:SetVars.t->SetVars.t"*)
End mod2.
1 ответ
Заменить
Module SetVars := PeanoNat.Nat.
С участием
Module SetVars : UsualDecidableTypeFull := PeanoNat.Nat.
Это делает модуль SetVars
непрозрачным, выставляя в точности сигнатуру UsualDecidableTypeFull
, так что тип SetVars.t -> SetVars.t
больше не может быть уменьшен.
Похожие вопросы
Новые вопросы
coq
Coq - это формальная система управления доказательствами, полуинтерактивный инструмент проверки теорем и функциональный язык программирования. Coq используется для верификации программного обеспечения, формализации языков программирования, формализации математических теорем, обучения и многого другого. В связи с интерактивной природой Coq, мы рекомендуем при необходимости ссылаться на ссылки на исполняемые примеры на https://x80.org/collacoq/.