Isabelle库包含类real_inner
和real_normed_vector
,后者在~~src/HOL/Library/Inner_Product.thy
中被声明为前者的子类。
现在,假设我们有一个语言环境
locale foo =
fixes goo :: "'a::{real_normed_vector} => bool"
并希望使用一些新常量扩展此语言环境,并同时将'a
的类型限制为real_inner
,如下所示:
locale extended = foo +
fixes ext :: "'a::{real_inner} => nat"
有办法做到这一点吗?尝试使用上面的示例执行此操作时,Isabelle会在'b::{real_normed_vector} => bool
中为goo提供extended
类型,而我需要类型'a::{real_inner} => bool
。
答案 0 :(得分:3)
你可以这样做:
locale extended = foo goo
for goo :: "'a :: real_inner ⇒ bool" +
fixes ext :: "'a => nat"