{-# OPTIONS --cubical --no-import-sorts --safe #-}
module Cubical.Foundations.Pointed.Base where

open import Cubical.Foundations.Prelude
open import Cubical.Foundations.Equiv

open import Cubical.Foundations.Structure
open import Cubical.Foundations.Structure using (typ) public
open import Cubical.Foundations.GroupoidLaws

Pointed : ( : Level)  Type (ℓ-suc )
Pointed  = TypeWithStr   x  x)

pt :  {} (A∙ : Pointed )  typ A∙
pt = str

Pointed₀ = Pointed ℓ-zero

{- Pointed functions -}
_→∙_ : ∀{ ℓ'}  (A : Pointed ) (B : Pointed ℓ')  Type (ℓ-max  ℓ')
_→∙_ A B = Σ[ f  (typ A  typ B) ] f (pt A)  pt B

_→∙_∙ : ∀{ ℓ'}  (A : Pointed ) (B : Pointed ℓ')  Pointed (ℓ-max  ℓ')
A →∙ B   = (A →∙ B) ,  x  pt B) , refl

idfun∙ :  {} (A : Pointed )  A →∙ A
idfun∙ A =  x  x) , refl