

#include "BUILTIN.h"

#include "Int.h"
extern OBJ _AImpl_84(OBJ);extern OBJ __AImpl_84;
extern OBJ _AImpl_92(OBJ);extern OBJ __AImpl_92;
extern OBJ _AImpl_102(OBJ);extern OBJ __AImpl_102;
extern OBJ _AImpl_103(OBJ);extern OBJ __AImpl_103;

#include "Array.h"
extern OBJ _ABaseGeneration_17(OBJ,OBJ);extern OBJ __ABaseGeneration_17;
extern OBJ __ASeq_6;
extern TUP2 _ANameGeneration_1(OBJ,OBJ,OBJ);extern OBJ __ANameGeneration_1;

#include "Nat.h"
extern TUP2 _ASeqMapEnv_4(OBJ,OBJ,OBJ);extern OBJ __ASeqMapEnv_4;
extern TUP2 _AExprGeneration_2(OBJ,OBJ,OBJ,OBJ);extern OBJ __AExprGeneration_2;
extern TUP2 _AExprGeneration_3(OBJ,OBJ,OBJ,OBJ,OBJ);extern OBJ __AExprGeneration_3;
extern OBJ _AAGSig_13(OBJ,OBJ);extern OBJ __AAGSig_13;

#include "Char.h"
extern OBJ _ASeqFilter_2(OBJ,OBJ);extern OBJ __ASeqFilter_2;
extern OBJ _ARep_119(OBJ);extern OBJ __ARep_119;

#include "Bitset.h"

#include "Denotation.h"
extern TUP2 _APropGeneration_1(OBJ,OBJ,OBJ,OBJ);OBJ __APropGeneration_1; /* impl2Prop */
extern TUP2 _APropGeneration_2(OBJ,OBJ,OBJ,OBJ);OBJ __APropGeneration_2; /* form2Form */
extern TUP2 _APropGeneration_4(OBJ,OBJ,OBJ,OBJ);OBJ __APropGeneration_4; /* variant2Variant */
extern TUP2 _APropGeneration_5(OBJ,OBJ,OBJ,OBJ);OBJ __APropGeneration_5; /* comp2Comp */
extern OBJ _APropGeneration_6(OBJ,OBJ);OBJ __APropGeneration_6; /* impl2Prop'6 */

extern TUP2 _APropGeneration_1(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* impl2Prop */
{TUP2 r;
 if(ISPRD(x4)&&(ISTGPRD(x4,3))){
  {OBJ x175=FLD(x4,1);
   if(EXPRD(x4,1)){
    DSPRDF(x4);
   }else{
    CPPRD(x175,1);
    FRPRD(x4,1);}
   {OBJ x176=FLD1(x3,1);
    CPPRD(x176,1);
    {OBJ x178=FLD1(x2,1);
     if(EXPRD(x2,1)){
      DSPRD(x2);
     }else{
      FRPRD(x2,1);}
     {OBJ x181=FLD1(x176,1);
      if(EXPRD(x176,1)){
       FREE(FLD1(x176,2),1);DSPRDF(x176);
      }else{
       DCPRD(x176,1);}
      {OBJ x183=FLD1(x175,1);OBJ x184=FLD1(x175,2);OBJ x185=FLD1(x175,3);
       if(EXPRD(x175,1)){
	COPY(x183,1);
	DSPRDF(x175);
       }else{
	COPY(x183,2);COPY(x184,1);COPY(x185,1);
	FRPRD(x175,1);}
       COPY(x1,2);
       CPCLS(__APropGeneration_4,1);
       CPCLS(__APropGeneration_6,1);
       {OBJ x186;OBJ x187;OBJ x188;OBJ x189;TUP2 x191;
	x186=_ABaseGeneration_17(x185,x181);
	x187=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__APropGeneration_4,2))(__APropGeneration_4,x1,x183);
	x188=(*(OBJ(*)(OBJ,OBJ))METHOD(__APropGeneration_6,1))(__APropGeneration_6,x1);
	x189=_ASeqFilter_2(x188,x184);
	x191=_ASeqMapEnv_4(x187,x3,x189);
	PRD(5,0,r.c2);FLD(r.c2,1)=x186;FLD(r.c2,2)=x178;FLD(r.c2,4)=x191.c2;FLD(r.c2,5)=__ASeq_6;
	{TUP2 t=_ANameGeneration_1(x1,x191.c1,x183);
	 r.c1=t.c1;
	 FLD(r.c2,3)=t.c2;}}}}}}}
 }else{
  HLT("PropGeneration at <unknown> : missing else in impl2Prop\'PropGeneration:globSig**name->envIO**impl->envIO**property");}
 return r;}
