

#include "BUILTIN.h"

#include "Nat.h"
extern OBJ __AOption_5;
extern OBJ __ASeq_6;
extern TUP2 _APair_8(OBJ);extern OBJ __APair_8;
extern OBJ _ABSTree_6(OBJ,OBJ);extern OBJ __ABSTree_6;
extern OBJ _ABSTree_34(OBJ,OBJ);extern OBJ __ABSTree_34;
extern OBJ _ABSTree_38(OBJ,OBJ,OBJ);extern OBJ __ABSTree_38;
extern OBJ _ABSTree_39(OBJ,OBJ,OBJ);extern OBJ __ABSTree_39;
extern OBJ _ABSTree_40(OBJ,OBJ,OBJ);extern OBJ __ABSTree_40;
extern OBJ _ABSTree_48(OBJ,OBJ);extern OBJ __ABSTree_48;
extern OBJ _ABSTree_58(OBJ,OBJ,OBJ);extern OBJ __ABSTree_58;
extern OBJ _ABSTreeMap_5(OBJ,OBJ,OBJ,OBJ);extern OBJ __ABSTreeMap_5;
extern OBJ _ABSTreeConv_7(OBJ,OBJ);extern OBJ __ABSTreeConv_7;
extern OBJ __ATree_7;
extern OBJ _ATree_25(OBJ);extern OBJ __ATree_25;
extern OBJ _ATreeConv_38(OBJ,OBJ);extern OBJ __ATreeConv_38;
extern OBJ _ACAST_3(OBJ);extern OBJ __ACAST_3;
extern OBJ _ASeqReduce_3(OBJ,OBJ,OBJ);extern OBJ __ASeqReduce_3;
extern OBJ _ASeqMap_3(OBJ,OBJ);extern OBJ __ASeqMap_3;

#include "Char.h"
extern OBJ _ABSTreeReduce_5(OBJ,OBJ,OBJ,OBJ);extern OBJ __ABSTreeReduce_5;

