{-# OPTIONS --safe --without-K #-}
module PUtil where
open import Data.Product using (Σ ; _,_ ; proj₁ ; proj₂ ; ∃ ; _×_)
open import Data.Product.Properties using (Σ-≡,≡↔≡; ×-≡,≡↔≡)
open import Function using (Inverse)
open import Relation.Binary.PropositionalEquality using (_≡_ ; trans ; subst)
open import PEUtil
module _ {a} {b} {A : Set a} {B : A → Set b} {p₁ p₂ : Σ A B} where
open import Function
open import Data.Product.Properties
open Inverse (Σ-≡,≡↔≡ {p₁ = p₁} {p₂ = p₂}) public
using ()
renaming (f to Σ-≡,≡→≡)
×-≡,≡→≡ : {A B : Set} {p₁@(a₁ , b₁) p₂@(a₂ , b₂) : A × B} → a₁ ≡ a₂ × b₁ ≡ b₂ → p₁ ≡ p₂
×-≡,≡→≡ = ×-≡,≡↔≡ .Inverse.f
Σ×-≡,≡,≡→≡ : {A : Set} {B B' : A → Set} {p₁@(a₁ , b₁ , b₁') p₂@(a₂ , b₂ , b₂') : ∃ λ (a : A) → B a × B' a} → (∃ λ (p : a₁ ≡ a₂) → subst B p b₁ ≡ b₂ × subst B' p b₁' ≡ b₂') → p₁ ≡ p₂
Σ×-≡,≡,≡→≡ {A} {_B} {_B'} {p₁} {p₂} (p , q , q') = Σ-≡,≡→≡ (p , ×-≡,≡→≡ (˘trans (subst-application′ proj₁ p) q , ˘trans (subst-application′ proj₂ p) q'))
Generated from commit 2fd14c996b195ef101dff8919e837907ca0a08aa.