

#include "BUILTIN.h"
extern OBJ _ADArrayReduce_6(OBJ,OBJ,OBJ);extern OBJ __ADArrayReduce_6;
extern OBJ _AImpl_182(OBJ,OBJ);extern OBJ __AImpl_182;
extern OBJ _AName_34(OBJ);extern OBJ __AName_34;
extern OBJ _ARep_12(OBJ);extern OBJ __ARep_12;
extern OBJ _AFct_23(OBJ,OBJ);extern OBJ __AFct_23;

#include "Nat.h"

#include "Char.h"

#include "Bitset.h"
extern OBJ __ATable_10;
extern OBJ _ATable_17(OBJ,OBJ,OBJ);extern OBJ __ATable_17;

#include "NatConv.h"
extern OBJ _APairConv_3(OBJ,OBJ,OBJ);extern OBJ __APairConv_3;
extern OBJ __APairConv_7;

#include "Denotation.h"

#include "Int.h"

#include "Real.h"
extern OBJ _ADArray_14(OBJ,OBJ,OBJ);extern OBJ __ADArray_14;
extern OBJ _ADArray_15(OBJ,OBJ,OBJ);extern OBJ __ADArray_15;
extern OBJ _ADArray_20(OBJ,OBJ);extern OBJ __ADArray_20;

#include "Array.h"
extern OBJ _AGlobSigImpl_2(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AGlobSigImpl_2; /* anaDef */
extern OBJ _AGlobSigImpl_3(OBJ);OBJ __AGlobSigImpl_3; /* anaDef? */
extern OBJ _AGlobSigImpl_4(OBJ);OBJ __AGlobSigImpl_4; /* newEq */
extern OBJ _AGlobSigImpl_5(OBJ);OBJ __AGlobSigImpl_5; /* patts */
extern OBJ _AGlobSigImpl_6(OBJ);OBJ __AGlobSigImpl_6; /* freeLocal */
extern OBJ _AGlobSigImpl_7(OBJ);OBJ __AGlobSigImpl_7; /* locals */
extern OBJ _AGlobSigImpl_8(OBJ);OBJ __AGlobSigImpl_8; /* eqs */
extern OBJ _AGlobSigImpl_9(OBJ,OBJ,OBJ);OBJ __AGlobSigImpl_9; /* def */
extern OBJ _AGlobSigImpl_10(OBJ);OBJ __AGlobSigImpl_10; /* def? */
extern OBJ _AGlobSigImpl_14(OBJ);OBJ __AGlobSigImpl_14; /* data */
extern OBJ _AGlobSigImpl_15(OBJ);OBJ __AGlobSigImpl_15; /* data? */
extern OBJ _AGlobSigImpl_16(OBJ);OBJ __AGlobSigImpl_16; /* impl */
extern OBJ _AGlobSigImpl_17(OBJ);OBJ __AGlobSigImpl_17; /* canonical */
extern OBJ _AGlobSigImpl_18(OBJ);OBJ __AGlobSigImpl_18; /* canonical? */
extern OBJ _AGlobSigImpl_19(OBJ);OBJ __AGlobSigImpl_19; /* pos */
OBJ __AGlobSigImpl_20; /* parameter */
extern OBJ _AGlobSigImpl_21(OBJ);OBJ __AGlobSigImpl_21; /* parameter? */
OBJ __AGlobSigImpl_22; /* none */
extern OBJ _AGlobSigImpl_23(OBJ);OBJ __AGlobSigImpl_23; /* none? */
OBJ __AGlobSigImpl_25; /* {} */
extern OBJ _AGlobSigImpl_26(OBJ,OBJ,OBJ);OBJ __AGlobSigImpl_26; /* % */
extern OBJ _AGlobSigImpl_27(OBJ,OBJ);OBJ __AGlobSigImpl_27; /* + */
extern OBJ _AGlobSigImpl_28(OBJ);OBJ __AGlobSigImpl_28; /* locSigComplete */
extern TUP2 _AGlobSigImpl_29(OBJ,OBJ);OBJ __AGlobSigImpl_29; /* ! */
extern OBJ _AGlobSigImpl_30(OBJ);OBJ __AGlobSigImpl_30; /* ` */
extern OBJ _AGlobSigImpl_31(OBJ);OBJ __AGlobSigImpl_31; /* `,1 */
extern OBJ _AGlobSigImpl_32(OBJ);OBJ __AGlobSigImpl_32; /* locSig */
extern OBJ _AGlobSigImpl_33(OBJ);OBJ __AGlobSigImpl_33; /* locSig? */
extern OBJ _AGlobSigImpl_34(OBJ);OBJ __AGlobSigImpl_34; /* tab */
OBJ __AGlobSigImpl_35; /* `'35 */
OBJ __AGlobSigImpl_36; /* `'36 */
OBJ __AGlobSigImpl_37; /* `'37 */
OBJ __AGlobSigImpl_38; /* `'38 */
OBJ __AGlobSigImpl_39; /* `'39 */
OBJ __AGlobSigImpl_40; /* `'40 */
extern OBJ _AGlobSigImpl_41(OBJ);OBJ __AGlobSigImpl_41; /* `,1'41 */
extern OBJ _AGlobSigImpl_42(OBJ);OBJ __AGlobSigImpl_42; /* `,1'42 */
OBJ __AGlobSigImpl_43; /* `,1'43 */

extern OBJ _AGlobSigImpl_2(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* anaDef */
{OBJ r;
 PRD(5,5,r);FLD(r,1)=x1;FLD(r,2)=x2;FLD(r,3)=x3;FLD(r,4)=x4;FLD(r,5)=x5;
 return r;}

extern OBJ _AGlobSigImpl_3(OBJ x1) /* anaDef? */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,5))){
  if(EXPRD(x1,1)){
   DSPRD(x1);
  }else{
   DCPRD(x1,1);}
  r=__ABUILTIN_5;
 }else{
  FREE(x1,1);
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AGlobSigImpl_4(OBJ x1) /* newEq */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,5))){
  {OBJ x6=FLD(x1,5);
   if(EXPRD(x1,1)){
    r=x6;
    FLD(x1,5)=NIL;DSPRD(x1);
   }else{
    CPPRD(x6,1);
    r=x6;
    FRPRD(x1,1);}}
 }else{
  HLT("GlobSigImpl at <unknown> : undefined selection newEq\'GlobSigImpl:impl->eq");}
 return r;}

