{-# OPTIONS --safe #-}
module Cubical.Tactics.CommRingSolver.Utility where
open import Cubical.Foundations.Prelude
open import Cubical.Data.Bool
open import Cubical.Data.Empty using (⊥) renaming (rec to recEmpty)
open import Cubical.Data.Sigma
open import Cubical.Relation.Nullary.Base
private
variable
ℓ ℓ' : Level
byBoolAbsurdity : {Anything : Type ℓ} → false ≡ true → Anything
byBoolAbsurdity p = recEmpty (false≢true p)
byAbsurdity : {Anything : Type ℓ} → ⊥ → Anything
byAbsurdity x = recEmpty x
extractFromAnd : (P Q : Bool)
→ P and Q ≡ true
→ (P ≡ true) × (Q ≡ true)
extractFromAnd false false eq = byBoolAbsurdity eq
extractFromAnd false true eq = byBoolAbsurdity eq
extractFromAnd true false eq = byBoolAbsurdity eq
extractFromAnd true true eq = eq , eq
extractFromAndLeft : {P Q : Bool}
→ P and Q ≡ true
→ P ≡ true
extractFromAndLeft eq = fst (extractFromAnd _ _ eq)
extractFromAndRight : {P Q : Bool}
→ P and Q ≡ true
→ Q ≡ true
extractFromAndRight eq = snd (extractFromAnd _ _ eq)