src/Pure/Thy/export_theory.scala
changeset 75746 3513fdfeb4d8
parent 75739 5b37466c1463
child 75747 8dc9d979bbac
--- a/src/Pure/Thy/export_theory.scala	Wed Aug 03 12:25:37 2022 +0200
+++ b/src/Pure/Thy/export_theory.scala	Wed Aug 03 12:58:17 2022 +0200
@@ -33,10 +33,10 @@
     val thys =
       sessions_structure.build_requirements(List(session_name)).flatMap(session =>
         using(store.open_database(session)) { db =>
+          val provider = Export.Provider.database(db, store.cache, session)
           for (theory <- Export.read_theory_names(db, session))
           yield {
             progress.echo("Reading theory " + theory)
-            val provider = Export.Provider.database(db, store.cache, session, theory)
             read_theory(provider, session, theory, cache = cache)
           }
         })
@@ -110,7 +110,7 @@
   def read_theory_parents(provider: Export.Provider, theory_name: String): Option[List[String]] = {
     if (theory_name == Thy_Header.PURE) Some(Nil)
     else {
-      provider(Export.THEORY_PREFIX + "parents")
+      provider.focus(theory_name)(Export.THEORY_PREFIX + "parents")
         .map(entry => split_lines(entry.uncompressed.text))
     }
   }
@@ -124,25 +124,26 @@
     theory_name: String,
     cache: Term.Cache = Term.Cache.none
   ): Theory = {
+    val theory_provider = provider.focus(theory_name)
     val parents =
-      read_theory_parents(provider, theory_name) getOrElse
+      read_theory_parents(theory_provider, theory_name) getOrElse
         error("Missing theory export in session " + quote(session_name) + ": " + quote(theory_name))
     val theory =
       Theory(theory_name, parents,
-        read_types(provider),
-        read_consts(provider),
-        read_axioms(provider),
-        read_thms(provider),
-        read_classes(provider),
-        read_locales(provider),
-        read_locale_dependencies(provider),
-        read_classrel(provider),
-        read_arities(provider),
-        read_constdefs(provider),
-        read_typedefs(provider),
-        read_datatypes(provider),
-        read_spec_rules(provider),
-        read_others(provider))
+        read_types(theory_provider),
+        read_consts(theory_provider),
+        read_axioms(theory_provider),
+        read_thms(theory_provider),
+        read_classes(theory_provider),
+        read_locales(theory_provider),
+        read_locale_dependencies(theory_provider),
+        read_classrel(theory_provider),
+        read_arities(theory_provider),
+        read_constdefs(theory_provider),
+        read_typedefs(theory_provider),
+        read_datatypes(theory_provider),
+        read_spec_rules(theory_provider),
+        read_others(theory_provider))
     if (cache.no_cache) theory else theory.cache(cache)
   }
 
@@ -151,7 +152,7 @@
     val theory_name = Thy_Header.PURE
 
     using(store.open_database(session_name)) { db =>
-      val provider = Export.Provider.database(db, store.cache, session_name, theory_name)
+      val provider = Export.Provider.database(db, store.cache, session_name)
       read(provider, session_name, theory_name)
     }
   }