{-# OPTIONS --cubical --no-import-sorts --safe #-}

module Cubical.Data.Nat.Omniscience where

open import Cubical.Foundations.Function
open import Cubical.Foundations.HLevels
open import Cubical.Foundations.Prelude
open import Cubical.Foundations.Univalence

open import Cubical.Data.Bool
  renaming (Bool to 𝟚; Bool→Type to ⟨_⟩)
open import Cubical.Data.Nat
open import Cubical.Data.Nat.Order.Recursive

open import Cubical.Relation.Nullary

open import Cubical.Axiom.Omniscience

variable
   : Level
  A : Type 
  F : A  Type 

module _ where
  open Minimal

  never-least→never : (∀ m  ¬ Least F m)  (∀ m  ¬ F m)
  never-least→never ¬LF = wf-elim (flip  curry  ¬LF)

  never→never-least : (∀ m  ¬ F m)  (∀ m  ¬ Least F m)
  never→never-least ¬F m (Fm , _) = ¬F m Fm

  ¬least-wlpo : (∀(P :   𝟚)  Dec (∀ x  ¬ Least (⟨_⟩  P) x))  WLPO 
  ¬least-wlpo lwlpo P = mapDec never-least→never (_∘ never→never-least) (lwlpo P)