module Cubical.Data.IterativeSets.UnorderedPair.Properties where

open import Cubical.Foundations.Prelude

open import Cubical.Relation.Nullary
open import Cubical.Data.Unit.Properties
open import Cubical.Data.Bool.Properties

open import Cubical.Data.IterativeSets.Base
open import Cubical.Data.IterativeSets.Empty
open import Cubical.Data.IterativeSets.Singleton.Base
open import Cubical.Data.IterativeSets.UnorderedPair.Base
open import Cubical.Data.IterativeSets.Unit
open import Cubical.Data.IterativeSets.Bool

private
  variable
     : Level
    x y z : V⁰ {}

empty⁰≢unorderedPair⁰ : {x≢y : ¬ x  y}  ¬ empty⁰  unorderedPair⁰ x y x≢y
empty⁰≢unorderedPair⁰ p = ⊥*≢Bool* (cong El⁰ p)

unorderedPair⁰≢empty⁰ : {x≢y : ¬ x  y}  ¬ unorderedPair⁰ x y x≢y  empty⁰
unorderedPair⁰≢empty⁰ p = Bool*≢⊥* (cong El⁰ p)

empty⁰≢bool⁰ : ¬ empty⁰ {}  bool⁰ {}
empty⁰≢bool⁰ = empty⁰≢unorderedPair⁰

bool⁰≢empty⁰ : ¬ bool⁰ {}  empty⁰ {}
bool⁰≢empty⁰ = unorderedPair⁰≢empty⁰

singleton⁰≢unorderedPair⁰ : {x≢y : ¬ x  y}  ¬ singleton⁰ z  unorderedPair⁰ x y x≢y
singleton⁰≢unorderedPair⁰ p = Unit*≢Bool* (cong El⁰ p)

unorderedPair⁰≢singleton⁰ : {x≢y : ¬ x  y}  ¬ unorderedPair⁰ x y x≢y  singleton⁰ z
unorderedPair⁰≢singleton⁰ p = Bool*≢Unit* (cong El⁰ p)

unit⁰≢bool⁰ : ¬ unit⁰ {}  bool⁰ {}
unit⁰≢bool⁰ = singleton⁰≢unorderedPair⁰ {x = empty⁰} {y = unit⁰} {z = empty⁰}

bool⁰≢unit⁰ : ¬ bool⁰ {}  unit⁰ {}
bool⁰≢unit⁰ = unorderedPair⁰≢singleton⁰ {x = empty⁰} {y = unit⁰} {z = empty⁰}