Каждое определение и теорема в контексте локали генерирует глобальную версию. Вы можете получить доступ к этой глобальной версии (обобщенной по параметрам локали и расширенной с допущениями локали), используя locale_name.constant_name
или locale_name.theorem_name
. В вашем примере mylocale.thm
дает вам то, что вы хотите.
Если вам нужно несколько теорем без обобщения параметров локали, вы можете интерпретировать локаль в неназванном контексте, который зафиксировал параметры и принял предположения , Вот пример:
locale l = fixes a :: 'a assumes "a ~= undefined" begin
definition foo :: 'a where "foo = a"
lemma lem: "a = foo" by(simp add: foo_def)
end
thm l.lem (* a is generalized to ?a *)
consts bar :: nat
context assumes *: "bar ~= undefined" begin
interpretation bar: l bar by(fact bar)
thm lem (* a is instantiated with bar *)
end