{-# OPTIONS --without-K --rewriting #-}
open import lib.Basics
open import lib.NType2
-- [Subtype] is defined in lib.NType.
module lib.types.Subtype where
open SubtypeProp
infix 40 _⊆_
_⊆_ : ∀ {i j₁ j₂} {A : Type i} → SubtypeProp {A = A} {j₁} → SubtypeProp {A = A} {j₂}
→ Type (lmax i (lmax j₁ j₂))
P₁ ⊆ P₂ = ∀ a → prop P₁ a → prop P₂ a
infix 80 _∘sub_
_∘sub_ : ∀ {i j k} {A : Type i} {B : Type j}
→ SubtypeProp {A = B} {k} → (A → B) → SubtypeProp {A = A} {k}
_∘sub_{A = A} P f = subtypeprop ((prop P) ∘ f)