#include "Denotation.h"
extern OBJ _AMap_5(OBJ);OBJ __AMap_5; /* {} */
extern OBJ _AMap_6(OBJ,OBJ,OBJ,OBJ);OBJ __AMap_6; /* def */
extern OBJ _AMap_8(OBJ,OBJ,OBJ);OBJ __AMap_8; /* undef */
extern OBJ _AMap_9(OBJ,OBJ,OBJ,OBJ);OBJ __AMap_9; /* upd */
extern OBJ _AMap_10(OBJ,OBJ,OBJ,OBJ);OBJ __AMap_10; /* extend */
extern OBJ _AMap_11(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AMap_11; /* .. */
extern OBJ _AMap_12(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AMap_12; /* iter */
extern OBJ _AMap_13(OBJ,OBJ,OBJ);OBJ __AMap_13; /* init */
extern OBJ _AMap_14(OBJ,OBJ,OBJ);OBJ __AMap_14; /* <+ */
extern OBJ _AMap_15(OBJ,OBJ,OBJ);OBJ __AMap_15; /* <- */
extern OBJ _AMap_16(OBJ,OBJ,OBJ);OBJ __AMap_16; /* ! */
extern OBJ _AMap_17(OBJ,OBJ,OBJ,OBJ);OBJ __AMap_17; /* !,1 */
extern OBJ _AMap_18(OBJ,OBJ,OBJ);OBJ __AMap_18; /* !? */
extern OBJ _AMap_19(OBJ,OBJ);OBJ __AMap_19; /* {}? */
extern OBJ _AMap_20(OBJ,OBJ,OBJ);OBJ __AMap_20; /* def? */
extern OBJ _AMap_21(OBJ,OBJ);OBJ __AMap_21; /* dom */
extern OBJ _AMap_22(OBJ,OBJ);OBJ __AMap_22; /* codom */
extern OBJ _AMap_23(OBJ,OBJ);OBJ __AMap_23; /* # */
extern OBJ _AMap_24(OBJ,OBJ,OBJ);OBJ __AMap_24; /* exist? */
extern OBJ _AMap_25(OBJ,OBJ,OBJ);OBJ __AMap_25; /* find? */
extern OBJ _AMap_26(OBJ,OBJ,OBJ);OBJ __AMap_26; /* forall? */
extern OBJ _AMap_27(OBJ,OBJ);OBJ __AMap_27; /* abs */
extern OBJ _AMap_28(OBJ,OBJ);OBJ __AMap_28; /* abs? */
extern OBJ _AMap_29(OBJ,OBJ);OBJ __AMap_29; /* rep */
extern OBJ _AMap_30(OBJ,OBJ,OBJ);OBJ __AMap_30; /* less */
extern OBJ _AMap_31(OBJ,OBJ,OBJ,OBJ);OBJ __AMap_31; /* def,1 */
extern OBJ _AMap_32(OBJ,OBJ,OBJ,OBJ);OBJ __AMap_32; /* upd,1 */
extern OBJ _AMap_33(OBJ,OBJ,OBJ);OBJ __AMap_33; /* !?,1 */
extern OBJ _AMap_34(OBJ);OBJ __AMap_34; /* undef'34 */
extern OBJ _AMap_35(OBJ,OBJ,OBJ,OBJ);OBJ __AMap_35; /* init'35 */
extern OBJ _AMap_36(OBJ,OBJ,OBJ);OBJ __AMap_36; /* <+'36 */
extern OBJ _AMap_37(OBJ);OBJ __AMap_37; /* dom'37 */
extern OBJ _AMap_38(OBJ);OBJ __AMap_38; /* codom'38 */
extern OBJ _AMap_39(OBJ);OBJ __AMap_39; /* codom'39 */
extern OBJ _AMap_40(OBJ,OBJ);OBJ __AMap_40; /* exist?'40 */
extern OBJ _AMap_41(OBJ,OBJ);OBJ __AMap_41; /* find?'41 */
extern OBJ _AMap_42(OBJ,OBJ);OBJ __AMap_42; /* forall?'42 */

extern OBJ _AMap_5(OBJ x1) /* {} */
{OBJ r;
 FRCLS(x1,1);
 r=__ATree_7;
 return r;}

extern OBJ _AMap_6(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* def */
{OBJ r;
 r=_AMap_31(x1,x2,x3,x4);
 return r;}

extern OBJ _AMap_8(OBJ x1,OBJ x2,OBJ x3) /* undef */
{OBJ r;
 CPCLS(__AMap_30,1);
 CPCLS(__AMap_34,1);
 {OBJ x4;OBJ x5;OBJ x6;
  x4=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_30,1))(__AMap_30,x1);
  x5=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_34,1))(__AMap_34,__ABUILTIN_20);
  PRD1(2,x6);FLD1(x6,1)=x2;FLD1(x6,2)=x5;
  r=_ABSTree_58(x4,x6,x3);}
 return r;}

