module Q where import AlonzoPrelude open AlonzoPrelude -- , using(Bool,False,True,String,showBool) import PreludeNat open PreludeNat import PreludeBool open PreludeBool import PreludeShow open PreludeShow pred : Nat -> Nat pred (zero) = zero pred (suc n) = n mplus : Nat -> Nat -> Nat mplus zero y = y mplus (suc n) y = suc (mplus n y ) Q : Bool -> Set Q true = Nat Q false = Bool f : (b : Bool) -> Q b f true = pred 3 f false = true mid : {A : Set} -> A -> A mid x = x mainS : String mainS = showBool (f (const false true))