

#include "BUILTIN.h"
extern OBJ __ASeq_6;
extern OBJ _ASet_39(OBJ,OBJ,OBJ);extern OBJ __ASet_39;
extern OBJ _ASet_44(OBJ,OBJ,OBJ);extern OBJ __ASet_44;
extern OBJ _AMap_16(OBJ,OBJ,OBJ);extern OBJ __AMap_16;
extern OBJ _AMap_21(OBJ,OBJ);extern OBJ __AMap_21;
extern OBJ _AMap_31(OBJ,OBJ,OBJ,OBJ);extern OBJ __AMap_31;
extern OBJ _AMap_33(OBJ,OBJ,OBJ);extern OBJ __AMap_33;

#include "Nat.h"
extern OBJ _ASeqOfSeq_2(OBJ);extern OBJ __ASeqOfSeq_2;
extern OBJ _ASeqReduce_3(OBJ,OBJ,OBJ);extern OBJ __ASeqReduce_3;
extern OBJ _ASeqReduce_4(OBJ,OBJ,OBJ);extern OBJ __ASeqReduce_4;
extern OBJ __ATree_7;
extern OBJ _AMaxStrongComp_3(OBJ,OBJ);OBJ __AMaxStrongComp_3; /* msc */
extern OBJ _AMaxStrongComp_5(OBJ);OBJ __AMaxStrongComp_5; /* env */
extern OBJ _AMaxStrongComp_6(OBJ,OBJ);OBJ __AMaxStrongComp_6; /* env? */
extern OBJ _AMaxStrongComp_7(OBJ,OBJ);OBJ __AMaxStrongComp_7; /* forests */
extern OBJ _AMaxStrongComp_8(OBJ,OBJ);OBJ __AMaxStrongComp_8; /* visited */
extern OBJ _AMaxStrongComp_9(OBJ,OBJ,OBJ,OBJ);OBJ __AMaxStrongComp_9; /* dfs */
extern OBJ _AMaxStrongComp_10(OBJ,OBJ,OBJ,OBJ);OBJ __AMaxStrongComp_10; /* dfsVisit */
extern OBJ _AMaxStrongComp_11(OBJ,OBJ);OBJ __AMaxStrongComp_11; /* invert */
extern OBJ _AMaxStrongComp_12(OBJ,OBJ,OBJ,OBJ);OBJ __AMaxStrongComp_12; /* inv */
extern OBJ _AMaxStrongComp_13(OBJ,OBJ,OBJ,OBJ);OBJ __AMaxStrongComp_13; /* inv,1 */
extern OBJ _AMaxStrongComp_14(OBJ,OBJ);OBJ __AMaxStrongComp_14; /* env,1 */

extern OBJ _AMaxStrongComp_3(OBJ x1,OBJ x2) /* msc */
{OBJ r;
 CPCLS(__AMaxStrongComp_5,1);
 CPCLS(__AMaxStrongComp_9,2);
 CPCLS(x1,4);
 COPY(x2,2);
 {OBJ x3;OBJ x4;OBJ x5;OBJ x6;OBJ x7;OBJ x8;
  x3=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AMaxStrongComp_5,3))(__AMaxStrongComp_5,x1,__ASeq_6,__ASeq_6);
  CPPRD(x3,1);
  x4=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AMaxStrongComp_9,2))(__AMaxStrongComp_9,x1,x2);
  x5=_AMap_21(x1,x2);
  x6=_AMaxStrongComp_11(x1,x2);
  x7=_ASeqReduce_3(x4,x3,x5);
  x8=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AMaxStrongComp_9,2))(__AMaxStrongComp_9,x1,x6);
  {OBJ x10=FLD1(x7,2);
   if(EXPRD(x7,1)){
    FREE(FLD1(x7,1),1);DSPRDF(x7);
   }else{
    COPY(x10,1);
    FRPRD(x7,1);}
   {OBJ x11;OBJ x12;OBJ x13;
    x11=x10;
    x12=_ASeqOfSeq_2(x11);
    x13=_ASeqReduce_4(x8,x3,x12);
    {OBJ x15=FLD1(x13,2);
     if(EXPRD(x13,1)){
      r=x15;
      FREE(FLD1(x13,1),1);DSPRDF(x13);
     }else{
      COPY(x15,1);
      r=x15;
      FRPRD(x13,1);}}}}}
 return r;}

extern OBJ _AMaxStrongComp_5(OBJ x1) /* env */
{OBJ r;
 CPPRD(__AMaxStrongComp_14,1);
 FRCLS(x1,1);
 r=__AMaxStrongComp_14;
 return r;}

extern OBJ _AMaxStrongComp_6(OBJ x1,OBJ x2) /* env? */
{OBJ r;
 FRCLS(x1,1);
 FRPRD(x2,1);
 r=__ABUILTIN_5;
 return r;}

