{-# OPTIONS --universe-polymorphism #-} open import FRP.JS.Bool using ( Bool ; true ; false ; if_then_else_ ; not ; _∧_ ) module FRP.JS.True where record ⊤ : Set where constructor tt data ⊥ : Set where contradiction : ∀ {α} {A : Set α} → ⊥ → A contradiction () True : Bool → Set True true = ⊤ True false = ⊥ False : Bool → Set False b = True b → ⊥ ∧-intro : ∀ {a b} → True a → True b → True (a ∧ b) ∧-intro {false} () b ∧-intro {true} {false} tt () ∧-intro {true} {true} tt tt = tt ∧-elim₁ : ∀ {a b} → True (a ∧ b) → True a ∧-elim₁ {false} () ∧-elim₁ {true} b = tt ∧-elim₂ : ∀ {a b} → True (a ∧ b) → True b ∧-elim₂ {false} () ∧-elim₂ {true} b = b data Dec (b : Bool) : Set where yes : True b → Dec b no : False b → Dec b {-# COMPILED_JS Dec function(x,v) { if (x) { return v.yes(null); } else { return v.no(null); } } #-} {-# COMPILED_JS yes true #-} {-# COMPILED_JS no false #-} dec : ∀ b → Dec b dec true = yes tt dec false = no contradiction