extern OBJ _APropGeneration_1_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* impl2Prop */
{OBJ r;
 {TUP2 t=_APropGeneration_1(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _APropGeneration_2(register OBJ x1,register OBJ x2,register OBJ x3,register OBJ x4) /* form2Form */
{TUP2 r;OBJ* p1=&r.c1;OBJ* p2=&r.c2;
 for(;;){
  switch(TGPRD(x3)){
   case 7:
    CPPRD(x3,2);
    {OBJ x1521;OBJ x1522;OBJ x1523;
     x1521=_AImpl_84(x3);
     x1522=_AImpl_103(x3);
     x1523=_AImpl_102(x3);
     {OBJ x1524=FLD1(x4,1);
      CPPRD(x1524,1);
      {OBJ x1527=FLD1(x1524,1);
       if(EXPRD(x1524,1)){
	FREE(FLD1(x1524,2),1);DSPRDF(x1524);
       }else{
	DCPRD(x1524,1);}
       COPY(x1,1);
       CPPRD(x2,1);
       {OBJ x1529;TUP2 x1530;
	x1529=_ABaseGeneration_17(x1521,x1527);
	x1530=_APropGeneration_2(x1,x2,x1522,x4);
	PRD(3,7,*p1);FLD(*p1,1)=x1529;FLD(*p1,2)=x1530.c1;
	x3=x1523;x4=x1530.c2;p1=&FLD(*p1,3);continue;}}}}break;
   case 9:
    {OBJ x1536=FLD(x3,1);
     COPY(x1536,1);
     CPPRD(x3,1);
     {OBJ x1539;OBJ x1540;
      x1539=_AImpl_84(x3);
      x1540=_AImpl_92(x3);
      {OBJ x1541=FLD1(x4,1);
       CPPRD(x1541,1);
       {OBJ x1543=FLD1(x1541,1);
	if(EXPRD(x1541,1)){
	 FREE(FLD1(x1541,2),1);DSPRDF(x1541);
	}else{
	 DCPRD(x1541,1);}
	COPY(x1,1);
	CPPRD(x2,1);
	CPPRD(x4,1);
	CPCLS(__AExprGeneration_3,1);
	{OBJ x1545;OBJ x1546;TUP2 x1548;
	 x1545=_ABaseGeneration_17(x1539,x1543);
	 COPY(x1545,1);
	 x1546=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AExprGeneration_3,3))(__AExprGeneration_3,x1,x2,x1545);
	 x1548=_ASeqMapEnv_4(x1546,x4,x1536);
	 FRPRD(x1548.c1,1);
	 PRD(3,9,*p1);FLD(*p1,1)=x1545;FLD(*p1,2)=x1548.c2;
	 x3=x1540;p1=&FLD(*p1,3);continue;}}}}}break;
   case 10:
    {OBJ x1554=FLD(x3,1);
     CPPRD(x1554,1);
     FREE(x1,1);
     FRPRD(x2,1);
     {OBJ x1556;
      x1556=_AImpl_84(x3);
      {OBJ x1557=FLD1(x4,1);
       CPPRD(x1557,1);
       {OBJ x1559;
	x1559=_ARep_119(x1554);
	{OBJ x1560=FLD1(x1557,1);
	 if(EXPRD(x1557,1)){
	  FREE(FLD1(x1557,2),1);DSPRDF(x1557);
	 }else{
	  DCPRD(x1557,1);}
	 {OBJ x1562;
	  x1562=_ABaseGeneration_17(x1556,x1560);
	  PRD(2,10,*p1);FLD(*p1,1)=x1562;FLD(*p1,2)=x1559;
	  *p2=x4;}}}}}}break;
   case 8:
    {OBJ x1564=FLD(x3,1);
     COPY(x1564,1);
     CPPRD(x3,1);
     {OBJ x1567;OBJ x1568;
      x1567=_AImpl_84(x3);
      x1568=_AImpl_92(x3);
      {OBJ x1569=FLD1(x4,1);
       CPPRD(x1569,1);
       {OBJ x1571=FLD1(x1569,1);
	if(EXPRD(x1569,1)){
	 FREE(FLD1(x1569,2),1);DSPRDF(x1569);
	}else{
	 DCPRD(x1569,1);}
	COPY(x1,1);
	CPPRD(x2,1);
	CPCLS(__AExprGeneration_3,1);
	{OBJ x1573;OBJ x1574;TUP2 x1576;
	 x1573=_ABaseGeneration_17(x1567,x1571);
	 COPY(x1573,1);
	 x1574=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AExprGeneration_3,3))(__AExprGeneration_3,x1,x2,x1573);
	 x1576=_ASeqMapEnv_4(x1574,x4,x1564);
	 PRD(3,8,*p1);FLD(*p1,1)=x1573;FLD(*p1,2)=x1576.c2;
	 x3=x1568;x4=x1576.c1;p1=&FLD(*p1,3);continue;}}}}}break;
   case 5:
    CPPRD(x3,2);
    {OBJ x1585;OBJ x1586;OBJ x1587;
     x1585=_AImpl_84(x3);
     x1586=_AImpl_103(x3);
     x1587=_AImpl_102(x3);
     {OBJ x1588=FLD1(x4,1);
      CPPRD(x1588,1);
      {OBJ x1591=FLD1(x1588,1);
       if(EXPRD(x1588,1)){
	FREE(FLD1(x1588,2),1);DSPRDF(x1588);
       }else{
	DCPRD(x1588,1);}
       COPY(x1,1);
       CPPRD(x2,1);
       {OBJ x1593;TUP2 x1594;
	x1593=_ABaseGeneration_17(x1585,x1591);
	x1594=_APropGeneration_2(x1,x2,x1586,x4);
	PRD(3,5,*p1);FLD(*p1,1)=x1593;FLD(*p1,2)=x1594.c1;
	x3=x1587;x4=x1594.c2;p1=&FLD(*p1,3);continue;}}}}break;
   case 6:
    CPPRD(x3,2);
    {OBJ x1603;OBJ x1604;OBJ x1605;
     x1603=_AImpl_102(x3);
     x1604=_AImpl_103(x3);
     x1605=_AImpl_84(x3);
     {OBJ x1606=FLD1(x4,1);
      CPPRD(x1606,1);
      {OBJ x1609=FLD1(x1606,1);
       if(EXPRD(x1606,1)){
	FREE(FLD1(x1606,2),1);DSPRDF(x1606);
       }else{
	DCPRD(x1606,1);}
       COPY(x1,1);
       CPPRD(x2,1);
       {OBJ x1611;TUP2 x1612;
	x1611=_ABaseGeneration_17(x1605,x1609);
	x1612=_APropGeneration_2(x1,x2,x1604,x4);
	PRD(3,6,*p1);FLD(*p1,1)=x1611;FLD(*p1,2)=x1612.c1;
	x3=x1603;x4=x1612.c2;p1=&FLD(*p1,3);continue;}}}}break;
   case 4:
    CPPRD(x3,2);
    {OBJ x1621;OBJ x1622;OBJ x1623;
     x1621=_AImpl_84(x3);
     x1622=_AImpl_103(x3);
     x1623=_AImpl_102(x3);
     {OBJ x1624=FLD1(x4,1);
      CPPRD(x1624,1);
      {OBJ x1627=FLD1(x1624,1);
       if(EXPRD(x1624,1)){
	FREE(FLD1(x1624,2),1);DSPRDF(x1624);
       }else{
	DCPRD(x1624,1);}
       COPY(x1,1);
       CPPRD(x2,1);
       {OBJ x1629;TUP2 x1630;
	x1629=_ABaseGeneration_17(x1621,x1627);
	x1630=_APropGeneration_2(x1,x2,x1622,x4);
	PRD(3,4,*p1);FLD(*p1,1)=x1629;FLD(*p1,2)=x1630.c1;
	x3=x1623;x4=x1630.c2;p1=&FLD(*p1,3);continue;}}}}break;
   case 1:
    {OBJ x1636=FLD(x3,1);OBJ x1637=FLD(x3,2);
     CPPRD(x1636,1);CPPRD(x1637,1);
     {OBJ x1639;
      x1639=_AImpl_84(x3);
      {OBJ x1640=FLD1(x4,1);
       CPPRD(x1640,1);
       {OBJ x1644=FLD1(x1640,1);
	if(EXPRD(x1640,1)){
	 FREE(FLD1(x1640,2),1);DSPRDF(x1640);
	}else{
	 DCPRD(x1640,1);}
	COPY(x1,1);
	CPPRD(x2,1);
	{OBJ x1646;TUP2 x1647;
	 x1646=_ABaseGeneration_17(x1639,x1644);
	 x1647=_AExprGeneration_2(x1,x2,x4,x1636);
	 PRD(3,2,*p1);FLD(*p1,1)=x1646;FLD(*p1,2)=x1647.c2;
	 {TUP2 t=_AExprGeneration_2(x1,x2,x1647.c1,x1637);
	  *p2=t.c1;
	  FLD(*p1,3)=t.c2;}}}}}}break;
   case 2:
    {OBJ x1653=FLD(x3,1);OBJ x1654=FLD(x3,2);
     CPPRD(x1653,1);CPPRD(x1654,1);
     {OBJ x1656;
      x1656=_AImpl_84(x3);
      {OBJ x1657=FLD1(x4,1);
       CPPRD(x1657,1);
       {OBJ x1661=FLD1(x1657,1);
	if(EXPRD(x1657,1)){
	 FREE(FLD1(x1657,2),1);DSPRDF(x1657);
	}else{
	 DCPRD(x1657,1);}
	COPY(x1,1);
	CPPRD(x2,1);
	{OBJ x1663;TUP2 x1664;
	 x1663=_ABaseGeneration_17(x1656,x1661);
	 x1664=_AExprGeneration_2(x1,x2,x4,x1653);
	 PRD(3,1,*p1);FLD(*p1,1)=x1663;FLD(*p1,2)=x1664.c2;
	 {TUP2 t=_AExprGeneration_2(x1,x2,x1664.c1,x1654);
	  *p2=t.c1;
	  FLD(*p1,3)=t.c2;}}}}}}break;
   case 0:
    {OBJ x1670=FLD(x3,1);
     CPPRD(x1670,1);
     {OBJ x1672;
      x1672=_AImpl_84(x3);
      {OBJ x1673=FLD1(x4,1);
       CPPRD(x1673,1);
       {OBJ x1676=FLD1(x1673,1);
	if(EXPRD(x1673,1)){
	 FREE(FLD1(x1673,2),1);DSPRDF(x1673);
	}else{
	 DCPRD(x1673,1);}
	{OBJ x1678;
	 x1678=_ABaseGeneration_17(x1672,x1676);
	 PRD(2,0,*p1);FLD(*p1,1)=x1678;
	 {TUP2 t=_AExprGeneration_2(x1,x2,x4,x1670);
	  *p2=t.c1;
	  FLD(*p1,2)=t.c2;}}}}}}break;
   case 11:
    HLT("PropGeneration at <unknown> : missing else in form2Form\'PropGeneration:globSig->locSig**formula**envIO->formula**envIO");break;
   default: 
    CPPRD(x3,1);
    {OBJ x1507;OBJ x1508;
     x1507=_AImpl_84(x3);
     x1508=_AImpl_92(x3);
     {OBJ x1509=FLD1(x4,1);
      CPPRD(x1509,1);
      {OBJ x1512=FLD1(x1509,1);
       if(EXPRD(x1509,1)){
	FREE(FLD1(x1509,2),1);DSPRDF(x1509);
       }else{
	DCPRD(x1509,1);}
       {OBJ x1514;
	x1514=_ABaseGeneration_17(x1507,x1512);
	PRD(2,3,*p1);FLD(*p1,1)=x1514;
	x3=x1508;p1=&FLD(*p1,2);continue;}}}}}
  break;}
 return r;}
