------------------------------------------------------------------------
-- The Agda standard library
--
-- Strictness combinators
------------------------------------------------------------------------

{-# OPTIONS --without-K --safe #-}

module Strict where

open import Level
open import Agda.Builtin.Equality

open import Agda.Builtin.Strict
     renaming ( primForce to force
              ; primForceLemma to force-≡) public

-- Derived combinators
module _ {ℓ ℓ′ : Level} {A : Set ℓ} {B : Set ℓ′} where

  force′ : A → (A → B) → B
  force′ = force

  force′-≡ : (a : A) (f : A → B) → force′ a f ≡ f a
  force′-≡ = force-≡

  seq : A → B → B
  seq a b = force a (λ _ → b)

  seq-≡ : (a : A) (b : B) → seq a b ≡ b
  seq-≡ a b = force-≡ a (λ _ → b)