我已声明某个区域设置修复了多个内容,并尝试为第一个的状态声明声明一个新的区域设置。这是第一个语言环境:
locale presheaf = topology + Ring +
fixes
opcatopensets ::" ('a) PosetalCategory" and
objectsmap :: "'a set ⇒ ('a, 'm) Ring_scheme" and
restrictionsmap:: "('a set ×'a set) ⇒ ('a ⇒ 'a)"
assumes
"opcatopensets ≡ ⦇ Obj = {x. x ∈ T} , Mor = {(x,y)| x y. (x,y) ∈ revpo} ,
Dom = psheafdom , Cod = psheafcod , Id = psheafid , Comp = psheafcomp ⦈" and
"∀y w. w ≠ y ⟶ (psheafcomp (x,y) (w,z) = undefined)" and
"∀x. x ∉ T ⟶ (objectsmap x = undefined)" and
"∀x y.(restrictionsmap (x,y)) ∈ rHom (objectsmap x) (objectsmap y)" and
"∀ x y . (restrictionsmap (x,x) y = y) " and
"∀ x y z . ( (restrictionsmap (y,z))∘(restrictionsmap (x,y)) = restrictionsmap(x,z) )"
在本声明的最后,我得到以下输出:
locale presheaf =
fixes T :: "'a set set"
and R :: "('b, 'c) Ring_scheme"
and opcatopensets :: "'a PosetalCategory"
and objectsmap :: "'a set ⇒ ('a, 'm) Ring_scheme"
and restrictionsmap :: "'a set × 'a set ⇒ 'a ⇒ 'a"
assumes "presheaf T R opcatopensets objectsmap restrictionsmap"
所以我想我可以从最后一行中提取我需要的东西,以便定义一个涉及locale" presheaf"的两个实例的新语言环境。这就是我试过的:
locale sheafmorphism =
F: presheaf T R opcatopensets F restrictionsmap + G: presheaf T R opcatopensets
G restrictionsmap
for F and G +
fixes morphism :: "'a set ⇒ ('a ⇒ 'a)"
assumes (things)
简而言之,我想修复两个预设F和G然后修复此参数" morphism"并假设涉及" morphism"以及" restrictionsmap"和" objectsmap" F和G的这种尝试导致了:
表达式中的非法自由变量:" T"," R"," opcatopensets", " restrictionsmap"
我想当你想要实例化的语言环境修复不止一件事时,我不明白如何做到这一点。是什么导致了这个错误,我怎么能做我喜欢的事?
答案 0 :(得分:2)
您可以轻松地将多个区域设置实例组合到一个新实例中,但通常必须重命名区域设置的参数并使用for
相应地声明它们。在您的代码中,您只将参数objectsmap
分别重命名为F
和G
,并添加前缀F
和G
以引用这两个实例。但是,其他参数T
,R
,opcatopensets
和restrictionsmap
尚未重命名,并且在语言环境声明的for
子句中缺失。这就是错误消息的原因。所以你应该将它们添加到for
子句中,它应该可以工作。但是,区域设置的两个实例都将使用相同的T
,R
,opcatopensets
和restrictionsmap
。如果这不是你想要的,那么你也应该重命名它们。
例如,以下声明
locale sheafmorphism =
F: presheaf T1 R1 opcatopensets1 F restrictionsmap1 +
G: presheaf T2 R2 opcatopensets2 G restrictionsmap2
for T1 R1 opcatopensets1 F restrictionsmap1
T2 R2 opcatopensets2 G restrictionsmap2 +
fixes morphism :: "'a set ⇒ ('a ⇒ 'a)"
assumes ...
重命名两个实例的所有参数。相反,以下内容仅将态射重命名为F
和G
。
locale sheafmorphism =
F: presheaf T R opcatopensets F restrictionsmap +
G: presheaf T R opcatopensets G restrictionsmap
for T R opcatopensets F G restrictionsmap +
fixes morphism :: "'a set ⇒ ('a ⇒ 'a)"
assumes ...