extern OBJ _AMap_9(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* upd */
{OBJ r;
 r=_AMap_32(x1,x2,x3,x4);
 return r;}

extern OBJ _AMap_10(register OBJ x1,register OBJ x2,register OBJ x3,register OBJ x4) /* extend */
{OBJ r;
 for(;;){
  if(ISPRM(x3)){
   FRCLS(x1,1);
   if(ISPRM(x4)){
    r=x2;
   }else{
    HLT("extend\'Map: seq[codom] too long");}
  }else{
   {OBJ x67=FLD1(x3,1);OBJ x68=FLD1(x3,2);
    if(EXPRD(x3,1)){
     DSPRDF(x3);
    }else{
     COPY(x67,1);COPY(x68,1);
     FRPRD(x3,1);}
    if(ISPRM(x4)){
     HLT("extend\'Map: seq[dom] too long");
    }else{
     {OBJ x69=FLD1(x4,1);OBJ x70=FLD1(x4,2);
      if(EXPRD(x4,1)){
       DSPRDF(x4);
      }else{
       COPY(x69,1);COPY(x70,1);
       FRPRD(x4,1);}
      CPCLS(x1,1);
      {OBJ x73;
       x73=_AMap_31(x1,x67,x69,x2);
       x2=x73;x3=x68;x4=x70;continue;}}}}}
  break;}
 return r;}

extern OBJ _AMap_11(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* .. */
{OBJ r;
 {OBJ x6;
  ANat_81(x2,x3,x6);
  if(ISTGPRM(x6,1)){
   FRCLS(x1,1);
   FRCLS(x4,1);
   FRCLS(x5,1);
   r=__ATree_7;
  }else{
   CPCLS(x1,1);
   CPCLS(x4,1);
   CPCLS(x5,1);
   {OBJ x7;OBJ x8;OBJ x9;OBJ x10;
    x7=(*(OBJ(*)(OBJ,OBJ))METHOD(x4,1))(x4,x2);
    COPY(x7,1);
    ANat_2(x2,x8);
    x9=(*(OBJ(*)(OBJ,OBJ))METHOD(x5,1))(x5,x7);
    x10=_AMap_11(x1,x8,x3,x4,x5);
    r=_AMap_31(x1,x7,x9,x10);}}}
 return r;}

extern OBJ _AMap_12(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* iter */
{OBJ r;
 COPY(x2,1);
 CPCLS(x4,1);
 {OBJ x6;
  x6=(*(OBJ(*)(OBJ,OBJ))METHOD(x4,1))(x4,x2);
  if(ISTGPRM(x6,1)){
   CPCLS(x1,1);
   COPY(x2,2);
   CPCLS(x3,1);
   CPCLS(x5,1);
   {OBJ x11;OBJ x12;OBJ x13;
    x11=(*(OBJ(*)(OBJ,OBJ))METHOD(x3,1))(x3,x2);
    x12=(*(OBJ(*)(OBJ,OBJ))METHOD(x5,1))(x5,x2);
    x13=_AMap_12(x1,x11,x3,x4,x5);
    r=_AMap_31(x1,x2,x12,x13);}
  }else{
   FRCLS(x1,1);
   FREE(x2,1);
   FRCLS(x3,1);
   FRCLS(x4,1);
   FRCLS(x5,1);
   r=__ATree_7;}}
 return r;}

extern OBJ _AMap_13(OBJ x1,OBJ x2,OBJ x3) /* init */
{OBJ r;
 CPCLS(__AMap_35,1);
 {OBJ x4;
  x4=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AMap_35,2))(__AMap_35,x1,x3);
  r=_ASeqReduce_3(x4,__ATree_7,x2);}
 return r;}

extern OBJ _AMap_14(OBJ x1,OBJ x2,OBJ x3) /* <+ */
{OBJ r;
 CPCLS(__AMap_30,1);
 CPCLS(__AMap_36,1);
 CPCLS(x1,1);
 {OBJ x4;OBJ x5;
  x4=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_30,1))(__AMap_30,x1);
  x5=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_36,1))(__AMap_36,x1);
  r=_ABSTreeReduce_5(x4,x5,x2,x3);}
 return r;}

extern OBJ _AMap_15(OBJ x1,OBJ x2,OBJ x3) /* <- */
{OBJ r;
 CPCLS(__AMap_8,1);
 {OBJ x4;
  x4=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_8,1))(__AMap_8,x1);
  r=_ASeqReduce_3(x4,x2,x3);}
 return r;}

extern OBJ _AMap_16(OBJ x1,OBJ x2,OBJ x3) /* ! */
{OBJ r;
 {OBJ x4;
  x4=_AMap_33(x1,x2,x3);
  if(ISPRM(x4)){
   HLT("!\'Map: element not in domain");
  }else{
   {OBJ x8=FLD1(x4,1);
    if(EXPRD(x4,1)){
     r=x8;
     DSPRDF(x4);
    }else{
     COPY(x8,1);
     r=x8;
     FRPRD(x4,1);}}}}
 return r;}

