{-# OPTIONS --safe #-} module Cubical.Relation.Binary.Order.Apartness.Properties where open import Cubical.Foundations.Prelude open import Cubical.Functions.Embedding open import Cubical.Data.Empty as ⊥ open import Cubical.Data.Sum as ⊎ open import Cubical.Relation.Binary.Base open import Cubical.Relation.Binary.Order.Apartness.Base open import Cubical.HITs.PropositionalTruncation as ∥₁ open import Cubical.Relation.Nullary private variable ℓ ℓ' ℓ'' : Level open BinaryRelation isApartness→ImpliesInequality : {A : Type ℓ} {_#_ : Rel A A ℓ'} → IsApartness _#_ → ∀ x y → x # y → ¬ (x ≡ y) isApartness→ImpliesInequality {_#_ = _#_} apart x y x#y x≡y = IsApartness.is-irrefl apart y (subst (λ a → a # y) x≡y x#y) isApartness→isEquivRelNegationRel : {A : Type ℓ} {_#_ : Rel A A ℓ'} → IsApartness _#_ → isEquivRel (NegationRel _#_) isApartness→isEquivRelNegationRel apart = equivRel (λ a a#a → IsApartness.is-irrefl apart a a#a) (λ a b ¬a#b b#a → ¬a#b (IsApartness.is-sym apart b a b#a)) λ a b c ¬a#b ¬b#c a#c → ∥₁.rec isProp⊥ (⊎.rec ¬a#b (λ c#b → ¬b#c (IsApartness.is-sym apart c b c#b))) (IsApartness.is-cotrans apart a c b a#c) module _ {A : Type ℓ} {R : Rel A A ℓ'} where open BinaryRelation isApartnessInduced : IsApartness R → (B : Type ℓ'') → (f : B ↪ A) → IsApartness (InducedRelation R (B , f)) isApartnessInduced apa B (f , emb) = isapartness (Embedding-into-isSet→isSet (f , emb) (IsApartness.is-set apa)) (λ a b → IsApartness.is-prop-valued apa (f a) (f b)) (λ a → IsApartness.is-irrefl apa (f a)) (λ a b c → IsApartness.is-cotrans apa (f a) (f b) (f c)) λ a b → IsApartness.is-sym apa (f a) (f b)