extern OBJ _AGlobSigImpl_5(OBJ x1) /* patts */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,5))){
  {OBJ x5=FLD(x1,4);
   if(EXPRD(x1,1)){
    r=x5;
    FLD(x1,4)=NIL;DSPRD(x1);
   }else{
    COPY(x5,1);
    r=x5;
    FRPRD(x1,1);}}
 }else{
  HLT("GlobSigImpl at <unknown> : undefined selection patts\'GlobSigImpl:impl->seq");}
 return r;}

extern OBJ _AGlobSigImpl_6(OBJ x1) /* freeLocal */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,5)||ISTGPRD(x1,4))){
  {OBJ x4=FLD(x1,3);
   if(EXPRD(x1,1)){
    r=x4;
    DSPRD(x1);
   }else{
    r=x4;
    FRPRD(x1,1);}}
 }else{
  HLT("GlobSigImpl at <unknown> : undefined selection freeLocal\'GlobSigImpl:impl->nat");}
 return r;}

extern OBJ _AGlobSigImpl_7(OBJ x1) /* locals */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,5)||ISTGPRD(x1,4))){
  {OBJ x3=FLD(x1,2);
   if(EXPRD(x1,1)){
    r=x3;
    FLD(x1,2)=NIL;DSPRD(x1);
   }else{
    CPPRD(x3,1);
    r=x3;
    FRPRD(x1,1);}}
 }else{
  HLT("GlobSigImpl at <unknown> : undefined selection locals\'GlobSigImpl:impl->locSig");}
 return r;}