extern OBJ _AMaxStrongComp_7(OBJ x1,OBJ x2) /* forests */
{OBJ r;
 FRCLS(x1,1);
 {OBJ x4=FLD1(x2,2);
  if(EXPRD(x2,1)){
   r=x4;
   FREE(FLD1(x2,1),1);DSPRDF(x2);
  }else{
   COPY(x4,1);
   r=x4;
   FRPRD(x2,1);}}
 return r;}

extern OBJ _AMaxStrongComp_8(OBJ x1,OBJ x2) /* visited */
{OBJ r;
 FRCLS(x1,1);
 {OBJ x3=FLD1(x2,1);
  if(EXPRD(x2,1)){
   r=x3;
   FREE(FLD1(x2,2),1);DSPRDF(x2);
  }else{
   COPY(x3,1);
   r=x3;
   FRPRD(x2,1);}}
 return r;}

extern OBJ _AMaxStrongComp_9(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* dfs */
{OBJ r;
 {OBJ x14=FLD1(x4,1);OBJ x15=FLD1(x4,2);
  COPY(x14,2);COPY(x15,1);
  CPCLS(x1,1);
  COPY(x3,1);
  {OBJ x16;
   x16=_ASet_44(x1,x3,x14);
   if(ISTGPRM(x16,1)){
    FRCLS(x1,1);
    FREE(x2,1);
    FREE(x3,1);
    FREE(x14,1);
    FREE(x15,1);
    r=x4;
   }else{
    if(EXPRD(x4,1)){
     DSPRD(x4);
    }else{
     DCPRD(x4,1);}
    CPCLS(x1,1);
    CPCLS(__AMaxStrongComp_5,1);
    {OBJ x17;OBJ x18;
     PRD1(2,x17);FLD1(x17,1)=__ASeq_6;FLD1(x17,2)=x15;
     x18=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AMaxStrongComp_5,3))(__AMaxStrongComp_5,x1,x14,x17);
     r=_AMaxStrongComp_10(x1,x2,x3,x18);}}}}
 return r;}

extern OBJ _AMaxStrongComp_10(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* dfsVisit */
{OBJ r;
 {OBJ x95=FLD1(x4,1);OBJ x96=FLD1(x4,2);
  COPY(x95,2);COPY(x96,1);
  CPCLS(x1,1);
  COPY(x3,1);
  {OBJ x97;
   x97=_ASet_44(x1,x3,x95);
   if(ISTGPRM(x97,1)){
    FRCLS(x1,1);
    FREE(x2,1);
    FREE(x3,1);
    FREE(x95,1);
    FREE(x96,1);
    r=x4;
   }else{
    if(EXPRD(x4,1)){
     DSPRD(x4);
    }else{
     DCPRD(x4,1);}
    CPCLS(x1,1);
    COPY(x2,1);
    COPY(x3,1);
    {OBJ x98;
     x98=_AMap_33(x1,x2,x3);
     if(ISPRM(x98)){
      FREE(x2,1);
      CPCLS(x1,1);
      COPY(x3,1);
      {OBJ x111;
       x111=_ASet_39(x1,x3,x95);
       if(ISPRM(x96)){
	HLT("Seq at <unknown> : undefined selection rt\'Seq:seq->seq");
       }else{
	{OBJ x112=FLD1(x96,1);OBJ x113=FLD1(x96,2);FLAG x_x96=EXPRD(x96,1);
	 if(x_x96){
	 }else{
	  COPY(x112,1);COPY(x113,1);}
	 CPCLS(__AMaxStrongComp_5,1);
	 {OBJ x115;OBJ x116;
	  if(x_x96){
	   RSOME(x96,x115);FLD1(x115,1)=x3;FLD1(x115,2)=x112;
	  }else{
	   FRPRD(x96,1);PRD1(2,x115);FLD1(x115,1)=x3;FLD1(x115,2)=x112;}
	  PRD1(2,x116);FLD1(x116,1)=x115;FLD1(x116,2)=x113;
	  r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AMaxStrongComp_5,3))(__AMaxStrongComp_5,x1,x111,x116);}}}}
     }else{
      {OBJ x99=FLD1(x98,1);
       if(EXPRD(x98,1)){
	DSPRDF(x98);
       }else{
	COPY(x99,1);
	FRPRD(x98,1);}
       CPCLS(x1,3);
       COPY(x3,1);
       CPCLS(__AMaxStrongComp_5,1);
       CPCLS(__AMaxStrongComp_10,1);
       {OBJ x100;OBJ x101;OBJ x102;OBJ x103;
	x100=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AMaxStrongComp_10,2))(__AMaxStrongComp_10,x1,x2);
	x101=_ASet_39(x1,x3,x95);
	x102=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AMaxStrongComp_5,3))(__AMaxStrongComp_5,x1,x101,x96);
	x103=_ASeqReduce_3(x100,x102,x99);
	{OBJ x104=FLD1(x103,1);OBJ x105=FLD1(x103,2);FLAG x_x103=EXPRD(x103,1);
	 if(x_x103){
	 }else{
	  COPY(x104,1);COPY(x105,1);}
	 if(ISPRM(x105)){
	  HLT("Seq at <unknown> : undefined selection rt\'Seq:seq->seq");
	 }else{
	  {OBJ x106=FLD1(x105,1);OBJ x107=FLD1(x105,2);FLAG x_x105=EXPRD(x105,1);
	   if(x_x105){
	   }else{
	    COPY(x106,1);COPY(x107,1);}
	   CPCLS(__AMaxStrongComp_5,1);
	   {OBJ x109;OBJ x110;
	    if(x_x105){
	     RSOME(x105,x109);FLD1(x109,1)=x3;FLD1(x109,2)=x106;
	    }else{
	     FRPRD(x105,1);PRD1(2,x109);FLD1(x109,1)=x3;FLD1(x109,2)=x106;}
	    if(x_x103){
	     RSOME(x103,x110);FLD1(x110,1)=x109;FLD1(x110,2)=x107;
	    }else{
	     FRPRD(x103,1);PRD1(2,x110);FLD1(x110,1)=x109;FLD1(x110,2)=x107;}
	    r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AMaxStrongComp_5,3))(__AMaxStrongComp_5,x1,x104,x110);}}}}}}}}}}}
 return r;}

