testArith :: SpecWith ()
testArith = test s "Arith" input output
  where
    s :: Syntactic '[TmBool, TmNat, TmArith]
    s = crep
    input =
      [ "true"
      , "if false then true else false"
      , "0"
      , "succ (pred 0)"
      , "iszero (pred (succ (succ 0)))"]
    output =
      [ "true"
      , "(if false then true else false)"
      , "0"
      , "succ (pred (0))"
      , "iszero (pred (succ (succ (0))))"]
testArith :: SpecWith ()
testArith = test s "Arith" input output
  where
    s :: Syntactic '[TmBool, TmNat, TmArith]
    s = crep
    input =
      [ "true"
      , "if false then true else false"
      , "0"
      , "succ (pred 0)"
      , "iszero (pred (succ (succ 0)))"]
    output =
      [ "true"
      , "(if false then true else false)"
      , "0"
      , "succ (pred (0))"
      , "iszero (pred (succ (succ (0))))"]
testArith = test s "Arith" input output
  where
    s :: Syntactic '[TmBool, TmNat, TmArith]
    s = crep
    input =
      [ "true"
      , "if false then true else false"
      , "0"
      , "succ (pred 0)"
      , "iszero (pred (succ (succ 0)))"]
    output =
      [ "true"
      , "(if false then true else false)"
      , "0"
      , "succ (pred (0))"
      , "iszero (pred (succ (succ (0))))"]