Ich habe ein bestimmtes Gebietsschema deklariert, das mehrere Dinge behebt und versuche, ein neues Gebietsschema für Morphismen des ersten zu deklarieren. Hier ist der erste locale:Instanzen in Gebietsschema-Deklaration für 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))"
Am Ende dieser Erklärung, erhalte ich die folgende Ausgabe:
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"
Also dachte ich, ich von der letzten Zeile extrahieren konnte, was ich benötigen, um ein definieren neues Gebietsschema mit zwei Instanzen des Gebiets "presheaf" Das ist, was ich versuchte:
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)
Kurz gesagt, ich zwei presheaves F und G reparieren will und dann fix diesen Parameter „morphism“ und die Dinge übernehmen „morphism“ beteiligt und das „restrictionsmap“ und „objectsmap“ von F und G. Dieser Versuch von mir führte zu:
Illegal freien Variablen im Ausdruck: "T", "R", "opcatopensets", "restrictionsmap"
ich glaube, ich don‘ Ich verstehe, wie Sie dies tun, wenn das Gebietsschema, das Sie instantiieren möchten e behebt mehr als eine Sache. Was verursacht diesen Fehler und wie könnte ich tun, was ich möchte?
Danke dafür. Wie benenne ich Parameter in der "for" -Deklaration um? Angesichts dessen, was Sie gesagt haben, habe ich versucht zu schreiben "locale Sheafmorphism = F: presheaf TR opcatopenses F restrictionsmap + G: presheaf TR opcatopensets G restrictionsmap für TR opcatopensets F restrictionsmap und G + (...)", und das scheint zu haben Dieser Fehler wurde behoben, aber es wäre großartig, wenn man beispielsweise auf eine "F-Version" und eine "G" -Version von "restrictionsmap" verweisen könnte. –
Ich habe dem Post zwei Beispiele für das Umbenennen hinzugefügt. Weitere Erläuterungen finden Sie im Lernprogramm zu Gebietsschemata im Dokumentationsbereich. –