extern OBJ _AMaxStrongComp_11(OBJ x1,OBJ x2) /* invert */
{OBJ r;
 CPCLS(__AMaxStrongComp_12,1);
 CPCLS(x1,1);
 COPY(x2,1);
 {OBJ x3;OBJ x4;
  x3=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AMaxStrongComp_12,2))(__AMaxStrongComp_12,x1,x2);
  x4=_AMap_21(x1,x2);
  r=_ASeqReduce_3(x3,__ATree_7,x4);}
 return r;}

extern OBJ _AMaxStrongComp_12(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* inv */
{OBJ r;
 CPCLS(__AMaxStrongComp_13,1);
 CPCLS(x1,1);
 COPY(x3,1);
 {OBJ x5;OBJ x6;
  x5=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AMaxStrongComp_13,2))(__AMaxStrongComp_13,x1,x3);
  x6=_AMap_16(x1,x2,x3);
  r=_ASeqReduce_3(x5,x4,x6);}
 return r;}

extern OBJ _AMaxStrongComp_13(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* inv,1 */
{OBJ r;
 CPCLS(x1,1);
 COPY(x3,1);
 COPY(x4,1);
 {OBJ x5;
  x5=_AMap_33(x1,x4,x3);
  if(ISPRM(x5)){
   CPCLS(x1,1);
   {OBJ x16;
    x16=_ASet_39(x1,x2,__ASeq_6);
    r=_AMap_31(x1,x3,x16,x4);}
  }else{
   {OBJ x14=FLD1(x5,1);
    if(EXPRD(x5,1)){
     DSPRDF(x5);
    }else{
     COPY(x14,1);
     FRPRD(x5,1);}
    CPCLS(x1,1);
    {OBJ x15;
     x15=_ASet_39(x1,x2,x14);
     r=_AMap_31(x1,x3,x15,x4);}}}}
 return r;}

extern OBJ _AMaxStrongComp_14(OBJ x1,OBJ x2) /* env,1 */
{OBJ r;
 PRD1(2,r);FLD1(r,1)=x1;FLD1(r,2)=x2;
 return r;}

static OBJ _mt_1_0_3(OBJ t,OBJ t1,OBJ t2,OBJ t3) 
{OBJ r;
 {OBJ t4;
  DCCLS(t,1);
  t4=(*(OBJ(*)(OBJ))ENTRY(t))(t1);
  r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(t4,2))(t4,t2,t3);}
 return r;}

init_AMaxStrongComp()
{
 static int visited=0; if(visited) return; visited=1;
 init_ASeq();
 init_ASet();
 init_AMap();
 init_ANat();
 init_AOption();
 init_APair();
 init_ASeqOfSeq();
 init_ASeqReduce();
 init_ASetReduce();
 init_ASetByBST();
 init_ABSTree();
 init_ATree();
 CLS(2,_AMaxStrongComp_14,__AMaxStrongComp_14);
 CLS(4,_AMaxStrongComp_13,__AMaxStrongComp_13);
 CLS(4,_AMaxStrongComp_12,__AMaxStrongComp_12);
 CLS(2,_AMaxStrongComp_11,__AMaxStrongComp_11);
 CLS(4,_AMaxStrongComp_10,__AMaxStrongComp_10);
 CLS(4,_AMaxStrongComp_9,__AMaxStrongComp_9);
 CLS(2,_AMaxStrongComp_8,__AMaxStrongComp_8);
 CLS(2,_AMaxStrongComp_7,__AMaxStrongComp_7);
 CLS(2,_AMaxStrongComp_6,__AMaxStrongComp_6);
 CLS(1,_AMaxStrongComp_5,__AMaxStrongComp_5);
 CLS(2,_AMaxStrongComp_3,__AMaxStrongComp_3);
 MTH(1,0,3,_mt_1_0_3);LZYMTH(1,0,3,_mt_1_0_3);}