extern OBJ _AMap_17(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* !,1 */
{OBJ r;
 {OBJ x5;
  x5=_AMap_33(x1,x3,x4);
  if(ISPRM(x5)){
   r=x2;
  }else{
   {OBJ x9=FLD1(x5,1);
    if(EXPRD(x5,1)){
     r=x9;
     DSPRDF(x5);
    }else{
     COPY(x9,1);
     r=x9;
     FRPRD(x5,1);}
    FREE(x2,1);}}}
 return r;}

extern OBJ _AMap_18(OBJ x1,OBJ x2,OBJ x3) /* !? */
{OBJ r;
 r=_AMap_33(x1,x2,x3);
 return r;}

extern OBJ _AMap_19(OBJ x1,OBJ x2) /* {}? */
{OBJ r;
 FRCLS(x1,1);
 if(ISPRM(x2)){
  r=__ABUILTIN_5;
 }else{
  if(EXPRD(x2,1)){
   DSPRD(x2);
  }else{
   DCPRD(x2,1);}
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AMap_20(OBJ x1,OBJ x2,OBJ x3) /* def? */
{OBJ r;
 {OBJ x4;
  x4=_AMap_33(x1,x3,x2);
  if(ISPRM(x4)){
   r=__ABUILTIN_3;
  }else{
   if(EXPRD(x4,1)){
    FREE(FLD1(x4,1),1);DSPRDF(x4);
   }else{
    DCPRD(x4,1);}
   r=__ABUILTIN_5;}}
 return r;}

extern OBJ _AMap_21(OBJ x1,OBJ x2) /* dom */
{OBJ r;
 CPCLS(__AMap_30,1);
 CPCLS(__AMap_37,1);
 CPCLS(x1,2);
 {OBJ x3;OBJ x4;
  x3=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_30,1))(__AMap_30,x1);
  x4=_ABSTreeMap_5(x3,x1,__AMap_37,x2);
  r=_ABSTreeConv_7(x1,x4);}
 return r;}

extern OBJ _AMap_22(OBJ x1,OBJ x2) /* codom */
{OBJ r;
 CPCLS(__AMap_38,1);
 CPCLS(__AMap_39,1);
 FRCLS(x1,1);
 {OBJ x3;OBJ x4;
  x3=_ATreeConv_38(x2,__ASeq_6);
  x4=_ASeqMap_3(__AMap_39,x3);
  r=_ASeqMap_3(__AMap_38,x4);}
 return r;}

extern OBJ _AMap_23(OBJ x1,OBJ x2) /* # */
{OBJ r;
 CPCLS(__AMap_30,1);
 {OBJ x3;
  x3=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_30,1))(__AMap_30,x1);
  r=_ABSTree_34(x3,x2);}
 return r;}

extern OBJ _AMap_24(OBJ x1,OBJ x2,OBJ x3) /* exist? */
{OBJ r;
 CPCLS(__AMap_30,1);
 CPCLS(__AMap_40,1);
 {OBJ x4;OBJ x5;
  x4=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_30,1))(__AMap_30,x1);
  x5=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_40,1))(__AMap_40,x2);
  r=_ABSTree_38(x4,x5,x3);}
 return r;}

extern OBJ _AMap_25(OBJ x1,OBJ x2,OBJ x3) /* find? */
{OBJ r;
 CPCLS(__AMap_30,1);
 CPCLS(__AMap_41,1);
 {OBJ x4;OBJ x5;
  x4=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_30,1))(__AMap_30,x1);
  x5=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_41,1))(__AMap_41,x2);
  r=_ABSTree_40(x4,x5,x3);}
 return r;}

extern OBJ _AMap_26(OBJ x1,OBJ x2,OBJ x3) /* forall? */
{OBJ r;
 CPCLS(__AMap_30,1);
 CPCLS(__AMap_42,1);
 {OBJ x4;OBJ x5;
  x4=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_30,1))(__AMap_30,x1);
  x5=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_42,1))(__AMap_42,x2);
  r=_ABSTree_39(x4,x5,x3);}
 return r;}

extern OBJ _AMap_27(OBJ x1,OBJ x2) /* abs */
{OBJ r;
 FRCLS(x1,1);
 r=x2;
 return r;}

extern OBJ _AMap_28(OBJ x1,OBJ x2) /* abs? */
{OBJ r;
 FRCLS(x1,1);
 FREE(x2,1);
 r=__ABUILTIN_5;
 return r;}

extern OBJ _AMap_29(OBJ x1,OBJ x2) /* rep */
{OBJ r;
 FRCLS(x1,1);
 r=x2;
 return r;}

extern OBJ _AMap_30(OBJ x1,OBJ x2,OBJ x3) /* less */
{OBJ r;
 {OBJ x10=FLD1(x2,1);
  if(EXPRD(x2,1)){
   FREE(FLD1(x2,2),1);DSPRDF(x2);
  }else{
   COPY(x10,1);
   FRPRD(x2,1);}
  {OBJ x12=FLD1(x3,1);
   if(EXPRD(x3,1)){
    FREE(FLD1(x3,2),1);DSPRDF(x3);
   }else{
    COPY(x12,1);
    FRPRD(x3,1);}
   {OBJ x14;
    x14=x12;
    r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x10,x14);}}}
 return r;}

