module tiny.basic where
open import basic
open import internal-extensional-type-theory
open import axiom.funext
open import axiom.shape
open import axiom.cofibration
open import axiom.tiny
module Tiny (@♭ S : Shape) where
open √Axioms S public
√` : ∀ {@♭ ℓ ℓ'}
{@♭ A : Type ℓ} {@♭ B : Type ℓ'}
(@♭ h : A → B) → S √ A → S √ B
√` h = transposeRight (h ∘ transposeLeft id)
transposeLeft^ : ∀ {@♭ ℓ ℓ' ℓ''}
{@♭ A : Type ℓ} {@♭ A' : Type ℓ'} {@♭ B : Type ℓ''}
(@♭ g : A' → S √ B) (@♭ h : A → A')
→ transposeLeft g ∘ (h `^ S) ≡ transposeLeft (g ∘ h)
transposeLeft^ g h = cong♭ transposeLeft (transposeRight^ h (transposeLeft g))
√TransposeRight : ∀ {@♭ ℓ ℓ' ℓ''}
{@♭ A : Type ℓ} {@♭ B : Type ℓ'} {@♭ C : Type ℓ''}
(@♭ h : B → C) (@♭ f : A ^ S → B)
→ √` h ∘ transposeRight f ≡ transposeRight (h ∘ f)
√TransposeRight h f =
sym (transposeRight^ (transposeRight f) (h ∘ transposeLeft id))
∙ cong♭ (λ f' → transposeRight (h ∘ f')) (transposeLeft^ id (transposeRight f))
√TransposeLeft : ∀ {@♭ ℓ ℓ' ℓ''}
{@♭ A : Type ℓ} {@♭ B : Type ℓ'} {@♭ C : Type ℓ''}
(@♭ h : B → C) (@♭ g : A → S √ B)
→ h ∘ transposeLeft g ≡ transposeLeft (√` h ∘ g)
√TransposeLeft h g = cong♭ transposeLeft (sym (√TransposeRight h (transposeLeft g)))