{-# OPTIONS --without-K --safe #-}
module Relation.Nullary.Product where
open import Data.Bool.Base
open import Data.Product
open import Function.Base using (_∘_)
open import Level
open import Relation.Nullary.Reflects
open import Relation.Nullary
private
  variable
    p q : Level
    P : Set p
    Q : Set q
infixr 2 _×-reflects_ _×-dec_
_×-reflects_ : ∀ {bp bq} → Reflects P bp → Reflects Q bq →
                           Reflects (P × Q) (bp ∧ bq)
ofʸ  p ×-reflects ofʸ  q = ofʸ (p , q)
ofʸ  p ×-reflects ofⁿ ¬q = ofⁿ (¬q ∘ proj₂)
ofⁿ ¬p ×-reflects _      = ofⁿ (¬p ∘ proj₁)
_×-dec_ : Dec P → Dec Q → Dec (P × Q)
does  (p? ×-dec q?) = does p? ∧ does q?
proof (p? ×-dec q?) = proof p? ×-reflects proof q?