{-# OPTIONS --cubical #-} open import ContainersPlus open import MndContainer as MC open MC.MndContainer open import Level renaming (suc to lsuc ; zero to lzero) open import Cubical.Foundations.Prelude hiding (_▷_) renaming (fst to π₁ ; snd to π₂) open import Cubical.Foundations.Function open import Cubical.Data.Sigma record IsMndContainerMorphism (ℓs ℓp ℓs' ℓp' : Level) (S : Set ℓs) (P : S → Set ℓp) (T : Set ℓs') (Q : T → Set ℓp') (Aₘ : MndContainer _ _ (S ▷ P)) (Bₘ : MndContainer _ _ (T ▷ Q)) (shapeₘ : S → T) (positionₘ : {s : S} → Q (shapeₘ s) → P s) : Set (lsuc (ℓs ⊔ ℓp ⊔ ℓs' ⊔ ℓp')) where field ι-pres : shapeₘ (ι Aₘ) ≡ ι Bₘ σ-pres : (s : S) (f : P s → S) → shapeₘ (σ Aₘ s f) ≡ σ Bₘ (shapeₘ s) (shapeₘ ∘ f ∘ positionₘ) pr₁-pres : (s : S) (f : P s → S) → PathP (λ i → Q (σ-pres s f i) → P s) (λ q → pr₁ Aₘ s f (positionₘ q)) (λ q → positionₘ (pr₁ Bₘ (shapeₘ s) (shapeₘ ∘ f ∘ positionₘ) q)) pr₂-pres : (s : S) (f : P s → S) → PathP (λ i → (q : Q (σ-pres s f i)) → P (f (pr₁-pres s f i q))) (λ q → pr₂ Aₘ s f (positionₘ q)) (λ q → positionₘ (pr₂ Bₘ (shapeₘ s) (shapeₘ ∘ f ∘ positionₘ) q)) record MndContainerMorphism (ℓs ℓp : Level) (S : Set ℓs) (P : S → Set ℓp) (T : Set ℓs) (Q : T → Set ℓp) (Aₘ : MndContainer _ _ (S ▷ P)) (Bₘ : MndContainer _ _ (T ▷ Q)) : Set (lsuc (ℓs ⊔ ℓp)) where field shapeₘ : S → T positionₘ : {s : S} → Q (shapeₘ s) → P s isMCMorphism : IsMndContainerMorphism _ _ _ _ S P T Q Aₘ Bₘ shapeₘ positionₘ