extern OBJ _AMap_31(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* def,1 */
{OBJ r;
 if(ISPRM(x4)){
  FRCLS(x1,1);
  {OBJ x118;OBJ x119;
   PRD1(2,x118);FLD1(x118,1)=x2;FLD1(x118,2)=x3;
   PRD1(2,x119);FLD1(x119,1)=x118;FLD1(x119,2)=__ANat_8;
   PRD1(3,r);FLD1(r,1)=x119;FLD1(r,2)=__ATree_7;FLD1(r,3)=__ATree_7;}
 }else{
  {OBJ x120=FLD1(x4,1);OBJ x121=FLD1(x4,2);OBJ x122=FLD1(x4,3);FLAG x_x4=EXPRD(x4,1);
   if(x_x4){
   }else{
    CPPRD(x120,1);COPY(x121,1);COPY(x122,1);}
   {OBJ x124=FLD1(x120,1);OBJ x125=FLD1(x120,2);FLAG x_x120=EXPRD(x120,1);
    if(x_x120){
    }else{
     CPPRD(x124,1);}
    {OBJ x126=FLD1(x124,1);OBJ x127=FLD1(x124,2);FLAG x_x124=EXPRD(x124,1);
     if(x_x124){
      COPY(x126,1);
     }else{
      COPY(x126,2);COPY(x127,1);}
     CPCLS(x1,1);
     COPY(x2,1);
     {OBJ x128;
      x128=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x2,x126);
      if(ISTGPRM(x128,1)){
       CPCLS(x1,1);
       COPY(x122,1);
       CPCLS(__AMap_30,1);
       {OBJ x129;OBJ x130;OBJ x131;OBJ x132;OBJ x133;OBJ x134;OBJ x135;OBJ x136;OBJ x137;
	x129=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_30,1))(__AMap_30,x1);
	x130=_ATree_25(x122);
	x131=_AMap_31(x1,x2,x3,x121);
	COPY(x131,1);
	x132=_ATree_25(x131);
	ANat_61(x132,x130,x133);
	if(x_x124){
	 RSOME(x124,x134);
	}else{
	 FRPRD(x124,1);PRD1(2,x134);FLD1(x134,1)=x126;FLD1(x134,2)=x127;}
	ANat_2(x133,x135);
	if(x_x120){
	 RSOME(x120,x136);FLD1(x136,1)=x134;FLD1(x136,2)=x135;
	}else{
	 FRPRD(x120,1);PRD1(2,x136);FLD1(x136,1)=x134;FLD1(x136,2)=x135;}
	if(x_x4){
	 RSOME(x4,x137);FLD1(x137,1)=x136;FLD1(x137,2)=x131;
	}else{
	 FRPRD(x4,1);PRD1(3,x137);FLD1(x137,1)=x136;FLD1(x137,2)=x131;FLD1(x137,3)=x122;}
	r=_ABSTree_48(x129,x137);}
      }else{
       CPCLS(x1,1);
       COPY(x2,1);
       COPY(x126,1);
       {OBJ x138;
	x138=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x126,x2);
	if(ISTGPRM(x138,1)){
	 CPCLS(x1,1);
	 COPY(x121,1);
	 CPCLS(__AMap_30,1);
	 {OBJ x139;OBJ x141;OBJ x140;OBJ x142;OBJ x143;OBJ x144;OBJ x145;OBJ x146;OBJ x147;
	  x139=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_30,1))(__AMap_30,x1);
	  x141=_ATree_25(x121);
	  x140=_AMap_31(x1,x2,x3,x122);
	  COPY(x140,1);
	  x142=_ATree_25(x140);
	  ANat_61(x141,x142,x143);
	  if(x_x124){
	   RSOME(x124,x144);
	  }else{
	   FRPRD(x124,1);PRD1(2,x144);FLD1(x144,1)=x126;FLD1(x144,2)=x127;}
	  ANat_2(x143,x145);
	  if(x_x120){
	   RSOME(x120,x146);FLD1(x146,1)=x144;FLD1(x146,2)=x145;
	  }else{
	   FRPRD(x120,1);PRD1(2,x146);FLD1(x146,1)=x144;FLD1(x146,2)=x145;}
	  if(x_x4){
	   RSOME(x4,x147);FLD1(x147,1)=x146;FLD1(x147,3)=x140;
	  }else{
	   FRPRD(x4,1);PRD1(3,x147);FLD1(x147,1)=x146;FLD1(x147,2)=x121;FLD1(x147,3)=x140;}
	  r=_ABSTree_48(x139,x147);}
	}else{
	 FRCLS(x1,1);
	 FREE(x2,1);
	 FREE(x127,1);
	 {OBJ x148;OBJ x149;
	  if(x_x124){
	   RSOME(x124,x148);FLD1(x148,2)=x3;
	  }else{
	   FRPRD(x124,1);PRD1(2,x148);FLD1(x148,1)=x126;FLD1(x148,2)=x3;}
	  if(x_x120){
	   RSOME(x120,x149);FLD1(x149,1)=x148;
	  }else{
	   FRPRD(x120,1);PRD1(2,x149);FLD1(x149,1)=x148;FLD1(x149,2)=x125;}
	  if(x_x4){
	   RSOME(x4,r);FLD1(r,1)=x149;
	  }else{
	   FRPRD(x4,1);PRD1(3,r);FLD1(r,1)=x149;FLD1(r,2)=x121;FLD1(r,3)=x122;}}}}}}}}}}
 return r;}

