¶Union of s₁..t₁ or ≠ t₂
When the range constraint contains the "hole" from the non-equivalent constraint, then the result is always satisfiable. Otherwise the range constrant is subsumed by the non-equivalent constraint.
(s₁..t₁) ∨ (≠ t₂) = 𝟙 is s₁ ⊆ t₂ ∧ t₂ ⊆ t₁ = (≠ t₂) otherwise
¶Equationally
⟦s₁..t₁⟧ = {x | s₁ ⊆ x ∧ x ⊆ t₁} ⟦≠ t₂⟧ = {x | x ⊈ t₂ ∨ t₂ ⊈ x}
When s₁ ⊆ t₂ ∧ t₂ ⊆ t₁, transitivity lets us show that t₂ ⊆ x and x ⊆ t₂, which shows that t₂ is in the result. The ≠ t₂ constraint adds every other type to the result as well.
⟦s₁..t₁ ∨ (≠ t₂)⟧ = {x | (s₁ ⊆ x ∧ x ⊆ t₁) ∨ (x ⊈ t₂ ∨ t₂ ⊈ x)} = {x | (s₁ ⊆ x ∨ x ⊈ t₂ ∨ t₂ ⊈ x) ∧ (x ⊆ t₁ ∨ x ⊈ t₂ ∨ t₂ ⊈ x)} = {x | (t₂ ⊆ x ∨ x ⊈ t₂ ∨ t₂ ⊈ x) ∧ (x ⊆ t₂ ∨ x ⊈ t₂ ∨ t₂ ⊈ x)} = {x | (true ∨ x ⊈ t₂) ∧ (true ∨ t₂ ⊈ x)} = {x | true ∧ true} = {x | true} = 𝟙
When t₂ ⊂ s₁:
[s₁ ⊆ x ∧ x ⊆ t₁]¹ ───────────────── s₁ ⊆ x [t₂ ⊂ s₁]⁰ ──────────────────────── t₂ ⊂ x ────── x ≠ t₂ ──────────────────────────¹ (s₁ ⊆ x ∧ x ⊆ t₁) → x ≠ t₂ ──────────────────────────────────── {x | s₁ ⊆ x ∧ x ⊆ t₁} ⊆ {x | x ≠ t₂} ───────────────── ⟦s1..t₁⟧ ⊆ ⟦≠ t₂⟧ ────────────────────────── ⟦s1..t₁⟧ ∪ ⟦≠ t₂⟧ = ⟦≠ t₂⟧ ────────────────────────────────────⁰ t₂ ⊂ s₁ → ⟦s1..t₁⟧ ∪ ⟦≠ t₂⟧ = ⟦≠ t₂⟧
When s₁ ≁ t₂:
[s₁ ⊆ x ∧ x ⊆ t₁]¹ [x = t₂]² ───────────────── ──────── s₁ ⊆ x x ⊆ t₂ [s₁ ≁ t₂]⁰ ────────────────────── ───────── s₁ ⊆ t₂ s₁ ⊈ t₂ ──────────────────────────── false ──────² x ≠ t₂ ──────────────────────────¹ (s₁ ⊆ x ∧ x ⊆ t₁) → x ≠ t₂ ──────────────────────────────────── {x | s₁ ⊆ x ∧ x ⊆ t₁} ⊆ {x | x ≠ t₂} ───────────────── ⟦s1..t₁⟧ ⊆ ⟦≠ t₂⟧ ────────────────────────── ⟦s1..t₁⟧ ∪ ⟦≠ t₂⟧ = ⟦≠ t₂⟧ ────────────────────────────────────⁰ s₁ ≁ t₂ → ⟦s1..t₁⟧ ∪ ⟦≠ t₂⟧ = ⟦≠ t₂⟧
When t₁ ⊂ t₂:
[s₁ ⊆ x ∧ x ⊆ t₁]¹ ───────────────── x ⊆ t₁ [t₁ ⊂ t₂]⁰ ──────────────────────── x ⊂ t₂ ────── x ≠ t₂ ──────────────────────────¹ (s₁ ⊆ x ∧ x ⊆ t₁) → x ≠ t₂ ──────────────────────────────────── {x | s₁ ⊆ x ∧ x ⊆ t₁} ⊆ {x | x ≠ t₂} ───────────────── ⟦s1..t₁⟧ ⊆ ⟦≠ t₂⟧ ────────────────────────── ⟦s1..t₁⟧ ∪ ⟦≠ t₂⟧ = ⟦≠ t₂⟧ ────────────────────────────────────⁰ t₁ ⊂ t₂ → ⟦s1..t₁⟧ ∪ ⟦≠ t₂⟧ = ⟦≠ t₂⟧
When t₁ ≁ t₂:
[s₁ ⊆ x ∧ x ⊆ t₁]¹ [x = t₂]² ───────────────── ──────── x ⊆ t₁ t₂ ⊆ x [t₁ ≁ t₂]⁰ ────────────────────── ───────── t₂ ⊆ t₁ t₂ ⊈ t₁ ──────────────────────────── false ──────² x ≠ t₂ ──────────────────────────¹ (s₁ ⊆ x ∧ x ⊆ t₁) → x ≠ t₂ ──────────────────────────────────── {x | s₁ ⊆ x ∧ x ⊆ t₁} ⊆ {x | x ≠ t₂} ───────────────── ⟦s1..t₁⟧ ⊆ ⟦≠ t₂⟧ ────────────────────────── ⟦s1..t₁⟧ ∪ ⟦≠ t₂⟧ = ⟦≠ t₂⟧ ────────────────────────────────────⁰ t₁ ≁ t₂ → ⟦s1..t₁⟧ ∪ ⟦≠ t₂⟧ = ⟦≠ t₂⟧