Mutual recursion

Posted on October 1, 2019
Tags: induction
def even(n):
  if n == 0:
    return True
  else:
    return odd(n-1)

def odd(n):
  if n == 0:
    return False
  else:
    return even(n-1)

Proving this is simply unfolding the proof and inlining one into the other. we have

Any mutual recursive function can be inlined to the other

#insert Inline odd(n) into even(n)
def Even_oddinline(n):
  if n == 0:
    return True
  else:
    if n - 1 == 0:
      return False
    else:
      return Even_oddinline((n-1)-1)
#insert Inline even(n) into odd(n)
def Odd_eveninline(n):
  if n == 0:
    return False
  else:
    if n - 1 == 0:
      return True
    else:
      return Odd_eveninline((n-1)-1)