extern OBJ _AMap_32(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* upd,1 */
{OBJ r;
 if(ISPRM(x4)){
  FRCLS(x1,1);
  FREE(x2,1);
  FRCLS(x3,1);
  r=__ATree_7;
 }else{
  {OBJ x95=FLD1(x4,1);OBJ x96=FLD1(x4,2);OBJ x97=FLD1(x4,3);FLAG x_x4=EXPRD(x4,1);
   if(x_x4){
   }else{
    CPPRD(x95,1);COPY(x96,1);COPY(x97,1);}
   {OBJ x99=FLD1(x95,1);OBJ x100=FLD1(x95,2);FLAG x_x95=EXPRD(x95,1);
    if(x_x95){
    }else{
     CPPRD(x99,1);}
    {OBJ x101=FLD1(x99,1);OBJ x102=FLD1(x99,2);FLAG x_x99=EXPRD(x99,1);
     if(x_x99){
      COPY(x101,1);
     }else{
      COPY(x101,2);COPY(x102,1);}
     CPCLS(x1,1);
     COPY(x2,1);
     {OBJ x103;
      x103=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x2,x101);
      if(ISTGPRM(x103,1)){
       CPCLS(x1,1);
       CPCLS(__AMap_30,1);
       {OBJ x104;OBJ x105;OBJ x106;OBJ x107;OBJ x108;
	x104=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_30,1))(__AMap_30,x1);
	x105=_AMap_32(x1,x2,x3,x96);
	if(x_x99){
	 RSOME(x99,x106);
	}else{
	 FRPRD(x99,1);PRD1(2,x106);FLD1(x106,1)=x101;FLD1(x106,2)=x102;}
	if(x_x95){
	 RSOME(x95,x107);FLD1(x107,1)=x106;
	}else{
	 FRPRD(x95,1);PRD1(2,x107);FLD1(x107,1)=x106;FLD1(x107,2)=x100;}
	if(x_x4){
	 RSOME(x4,x108);FLD1(x108,1)=x107;FLD1(x108,2)=x105;
	}else{
	 FRPRD(x4,1);PRD1(3,x108);FLD1(x108,1)=x107;FLD1(x108,2)=x105;FLD1(x108,3)=x97;}
	r=_ABSTree_48(x104,x108);}
      }else{
       CPCLS(x1,1);
       COPY(x2,1);
       COPY(x101,1);
       {OBJ x109;
	x109=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x101,x2);
	if(ISTGPRM(x109,1)){
	 CPCLS(x1,1);
	 CPCLS(__AMap_30,1);
	 {OBJ x110;OBJ x111;OBJ x112;OBJ x113;OBJ x114;
	  x110=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_30,1))(__AMap_30,x1);
	  x111=_AMap_32(x1,x2,x3,x97);
	  if(x_x99){
	   RSOME(x99,x112);
	  }else{
	   FRPRD(x99,1);PRD1(2,x112);FLD1(x112,1)=x101;FLD1(x112,2)=x102;}
	  if(x_x95){
	   RSOME(x95,x113);FLD1(x113,1)=x112;
	  }else{
	   FRPRD(x95,1);PRD1(2,x113);FLD1(x113,1)=x112;FLD1(x113,2)=x100;}
	  if(x_x4){
	   RSOME(x4,x114);FLD1(x114,1)=x113;FLD1(x114,3)=x111;
	  }else{
	   FRPRD(x4,1);PRD1(3,x114);FLD1(x114,1)=x113;FLD1(x114,2)=x96;FLD1(x114,3)=x111;}
	  r=_ABSTree_48(x110,x114);}
	}else{
	 FRCLS(x1,1);
	 FREE(x2,1);
	 {OBJ x115;OBJ x116;OBJ x117;
	  x115=(*(OBJ(*)(OBJ,OBJ))METHOD(x3,1))(x3,x102);
	  if(x_x99){
	   RSOME(x99,x116);FLD1(x116,2)=x115;
	  }else{
	   FRPRD(x99,1);PRD1(2,x116);FLD1(x116,1)=x101;FLD1(x116,2)=x115;}
	  if(x_x95){
	   RSOME(x95,x117);FLD1(x117,1)=x116;
	  }else{
	   FRPRD(x95,1);PRD1(2,x117);FLD1(x117,1)=x116;FLD1(x117,2)=x100;}
	  if(x_x4){
	   RSOME(x4,r);FLD1(r,1)=x117;
	  }else{
	   FRPRD(x4,1);PRD1(3,r);FLD1(r,1)=x117;FLD1(r,2)=x96;FLD1(r,3)=x97;}}}}}}}}}}
 return r;}

