diff --git a/algebra/agree.v b/algebra/agree.v
index e85de4ec8ac13b74c6554ae772723fca99e0a8e2..cbc33d2778183f684d53fb1b213fdea9b99a73b3 100644
--- a/algebra/agree.v
+++ b/algebra/agree.v
@@ -1,5 +1,5 @@
-Require Export algebra.cmra.
-Require Import algebra.functor.
+From algebra Require Export cmra.
+From algebra Require Import functor.
 Local Hint Extern 10 (_ ≤ _) => omega.
 
 Record agree (A : Type) : Type := Agree {
diff --git a/algebra/auth.v b/algebra/auth.v
index c640860684da91ce9dad33dc9a54e6591d192546..4c74e45e1445706a57544ca7dbaf0747849b21ec 100644
--- a/algebra/auth.v
+++ b/algebra/auth.v
@@ -1,5 +1,5 @@
-Require Export algebra.excl.
-Require Import algebra.functor.
+From algebra Require Export excl.
+From algebra Require Import functor.
 Local Arguments validN _ _ _ !_ /.
 
 Record auth (A : Type) : Type := Auth { authoritative : excl A ; own : A }.
diff --git a/algebra/base.v b/algebra/base.v
index 28ba9cc272f4d46bfecc870d7333bea6757ff535..413117f125b70d4bc1f640c181edf13882c52f4c 100644
--- a/algebra/base.v
+++ b/algebra/base.v
@@ -1,4 +1,5 @@
-Require Export mathcomp.ssreflect.ssreflect.
-Require Export prelude.prelude.
+From mathcomp.ssreflect Require Export ssreflect.
+From prelude Require Export prelude.
 Global Set Bullet Behavior "Strict Subproofs".
-Global Open Scope general_if_scope.
\ No newline at end of file
+Global Open Scope general_if_scope.
+Ltac done := prelude.tactics.done.
\ No newline at end of file
diff --git a/algebra/cmra.v b/algebra/cmra.v
index 934b59a5d10d952dbbf2250a57b9c574422a96f0..297c57f41c01ad120fde122451e5123ba50d742c 100644
--- a/algebra/cmra.v
+++ b/algebra/cmra.v
@@ -1,4 +1,4 @@
-Require Export algebra.cofe.
+From algebra Require Export cofe.
 
 Class Unit (A : Type) := unit : A → A.
 Instance: Params (@unit) 2.
diff --git a/algebra/cmra_big_op.v b/algebra/cmra_big_op.v
index 58dfbeaabfc16827abc02f2533e2714ae72c6a84..6c6da1654d40e2577a1313ba4992a6b92d2e2ab9 100644
--- a/algebra/cmra_big_op.v
+++ b/algebra/cmra_big_op.v
@@ -1,5 +1,5 @@
-Require Export algebra.cmra.
-Require Import prelude.fin_maps.
+From algebra Require Export cmra.
+From prelude Require Import fin_maps.
 
 Fixpoint big_op {A : cmraT} `{Empty A} (xs : list A) : A :=
   match xs with [] => ∅ | x :: xs => x ⋅ big_op xs end.
diff --git a/algebra/cmra_tactics.v b/algebra/cmra_tactics.v
index a9eb5bb43efd2e6867fca1fc2572254ebebbf319..2d82d3c9e522e89c1891d807dcdf57ed68466d9b 100644
--- a/algebra/cmra_tactics.v
+++ b/algebra/cmra_tactics.v
@@ -1,5 +1,5 @@
-Require Export algebra.cmra.
-Require Import algebra.cmra_big_op.
+From algebra Require Export cmra.
+From algebra Require Import cmra_big_op.
 
 (** * Simple solver for validity and inclusion by reflection *)
 Module ra_reflection. Section ra_reflection.
diff --git a/algebra/cofe.v b/algebra/cofe.v
index 6d318ba4feb5429c0a474dedba8d8e53b14dc997..baef71305e03f8dd404503878efef2616028616b 100644
--- a/algebra/cofe.v
+++ b/algebra/cofe.v
@@ -1,4 +1,4 @@
-Require Export algebra.base.
+From algebra Require Export base.
 
 (** Unbundeled version *)
 Class Dist A := dist : nat → relation A.
diff --git a/algebra/cofe_solver.v b/algebra/cofe_solver.v
index b9f8dbf5bfc81bb467783576391945edefea7dc4..39034e21ff12fd96b9a073519e5403ec7c707bcf 100644
--- a/algebra/cofe_solver.v
+++ b/algebra/cofe_solver.v
@@ -1,4 +1,4 @@
-Require Export algebra.cofe.
+From algebra Require Export cofe.
 
 Record solution (F : cofeT → cofeT → cofeT) := Solution {
   solution_car :> cofeT;
diff --git a/algebra/dra.v b/algebra/dra.v
index 625978f6329c9f9e0b5e7eb03214b798516d614a..703488cc5689635dfc7ac1c1eea77db10d16067f 100644
--- a/algebra/dra.v
+++ b/algebra/dra.v
@@ -1,4 +1,4 @@
-Require Export algebra.cmra.
+From algebra Require Export cmra.
 
 (** From disjoint pcm *)
 Record validity {A} (P : A → Prop) : Type := Validity {
diff --git a/algebra/excl.v b/algebra/excl.v
index e7023685ca3bfc3977fe76f98d3d1c9cfe8a3bf9..eea8b6b8f206226bac425b689f2b1f0b422e3438 100644
--- a/algebra/excl.v
+++ b/algebra/excl.v
@@ -1,5 +1,5 @@
-Require Export algebra.cmra.
-Require Import algebra.functor.
+From algebra Require Export cmra.
+From algebra Require Import functor.
 Local Arguments validN _ _ _ !_ /.
 Local Arguments valid _ _  !_ /.
 
diff --git a/algebra/fin_maps.v b/algebra/fin_maps.v
index f6410f94eee7c01443ba6de2aed2ac0bec53ce79..d7644a7a1060b1a9ee3033946beffff003ceb081 100644
--- a/algebra/fin_maps.v
+++ b/algebra/fin_maps.v
@@ -1,5 +1,6 @@
-Require Export algebra.cmra prelude.gmap algebra.option.
-Require Import algebra.functor.
+From algebra Require Export cmra option.
+From prelude Require Export gmap.
+From algebra Require Import functor.
 
 Section cofe.
 Context `{Countable K} {A : cofeT}.
diff --git a/algebra/functor.v b/algebra/functor.v
index 52740e5275f2e8741299f03a43312a391859448f..ecbd64bf15f551f25b8a769032085883e3ced447 100644
--- a/algebra/functor.v
+++ b/algebra/functor.v
@@ -1,4 +1,4 @@
-Require Export algebra.cmra.
+From algebra Require Export cmra.
 
 (** * Functors from COFE to CMRA *)
 (* TODO RJ: Maybe find a better name for this? It is not PL-specific any more. *)
diff --git a/algebra/iprod.v b/algebra/iprod.v
index ff77fd0aabfb4a6f8a24b8f41947927ac6670c11..4ccb30f08784903d97d3d3267e1943aba8a95759 100644
--- a/algebra/iprod.v
+++ b/algebra/iprod.v
@@ -1,5 +1,5 @@
-Require Export algebra.cmra.
-Require Import algebra.functor.
+From algebra Require Export cmra.
+From algebra Require Import functor.
 
 (** * Indexed product *)
 (** Need to put this in a definition to make canonical structures to work. *)
diff --git a/algebra/option.v b/algebra/option.v
index 11c3228fd98d9132de3d6aa0ecc08157318c186b..4dd6d58eedbc0f592fd3ef3f606305638362abd3 100644
--- a/algebra/option.v
+++ b/algebra/option.v
@@ -1,5 +1,5 @@
-Require Export algebra.cmra.
-Require Import algebra.functor.
+From algebra Require Export cmra.
+From algebra Require Import functor.
 
 (* COFE *)
 Section cofe.
diff --git a/algebra/sts.v b/algebra/sts.v
index af06fd1ee7be6a4f0720ed35986109ddb21f23af..2510deefe13d8b1993040432219a52bf25d3c5e9 100644
--- a/algebra/sts.v
+++ b/algebra/sts.v
@@ -1,5 +1,6 @@
-Require Export algebra.cmra.
-Require Import prelude.sets algebra.dra.
+From algebra Require Export cmra.
+From prelude Require Import sets.
+From algebra Require Import dra.
 Local Arguments valid _ _ !_ /.
 Local Arguments op _ _ !_ !_ /.
 Local Arguments unit _ _ !_ /.
diff --git a/algebra/upred.v b/algebra/upred.v
index 6a44e866ef17c08fefbcbf70f75eac0a05fa0ac5..98f1f38d30029048415a920640f3c04d4beee58f 100644
--- a/algebra/upred.v
+++ b/algebra/upred.v
@@ -1,4 +1,4 @@
-Require Export algebra.cmra.
+From algebra Require Export cmra.
 Local Hint Extern 1 (_ ≼ _) => etransitivity; [eassumption|].
 Local Hint Extern 1 (_ ≼ _) => etransitivity; [|eassumption].
 Local Hint Extern 10 (_ ≤ _) => omega.
diff --git a/heap_lang/derived.v b/heap_lang/derived.v
index 6ce1fad8eb0c1aa80266ac853771a209f5bfb78b..1f82dd016ffe20abdbc1e7f81608a6f65a486d58 100644
--- a/heap_lang/derived.v
+++ b/heap_lang/derived.v
@@ -1,4 +1,4 @@
-Require Export heap_lang.lifting.
+From heap_lang Require Export lifting.
 Import uPred.
 
 (** Define some derived forms, and derived lemmas about them. *)
diff --git a/heap_lang/heap_lang.v b/heap_lang/heap_lang.v
index be2503d780ad35a416a428a99ebe81745cabbf9b..276c0e200b3d7bae3a3b51155bd8283e39bb3925 100644
--- a/heap_lang/heap_lang.v
+++ b/heap_lang/heap_lang.v
@@ -1,5 +1,6 @@
-Require Export program_logic.language prelude.strings.
-Require Import prelude.gmap.
+From program_logic Require Export language.
+From prelude Require Export strings.
+From prelude Require Import gmap.
 
 Module heap_lang.
 Open Scope Z_scope.
diff --git a/heap_lang/lifting.v b/heap_lang/lifting.v
index a9597b39f9bc02898ff5abd4369f3fc02f33080b..918810a61b40346834ff684c7b5f1109793448c3 100644
--- a/heap_lang/lifting.v
+++ b/heap_lang/lifting.v
@@ -1,7 +1,8 @@
-Require Export program_logic.weakestpre heap_lang.heap_lang.
-Require Import program_logic.lifting.
-Require Import program_logic.ownership. (* for ownP *)
-Require Import heap_lang.tactics.
+From program_logic Require Export weakestpre.
+From heap_lang Require Export heap_lang.
+From program_logic Require Import lifting.
+From program_logic Require Import ownership. (* for ownP *)
+From heap_lang Require Import tactics.
 Export heap_lang. (* Prefer heap_lang names over language names. *)
 Import uPred.
 Local Hint Extern 0 (language.reducible _ _) => do_step ltac:(eauto 2).
diff --git a/heap_lang/notation.v b/heap_lang/notation.v
index fe4affa41bcc41cb728753ef38f8a45051cfbfc2..f4727ae5fb1e29b4e545d3ed6b24243ed1d1e6e5 100644
--- a/heap_lang/notation.v
+++ b/heap_lang/notation.v
@@ -1,4 +1,4 @@
-Require Export heap_lang.derived.
+From heap_lang Require Export derived.
 
 (* What about Arguments for hoare triples?. *)
 Arguments wp {_ _} _ _%L _.
@@ -62,4 +62,4 @@ Notation "'rec:' f x y := e" := (RecV f x (Lam y e%L))
 Notation "'rec:' f x y z := e" := (Rec f x (Lam y (Lam z e%L)))
   (at level 102, f, x, y, z at level 1, e at level 200) : lang_scope.
 Notation "'rec:' f x y z := e" := (RecV f x (Lam y (Lam z e%L)))
-  (at level 102, f, x, y, z at level 1, e at level 200) : lang_scope.
\ No newline at end of file
+  (at level 102, f, x, y, z at level 1, e at level 200) : lang_scope.
diff --git a/heap_lang/substitution.v b/heap_lang/substitution.v
index 74176c30ba507b28319d4ce16d09139740865031..aa17fa2c460a830cceb6268bdea9766b27500080 100644
--- a/heap_lang/substitution.v
+++ b/heap_lang/substitution.v
@@ -1,4 +1,4 @@
-Require Export heap_lang.derived.
+From heap_lang Require Export derived.
 
 (** We define an alternative notion of substitution [gsubst e x ev] that
 preserves the expression [e] syntactically in case the variable [x] does not
diff --git a/heap_lang/tactics.v b/heap_lang/tactics.v
index b870ff35c8cddd00a9136c71041e4e5ca27ecdb3..2f9f01103f619efcbe1337958be577954c0d9f2c 100644
--- a/heap_lang/tactics.v
+++ b/heap_lang/tactics.v
@@ -1,5 +1,5 @@
-Require Export heap_lang.heap_lang.
-Require Import prelude.fin_maps.
+From heap_lang Require Export heap_lang.
+From prelude Require Import fin_maps.
 Import heap_lang.
 
 (** The tactic [inv_step] performs inversion on hypotheses of the shape
diff --git a/heap_lang/tests.v b/heap_lang/tests.v
index 24e6b4792cbaaf5ad2d75e31be3b8729709c03b5..69b2fb035808362e40981b43e2d13d4844b36d86 100644
--- a/heap_lang/tests.v
+++ b/heap_lang/tests.v
@@ -1,5 +1,5 @@
 (** This file is essentially a bunch of testcases. *)
-Require Import program_logic.ownership.
+From program_logic Require Import ownership.
 From heap_lang Require Import substitution tactics notation.
 Import uPred.
 
diff --git a/prelude/base.v b/prelude/base.v
index f711649e7014bff9f132e3546a9b6df8753e904a..63ddc65098ed010a4007c896e2059016780385f5 100644
--- a/prelude/base.v
+++ b/prelude/base.v
@@ -7,7 +7,7 @@ structures. *)
 Global Generalizable All Variables.
 Global Set Automatic Coercions Import.
 Global Set Asymmetric Patterns.
-Require Export Morphisms RelationClasses List Bool Utf8 Program Setoid.
+From Coq Require Export Morphisms RelationClasses List Bool Utf8 Program Setoid.
 Obligation Tactic := idtac.
 
 (** * General *)
diff --git a/prelude/bsets.v b/prelude/bsets.v
index 87e1c50eaffba71dd7e8aa4ed35d953b7ad3d461..637666faa50bec73dc18f19f3cc764e63449eb93 100644
--- a/prelude/bsets.v
+++ b/prelude/bsets.v
@@ -1,7 +1,7 @@
 (* Copyright (c) 2012-2015, Robbert Krebbers. *)
 (* This file is distributed under the terms of the BSD license. *)
 (** This file implements bsets as functions into Prop. *)
-Require Export prelude.prelude.
+From prelude Require Export prelude.
 
 Record bset (A : Type) : Type := mkBSet { bset_car : A → bool }.
 Arguments mkBSet {_} _.
diff --git a/prelude/co_pset.v b/prelude/co_pset.v
index 3b49cb373059d3d8b1c1dda5aee2b73e14af5587..a09f063e5c86dea3bbf145dc60b6cb86cd3290cc 100644
--- a/prelude/co_pset.v
+++ b/prelude/co_pset.v
@@ -2,8 +2,8 @@
 (* This file is distributed under the terms of the BSD license. *)
 (** This files implements an efficient implementation of finite/cofinite sets
 of positive binary naturals [positive]. *)
-Require Export prelude.collections.
-Require Import prelude.pmap prelude.gmap prelude.mapset.
+From prelude Require Export collections.
+From prelude Require Import pmap gmap mapset.
 Local Open Scope positive_scope.
 
 (** * The tree data structure *)
diff --git a/prelude/collections.v b/prelude/collections.v
index b34b5cdc32165f44049f1b0eb4b7fb0c510a129c..afe28a10cd45c4f97003abb17b44e576dc474060 100644
--- a/prelude/collections.v
+++ b/prelude/collections.v
@@ -3,7 +3,7 @@
 (** This file collects definitions and theorems on collections. Most
 importantly, it implements some tactics to automatically solve goals involving
 collections. *)
-Require Export prelude.base prelude.tactics prelude.orders.
+From prelude Require Export base tactics orders.
 
 Instance collection_subseteq `{ElemOf A C} : SubsetEq C := λ X Y,
   ∀ x, x ∈ X → x ∈ Y.
diff --git a/prelude/countable.v b/prelude/countable.v
index 1635bac2995c67b00ab1cde29730f0d63e4f2d62..c897f823c93965d54a2a9fc6abf436cfb4afa2bf 100644
--- a/prelude/countable.v
+++ b/prelude/countable.v
@@ -1,6 +1,6 @@
 (* Copyright (c) 2012-2015, Robbert Krebbers. *)
 (* This file is distributed under the terms of the BSD license. *)
-Require Export prelude.list.
+From prelude Require Export list.
 Local Open Scope positive.
 
 Class Countable A `{∀ x y : A, Decision (x = y)} := {
diff --git a/prelude/decidable.v b/prelude/decidable.v
index 817357de205b1063d3b2454c72a9a5b4d2fcb5c6..3e453e93153d5a7d7b2a9ea2c4e66f4b813a6fef 100644
--- a/prelude/decidable.v
+++ b/prelude/decidable.v
@@ -3,7 +3,7 @@
 (** This file collects theorems, definitions, tactics, related to propositions
 with a decidable equality. Such propositions are collected by the [Decision]
 type class. *)
-Require Export prelude.proof_irrel.
+From prelude Require Export proof_irrel.
 
 Hint Extern 200 (Decision _) => progress (lazy beta) : typeclass_instances.
 
diff --git a/prelude/error.v b/prelude/error.v
index b2eb18522711f044d7ffeed32bc2d86f4860b10b..0802af3741f194500a5177c2469ddc609327ad78 100644
--- a/prelude/error.v
+++ b/prelude/error.v
@@ -1,6 +1,6 @@
 (* Copyright (c) 2012-2015, Robbert Krebbers. *)
 (* This file is distributed under the terms of the BSD license. *)
-Require Export prelude.list.
+From prelude Require Export list.
 
 Definition error (S E A : Type) : Type := S → E + (A * S).
 
diff --git a/prelude/fin_collections.v b/prelude/fin_collections.v
index 7fe2529002d66e54dfd9ef5eb0d1376fc485a107..db14b64b830e60eb662ef97688d9fba805aefeea 100644
--- a/prelude/fin_collections.v
+++ b/prelude/fin_collections.v
@@ -3,8 +3,9 @@
 (** This file collects definitions and theorems on finite collections. Most
 importantly, it implements a fold and size function and some useful induction
 principles on finite collections . *)
-Require Import Permutation prelude.relations prelude.listset.
-Require Export prelude.numbers prelude.collections.
+From Coq Require Import Permutation.
+From prelude Require Import relations listset.
+From prelude Require Export numbers collections.
 
 Instance collection_size `{Elements A C} : Size C := length ∘ elements.
 Definition collection_fold `{Elements A C} {B}
diff --git a/prelude/fin_map_dom.v b/prelude/fin_map_dom.v
index 7c4e76974aeb81104a670882203b2ecaef846b60..66e2da56861bae04155534a6f0a07d7cbe92e861 100644
--- a/prelude/fin_map_dom.v
+++ b/prelude/fin_map_dom.v
@@ -3,7 +3,7 @@
 (** This file provides an axiomatization of the domain function of finite
 maps. We provide such an axiomatization, instead of implementing the domain
 function in a generic way, to allow more efficient implementations. *)
-Require Export prelude.collections prelude.fin_maps.
+From prelude Require Export collections fin_maps.
 
 Class FinMapDom K M D `{FMap M,
     ∀ A, Lookup K A (M A), ∀ A, Empty (M A), ∀ A, PartialAlter K A (M A),
diff --git a/prelude/fin_maps.v b/prelude/fin_maps.v
index 9ed4f6986413411e56105cccc07f146e53852ce0..6312bfbb0b1fd3314f121e645e240fb6755a4c33 100644
--- a/prelude/fin_maps.v
+++ b/prelude/fin_maps.v
@@ -4,8 +4,8 @@
 finite maps and collects some theory on it. Most importantly, it proves useful
 induction principles for finite maps and implements the tactic
 [simplify_map_equality] to simplify goals involving finite maps. *)
-Require Import Permutation.
-Require Export prelude.relations prelude.vector prelude.orders.
+From Coq Require Import Permutation.
+From prelude Require Export relations vector orders.
 
 (** * Axiomatization of finite maps *)
 (** We require Leibniz equality to be extensional on finite maps. This of
diff --git a/prelude/finite.v b/prelude/finite.v
index a529a1a040d7aeedf44ac7736e61a18ef337a88d..98a5602cd74596153fe40d7051f8fb334437875c 100644
--- a/prelude/finite.v
+++ b/prelude/finite.v
@@ -1,6 +1,6 @@
 (* Copyright (c) 2012-2015, Robbert Krebbers. *)
 (* This file is distributed under the terms of the BSD license. *)
-Require Export prelude.countable prelude.list.
+From prelude Require Export countable list.
 
 Class Finite A `{∀ x y : A, Decision (x = y)} := {
   enum : list A;
diff --git a/prelude/gmap.v b/prelude/gmap.v
index a3466c307cd76edcf60291c4f6e04c7eee7bf1a3..88fa0ac29f01096271b5a25aaee5877755870be5 100644
--- a/prelude/gmap.v
+++ b/prelude/gmap.v
@@ -2,8 +2,8 @@
 (* This file is distributed under the terms of the BSD license. *)
 (** This file implements finite maps and finite sets with keys of any countable
 type. The implementation is based on [Pmap]s, radix-2 search trees. *)
-Require Export prelude.countable prelude.fin_maps prelude.fin_map_dom.
-Require Import prelude.pmap prelude.mapset.
+From prelude Require Export countable fin_maps fin_map_dom.
+From prelude Require Import pmap mapset.
 
 (** * The data structure *)
 (** We pack a [Pmap] together with a proof that ensures that all keys correspond
diff --git a/prelude/hashset.v b/prelude/hashset.v
index c6327dad01118aa1f8b86fd9ea91aa17e1fdd4ce..148d431b2842e0efc3e0b19d259979836c631a2c 100644
--- a/prelude/hashset.v
+++ b/prelude/hashset.v
@@ -3,8 +3,8 @@
 (** This file implements finite set using hash maps. Hash sets are represented
 using radix-2 search trees. Each hash bucket is thus indexed using an binary
 integer of type [Z], and contains an unordered list without duplicates. *)
-Require Export prelude.fin_maps prelude.listset.
-Require Import prelude.zmap.
+From prelude Require Export fin_maps listset.
+From prelude Require Import zmap.
 
 Record hashset {A} (hash : A → Z) := Hashset {
   hashset_car : Zmap (list A);
diff --git a/prelude/lexico.v b/prelude/lexico.v
index 31ddc33ba9194a8e9100381dd3af53672cfbaed4..c36833b9cbbae3c529d83929c4ee40db4b746b73 100644
--- a/prelude/lexico.v
+++ b/prelude/lexico.v
@@ -2,7 +2,7 @@
 (* This file is distributed under the terms of the BSD license. *)
 (** This files defines a lexicographic order on various common data structures
 and proves that it is a partial order having a strong variant of trichotomy. *)
-Require Import prelude.numbers.
+From prelude Require Import numbers.
 
 Notation cast_trichotomy T :=
   match T with
diff --git a/prelude/list.v b/prelude/list.v
index 34645eeb4909690a848d83e13bfa71310b0250c0..54fcb80194676f93f9bc8f586500fb8a6931ef63 100644
--- a/prelude/list.v
+++ b/prelude/list.v
@@ -2,8 +2,8 @@
 (* This file is distributed under the terms of the BSD license. *)
 (** This file collects general purpose definitions and theorems on lists that
 are not in the Coq standard library. *)
-Require Export Permutation.
-Require Export prelude.numbers prelude.base prelude.decidable prelude.option.
+From Coq Require Export Permutation.
+From prelude Require Export numbers base decidable option.
 
 Arguments length {_} _.
 Arguments cons {_} _ _.
diff --git a/prelude/listset.v b/prelude/listset.v
index 147715aa2814890804fbbccc81cffc867f46ca6f..d405dd4d19d2d3a8a5b6a191c8d26024fadeabdc 100644
--- a/prelude/listset.v
+++ b/prelude/listset.v
@@ -2,7 +2,7 @@
 (* This file is distributed under the terms of the BSD license. *)
 (** This file implements finite set as unordered lists without duplicates
 removed. This implementation forms a monad. *)
-Require Export prelude.base prelude.decidable prelude.collections prelude.list.
+From prelude Require Export base decidable collections list.
 
 Record listset A := Listset { listset_car: list A }.
 Arguments listset_car {_} _.
diff --git a/prelude/listset_nodup.v b/prelude/listset_nodup.v
index ab4341a837bcff16421b1dc8a2958a5ca10fa5ed..b1094d4533e7dda687dde6c962b05aa38b97f4a4 100644
--- a/prelude/listset_nodup.v
+++ b/prelude/listset_nodup.v
@@ -3,7 +3,7 @@
 (** This file implements finite as unordered lists without duplicates.
 Although this implementation is slow, it is very useful as decidable equality
 is the only constraint on the carrier set. *)
-Require Export prelude.base prelude.decidable prelude.collections prelude.list.
+From prelude Require Export base decidable collections list.
 
 Record listset_nodup A := ListsetNoDup {
   listset_nodup_car : list A; listset_nodup_prf : NoDup listset_nodup_car
diff --git a/prelude/mapset.v b/prelude/mapset.v
index 317b6fc7b7295ee1a802e1ffb8fe5803de9ee3a0..630e4054735d677e56ae2d3e5259f8350d624e33 100644
--- a/prelude/mapset.v
+++ b/prelude/mapset.v
@@ -3,7 +3,7 @@
 (** This files gives an implementation of finite sets using finite maps with
 elements of the unit type. Since maps enjoy extensional equality, the
 constructed finite sets do so as well. *)
-Require Export prelude.fin_map_dom.
+From prelude Require Export fin_map_dom.
 
 Record mapset (M : Type → Type) : Type :=
   Mapset { mapset_car: M (unit : Type) }.
diff --git a/prelude/natmap.v b/prelude/natmap.v
index 309520af7969a9d98a271d83bfc578680560edb6..9f7b0a5f53af629cd0877663b4517c2faf8e2e5b 100644
--- a/prelude/natmap.v
+++ b/prelude/natmap.v
@@ -3,7 +3,7 @@
 (** This files implements a type [natmap A] of finite maps whose keys range
 over Coq's data type of unary natural numbers [nat]. The implementation equips
 a list with a proof of canonicity. *)
-Require Import prelude.fin_maps prelude.mapset.
+From prelude Require Import fin_maps mapset.
 
 Notation natmap_raw A := (list (option A)).
 Definition natmap_wf {A} (l : natmap_raw A) :=
diff --git a/prelude/nmap.v b/prelude/nmap.v
index 1adc1a636600c5cf8f45062e781b11b323879092..85d518d50f2ead89535480611ce37cbb62bbedd2 100644
--- a/prelude/nmap.v
+++ b/prelude/nmap.v
@@ -2,8 +2,8 @@
 (* This file is distributed under the terms of the BSD license. *)
 (** This files extends the implementation of finite over [positive] to finite
 maps whose keys range over Coq's data type of binary naturals [N]. *)
-Require Import prelude.pmap prelude.mapset.
-Require Export prelude.prelude prelude.fin_maps.
+From prelude Require Import pmap mapset.
+From prelude Require Export prelude fin_maps.
 
 Local Open Scope N_scope.
 
diff --git a/prelude/numbers.v b/prelude/numbers.v
index e2e728b3ffc7c56126783c42c4033561dcdb1115..2c9cf5673342a55aefa273d5e7cf7c7e809fe41e 100644
--- a/prelude/numbers.v
+++ b/prelude/numbers.v
@@ -3,9 +3,9 @@
 (** This file collects some trivial facts on the Coq types [nat] and [N] for
 natural numbers, and the type [Z] for integers. It also declares some useful
 notations. *)
-Require Export Eqdep PArith NArith ZArith NPeano.
-Require Import QArith Qcanon.
-Require Export prelude.base prelude.decidable prelude.option.
+From Coq Require Export Eqdep PArith NArith ZArith NPeano.
+From Coq Require Import QArith Qcanon.
+From prelude Require Export base decidable option.
 Open Scope nat_scope.
 
 Coercion Z.of_nat : nat >-> Z.
@@ -50,7 +50,7 @@ Proof.
     * clear nat_le_pi. intros; exfalso; auto with lia.
     * injection 1. intros Hy. by case (nat_le_pi x y p y' q Hy). }
   intros x y p q.
-  by apply (eq_dep_eq_dec (λ x y, decide (x = y))), aux.
+  by apply (Eqdep_dec.eq_dep_eq_dec (λ x y, decide (x = y))), aux.
 Qed.
 Instance nat_lt_pi: ∀ x y : nat, ProofIrrel (x < y).
 Proof. apply _. Qed.
diff --git a/prelude/option.v b/prelude/option.v
index f6e217602c1ec45725c6192d87cfd5c5d4f18f1e..ac0b1ed7104f593ac9668f62a17f263f0c353236 100644
--- a/prelude/option.v
+++ b/prelude/option.v
@@ -2,7 +2,7 @@
 (* This file is distributed under the terms of the BSD license. *)
 (** This file collects general purpose definitions and theorems on the option
 data type that are not in the Coq standard library. *)
-Require Export prelude.base prelude.tactics prelude.decidable.
+From prelude Require Export base tactics decidable.
 
 Inductive option_reflect {A} (P : A → Prop) (Q : Prop) : option A → Type :=
   | ReflectSome x : P x → option_reflect P Q (Some x)
diff --git a/prelude/orders.v b/prelude/orders.v
index 2203764820e562bfe45d07183b24bd03b5003f2f..100ae33527bcc9b58d413ace322ad3564a6d0466 100644
--- a/prelude/orders.v
+++ b/prelude/orders.v
@@ -2,8 +2,8 @@
 (* This file is distributed under the terms of the BSD license. *)
 (** This file collects common properties of pre-orders and semi lattices. This
 theory will mainly be used for the theory on collections and finite maps. *)
-Require Export Sorted.
-Require Export prelude.base prelude.decidable prelude.tactics prelude.list.
+From Coq Require Export Sorted.
+From prelude Require Export base decidable tactics list.
 
 (** * Arbitrary pre-, parial and total orders *)
 (** Properties about arbitrary pre-, partial, and total orders. We do not use
diff --git a/prelude/pmap.v b/prelude/pmap.v
index 00cd7e874b9352e3c70555374a3070de2a2c2b14..700b3df162754d74c8db018ca1123161f97a6adf 100644
--- a/prelude/pmap.v
+++ b/prelude/pmap.v
@@ -7,8 +7,9 @@ trees (uncompressed Patricia trees) and guarantees logarithmic-time operations.
 However, we extend Leroy's implementation by packing the trees into a Sigma
 type such that canonicity of representation is ensured. This is necesarry for
 Leibniz equality to become extensional. *)
-Require Import PArith prelude.mapset.
-Require Export prelude.fin_maps.
+From Coq Require Import PArith.
+From prelude Require Import mapset.
+From prelude Require Export fin_maps.
 
 Local Open Scope positive_scope.
 Local Hint Extern 0 (@eq positive _ _) => congruence.
diff --git a/prelude/prelude.v b/prelude/prelude.v
index 020b6535b59d0ef3cb41240e9b465d2c2c36fa3d..3ffdba617e4dd535d85b9cabab16a086a9c8a5cc 100644
--- a/prelude/prelude.v
+++ b/prelude/prelude.v
@@ -1,16 +1,16 @@
 (* Copyright (c) 2012-2015, Robbert Krebbers. *)
 (* This file is distributed under the terms of the BSD license. *)
-Require Export
-  prelude.base
-  prelude.tactics
-  prelude.decidable
-  prelude.orders
-  prelude.option
-  prelude.vector
-  prelude.numbers
-  prelude.relations
-  prelude.collections
-  prelude.fin_collections
-  prelude.listset
-  prelude.list
-  prelude.lexico.
+From prelude Require Export
+  base
+  tactics
+  decidable
+  orders
+  option
+  vector
+  numbers
+  relations
+  collections
+  fin_collections
+  listset
+  list
+  lexico.
diff --git a/prelude/pretty.v b/prelude/pretty.v
index b246ec428a2cfb16d918d51ed796d59efc90e10b..ac069b813e53e2c5a58671e725aefbc4e768a7c7 100644
--- a/prelude/pretty.v
+++ b/prelude/pretty.v
@@ -1,8 +1,8 @@
 (* Copyright (c) 2012-2015, Robbert Krebbers. *)
 (* This file is distributed under the terms of the BSD license. *)
-Require Export prelude.strings.
-Require Import prelude.relations.
-Require Import Ascii.
+From prelude Require Export strings.
+From prelude Require Import relations.
+From Coq Require Import Ascii.
 
 Class Pretty A := pretty : A → string.
 Definition pretty_N_char (x : N) : ascii :=
diff --git a/prelude/proof_irrel.v b/prelude/proof_irrel.v
index d1eab74108d6ae67712723a6bbbc4dbcd1eea6a2..7aebbb8627b30505dc50b241b49005a33f4bb054 100644
--- a/prelude/proof_irrel.v
+++ b/prelude/proof_irrel.v
@@ -1,7 +1,8 @@
 (* Copyright (c) 2012-2015, Robbert Krebbers. *)
 (* This file is distributed under the terms of the BSD license. *)
 (** This file collects facts on proof irrelevant types/propositions. *)
-Require Export Eqdep_dec prelude.tactics.
+From Coq Require Import Eqdep_dec.
+From prelude Require Export tactics.
 
 Hint Extern 200 (ProofIrrel _) => progress (lazy beta) : typeclass_instances.
 
diff --git a/prelude/relations.v b/prelude/relations.v
index cd81c198f12413881742bf04fc758313e5ca68bc..776da9914d86a464472a2fad2074911705932764 100644
--- a/prelude/relations.v
+++ b/prelude/relations.v
@@ -4,8 +4,8 @@
 These are particularly useful as we define the operational semantics as a
 small step semantics. This file defines a hint database [ars] containing
 some theorems on abstract rewriting systems. *)
-Require Import Wf_nat.
-Require Export prelude.tactics prelude.base.
+From Coq Require Import Wf_nat.
+From prelude Require Export tactics base.
 
 (** * Definitions *)
 Section definitions.
diff --git a/prelude/sets.v b/prelude/sets.v
index bd80b8eeb58b3374962750361f4591785cf0210d..ada3a408add66ba944c0b9e9fcc541ba60e80e91 100644
--- a/prelude/sets.v
+++ b/prelude/sets.v
@@ -1,7 +1,7 @@
 (* Copyright (c) 2012-2015, Robbert Krebbers. *)
 (* This file is distributed under the terms of the BSD license. *)
 (** This file implements sets as functions into Prop. *)
-Require Export prelude.prelude.
+From prelude Require Export prelude.
 
 Record set (A : Type) : Type := mkSet { set_car : A → Prop }.
 Arguments mkSet {_} _.
diff --git a/prelude/streams.v b/prelude/streams.v
index c660562cf3debb5545aaa6f1b901877e30cd7e5d..cb8a1590304145d682fac5769b15e4f86c4ca230 100644
--- a/prelude/streams.v
+++ b/prelude/streams.v
@@ -1,6 +1,6 @@
 (* Copyright (c) 2012-2015, Robbert Krebbers. *)
 (* This file is distributed under the terms of the BSD license. *)
-Require Export prelude.tactics.
+From prelude Require Export tactics.
 
 CoInductive stream (A : Type) : Type := scons : A → stream A → stream A.
 Arguments scons {_} _ _.
diff --git a/prelude/stringmap.v b/prelude/stringmap.v
index 58c8862db6ee2fa19e0fa0622f26ffc496b49bd6..a3e90b3fb0d791c1647f348ab872df458d6e9555 100644
--- a/prelude/stringmap.v
+++ b/prelude/stringmap.v
@@ -4,8 +4,8 @@
 range over Coq's data type of strings [string]. The implementation uses radix-2
 search trees (uncompressed Patricia trees) as implemented in the file [pmap]
 and guarantees logarithmic-time operations. *)
-Require Export prelude.fin_maps prelude.pretty.
-Require Import prelude.gmap.
+From prelude Require Export fin_maps pretty.
+From prelude Require Import gmap.
 
 Notation stringmap := (gmap string).
 Notation stringset := (gset string).
@@ -58,4 +58,4 @@ Fixpoint fresh_strings_of_set
   | S n =>
      let x := fresh_string_of_set s X in
      x :: fresh_strings_of_set s n ({[ x ]} ∪ X)
-  end%nat.
\ No newline at end of file
+  end%nat.
diff --git a/prelude/strings.v b/prelude/strings.v
index f2074f2488ae2cd40f474b2d1beca5c45efd0236..4f8b93bdb2e5a8f369e9b6cd8313b305478b1e3a 100644
--- a/prelude/strings.v
+++ b/prelude/strings.v
@@ -1,7 +1,8 @@
 (* Copyright (c) 2012-2015, Robbert Krebbers. *)
 (* This file is distributed under the terms of the BSD license. *)
-Require Import Ascii.
-Require Export String prelude.countable.
+From Coq Require Import Ascii.
+From Coq Require Export String.
+From prelude Require Export countable.
 
 (** * Fix scopes *)
 Open Scope string_scope.
diff --git a/prelude/tactics.v b/prelude/tactics.v
index 357f4fbde4633748810a9bcf6c4982add7b316d9..843644e83e1f9d389feb8585c3b9593197b03de2 100644
--- a/prelude/tactics.v
+++ b/prelude/tactics.v
@@ -2,9 +2,9 @@
 (* This file is distributed under the terms of the BSD license. *)
 (** This file collects general purpose tactics that are used throughout
 the development. *)
-Require Import Omega.
-Require Export Psatz.
-Require Export prelude.base.
+From Coq Require Import Omega.
+From Coq Require Export Psatz.
+From prelude Require Export base.
 
 Lemma f_equal_dep {A B} (f g : ∀ x : A, B x) x : f = g → f x = g x.
 Proof. intros ->; reflexivity. Qed.
diff --git a/prelude/vector.v b/prelude/vector.v
index 4b11efe4a387abef0b512d38a160589da779b483..b39ca4e45cab9ce9479562bf2ab4c16be6d29964 100644
--- a/prelude/vector.v
+++ b/prelude/vector.v
@@ -5,7 +5,7 @@
 definitions from the standard library, but renames or changes their notations,
 so that it becomes more consistent with the naming conventions in this
 development. *)
-Require Import prelude.list prelude.finite.
+From prelude Require Import list finite.
 Open Scope vector_scope.
 
 (** * The fin type *)
diff --git a/prelude/zmap.v b/prelude/zmap.v
index 04f016e1d6331c5fa019175a3dd1387a726b3fbf..ebffda33390616d1987ba64cc3d0da9a40525f65 100644
--- a/prelude/zmap.v
+++ b/prelude/zmap.v
@@ -2,8 +2,8 @@
 (* This file is distributed under the terms of the BSD license. *)
 (** This files extends the implementation of finite over [positive] to finite
 maps whose keys range over Coq's data type of binary naturals [Z]. *)
-Require Import prelude.pmap prelude.mapset.
-Require Export prelude.prelude prelude.fin_maps.
+From prelude Require Import pmap mapset.
+From prelude Require Export prelude fin_maps.
 Local Open Scope Z_scope.
 
 Record Zmap (A : Type) : Type :=
diff --git a/program_logic/adequacy.v b/program_logic/adequacy.v
index c0a1c6b136f284c06be027b35d7492968a82b1c6..db71839d23d9c044fbfb807cf553055c4dd35697 100644
--- a/program_logic/adequacy.v
+++ b/program_logic/adequacy.v
@@ -1,5 +1,5 @@
-Require Export program_logic.hoare.
-Require Import program_logic.wsat program_logic.ownership.
+From program_logic Require Export hoare.
+From program_logic Require Import wsat ownership.
 Local Hint Extern 10 (_ ≤ _) => omega.
 Local Hint Extern 100 (@eq coPset _ _) => eassumption || solve_elem_of.
 Local Hint Extern 10 (✓{_} _) =>
diff --git a/program_logic/auth.v b/program_logic/auth.v
index 4b87e14099f27b5764020df5e61ae587cbc021a7..88da0d6fb181300654f45c482b083fb672d6d355 100644
--- a/program_logic/auth.v
+++ b/program_logic/auth.v
@@ -1,5 +1,5 @@
-Require Export algebra.auth algebra.functor.
-Require Export program_logic.invariants program_logic.ghost_ownership.
+From algebra Require Export auth functor.
+From program_logic Require Export invariants ghost_ownership.
 Import uPred.
 
 Section auth.
diff --git a/program_logic/ghost_ownership.v b/program_logic/ghost_ownership.v
index c4dd8960025dc521473390672e61a0c17ae31c5d..f2d83fe8fcb5328e1ea68f5ecba02c4dec0d898a 100644
--- a/program_logic/ghost_ownership.v
+++ b/program_logic/ghost_ownership.v
@@ -1,5 +1,6 @@
-Require Export algebra.iprod program_logic.pviewshifts.
-Require Import program_logic.ownership.
+From algebra Require Export iprod.
+From program_logic Require Export pviewshifts.
+From program_logic Require Import ownership.
 Import uPred.
 
 (** Index of a CMRA in the product of global CMRAs. *)
diff --git a/program_logic/hoare.v b/program_logic/hoare.v
index 7a480e0a5a1f8c0844f51e870d759c496f67d5bb..67950e7b874c0beeab03fbd4db764c3c761d40e6 100644
--- a/program_logic/hoare.v
+++ b/program_logic/hoare.v
@@ -1,4 +1,4 @@
-Require Export program_logic.weakestpre program_logic.viewshifts.
+From program_logic Require Export weakestpre viewshifts.
 
 Definition ht {Λ Σ} (E : coPset) (P : iProp Λ Σ)
     (e : expr Λ) (Q : val Λ → iProp Λ Σ) : iProp Λ Σ := (□ (P → wp E e Q))%I.
diff --git a/program_logic/hoare_lifting.v b/program_logic/hoare_lifting.v
index 8037950c963f89d562770afcc7e14c23ab8c792a..500ff63009597e2a208d5f59038758c8427d6223 100644
--- a/program_logic/hoare_lifting.v
+++ b/program_logic/hoare_lifting.v
@@ -1,5 +1,5 @@
-Require Export program_logic.hoare program_logic.lifting.
-Require Import program_logic.ownership.
+From program_logic Require Export hoare lifting.
+From program_logic Require Import ownership.
 Import uPred.
 
 Local Notation "{{ P } } ef ?@ E {{ Q } }" :=
diff --git a/program_logic/invariants.v b/program_logic/invariants.v
index 608075029a37124e45b6b648373cd89d6b8b52bb..3b118e6396c595693903008e4a61fd6b5c3a4c50 100644
--- a/program_logic/invariants.v
+++ b/program_logic/invariants.v
@@ -1,6 +1,7 @@
-Require Export algebra.base prelude.countable prelude.co_pset.
-Require Import program_logic.ownership.
-Require Export program_logic.pviewshifts program_logic.weakestpre.
+From algebra Require Export base.
+From prelude Require Export countable co_pset.
+From program_logic Require Import ownership.
+From program_logic Require Export pviewshifts weakestpre.
 Import uPred.
 
 Local Hint Extern 100 (@eq coPset _ _) => solve_elem_of.
diff --git a/program_logic/language.v b/program_logic/language.v
index 4b24374ca98ad409477799138868dbb194c2b9db..7be7c926664b042140594a957a5887fbbddf8c09 100644
--- a/program_logic/language.v
+++ b/program_logic/language.v
@@ -1,4 +1,4 @@
-Require Export algebra.cofe.
+From algebra Require Export cofe.
 
 Structure language := Language {
   expr : Type;
diff --git a/program_logic/lifting.v b/program_logic/lifting.v
index 72f586b2c752589a2e38e51c9551c574a0e13029..a7f13db10c830c64257bb861c925a42b6969ef9b 100644
--- a/program_logic/lifting.v
+++ b/program_logic/lifting.v
@@ -1,5 +1,5 @@
-Require Export program_logic.weakestpre.
-Require Import program_logic.wsat program_logic.ownership.
+From program_logic Require Export weakestpre.
+From program_logic Require Import wsat ownership.
 Local Hint Extern 10 (_ ≤ _) => omega.
 Local Hint Extern 100 (@eq coPset _ _) => solve_elem_of.
 Local Hint Extern 10 (✓{_} _) =>
diff --git a/program_logic/model.v b/program_logic/model.v
index 42bddbdd2074f7e60e806d92b21fe11f11cf538c..d4f3eb610c981410bf13263ad66528bc4aff8bf2 100644
--- a/program_logic/model.v
+++ b/program_logic/model.v
@@ -1,5 +1,6 @@
-Require Export algebra.upred program_logic.resources.
-Require Import algebra.cofe_solver.
+From algebra Require Export upred.
+From program_logic Require Export resources.
+From algebra Require Import cofe_solver.
 
 (* The Iris program logic is parametrized by a functor from the category of
 COFEs to the category of CMRAs, which is instantiated with [laterC iProp]. The
diff --git a/program_logic/ownership.v b/program_logic/ownership.v
index e06c6e6d384d4f028de949a55e6378f16ae212f3..467d2391bf95b56d7203a823ca19fb72c89ec5e4 100644
--- a/program_logic/ownership.v
+++ b/program_logic/ownership.v
@@ -1,4 +1,4 @@
-Require Export program_logic.model.
+From program_logic Require Export model.
 
 Definition ownI {Λ Σ} (i : positive) (P : iProp Λ Σ) : iProp Λ Σ :=
   uPred_ownM (Res {[ i ↦ to_agree (Next (iProp_unfold P)) ]} ∅ ∅).
diff --git a/program_logic/pviewshifts.v b/program_logic/pviewshifts.v
index 3eaeb77d927744c80e790ae5c4b027f666f307ef..ce872937479d44151ffc82cd8bacbe0aed109aa5 100644
--- a/program_logic/pviewshifts.v
+++ b/program_logic/pviewshifts.v
@@ -1,6 +1,6 @@
-Require Export prelude.co_pset.
-Require Export program_logic.model.
-Require Import program_logic.ownership program_logic.wsat.
+From prelude Require Export co_pset.
+From program_logic Require Export model.
+From program_logic Require Import ownership wsat.
 Local Hint Extern 10 (_ ≤ _) => omega.
 Local Hint Extern 100 (@eq coPset _ _) => solve_elem_of.
 Local Hint Extern 100 (_ ∉ _) => solve_elem_of.
diff --git a/program_logic/resources.v b/program_logic/resources.v
index ee5ad3d635ddf46adfd4c2de225aeb4b866d0284..0b25007f0090197bc4b360bb70c583d596d8064e 100644
--- a/program_logic/resources.v
+++ b/program_logic/resources.v
@@ -1,5 +1,5 @@
-Require Export algebra.fin_maps algebra.agree algebra.excl algebra.functor.
-Require Export program_logic.language.
+From algebra Require Export fin_maps agree excl functor.
+From program_logic Require Export language.
 
 Record res (Λ : language) (Σ : iFunctor) (A : cofeT) := Res {
   wld : mapRA positive (agreeRA A);
diff --git a/program_logic/tests.v b/program_logic/tests.v
index 6cd5692a2f9f0c01be861ee5209219bf5b8b1156..c5ef324a8c178be08fbf9544bb245d08d39b624c 100644
--- a/program_logic/tests.v
+++ b/program_logic/tests.v
@@ -1,5 +1,5 @@
 (** This file tests a bunch of things. *)
-Require Import program_logic.model.
+From program_logic Require Import model.
 
 Module ModelTest. (* Make sure we got the notations right. *)
   Definition iResTest {Λ : language} {Σ : iFunctor}
diff --git a/program_logic/viewshifts.v b/program_logic/viewshifts.v
index 927fcb27ae4f81c9a7bd997c1bb7aee380d584f1..5ce4c9b8856e4ba6e1ff4da982f85c2dfa1e6076 100644
--- a/program_logic/viewshifts.v
+++ b/program_logic/viewshifts.v
@@ -1,5 +1,5 @@
-Require Import program_logic.ownership.
-Require Export program_logic.pviewshifts program_logic.invariants program_logic.ghost_ownership.
+From program_logic Require Import ownership.
+From program_logic Require Export pviewshifts invariants ghost_ownership.
 Import uPred.
 
 Definition vs {Λ Σ} (E1 E2 : coPset) (P Q : iProp Λ Σ) : iProp Λ Σ :=
diff --git a/program_logic/weakestpre.v b/program_logic/weakestpre.v
index 784e2290d8a1833dcb479fb379e97541f539b201..9be7de1c50fb2186e2e942e7dc11501a819f8296 100644
--- a/program_logic/weakestpre.v
+++ b/program_logic/weakestpre.v
@@ -1,5 +1,5 @@
-Require Export program_logic.pviewshifts.
-Require Import program_logic.wsat.
+From program_logic Require Export pviewshifts.
+From program_logic Require Import wsat.
 Local Hint Extern 10 (_ ≤ _) => omega.
 Local Hint Extern 100 (@eq coPset _ _) => eassumption || solve_elem_of.
 Local Hint Extern 100 (_ ∉ _) => solve_elem_of.
diff --git a/program_logic/wsat.v b/program_logic/wsat.v
index 7d8db791fb90889a564bff5667f6a15724031f55..ab978f2240c8c470cf810b8584deb595c03457f0 100644
--- a/program_logic/wsat.v
+++ b/program_logic/wsat.v
@@ -1,5 +1,6 @@
-Require Export program_logic.model prelude.co_pset.
-Require Export algebra.cmra_big_op algebra.cmra_tactics.
+From prelude Require Export co_pset.
+From program_logic Require Export model.
+From algebra Require Export cmra_big_op cmra_tactics.
 Local Hint Extern 10 (_ ≤ _) => omega.
 Local Hint Extern 10 (✓{_} _) => solve_validN.
 Local Hint Extern 1 (✓{_} gst _) => apply gst_validN.