data Bool : Set where
  false true : Bool

data Nat : Set where
  zero : Nat
  suc  : Nat → Nat

data List (A : Set) : Set where
  empty : List A
  cons  : A → List A → List A

add : Nat → Nat → Nat
add zero y = y
add (suc x) y = suc (add x y)

times : Nat → Nat → Nat
times zero y = zero
times (suc x) y = add y (times x y)

and : Bool → Bool → Bool
and false _ = false
and true  b = b

or : Bool → Bool → Bool
or true _  = true
or false b = b

test : List Bool
test = cons true (cons false (cons true (cons false empty)))
{-# COMPILE AGDA2LAMBOX test #-}
Debug λ☐ Rocq
  ↪  
WASM C OCaml CakeML Rust Elm
  ↪  
  ↪