extern OBJ _AGlobSigImpl_8(OBJ x1) /* eqs */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,5)||ISTGPRD(x1,4))){
  {OBJ x2=FLD(x1,1);
   if(EXPRD(x1,1)){
    r=x2;
    FLD(x1,1)=NIL;DSPRD(x1);
   }else{
    COPY(x2,1);
    r=x2;
    FRPRD(x1,1);}}
 }else{
  HLT("GlobSigImpl at <unknown> : undefined selection eqs\'GlobSigImpl:impl->seq");}
 return r;}

extern OBJ _AGlobSigImpl_9(OBJ x1,OBJ x2,OBJ x3) /* def */
{OBJ r;
 PRD(3,4,r);FLD(r,1)=x1;FLD(r,2)=x2;FLD(r,3)=x3;
 return r;}

extern OBJ _AGlobSigImpl_10(OBJ x1) /* def? */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,4))){
  if(EXPRD(x1,1)){
   DSPRD(x1);
  }else{
   DCPRD(x1,1);}
  r=__ABUILTIN_5;
 }else{
  FREE(x1,1);
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AGlobSigImpl_14(OBJ x1) /* data */
{OBJ r;
 PRD(1,3,r);FLD(r,1)=x1;
 return r;}

extern OBJ _AGlobSigImpl_15(OBJ x1) /* data? */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,3))){
  if(EXPRD(x1,1)){
   FRPRD(FLD(x1,1),1);DSPRDF(x1);
  }else{
   DCPRD(x1,1);}
  r=__ABUILTIN_5;
 }else{
  FREE(x1,1);
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AGlobSigImpl_16(OBJ x1) /* impl */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,3))){
  {OBJ x2=FLD(x1,1);
   if(EXPRD(x1,1)){
    r=x2;
    DSPRDF(x1);
   }else{
    CPPRD(x2,1);
    r=x2;
    FRPRD(x1,1);}}
 }else{
  HLT("GlobSigImpl at <unknown> : undefined selection impl\'GlobSigImpl:impl->sortImpl");}
 return r;}

extern OBJ _AGlobSigImpl_17(OBJ x1) /* canonical */
{OBJ r;
 PRD(1,2,r);FLD(r,1)=x1;
 return r;}

extern OBJ _AGlobSigImpl_18(OBJ x1) /* canonical? */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,2))){
  if(EXPRD(x1,1)){
   FREE(FLD(x1,1),1);DSPRDF(x1);
  }else{
   DCPRD(x1,1);}
  r=__ABUILTIN_5;
 }else{
  FREE(x1,1);
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AGlobSigImpl_19(OBJ x1) /* pos */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,2))){
  {OBJ x2=FLD(x1,1);
   if(EXPRD(x1,1)){
    r=x2;
    DSPRDF(x1);
   }else{
    COPY(x2,1);
    r=x2;
    FRPRD(x1,1);}}
 }else{
  HLT("GlobSigImpl at <unknown> : undefined selection pos\'GlobSigImpl:impl->pos");}
 return r;}

