diff --git a/program_logic/model.v b/program_logic/model.v
index 8b8376970cb07475362cf664641aad6cdae0f28b..237f31895a1ede3448dab7954c00d58e4dd3a089 100644
--- a/program_logic/model.v
+++ b/program_logic/model.v
@@ -6,6 +6,26 @@ From algebra Require Import cofe_solver.
 COFEs to the category of CMRAs, which is instantiated with [laterC iProp]. The
 [laterC iProp] can be used to construct impredicate CMRAs, such as the stored
 propositions using the agreement CMRA. *)
+
+Module Type iProp_solution_sig.
+Parameter iPreProp : language → rFunctor → cofeT.
+Definition iGst (Λ : language) (Σ : rFunctor) : cmraT :=
+  Σ (laterC (iPreProp Λ Σ)).
+Definition iRes Λ Σ := res Λ (laterC (iPreProp Λ Σ)) (iGst Λ Σ).
+Definition iResR Λ Σ := resR Λ (laterC (iPreProp Λ Σ)) (iGst Λ Σ).
+Definition iWld Λ Σ := gmap positive (agree (laterC (iPreProp Λ Σ))).
+Definition iPst Λ := excl (state Λ).
+Definition iProp (Λ : language) (Σ : rFunctor) : cofeT := uPredC (iResR Λ Σ).
+
+Parameter iProp_unfold: ∀ {Λ Σ}, iProp Λ Σ -n> iPreProp Λ Σ.
+Parameter iProp_fold: ∀ {Λ Σ}, iPreProp Λ Σ -n> iProp Λ Σ.
+Parameter iProp_fold_unfold: ∀ {Λ Σ} (P : iProp Λ Σ),
+  iProp_fold (iProp_unfold P) ≡ P.
+Parameter iProp_unfold_fold: ∀ {Λ Σ} (P : iPreProp Λ Σ),
+  iProp_unfold (iProp_fold P) ≡ P.
+End iProp_solution_sig.
+
+Module Export iProp_solution : iProp_solution_sig.
 Definition iProp_result (Λ : language) (Σ : rFunctor) :
   solution (uPredCF (resRF Λ laterCF (laterRF Σ))).
 Proof.
@@ -17,7 +37,6 @@ Proof.
   - apply rFunctor_ne; split; apply laterC_map_contractive=> i ?; by apply Hf.
 Qed.
 
-(* Solution *)
 Definition iPreProp (Λ : language) (Σ : rFunctor) : cofeT := iProp_result Λ Σ.
 Definition iGst (Λ : language) (Σ : rFunctor) : cmraT :=
   Σ (laterC (iPreProp Λ Σ)).
@@ -35,6 +54,8 @@ Proof. apply solution_unfold_fold. Qed.
 Lemma iProp_unfold_fold {Λ Σ} (P : iPreProp Λ Σ) :
   iProp_unfold (iProp_fold P) ≡ P.
 Proof. apply solution_fold_unfold. Qed.
+End iProp_solution.
+
 Bind Scope uPred_scope with iProp.
 
 Instance iProp_fold_inj n Λ Σ : Inj (dist n) (dist n) (@iProp_fold Λ Σ).