extern OBJ _AMap_33(register OBJ x1,register OBJ x2,register OBJ x3) /* !?,1 */
{OBJ r;
 for(;;){
  if(ISPRM(x2)){
   FRCLS(x1,1);
   FREE(x3,1);
   r=__AOption_5;
  }else{
   {OBJ x42=FLD1(x2,2);OBJ x43=FLD1(x2,3);
    COPY(x42,1);COPY(x43,1);
    CPCLS(x1,1);
    CPCLS(__AMap_30,1);
    {OBJ x44;OBJ x46;
     x44=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMap_30,1))(__AMap_30,x1);
     x46=_ABSTree_6(x44,x2);
     {OBJ x47=FLD1(x46,1);OBJ x48=FLD1(x46,2);
      if(EXPRD(x46,1)){
       COPY(x47,1);
       DSPRDF(x46);
      }else{
       COPY(x47,2);COPY(x48,1);
       FRPRD(x46,1);}
      CPCLS(x1,1);
      COPY(x3,1);
      {OBJ x49;
       x49=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x3,x47);
       if(ISTGPRM(x49,1)){
	FREE(x43,1);
	FREE(x47,1);
	FREE(x48,1);
	x2=x42;continue;
       }else{
	FREE(x42,1);
	CPCLS(x1,1);
	COPY(x3,1);
	{OBJ x50;
	 x50=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x47,x3);
	 if(ISTGPRM(x50,1)){
	  FREE(x48,1);
	  x2=x43;continue;
	 }else{
	  FRCLS(x1,1);
	  FREE(x3,1);
	  FREE(x43,1);
	  PRD1(1,r);FLD1(r,1)=x48;}}}}}}}}
  break;}
 return r;}

extern OBJ _AMap_34(OBJ x1) /* undef'34 */
{OBJ r;
 r=_ACAST_3(__ANat_5);
 return r;}

