/* 
  an example from llreve:
  http://formal.iti.kit.edu/projects/improve/reve/
*/
int f1(int m, int n) {
  int r;
  int x;
  x = 0;
  r = 0;
  if (m == 0) {
    r = n + 1;
  } else { if (m > 0 && n == 0) {
    r = f1(m - 1, 1);
  } else {
    x = f1(m, n - 1);
    r = f1(m - 1, x);
  }}
  return r;
}

int f2(int m, int n) {
  int r;
  int x;
  x = 0;
  r = 0;
  if (m > 0 && n == 0) {
    r = f2(m - 1, 1);
  } else { if (m == 1) {
    r = n + 1;
  } else {
    x = f2(m, n - 1);
    r = f2(m - 1, x);
  }}
  return r;
}
