Isolated points of sum types
Since both inl : A → A ⊎ B and inr : B → A ⊎ B are embeddings, they must reflect isolated points.
isIsolatedFromInl : ∀ {a : A} → isIsolated (inl {B = B} a) → isIsolated a isIsolatedFromInl = EmbeddingReflectIsolated inl Sum.isEmbedding-inl isIsolatedFromInr : ∀ {b : B} → isIsolated (inr {A = A} b) → isIsolated b isIsolatedFromInr = EmbeddingReflectIsolated inr Sum.isEmbedding-inr
In addition, both are decidable embeddings, so they also create isolated points:
isIsolatedInl : ∀ {a : A} → isIsolated a → isIsolated (inl {B = B} a) isIsolatedInl = DecEmbeddingCreateIsolated inl Sum.isEmbedding-inl Sum.decFiberInl isIsolatedInr : ∀ {b : B} → isIsolated b → isIsolated (inr {A = A} b) isIsolatedInr = DecEmbeddingCreateIsolated inr Sum.isEmbedding-inr Sum.decFiberInr isIsolated≃isIsolatedInl : ∀ {a : A} → isIsolated a ≃ isIsolated (inl {B = B} a) isIsolated≃isIsolatedInr : ∀ {b : B} → isIsolated b ≃ isIsolated (inr {A = A} b)
From this, we can conclude that the isolated points of a sum are exactly a sum of isolated points.
IsolatedSumIso : Iso ((A ⊎ B) °) ((A °) ⊎ (B °)) IsolatedSumIso .Iso.fun (inl a , isolated-inl-a) = inl (a , isIsolatedFromInl isolated-inl-a) IsolatedSumIso .Iso.fun (inr b , isolated-inr-b) = inr (b , isIsolatedFromInr isolated-inr-b) IsolatedSumIso .Iso.inv (inl (a , isolated-a)) = inl a , isIsolatedInl isolated-a IsolatedSumIso .Iso.inv (inr (b , isolated-b)) = inr b , isIsolatedInr isolated-b IsolatedSumIso .Iso.rightInv (inl (a , _)) = cong inl $ Isolated≡ $ refl′ a IsolatedSumIso .Iso.rightInv (inr (b , _)) = cong inr $ Isolated≡ $ refl′ b IsolatedSumIso .Iso.leftInv (inl a , _) = Isolated≡ $ refl′ $ inl a IsolatedSumIso .Iso.leftInv (inr b , _) = Isolated≡ $ refl′ $ inr b IsolatedSumEquiv : (A ⊎ B) ° ≃ (A °) ⊎ (B °) IsolatedSumEquiv = isoToEquiv IsolatedSumIso