
          return db(hb)(ib);
        });
      });
    }), eb, fb);
  });
  A = (function (db, eb, fb)
  {
    return B(db, 0, eb, fb);
  });
  B = (function (db, eb, fb, gb)
  {
    if ((gb.Tag == 1.000000)) 
    {
      var hb = gb.Item2;
      var ib = gb.Item1;
      return B(db, (eb + 1), db(eb)(fb)(ib), hb);
    }
    else
    {
      return fb;
    };
  });
  C = (function (db, eb)
  {
    return y((function (fb)
    {
      return (function (gb)
      {
        return (eb == fb);
      });
    }), 