

#include "BUILTIN.h"

#include "Nat.h"

#include "Bitset.h"

#include "Array.h"
extern OBJ _ADArrayConv_4(OBJ);extern OBJ __ADArrayConv_4;
extern OBJ _ADArrayConv_5(OBJ);extern OBJ __ADArrayConv_5;
extern OBJ _AArrayFilter_2(OBJ,OBJ);extern OBJ __AArrayFilter_2;
extern TUP2 _AArrayFilter_3(OBJ,OBJ);extern OBJ __AArrayFilter_3;
extern OBJ _AArrayFilter_4(OBJ,OBJ);extern OBJ __AArrayFilter_4;
extern OBJ _AArrayFilter_5(OBJ,OBJ);extern OBJ __AArrayFilter_5;
extern TUP2 _AArrayFilter_6(OBJ,OBJ);extern OBJ __AArrayFilter_6;

#include "Char.h"
extern OBJ _ADArrayFilter_2(OBJ,OBJ);OBJ __ADArrayFilter_2; /* | */
extern TUP2 _ADArrayFilter_3(OBJ,OBJ);OBJ __ADArrayFilter_3; /* partition */
extern OBJ _ADArrayFilter_4(OBJ,OBJ);OBJ __ADArrayFilter_4; /* take */
extern OBJ _ADArrayFilter_5(OBJ,OBJ);OBJ __ADArrayFilter_5; /* drop */
extern TUP2 _ADArrayFilter_6(OBJ,OBJ);OBJ __ADArrayFilter_6; /* split */

extern OBJ _ADArrayFilter_2(OBJ x1,OBJ x2) /* | */
{OBJ r;
 {OBJ x3;OBJ x4;
  x3=_ADArrayConv_4(x2);
  x4=_AArrayFilter_2(x1,x3);
  r=_ADArrayConv_5(x4);}
 return r;}

extern TUP2 _ADArrayFilter_3(OBJ x1,OBJ x2) /* partition */
{TUP2 r;
 {OBJ x3;TUP2 x5;
  x3=_ADArrayConv_4(x2);
  x5=_AArrayFilter_3(x1,x3);
  r.c1=_ADArrayConv_5(x5.c1);
  r.c2=_ADArrayConv_5(x5.c2);}
 return r;}
extern OBJ _ADArrayFilter_3_c(OBJ x1,OBJ x2) /* partition */
{OBJ r;
 {TUP2 t=_ADArrayFilter_3(x1,x2);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _ADArrayFilter_4(OBJ x1,OBJ x2) /* take */
{OBJ r;
 {OBJ x3;OBJ x4;
  x3=_ADArrayConv_4(x2);
  x4=_AArrayFilter_4(x1,x3);
  r=_ADArrayConv_5(x4);}
 return r;}

extern OBJ _ADArrayFilter_5(OBJ x1,OBJ x2) /* drop */
{OBJ r;
 {OBJ x3;OBJ x4;
  x3=_ADArrayConv_4(x2);
  x4=_AArrayFilter_5(x1,x3);
  r=_ADArrayConv_5(x4);}
 return r;}

extern TUP2 _ADArrayFilter_6(OBJ x1,OBJ x2) /* split */
{TUP2 r;
 {OBJ x3;TUP2 x5;
  x3=_ADArrayConv_4(x2);
  x5=_AArrayFilter_6(x1,x3);
  r.c1=_ADArrayConv_5(x5.c1);
  r.c2=_ADArrayConv_5(x5.c2);}
 return r;}
extern OBJ _ADArrayFilter_6_c(OBJ x1,OBJ x2) /* split */
{OBJ r;
 {TUP2 t=_ADArrayFilter_6(x1,x2);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

init_ADArrayFilter()
{
 static int visited=0; if(visited) return; visited=1;
 init_ADArray();
 init_ANat();
 init_AOption();
 init_ABitset();
 init_AArray();
 init_ADArrayConv();
 init_AArrayFilter();
 init_ASeq();
 init_AString();
 init_AChar();
 CLS(2,_ADArrayFilter_6_c,__ADArrayFilter_6);
 CLS(2,_ADArrayFilter_5,__ADArrayFilter_5);
 CLS(2,_ADArrayFilter_4,__ADArrayFilter_4);
 CLS(2,_ADArrayFilter_3_c,__ADArrayFilter_3);
 CLS(2,_ADArrayFilter_2,__ADArrayFilter_2);}

