Isabelle的语言环境声明实例

时间:2016-07-13 15:53:32

标签: isabelle

我已声明某个区域设置修复了多个内容,并尝试为第一个的状态声明声明一个新的区域设置。这是第一个语言环境:

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"

我想当你想要实例化的语言环境修复不止一件事时,我不明白如何做到这一点。是什么导致了这个错误,我怎么能做我喜欢的事?

1 个答案:

答案 0 :(得分:2)

您可以轻松地将多个区域设置实例组合到一个新实例中,但通常必须重命名区域设置的参数并使用for相应地声明它们。在您的代码中,您只将参数objectsmap分别重命名为FG,并添加前缀FG以引用这两个实例。但是,其他参数TRopcatopensetsrestrictionsmap尚未重命名,并且在语言环境声明的for子句中缺失。这就是错误消息的原因。所以你应该将它们添加到for子句中,它应该可以工作。但是,区域设置的两个实例都将使用相同的TRopcatopensetsrestrictionsmap。如果这不是你想要的,那么你也应该重命名它们。

例如,以下声明

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 ...

重命名两个实例的所有参数。相反,以下内容仅将态射重命名为FG

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 ...