diff --git a/formalizations/guarded-cubical/Semantics/Concrete/DoublePoset/Constructions.agda b/formalizations/guarded-cubical/Semantics/Concrete/DoublePoset/Constructions.agda
index 0f714964d5b06e4536bcd76b6a706d06dc828aef..ea683f5f9053c53bf821d17272283d4dfa3f8d1a 100644
--- a/formalizations/guarded-cubical/Semantics/Concrete/DoublePoset/Constructions.agda
+++ b/formalizations/guarded-cubical/Semantics/Concrete/DoublePoset/Constructions.agda
@@ -305,7 +305,7 @@ _⊎p_ {ℓ'A = ℓ'A} {ℓ''A = ℓ''A} {ℓ'B = ℓ'B}  {ℓ''B = ℓ''B} A B
 
     
 -- Contructions involving later
-module ClockedConstructions (k : Clock) where
+module _ (k : Clock) where
 
   private
     ▹_ : Type ℓ -> Type ℓ
@@ -379,6 +379,7 @@ Unit-×L = isoToEquiv
   (iso (λ {(_ , x) -> x}) (λ x -> (tt , x)) (λ x → refl) (λ p → refl))
 
 
+
 {-
 UnitP-×L-equiv : {X : Poset ℓ ℓ'} -> PosetEquiv (UnitP ×p X) X
 UnitP-×L-equiv .fst = Unit-×L
@@ -392,3 +393,5 @@ UnitP-×L-equiv .snd = makeIsPosetEquiv Unit-×L is-mon is-mon-inv
 
 UnitP-×L : {X : Poset ℓ ℓ'} -> (UnitP ×p X) ≡ X
 UnitP-×L {X = X} = equivFun (PosetPath (UnitP ×p X) X) UnitP-×L-equiv-}
+
+
diff --git a/formalizations/guarded-cubical/Semantics/Concrete/DoublePoset/DPMorProofs.agda b/formalizations/guarded-cubical/Semantics/Concrete/DoublePoset/DPMorProofs.agda
new file mode 100644
index 0000000000000000000000000000000000000000..1b1a6e72d742b260aa9ff951d321b1ace90da30c
--- /dev/null
+++ b/formalizations/guarded-cubical/Semantics/Concrete/DoublePoset/DPMorProofs.agda
@@ -0,0 +1,411 @@
+{-# OPTIONS --cubical --rewriting --guarded #-}
+
+{-# OPTIONS --allow-unsolved-metas #-}
+
+open import Common.Later
+
+module Semantics.Concrete.DoublePoset.DPMorProofs where
+
+open import Cubical.Foundations.Prelude
+open import Cubical.Foundations.Isomorphism
+
+
+open import Cubical.Relation.Binary
+open import Cubical.Foundations.Structure
+open import Cubical.Foundations.Transport
+open import Cubical.Foundations.Function
+
+open import Cubical.Data.Unit
+open import Cubical.Data.Sigma
+open import Cubical.Data.Empty hiding (elim)
+open import Cubical.Data.Sum hiding (elim)
+open import Cubical.Data.Nat renaming (ℕ to Nat) hiding (_^_ ; elim)
+
+open import Common.Common
+
+open import Semantics.Concrete.DoublePoset.Base
+open import Semantics.Concrete.DoublePoset.Morphism
+open import Semantics.Concrete.DoublePoset.Convenience
+open import Semantics.Concrete.DoublePoset.Constructions
+open import Cubical.HITs.PropositionalTruncation
+
+private
+  variable
+    ℓ ℓ' ℓ'' : Level
+    ℓR ℓR1 ℓR2 : Level
+    ℓA ℓ'A ℓ''A ℓA' ℓ'A' ℓ''A' : Level
+    ℓB ℓ'B ℓ''B ℓB' ℓ'B' ℓ''B' : Level
+    ℓC ℓ'C ℓ''C ℓC' ℓ'C' ℓ''C' ℓΓ ℓ'Γ ℓ''Γ : Level
+    Γ :  DoublePoset ℓΓ ℓ'Γ ℓ''Γ
+    A :  DoublePoset ℓA ℓ'A ℓ''A
+    A' : DoublePoset ℓA' ℓ'A' ℓ''A'
+    B :  DoublePoset ℓB ℓ'B ℓ''B
+    B' : DoublePoset ℓB' ℓ'B' ℓ''B'
+    C :  DoublePoset ℓC ℓ'C ℓ''C
+    C' : DoublePoset ℓC' ℓ'C' ℓ''C'
+
+
+rel-transport-≤ :
+  {A B : DoublePoset ℓ ℓ' ℓ''} ->
+  (eq : A ≡ B) ->
+  {a1 a2 : ⟨ A ⟩} ->
+  rel-≤ A a1 a2 ->
+  rel-≤ B (transport (λ i -> ⟨ eq i ⟩) a1) (transport (λ i -> ⟨ eq i ⟩) a2)
+rel-transport-≤ {A} {B} eq {a1} {a2} a1≤a2 =
+  transport (λ i → rel-≤ (eq i)
+    (transport-filler (λ j → ⟨ eq j ⟩) a1 i)
+    (transport-filler (λ j → ⟨ eq j ⟩) a2 i))
+  a1≤a2
+
+rel-transport-≈ :
+  {A B : DoublePoset ℓ ℓ' ℓ''} ->
+  (eq : A ≡ B) ->
+  {a1 a2 : ⟨ A ⟩} ->
+  rel-≈ A a1 a2 ->
+  rel-≈ B (transport (λ i -> ⟨ eq i ⟩) a1) (transport (λ i -> ⟨ eq i ⟩) a2)
+rel-transport-≈ {A} {B} eq {a1} {a2} a1≤a2 =
+  transport (λ i → rel-≈ (eq i)
+    (transport-filler (λ j → ⟨ eq j ⟩) a1 i)
+    (transport-filler (λ j → ⟨ eq j ⟩) a2 i))
+  a1≤a2
+
+rel-transport-sym-≤ : {A B : DoublePoset ℓ ℓ' ℓ''} ->
+  (eq : A ≡ B) ->
+  {b1 b2 : ⟨ B ⟩} ->
+  rel-≤ B b1 b2 ->
+  rel-≤ A
+    (transport (λ i → ⟨ sym eq i ⟩) b1)
+    (transport (λ i → ⟨ sym eq i ⟩) b2)
+rel-transport-sym-≤ eq {b1} {b2} b1≤b2 = rel-transport-≤ (sym eq) b1≤b2
+
+rel-transport-sym-≈ : {A B : DoublePoset ℓ ℓ' ℓ''} ->
+  (eq : A ≡ B) ->
+  {b1 b2 : ⟨ B ⟩} ->
+  rel-≈ B b1 b2 ->
+  rel-≈ A
+    (transport (λ i → ⟨ sym eq i ⟩) b1)
+    (transport (λ i → ⟨ sym eq i ⟩) b2)
+rel-transport-sym-≈ eq {b1} {b2} b1≤b2 = rel-transport-≈ (sym eq) b1≤b2
+
+mon-transport-domain-≤ : {A B C : DoublePoset ℓ ℓ' ℓ''} ->
+  (eq : A ≡ B) ->
+  (f : DPMor A C) ->
+  {b1 b2 : ⟨ B ⟩} ->
+  (rel-≤ B b1 b2) ->
+  rel-≤ C
+    (DPMor.f f (transport (λ i → ⟨ sym eq i ⟩ ) b1))
+    (DPMor.f f (transport (λ i → ⟨ sym eq i ⟩ ) b2))
+mon-transport-domain-≤ eq f {b1} {b2} b1≤b2 =
+  DPMor.isMon f (rel-transport-≤ (sym eq) b1≤b2)
+
+mon-transport-domain-≈ : {A B C : DoublePoset ℓ ℓ' ℓ''} ->
+  (eq : A ≡ B) ->
+  (f : DPMor A C) ->
+  {b1 b2 : ⟨ B ⟩} ->
+  (rel-≈ B b1 b2) ->
+  rel-≈ C
+    (DPMor.f f (transport (λ i → ⟨ sym eq i ⟩ ) b1))
+    (DPMor.f f (transport (λ i → ⟨ sym eq i ⟩ ) b2))
+mon-transport-domain-≈ eq f {b1} {b2} b1≤b2 =
+  DPMor.pres≈ f (rel-transport-≈ (sym eq) b1≤b2)
+
+
+module ClockedProofs (k : Clock) where
+  open import Semantics.Lift k
+  open import Semantics.LockStepErrorOrdering k
+  open import Semantics.WeakBisimilarity k
+  open import Semantics.Concrete.DoublePoset.LockStepErrorBisim k
+  open LiftDoublePoset
+  
+
+  private
+    ▹_ : Type ℓ → Type ℓ
+    ▹_ A = ▹_,_ k A
+
+  ret-monotone-het-≤ : {A A' : DoublePoset ℓA ℓ'A ℓ''A} ->
+    (rAA' : ⟨ A ⟩ -> ⟨ A' ⟩ -> Type ℓR1) ->
+    TwoCell rAA' (LiftRelation._≾_ _ _ rAA') ret ret
+  ret-monotone-het-≤ {A = A} {A' = A'} rAA' = λ a a' a≤a' →
+    LiftRelation.Properties.ord-η-monotone ⟨ A ⟩ ⟨ A' ⟩ rAA' a≤a'
+
+  ret-monotone-≤ : {A : DoublePoset ℓA ℓ'A ℓ''A} ->
+    (a a' : ⟨ A ⟩) ->
+    rel-≤ A a a' ->
+    rel-≤ (𝕃 A) (ret a) (ret a')
+  ret-monotone-≤ {A = A} = λ a a' a≤a' →
+    LiftRelation.Properties.ord-η-monotone ⟨ A ⟩ ⟨ A ⟩ _ a≤a'
+
+  ret-monotone-≈ : {A : DoublePoset ℓA ℓ'A ℓ''A} ->
+    (a a' : ⟨ A ⟩) ->
+    rel-≈ A a a' ->
+    rel-≈ (𝕃 A) (ret a) (ret a')
+  ret-monotone-≈ {A = A} = λ a a' a≤a' → {!!}
+    where
+      module LBisim = Bisim (⟨ A ⟩ ⊎ Unit) (rel-≈ (A ⊎p UnitDP))
+
+  ext-monotone-het-≤ : {A A' : DoublePoset ℓA ℓ'A ℓ''A} {B B' : DoublePoset ℓB ℓ'B ℓ''B}
+    (rAA' : ⟨ A ⟩ -> ⟨ A' ⟩ -> Type ℓR1) ->
+    (rBB' : ⟨ B ⟩ -> ⟨ B' ⟩ -> Type ℓR2) ->
+    (f :  ⟨ A ⟩  -> ⟨ (𝕃 B) ⟩) ->
+    (f' : ⟨ A' ⟩ -> ⟨ (𝕃 B') ⟩) ->
+    TwoCell rAA' (LiftRelation._≾_ _ _ rBB') f f' ->
+    (la : ⟨ 𝕃 A ⟩) -> (la' : ⟨ 𝕃 A' ⟩) ->
+    (LiftRelation._≾_ _ _ rAA' la la') ->
+    LiftRelation._≾_ _ _ rBB' (ext f la) (ext f' la')
+  ext-monotone-het-≤ {A = A} {A' = A'} {B = B} {B' = B'} rAA' rBB' f f' f≤f' la la' la≤la' = let fixed = fix (monotone-ext') in
+    transport
+      (sym (λ i -> LiftBB'.unfold-≾ i (unfold-ext f i la) (unfold-ext f' i la')))
+      (fixed la la' (transport (λ i → LiftAA'.unfold-≾ i la la') la≤la'))
+    where
+      _≾'LA_  = LiftDoublePoset._≾'_ A
+      _≾'LA'_ = LiftDoublePoset._≾'_ A'
+      _≾'LB_  = LiftDoublePoset._≾'_ B
+      _≾'LB'_ = LiftDoublePoset._≾'_ B'
+
+      module LiftAA' = LiftRelation ⟨ A ⟩ ⟨ A' ⟩ rAA'
+      module LiftBB' = LiftRelation ⟨ B ⟩ ⟨ B' ⟩ rBB'
+
+      _≾'LALA'_ = LiftAA'.Inductive._≾'_ (next LiftAA'._≾_)
+      _≾'LBLB'_ = LiftBB'.Inductive._≾'_ (next LiftBB'._≾_)
+  
+      monotone-ext' :
+        ▹ (
+            (la : ⟨ 𝕃 A ⟩) -> (la' : ⟨ 𝕃 A' ⟩)  ->
+            (la ≾'LALA' la') ->
+            (ext' f  (next (ext f))  la) ≾'LBLB'
+            (ext' f' (next (ext f')) la')) ->
+          (la : ⟨ 𝕃 A ⟩) -> (la' : ⟨ 𝕃 A' ⟩)  ->
+          (la ≾'LALA' la') ->
+          (ext' f  (next (ext f))  la) ≾'LBLB'
+          (ext' f' (next (ext f')) la')
+      monotone-ext' IH (η x) (η y) x≤y =
+        transport
+        (λ i → LiftBB'.unfold-≾ i (f x) (f' y))
+        (f≤f' x y x≤y)
+      monotone-ext' IH ℧ la' la≤la' = tt*
+      monotone-ext' IH (θ lx~) (θ ly~) la≤la' = λ t ->
+        transport
+          (λ i → (sym (LiftBB'.unfold-≾)) i
+            (sym (unfold-ext f) i (lx~ t))
+            (sym (unfold-ext f') i (ly~ t)))
+          (IH t (lx~ t) (ly~ t)
+            (transport (λ i -> LiftAA'.unfold-≾ i (lx~ t) (ly~ t)) (la≤la' t)))
+
+  --temporarily placed here
+  rel-≈L : (A : DoublePoset ℓA ℓ'A ℓ''A) → L ⟨ A ⟩ → L ⟨ A ⟩ → Type (ℓ-max ℓA ℓ''A)
+  rel-≈L A = LBsim._≈_
+    where
+      module LBsim = Bisim ⟨ A ⟩ (rel-≈ A)
+  
+  extL-monotone-≈ : {A : DoublePoset ℓA ℓ'A ℓ''A} {B : DoublePoset ℓB ℓ'B ℓ''B} ->
+    (f g : ⟨ A ⟩ -> L ⟨ B ⟩) ->
+    TwoCell (rel-≈ A) (rel-≈L B) f g ->
+    (la la' : L ⟨ A ⟩) ->
+    (la≈la' : rel-≈L A la la') ->
+    rel-≈L B (extL f la) (extL g la')
+  extL-monotone-≈ {A = A} {B = B} f g f≈g la la' la≈la' = 
+    let fixed = fix extL-monotone-≈' in
+    transport
+      (sym (λ i → LiftB.unfold-≈ i (unfold-extL f i la) (unfold-extL g i la')))
+      (fixed la la' (transport (λ i → LiftA.unfold-≈ i la la') la≈la'))
+    where
+      module LiftA = Bisim ⟨ A ⟩ (rel-≈ A)
+      module LiftB = Bisim ⟨ B ⟩ (rel-≈ B)
+      open LiftB.PropValued
+      open LiftB.Reflexive
+      symA = LiftA.Symmetric.symmetric (sym-≈ A)
+      symB = LiftB.Symmetric.symmetric (sym-≈ B)
+
+      _≈'LA_ = LiftA.Inductive._≈'_ (next LiftA._≈_)
+      _≈'LB_ = LiftB.Inductive._≈'_ (next LiftB._≈_)
+
+      aux : ∀ ly y' n -> (θ ly ≡ (δL ^ n) (η y')) -> Σ[ n' ∈ Nat ] n ≡ suc n' -- is (η x ≈'LA θ ly) required here?
+      aux ly y' n = {!!}
+
+      ηθ-lem : ∀ x ly n y -> (f g : ⟨ A ⟩ -> L ⟨ B ⟩) ->
+        (f≈g : TwoCell (rel-≈ A) (rel-≈L B) f g) ->
+        θ ly ≡ (δL ^ n) (η y) ->
+        rel-≈ A x y -> (f x) ≈'LB (extL' g (next (extL g)) (θ ly))
+      ηθ-lem x ly n y f g f≈g θly≡δⁿηy x≈y = let (n' , eq1) = aux ly y n θly≡δⁿηy in
+            let eq2 = θ ly ≡⟨ θly≡δⁿηy ⟩ (δL ^ n) (η y) ≡⟨ funExt⁻ (cong₂ _^_ refl eq1) (η y) ⟩ θ (next ((δL ^ n') (η y))) ∎ in
+            let eq3 = inj-θL ly (next ((δL ^ n') (η y))) eq2 in
+            let eq4 = (θ (λ t -> (extL g (ly t))))
+                         ≡⟨ (λ i -> (θ (λ t -> (extL g (eq3 t i))))) ⟩
+                      (θ (λ t -> (extL g ((δL ^ n') (η y)))))
+                        ≡⟨ cong (θ next) (extL-delay g (η y) n')  ⟩
+                      (δL ^ (suc n')) (extL g (η y)) ≡⟨ cong (δL ^ (suc n')) (extL-eta y g) ⟩ (δL ^ (suc n')) (g y) ∎ in
+            let fx≈gy = f≈g x y x≈y in
+            let last = {!!} in -- last = LiftB.x≈δx' (f x) (g y) fx≈gy
+            transport (λ i -> f x ≈'LB sym eq4 i) {!!} 
+      
+      extL-monotone-≈' :
+        ▹ ((la la' : L ⟨ A ⟩) -> la ≈'LA la' ->
+        extL' f  (next (extL f)) la ≈'LB extL' g (next (extL g))  la') ->
+          (la la' : L ⟨ A ⟩) -> la ≈'LA la' ->
+          extL' f  (next (extL f)) la ≈'LB extL' g (next (extL g))  la'
+      extL-monotone-≈' IH (η x) (η y) x≈y =
+        transport (λ i → LiftB.unfold-≈ i (f x) (g y)) (f≈g x y (lower x≈y))
+      extL-monotone-≈' IH (η x) (θ ly) x≈ly = elim
+        (λ _ → {!!}) --isProp ((next LiftB._≈_ LiftB.Inductive.≈' f x) (extL' g (next (extL g)) (θ ly)))
+        (λ {(n , y , θly≡δⁿηy , x≈y) →
+          ηθ-lem x ly n y f g f≈g θly≡δⁿηy x≈y }) x≈ly
+      extL-monotone-≈' IH (θ lx) (η y) lx≈y = elim
+        (λ _ → prop-≈→prop-≈' (prop-valued-≈ B) (prop (prop-valued-≈ B)) (θ (next (extL f) ⊛ lx)) (g y))
+        (λ {(n , x , θlx≡δⁿηx , x≈y) →
+          let g≈f = (λ a b a≈b → let fb≈ga = f≈g b a (sym-≈ A a b a≈b) in symB (f b) (g a) fb≈ga) in
+          let sym-lem = ηθ-lem y lx n x g f g≈f θlx≡δⁿηx (sym-≈ A x y x≈y) in
+          LiftB.≈→≈' (θ (next (extL f) ⊛ lx)) (g y) (symB (g y) (θ (next (extL f) ⊛ lx)) (LiftB.≈'→≈ (g y) (θ (next (extL f) ⊛ lx)) sym-lem)) }) lx≈y
+      extL-monotone-≈' IH (θ x) (θ y) x≈y = λ t →
+        transport
+          (λ i → sym LiftB.unfold-≈ i
+            (sym (unfold-extL f) i (x t))
+            (sym (unfold-extL g) i (y t)))
+          (IH t (x t) (y t)
+            (transport (λ i → LiftA.unfold-≈ i (x t) (y t)) (x≈y t)))
+      
+  
+
+  ext-monotone-≈ : {A : DoublePoset ℓA ℓ'A ℓ''A} {B : DoublePoset ℓB ℓ'B ℓ''B} ->
+    (f g : ⟨ A ⟩ -> ⟨ (𝕃 B) ⟩) ->
+    TwoCell (rel-≈ A) (rel-≈ (𝕃 B)) f g ->
+    TwoCell (rel-≈ (𝕃 A)) (rel-≈ (𝕃 B)) (ext f) (ext g)
+  ext-monotone-≈ {A = A} {B = B} f g f≈g la la' = fix monotone-ext' la la'
+    where
+
+      L℧→LA = L℧A→LA⊎Unit A
+      L→L℧A = LA⊎Unit→L℧A A
+      L℧→LB = L℧A→LA⊎Unit B
+      L→L℧B = LA⊎Unit→L℧A B
+      
+      f* : ⟨ A ⟩ ⊎ Unit → L℧ ⟨ B ⟩
+      f* (inl a) = f a
+      f* (inr tt) = ℧
+
+      g* : ⟨ A ⟩ ⊎ Unit → L℧ ⟨ B ⟩
+      g* (inl a) = g a
+      g* (inr tt) = ℧
+
+      open Iso
+      eq' : ▹ ((la : ⟨ 𝕃 A ⟩) -> ext f la ≡ L→L℧B (extL (L℧→LB ∘ f*) (L℧→LA la))) -> (la : ⟨ 𝕃 A ⟩) -> ext f la ≡ L→L℧B (extL (L℧→LB ∘ f*) (L℧→LA la))
+      eq' IH (η a) = transport (λ i → unfold-ext f (~ i) (η a) ≡ unfold-L→L℧ B (~ i) (unfold-extL (L℧→LB ∘ f*) (~ i) (unfold-L℧→L A (~ i) (η a))))
+         (sym (cong (LA⊎Unit→L℧A' B (next (LA⊎Unit→L℧A B))) (transport (λ i → (refl {x = L℧→LB (f a)} i) ≡ unfold-L℧→L B i (f a)) refl)
+         ∙ (λ i → unfold-L→L℧ B (~ i) (unfold-L℧→L B (~ i) (f a))) ∙ L℧ALA⊎Unit-iso B .leftInv (f a)))
+      eq' IH ℧ = transport (λ i → unfold-ext f (~ i) ℧ ≡ unfold-L→L℧ B (~ i) (unfold-extL (L℧→LB ∘ f*) (~ i) (unfold-L℧→L A (~ i) ℧)))
+         (sym (cong (LA⊎Unit→L℧A' B (next (LA⊎Unit→L℧A B))) (transport (λ i → (refl {x = L℧→LB ℧} i) ≡ unfold-L℧→L B i ℧) refl)
+         ∙ (λ i → unfold-L→L℧ B (~ i) (unfold-L℧→L B (~ i) ℧)) ∙ L℧ALA⊎Unit-iso B .leftInv ℧))
+      eq' IH (θ la~) = transport (λ i → unfold-ext f (~ i) (θ la~) ≡ unfold-L→L℧ B (~ i) (unfold-extL (L℧→LB ∘ f*) (~ i) (unfold-L℧→L A (~ i) (θ la~))))
+        λ i → θ (λ t → IH t (la~ t) i)
+      
+      eq : (la : ⟨ 𝕃 A ⟩) -> ext f la ≡ L→L℧B (extL (L℧→LB ∘ f*) (L℧→LA la))
+      eq = fix eq'
+
+      eq1' : ▹ ((la' : ⟨ 𝕃 A ⟩) -> ext g la' ≡ L→L℧B (extL (L℧→LB ∘ g*) (L℧→LA la'))) -> (la' : ⟨ 𝕃 A ⟩) -> ext g la' ≡ L→L℧B (extL (L℧→LB ∘ g*) (L℧→LA la'))
+      eq1' IH (η a) = transport (λ i → unfold-ext g (~ i) (η a) ≡ unfold-L→L℧ B (~ i) (unfold-extL (L℧→LB ∘ g*) (~ i) (unfold-L℧→L A (~ i) (η a))))
+         (sym (cong (LA⊎Unit→L℧A' B (next (LA⊎Unit→L℧A B))) (transport (λ i → (refl {x = L℧→LB (g a)} i) ≡ unfold-L℧→L B i (g a)) refl)
+         ∙ (λ i → unfold-L→L℧ B (~ i) (unfold-L℧→L B (~ i) (g a))) ∙ L℧ALA⊎Unit-iso B .leftInv (g a)))
+      eq1' IH ℧ = transport (λ i → unfold-ext g (~ i) ℧ ≡ unfold-L→L℧ B (~ i) (unfold-extL (L℧→LB ∘ g*) (~ i) (unfold-L℧→L A (~ i) ℧)))
+         (sym (cong (LA⊎Unit→L℧A' B (next (LA⊎Unit→L℧A B))) (transport (λ i → (refl {x = L℧→LB ℧} i) ≡ unfold-L℧→L B i ℧) refl)
+         ∙ (λ i → unfold-L→L℧ B (~ i) (unfold-L℧→L B (~ i) ℧)) ∙ L℧ALA⊎Unit-iso B .leftInv ℧))
+      eq1' IH (θ la~) = transport (λ i → unfold-ext g (~ i) (θ la~) ≡ unfold-L→L℧ B (~ i) (unfold-extL (L℧→LB ∘ g*) (~ i) (unfold-L℧→L A (~ i) (θ la~))))
+        λ i → θ (λ t → IH t (la~ t) i)
+      
+      eq1 : (la' : ⟨ 𝕃 A ⟩) -> ext g la' ≡ L→L℧B (extL (L℧→LB ∘ g*) (L℧→LA la'))
+      eq1 = fix eq1'
+      
+      eq2 : (lb : L ( ⟨ B ⟩ ⊎ Unit)) -> lb ≡ L℧→LB (L→L℧B lb)
+      eq2 lb = sym (L℧ALA⊎Unit-iso B .rightInv lb)
+      
+
+      f∘≈g∘ : TwoCell (rel-≈ A) (rel-≈ (𝕃 B)) f g -> TwoCell (rel-≈ (A ⊎p UnitDP)) (rel-≈L (B ⊎p UnitDP)) (L℧→LB ∘ f*) (L℧→LB ∘ g*)
+      f∘≈g∘ f≈g (inl a) (inl a') a≈a' = f≈g a a' (lower a≈a')
+      f∘≈g∘ f≈g (inr tt) (inr tt) a≈a' = transport
+        (λ i -> rel-≈L (B ⊎p UnitDP) (unfold-L℧→L B (~ i) ℧) (unfold-L℧→L B (~ i) ℧))
+        (LBisim.Reflexive.≈-refl (reflexive-≈ (B ⊎p UnitDP)) (η (inr tt)))
+        where
+          module LBisim = Bisim (⟨ B ⟩ ⊎ Unit) (rel-≈ (B ⊎p UnitDP))
+      
+      monotone-ext' :
+        ▹ ((la la' : ⟨ 𝕃 A ⟩) -> rel-≈ (𝕃 A) la la' ->
+          rel-≈ (𝕃 B) (ext f la) (ext g la')) ->
+          (la la' : ⟨ 𝕃 A ⟩) -> rel-≈ (𝕃 A) la la' ->
+          rel-≈ (𝕃 B) (ext f la) (ext g la')
+      monotone-ext' IH la la' la≈la' = transport (λ i → rel-≈L (B ⊎p UnitDP) (L℧→LB (eq la (~ i))) (L℧→LB (eq1 la' (~ i))))
+                                                           (transport (λ i → rel-≈L (B ⊎p UnitDP) (eq2 (extL (L℧→LB ∘ f*) (L℧→LA la)) i) (eq2 (extL (L℧→LB ∘ g*) (L℧→LA la')) i))
+                                                             (extL-monotone-≈ (L℧→LB ∘ f*) (L℧→LB ∘ g*) (f∘≈g∘ f≈g) (L℧→LA la) (L℧→LA la') la≈la'))
+
+  ext-monotone-≤ :
+    (f f' : ⟨ A ⟩ -> ⟨ (𝕃 B) ⟩) ->
+    TwoCell (rel-≤ A) (rel-≤ (𝕃 B)) f f' ->
+    (la la' : ⟨ 𝕃 A ⟩) ->
+    rel-≤ (𝕃 A) la la' ->
+    rel-≤ (𝕃 B) (ext f la) (ext f' la')
+  ext-monotone-≤ {A = A} {B = B} f f' f≤f' la la' la≤la' =
+    ext-monotone-het-≤ {A = A} {A' = A} {B = B} {B' = B} (rel-≤ A) (rel-≤ B) f f' f≤f' la la' la≤la'
+
+  
+  bind-monotone-≤ :
+    {la la' : ⟨ 𝕃 A ⟩} ->
+    (f f' : ⟨ A ⟩ -> ⟨ (𝕃 B) ⟩) ->
+    rel-≤ (𝕃 A) la la' ->
+    TwoCell (rel-≤ A) (rel-≤ (𝕃 B)) f f' ->
+    rel-≤ (𝕃 B) (bind la f) (bind la' f')
+  bind-monotone-≤ {A = A} {B = B} {la = la} {la' = la'} f f' la≤la' f≤f' =
+      ext-monotone-≤ {A = A} {B = B} f f' f≤f' la la' la≤la'
+
+
+  bind-monotone-≈ :
+    {la la' : ⟨ 𝕃 A ⟩} ->
+    (f f' : ⟨ A ⟩ -> ⟨ (𝕃 B) ⟩) ->
+    rel-≈ (𝕃 A) la la' ->
+    TwoCell (rel-≈ A) (rel-≈ (𝕃 B)) f f' ->
+    rel-≈ (𝕃 B) (bind la f) (bind la' f')
+  bind-monotone-≈ {A = A} {B = B} {la = la} {la' = la'} f f' la≈la' f≈f' =
+      ext-monotone-≈ {A = A} {B = B} f f' f≈f' la la' la≈la'
+
+
+  mapL-monotone-het-≤ : {A A' : DoublePoset ℓA ℓ'A ℓ''A} {B B' : DoublePoset ℓB' ℓ'B' ℓ''B'} ->
+    (rAA' : ⟨ A ⟩ -> ⟨ A' ⟩ -> Type ℓR1) ->
+    (rBB' : ⟨ B ⟩ -> ⟨ B' ⟩ -> Type ℓR2) ->
+    (f : ⟨ A ⟩ -> ⟨ B ⟩) ->
+    (f' : ⟨ A' ⟩ -> ⟨ B' ⟩) ->
+    TwoCell rAA' rBB' f f' ->
+    (la : ⟨ 𝕃 A ⟩) -> (la' : ⟨ 𝕃 A' ⟩) ->
+    (LiftRelation._≾_ _ _ rAA' la la') ->
+     LiftRelation._≾_ _ _ rBB' (mapL f la) (mapL f' la')
+  mapL-monotone-het-≤ {A = A} {A' = A'} {B = B} {B' = B'} rAA' rBB' f f' f≤f' la la' la≤la' =
+    ext-monotone-het-≤ {A = A} {A' = A'} {B = B} {B' = B'} rAA' rBB' (ret ∘ f) (ret ∘ f')
+      (λ a a' a≤a' → LiftRelation.Properties.ord-η-monotone _ _ rBB' (f≤f' a a' a≤a'))
+      la la' la≤la'
+
+  
+  mapL-monotone-≤ : {A B : DoublePoset ℓ ℓ' ℓ''} ->
+    (f f' : ⟨ A ⟩ -> ⟨ B ⟩) ->
+    TwoCell (rel-≤ A) (rel-≤ B) f f' ->
+    TwoCell (rel-≤ (𝕃 A)) (rel-≤ (𝕃 B)) (mapL f) (mapL f')
+  mapL-monotone-≤ {A = A} {B = B} f f' f≤f' la la' la≤la'  =
+    bind-monotone-≤ (ret ∘ f) (ret ∘ f') la≤la'
+      (λ a1 a2 a1≤a2 → ord-η-monotone B (f≤f' a1 a2 a1≤a2))
+  
+  mapL-monotone-≈ : {A B : DoublePoset ℓ ℓ' ℓ''} ->
+    (f f' : ⟨ A ⟩ -> ⟨ B ⟩) ->
+    TwoCell (rel-≈ A) (rel-≈ B) f f' ->
+    TwoCell (rel-≈ (𝕃 A)) (rel-≈ (𝕃 B)) (mapL f) (mapL f')
+  mapL-monotone-≈ {A = A} {B = B} f f' f≈f' la la' la≈la' =
+    bind-monotone-≈ (ret ∘ f) (ret ∘ f') la≈la'
+      (λ a1 a2 a1≈a2 → ret-monotone-≈ (f a1) (f' a2) (f≈f' a1 a2 a1≈a2))
+
+  monotone-bind-mon-≤ :
+    {la la' : ⟨ 𝕃 A ⟩} ->
+    (f : DPMor A (𝕃 B)) ->
+    (rel-≤ (𝕃 A) la la') ->
+    rel-≤ (𝕃 B) (bind la (DPMor.f f)) (bind la' (DPMor.f f))
+  monotone-bind-mon-≤ f la≤la' = bind-monotone-≤ (DPMor.f f) (DPMor.f f) la≤la'
+    (≤mon-refl {!f!})
+
+  monotone-bind-mon-≈ :
+    {la la' : ⟨ 𝕃 A ⟩} ->
+    (f : DPMor A (𝕃 B)) ->
+    (rel-≈ (𝕃 A) la la') ->
+    rel-≈ (𝕃 B) (bind la (DPMor.f f)) (bind la' (DPMor.f f))
+  monotone-bind-mon-≈ f la≈la' = bind-monotone-≈ (DPMor.f f) (DPMor.f f) la≈la'
+    (≈mon-refl f)
diff --git a/formalizations/guarded-cubical/Semantics/WeakBisimilarity.agda b/formalizations/guarded-cubical/Semantics/WeakBisimilarity.agda
index e172d21a3b8e6da2102409d791811de561518774..c0cc371638d96017696da51d57fb7fad643d8df6 100644
--- a/formalizations/guarded-cubical/Semantics/WeakBisimilarity.agda
+++ b/formalizations/guarded-cubical/Semantics/WeakBisimilarity.agda
@@ -95,6 +95,9 @@ module Bisim (X : Type ℓ) (R : X -> X -> Type ℓR) where
      prop-≈'→prop-≈ : BinaryRelation.isPropValued _≈'_ -> BinaryRelation.isPropValued _≈_
      prop-≈'→prop-≈ = transport (λ i -> BinaryRelation.isPropValued (sym unfold-≈ i))
 
+     prop-≈→prop-≈' : BinaryRelation.isPropValued _≈_ -> BinaryRelation.isPropValued _≈'_
+     prop-≈→prop-≈' = transport (λ i -> BinaryRelation.isPropValued (unfold-≈ i))
+
      prop' : ▹ (BinaryRelation.isPropValued _≈'_) -> BinaryRelation.isPropValued _≈'_
      prop' IH (η a) (η b) p q =
        let x = (isPropValuedR a b (lower p) (lower q)) in isoInvInjective LiftIso p q x