extern OBJ _AMap_35(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* init'35 */
{OBJ r;
 COPY(x3,1);
 {OBJ x5;
  x5=(*(OBJ(*)(OBJ,OBJ))METHOD(x2,1))(x2,x3);
  r=_AMap_31(x1,x3,x5,x4);}
 return r;}

extern OBJ _AMap_36(OBJ x1,OBJ x2,OBJ x3) /* <+'36 */
{OBJ r;
 {TUP2 x11;
  x11=_APair_8(x2);
  r=_AMap_31(x1,x11.c1,x11.c2,x3);}
 return r;}

extern OBJ _AMap_37(OBJ x1) /* dom'37 */
{OBJ r;
 {OBJ x2=FLD1(x1,1);
  if(EXPRD(x1,1)){
   r=x2;
   FREE(FLD1(x1,2),1);DSPRDF(x1);
  }else{
   COPY(x2,1);
   r=x2;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AMap_38(OBJ x1) /* codom'38 */
{OBJ r;
 {OBJ x3=FLD1(x1,2);
  if(EXPRD(x1,1)){
   r=x3;
   FREE(FLD1(x1,1),1);DSPRDF(x1);
  }else{
   COPY(x3,1);
   r=x3;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AMap_39(OBJ x1) /* codom'39 */
{OBJ r;
 {OBJ x2=FLD1(x1,1);
  if(EXPRD(x1,1)){
   r=x2;
   DSPRDF(x1);
  }else{
   CPPRD(x2,1);
   r=x2;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AMap_40(OBJ x1,OBJ x2) /* exist?'40 */
{OBJ r;
 {TUP2 x4;
  x4=_APair_8(x2);
  r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x4.c1,x4.c2);}
 return r;}

extern OBJ _AMap_41(OBJ x1,OBJ x2) /* find?'41 */
{OBJ r;
 {TUP2 x4;
  x4=_APair_8(x2);
  r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x4.c1,x4.c2);}
 return r;}

extern OBJ _AMap_42(OBJ x1,OBJ x2) /* forall?'42 */
{OBJ r;
 {TUP2 x4;
  x4=_APair_8(x2);
  r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x4.c1,x4.c2);}
 return r;}

static OBJ _mt_5_1_2(OBJ t,OBJ t1,OBJ t2) 
{OBJ r;
 if(EXCLS(t)){
  r=t;
 }else{
  DPCLS(t,r);
  FLDCLS(r,1)=FLDCLS(t,1);
  COPY(FLDCLS(r,1),1);}
 INCCLS(r,1,2);
 FLDCLS(r,2)=t1;
 FLDCLS(r,3)=t2;
 return r;}

static OBJ _mt_5_1_3(OBJ t,OBJ t1,OBJ t2,OBJ t3) 
{OBJ r;
 if(EXCLS(t)){
  r=t;
 }else{
  DPCLS(t,r);
  FLDCLS(r,1)=FLDCLS(t,1);
  COPY(FLDCLS(r,1),1);}
 INCCLS(r,1,3);
 FLDCLS(r,2)=t1;
 FLDCLS(r,3)=t2;
 FLDCLS(r,4)=t3;
 return r;}

init_AMap()
{
 static int visited=0; if(visited) return; visited=1;
 init_ANat();
 init_AOption();
 init_ASet();
 init_ASeq();
 init_APair();
 init_ASetByBST();
 init_ASetByBSTMap();
 init_ASetByBSTReduce();
 init_ABSTree();
 init_ABSTreeMap();
 init_ABSTreeConv();
 init_ASetReduce();
 init_ATree();
 init_ATreeConv();
 init_ACAST();
 init_ASetConv();
 init_ASeqReduce();
 init_ASeqMap();
 init_AString();
 init_AChar();
 init_ABSTreeReduce();
 init_ATreeMap();
 init_ARelCmp();
 init_ADenotation();
 init_ASeqConv();
 CLS(4,_AMap_31,__AMap_31);
 CLS(3,_AMap_30,__AMap_30);
 CLS(2,_AMap_29,__AMap_29);
 CLS(2,_AMap_28,__AMap_28);
 CLS(2,_AMap_27,__AMap_27);
 CLS(3,_AMap_26,__AMap_26);
 CLS(3,_AMap_25,__AMap_25);
 CLS(3,_AMap_24,__AMap_24);
 CLS(2,_AMap_23,__AMap_23);
 CLS(2,_AMap_22,__AMap_22);
 CLS(2,_AMap_21,__AMap_21);
 CLS(3,_AMap_20,__AMap_20);
 CLS(2,_AMap_19,__AMap_19);
 CLS(3,_AMap_18,__AMap_18);
 CLS(4,_AMap_17,__AMap_17);
 CLS(3,_AMap_16,__AMap_16);
 CLS(3,_AMap_15,__AMap_15);
 CLS(3,_AMap_14,__AMap_14);
 CLS(3,_AMap_13,__AMap_13);
 CLS(5,_AMap_12,__AMap_12);
 CLS(5,_AMap_11,__AMap_11);
 CLS(2,_AMap_42,__AMap_42);
 CLS(4,_AMap_10,__AMap_10);
 CLS(2,_AMap_41,__AMap_41);
 CLS(4,_AMap_9,__AMap_9);
 CLS(2,_AMap_40,__AMap_40);
 CLS(3,_AMap_8,__AMap_8);
 CLS(1,_AMap_39,__AMap_39);
 CLS(1,_AMap_38,__AMap_38);
 CLS(4,_AMap_6,__AMap_6);
 CLS(1,_AMap_37,__AMap_37);
 CLS(1,_AMap_5,__AMap_5);
 CLS(3,_AMap_36,__AMap_36);
 CLS(4,_AMap_35,__AMap_35);
 LCLS(1,_AMap_34,__AMap_34);
 CLS(3,_AMap_33,__AMap_33);
 CLS(4,_AMap_32,__AMap_32);
 MTH(5,1,2,_mt_5_1_2);LZYMTH(5,1,2,_mt_5_1_2);
 MTH(5,1,3,_mt_5_1_3);LZYMTH(5,1,3,_mt_5_1_3);}