extern OBJ _APropGeneration_2_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* form2Form */
{OBJ r;
 {TUP2 t=_APropGeneration_2(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _APropGeneration_4(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* variant2Variant */
{TUP2 r;
 CPCLS(__APropGeneration_5,1);
 COPY(x1,1);
 {OBJ x31;
  x31=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__APropGeneration_5,2))(__APropGeneration_5,x1,x2);
  {OBJ x61=FLD1(x3,1);
   CPPRD(x61,1);
   {OBJ x96=FLD1(x4,1);OBJ x97=FLD1(x4,2);OBJ x98=FLD1(x4,3);OBJ x99=FLD1(x4,4);FLAG x_x4=EXPRD(x4,1);
    if(x_x4){
    }else{
     COPY(x96,1);COPY(x97,1);COPY(x98,1);COPY(x99,1);}
    {OBJ x101=FLD1(x61,1);
     if(EXPRD(x61,1)){
      FREE(FLD1(x61,2),1);DSPRDF(x61);
     }else{
      DCPRD(x61,1);}
     COPY(x1,1);
     {OBJ x103;TUP2 x104;TUP2 x107;
      x103=_ABaseGeneration_17(x99,x101);
      x104=_ANameGeneration_1(x1,x3,x96);
      x107=_ANameGeneration_1(x1,x104.c1,x97);
      if(x_x4){
       RSOME(x4,r.c2);FLD1(r.c2,1)=x103;FLD1(r.c2,2)=x104.c2;FLD1(r.c2,3)=x107.c2;
      }else{
       FRPRD(x4,1);PRD1(4,r.c2);FLD1(r.c2,1)=x103;FLD1(r.c2,2)=x104.c2;FLD1(r.c2,3)=x107.c2;}
      {TUP2 t=_ASeqMapEnv_4(x31,x107.c1,x98);
       r.c1=t.c1;
       FLD1(r.c2,4)=t.c2;}}}}}}
 return r;}
extern OBJ _APropGeneration_4_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* variant2Variant */
{OBJ r;
 {TUP2 t=_APropGeneration_4(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _APropGeneration_5(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* comp2Comp */
{TUP2 r;
 FREE(x2,1);
 {OBJ x40=FLD1(x3,1);
  CPPRD(x40,1);
  {OBJ x61=FLD1(x4,1);OBJ x63=FLD1(x4,3);
   if(EXPRD(x4,1)){
    FREE(FLD1(x4,2),1);DSPRDF(x4);
   }else{
    COPY(x61,1);COPY(x63,1);
    FRPRD(x4,1);}
   {OBJ x65=FLD1(x40,1);
    {OBJ x67;
     x67=_ABaseGeneration_17(x63,x65);
     if(EXPRD(x40,1)){
      RSOME(x40,r.c2);FLD1(r.c2,1)=x67;FREE(FLD1(r.c2,2),1);
     }else{
      DCPRD(x40,1);PRD1(2,r.c2);FLD1(r.c2,1)=x67;}
     {TUP2 t=_ANameGeneration_1(x1,x3,x61);
      r.c1=t.c1;
      FLD1(r.c2,2)=t.c2;}}}}}
 return r;}
extern OBJ _APropGeneration_5_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* comp2Comp */
{OBJ r;
 {TUP2 t=_APropGeneration_5(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _APropGeneration_6(OBJ x1,OBJ x2) /* impl2Prop'6 */
{OBJ r;
 {OBJ x3=FLD1(x2,1);
  if(EXPRD(x2,1)){
   FLD1(x2,1)=NIL;DSPRD(x2);
  }else{
   COPY(x3,1);
   FRPRD(x2,1);}
  {OBJ x7;
   x7=x3;
   r=_AAGSig_13(x1,x7);}}
 return r;}

init_APropGeneration()
{
 static int visited=0; if(visited) return; visited=1;
 init_AInt();
 init_ATable();
 init_AUniqueTable();
 init_ADeclEntry();
 init_AEnvIO();
 init_APartNameEntry();
 init_AGlobSig();
 init_AImpExpEntry();
 init_AAnalyzedGlobSig();
 init_APragma();
 init_AGlobSigImpl();
 init_AAttributes();
 init_AImpl();
 init_ADArray();
 init_AName();
 init_ANatMap();
 init_AInterOpal();
 init_AArray();
 init_AObjects();
 init_APartName();
 init_AFct();
 init_ABaseGeneration();
 init_ASeq();
 init_ANameGeneration();
 init_ANat();
 init_ASeqMapEnv();
 init_AOption();
 init_AExprGeneration();
 init_AOcPos();
 init_AAGSig();
 init_AChar();
 init_ASeqMap();
 init_AMap();
 init_ASeqFilter();
 init_ADyn();
 init_ATree();
 init_ASet();
 init_AAbsyFun3();
 init_APair();
 init_AAnalyzedGlobSigH();
 init_ARep();
 init_AGlobSigToText();
 init_ABitset();
 init_AImpDecl4SigAna();
 init_APatterns();
 init_AMySeqFun1();
 init_AGlobPragma();
 init_AName4SigAna();
 init_AOcError();
 init_ASetByBST();
 init_ACom();
 init_ABSTree();
 init_AVoid();
 init_ADArrayReduce();
 init_AString();
 init_ADenotation();
 init_AOcOptions();
 init_ASeqReduce();
 init_AStream();
 init_ALexem();
 init_AFile();
 CLS(2,_APropGeneration_6,__APropGeneration_6);
 CLS(4,_APropGeneration_5_c,__APropGeneration_5);
 CLS(4,_APropGeneration_4_c,__APropGeneration_4);
 CLS(4,_APropGeneration_2_c,__APropGeneration_2);
 CLS(4,_APropGeneration_1_c,__APropGeneration_1);}

