PLFA agda exercises
------------------------------------------------------------------------
-- The Agda standard library
--
-- Operations on Relations for Indexed sets
------------------------------------------------------------------------

{-# OPTIONS --cubical-compatible --safe #-}

module Function.Indexed.Bundles where

open import Relation.Unary using (Pred)
open import Function.Bundles using (_⟶_; _↣_; _↠_; _⤖_; _⇔_; _↩_; _↪_; _↩↪_; _↔_)
open import Relation.Binary.Core hiding (_⇔_)
open import Level using (Level)

private
  variable
    a b i : Level
    I : Set i

------------------------------------------------------------------------
-- Bundles specialised for lifting relations to indexed sets
------------------------------------------------------------------------

infix 3 _⟶ᵢ_ _↣ᵢ_ _↠ᵢ_ _⤖ᵢ_ _⇔ᵢ_ _↩ᵢ_ _↪ᵢ_ _↩↪ᵢ_ _↔ᵢ_

_⟶ᵢ_ : Pred I a → Pred I b → Set _
A ⟶ᵢ B = ∀ {i} → A i ⟶ B i

_↣ᵢ_ : Pred I a → Pred I b → Set _
A ↣ᵢ B = ∀ {i} → A i ↣ B i

_↠ᵢ_ : Pred I a → Pred I b → Set _
A ↠ᵢ B = ∀ {i} → A i ↠ B i

_⤖ᵢ_ : Pred I a → Pred I b → Set _
A ⤖ᵢ B = ∀ {i} → A i ⤖ B i

_⇔ᵢ_ : Pred I a → Pred I b → Set _
A ⇔ᵢ B = ∀ {i} → A i ⇔ B i

_↩ᵢ_ : Pred I a → Pred I b → Set _
A ↩ᵢ B = ∀ {i} → A i ↩ B i

_↪ᵢ_ : Pred I a → Pred I b → Set _
A ↪ᵢ B = ∀ {i} → A i ↪ B i

_↩↪ᵢ_ : Pred I a → Pred I b → Set _
A ↩↪ᵢ B = ∀ {i} → A i ↩↪ B i

_↔ᵢ_ : Pred I a → Pred I b → Set _
A ↔ᵢ B = ∀ {i} → A i ↔ B i