{-# OPTIONS --cubical #-} open import ContainersPlus open import Level renaming (suc to lsuc ; zero to lzero) open import Cubical.Foundations.Prelude hiding (_▷_) renaming (fst to π₁ ; snd to π₂) record DirectedContainer (ℓs ℓp : Level) (C : Container ℓs ℓp) : Set (lsuc (ℓs ⊔ ℓp)) where S = Shape C P = Position C field o : (s : S) → P s _↓_ : (s : S) → P s → S _⊕_ : {s : S} → (p : P s) → P (s ↓ p) → P s unitl-↓ : (s : S) → s ↓ (o _) ≡ s distr-↓-⊕ : (s : S) (p : P s) (p' : P (s ↓ p)) → s ↓ (p ⊕ p') ≡ (s ↓ p) ↓ p' unitl-⊕ : (s : S) (p : P (s ↓ o s)) → PathP (λ i → P (unitl-↓ s (~ i))) (o s ⊕ p) p unitr-⊕ : (s : S) (p : P s) → p ⊕ (o (s ↓ p)) ≡ p assoc-⊕ : (s : S) (p : P s) (p' : P (s ↓ p)) → PathP (λ i → P (distr-↓-⊕ s p p' i) → P s) (λ p'' → (p ⊕ p') ⊕ p'') (λ p'' → p ⊕ (p' ⊕ p''))