packages feed

MiniAgda-0.2014.1.9: test/succeed/countConstructors.ma

-- 2010-01-13

data Nat : Set 
{ zero : Nat
; succ : Nat -> Nat
}

fun plus : Nat -> Nat -> Nat {}

mutual {
  fun f1 : Nat -> Nat
  { f1 zero = zero
  ; f1 (succ zero) = zero
  ; f1 (succ (succ n)) = g1 n
  }

  fun g1 : Nat -> Nat
  { g1 zero = zero
  ; g1 (succ n) = f1 (succ (succ n))
  }
}

mutual {
  fun f : Nat -> Nat
  { f zero = zero
  ; f (succ zero) = zero
  ; f (succ (succ n)) = g n
  }

  fun g : Nat -> Nat
  { g zero = zero
  ; g (succ n) = plus (f n) (plus (f (succ n)) (f (succ (succ n))))
  }
}