extern OBJ _AGlobSigImpl_21(OBJ x1) /* parameter? */
{OBJ r;
 if(ISPRM(x1)&&(ISTGPRM(x1,1))){
  r=__ABUILTIN_5;
 }else{
  FREE(x1,1);
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AGlobSigImpl_23(OBJ x1) /* none? */
{OBJ r;
 if(ISPRM(x1)&&(ISTGPRM(x1,0))){
  r=__ABUILTIN_5;
 }else{
  FREE(x1,1);
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AGlobSigImpl_26(OBJ x1,OBJ x2,OBJ x3) /* % */
{OBJ r;
 CPPRD(__ATable_10,1);
 {OBJ x4;
  PRD1(2,x4);FLD1(x4,1)=x2;FLD1(x4,2)=x3;
  r=_ADArray_15(__ATable_10,x1,x4);}
 return r;}

extern OBJ _AGlobSigImpl_27(OBJ x1,OBJ x2) /* + */
{OBJ r;
 CPCLS(__ADArray_14,1);
 r=_ADArrayReduce_6(__ADArray_14,x1,x2);
 return r;}

extern OBJ _AGlobSigImpl_28(OBJ x1) /* locSigComplete */
{OBJ r;
 r=x1;
 return r;}

extern TUP2 _AGlobSigImpl_29(OBJ x1,OBJ x2) /* ! */
{TUP2 r;
 {OBJ x3;
  x3=_ADArray_20(x1,x2);
  {OBJ x10=FLD1(x3,1);OBJ x11=FLD1(x3,2);
   if(EXPRD(x3,1)){
    r.c1=x10;r.c2=x11;
    DSPRDF(x3);
   }else{
    CPPRD(x10,1);COPY(x11,1);
    r.c1=x10;r.c2=x11;
    FRPRD(x3,1);}}}
 return r;}
extern OBJ _AGlobSigImpl_29_c(OBJ x1,OBJ x2) /* ! */
{OBJ r;
 {TUP2 t=_AGlobSigImpl_29(x1,x2);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _AGlobSigImpl_30(OBJ x1) /* ` */
{OBJ r;
 if(ISPRM(x1)){
  if(ISTGPRM(x1,0)){
   CPPRD(__AGlobSigImpl_35,1);
   r=__AGlobSigImpl_35;
  }else{
   CPPRD(__AGlobSigImpl_39,1);
   r=__AGlobSigImpl_39;}
 }else{
  switch(TGPRD(x1)){
   case 3:
    {OBJ x33=FLD(x1,1);
     if(EXPRD(x1,1)){
      DSPRDF(x1);
     }else{
      CPPRD(x33,1);
      FRPRD(x1,1);}
     CPPRD(__AGlobSigImpl_37,1);
     CPCLS(__AName_34,1);
     CPPRD(__APairConv_7,1);
     {OBJ x34;OBJ x35;
      x34=_AImpl_182(__AName_34,x33);
      ADenotation_4(x34,__APairConv_7,x35);
      ADenotation_4(__AGlobSigImpl_37,x35,r);}}break;
   case 4:
    if(EXPRD(x1,1)){
     DSPRD(x1);
    }else{
     DCPRD(x1,1);}
    CPPRD(__AGlobSigImpl_38,1);
    r=__AGlobSigImpl_38;break;
   case 5:
    if(EXPRD(x1,1)){
     DSPRD(x1);
    }else{
     DCPRD(x1,1);}
    CPPRD(__AGlobSigImpl_40,1);
    r=__AGlobSigImpl_40;break;
   default: 
    if(EXPRD(x1,1)){
     FREE(FLD(x1,1),1);DSPRDF(x1);
    }else{
     DCPRD(x1,1);}
    CPPRD(__AGlobSigImpl_36,1);
    r=__AGlobSigImpl_36;}}
 return r;}

extern OBJ _AGlobSigImpl_31(OBJ x1) /* `,1 */
{OBJ r;
 CPCLS(__AGlobSigImpl_42,1);
 CPPRD(__AGlobSigImpl_43,1);
 {OBJ x3;
  x3=(*(OBJ(*)(OBJ,OBJ))METHOD(__AGlobSigImpl_42,1))(__AGlobSigImpl_42,__ABUILTIN_20);
  r=_ATable_17(__AGlobSigImpl_43,x3,x1);}
 return r;}

extern OBJ _AGlobSigImpl_32(OBJ x1) /* locSig */
{OBJ r;
 r=x1;
 return r;}

extern OBJ _AGlobSigImpl_33(OBJ x1) /* locSig? */
{OBJ r;
 FRPRD(x1,1);
 r=__ABUILTIN_5;
 return r;}

extern OBJ _AGlobSigImpl_34(OBJ x1) /* tab */
{OBJ r;
 r=x1;
 return r;}

extern OBJ _AGlobSigImpl_41(OBJ x1) /* `,1'41 */
{OBJ r;
 CPCLS(__AName_34,1);
 CPCLS(__AFct_23,1);
 r=(*(OBJ(*)(OBJ,OBJ))METHOD(__AFct_23,1))(__AFct_23,__AName_34);
 return r;}

extern OBJ _AGlobSigImpl_42(OBJ x1) /* `,1'42 */
{OBJ r;
 CPCLS(__AGlobSigImpl_41,1);
 CPCLS(__ARep_12,1);
 CPCLS(__APairConv_3,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AGlobSigImpl_41,1))(__AGlobSigImpl_41,__ABUILTIN_20);
  r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__APairConv_3,2))(__APairConv_3,__ARep_12,x2);}
 return r;}




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

init_AGlobSigImpl()
{
 static int visited=0; if(visited) return; visited=1;
 init_ALexem();
 init_ADArrayReduce();
 init_AImpl();
 init_APatterns();
 init_AName();
 init_AOcPos();
 init_ARep();
 init_AFct();
 init_ASeq();
 init_ANat();
 init_AOption();
 init_AChar();
 init_AObjects();
 init_APair();
 init_ABitset();
 init_ATable();
 init_ANatConv();
 init_AOptionConv();
 init_APairConv();
 init_ASeqConv();
 init_ADenotation();
 init_ASeqZip();
 init_ACompose();
 init_ASeqMap();
 init_AString();
 init_AInt();
 init_AReal();
 init_ADArray();
 init_ANatMap();
 init_ASet();
 init_AArray();
 CLS(1,_AGlobSigImpl_31,__AGlobSigImpl_31);
 CLS(1,_AGlobSigImpl_30,__AGlobSigImpl_30);
 CLS(2,_AGlobSigImpl_29_c,__AGlobSigImpl_29);
 CLS(1,_AGlobSigImpl_28,__AGlobSigImpl_28);
 CLS(2,_AGlobSigImpl_27,__AGlobSigImpl_27);
 CLS(3,_AGlobSigImpl_26,__AGlobSigImpl_26);
 CLS(1,_AGlobSigImpl_23,__AGlobSigImpl_23);
 CLS(1,_AGlobSigImpl_21,__AGlobSigImpl_21);
 CLS(1,_AGlobSigImpl_19,__AGlobSigImpl_19);
 CLS(1,_AGlobSigImpl_18,__AGlobSigImpl_18);
 CLS(1,_AGlobSigImpl_17,__AGlobSigImpl_17);
 CLS(1,_AGlobSigImpl_16,__AGlobSigImpl_16);
 CLS(1,_AGlobSigImpl_15,__AGlobSigImpl_15);
 CLS(1,_AGlobSigImpl_14,__AGlobSigImpl_14);
 DEN("    ",__AGlobSigImpl_43);
 LCLS(1,_AGlobSigImpl_42,__AGlobSigImpl_42);
 CLS(1,_AGlobSigImpl_10,__AGlobSigImpl_10);
 LCLS(1,_AGlobSigImpl_41,__AGlobSigImpl_41);
 CLS(3,_AGlobSigImpl_9,__AGlobSigImpl_9);
 DEN("anaDef",__AGlobSigImpl_40);
 CLS(1,_AGlobSigImpl_8,__AGlobSigImpl_8);
 DEN("parameter",__AGlobSigImpl_39);
 CLS(1,_AGlobSigImpl_7,__AGlobSigImpl_7);
 DEN("def",__AGlobSigImpl_38);
 CLS(1,_AGlobSigImpl_6,__AGlobSigImpl_6);
 DEN("data(",__AGlobSigImpl_37);
 CLS(1,_AGlobSigImpl_5,__AGlobSigImpl_5);
 DEN("canonical",__AGlobSigImpl_36);
 CLS(1,_AGlobSigImpl_4,__AGlobSigImpl_4);
 DEN("none",__AGlobSigImpl_35);
 CLS(1,_AGlobSigImpl_3,__AGlobSigImpl_3);
 CLS(5,_AGlobSigImpl_2,__AGlobSigImpl_2);
 CLS(1,_AGlobSigImpl_34,__AGlobSigImpl_34);
 CLS(1,_AGlobSigImpl_33,__AGlobSigImpl_33);
 CLS(1,_AGlobSigImpl_32,__AGlobSigImpl_32);
 MTH(1,0,2,_mt_1_0_2);LZYMTH(1,0,2,_mt_1_0_2);
 PRM(1,__AGlobSigImpl_20);
 PRM(0,__AGlobSigImpl_22);
 CPPRD(__ATable_10,1);
 __AGlobSigImpl_25=__ATable_10;}

