{-# OPTIONS --safe #-}
module Cubical.Data.FinSequence.Base where

open import Cubical.Foundations.Prelude
open import Cubical.Data.Nat
open import Cubical.Data.Fin.Inductive.Base

private
  variable
     ℓ' : Level

record FinSequence (m : ) ( : Level) : Type (ℓ-suc ) where
  constructor finsequence
  field
    fobj : Fin (suc m)  Type 
    fmap : {n : Fin m}  fobj (injectSuc n)  fobj (fsuc n)

record FinSequenceMap {m : }
  (C : FinSequence m ) (D : FinSequence m ℓ') : Type (ℓ-max  ℓ') where
  constructor finsequencemap
  field
    fmap : (n : Fin (suc m))  FinSequence.fobj C n  FinSequence.fobj D n
    fcomm : (n : Fin m) (x : FinSequence.fobj C (injectSuc n))
       FinSequence.fmap D (fmap (injectSuc n) x)  fmap (fsuc n) (FinSequence.fmap C x)