

#include "BUILTIN.h"

#include "Nat.h"
extern OBJ __ASeq_6;
extern OBJ _ASeq_26(OBJ,OBJ);extern OBJ __ASeq_26;
extern OBJ _ASeq_42(OBJ,OBJ);extern OBJ __ASeq_42;
extern OBJ _ASeq_52(OBJ,OBJ);extern OBJ __ASeq_52;
extern OBJ _AFct_5(OBJ);extern OBJ __AFct_5;
extern OBJ _AFct_45(OBJ,OBJ,OBJ);extern OBJ __AFct_45;
extern OBJ __ANatMap_3;
extern OBJ _ANatMap_4(OBJ,OBJ,OBJ);extern OBJ __ANatMap_4;
extern OBJ _ANatMap_12(OBJ,OBJ);extern OBJ __ANatMap_12;
extern OBJ _ANatMap_14(OBJ,OBJ);extern OBJ __ANatMap_14;
extern OBJ _ANatMap_17(OBJ,OBJ);extern OBJ __ANatMap_17;
extern OBJ _AAnalyzedGlobSig_14(OBJ,OBJ);extern OBJ __AAnalyzedGlobSig_14;
extern OBJ __AAnalyzedGlobSig_22;
extern OBJ _AAnalyzedGlobSig_25(OBJ,OBJ,OBJ);extern OBJ __AAnalyzedGlobSig_25;

#include "Array.h"
extern OBJ _ACompose_4(OBJ,OBJ,OBJ);extern OBJ __ACompose_4;
extern OBJ __AName_6;
extern OBJ __AName_7;

#include "Denotation.h"
extern OBJ _ASeqOfSeq_2(OBJ);extern OBJ __ASeqOfSeq_2;
extern OBJ _ASeqMap_3(OBJ,OBJ);extern OBJ __ASeqMap_3;
extern OBJ _ASeqReduce_3(OBJ,OBJ,OBJ);extern OBJ __ASeqReduce_3;
extern OBJ _ASeqReduce_4(OBJ,OBJ,OBJ);extern OBJ __ASeqReduce_4;
extern OBJ _ADEBUG_2(OBJ,OBJ,OBJ);extern OBJ __ADEBUG_2;
extern OBJ _ADEBUG_10(OBJ);extern OBJ __ADEBUG_10;
extern OBJ _AAnalyzedGlobSigH_2(OBJ,OBJ);extern OBJ __AAnalyzedGlobSigH_2;
extern OBJ _AAnalyzedGlobSigH_5(OBJ,OBJ,OBJ);extern OBJ __AAnalyzedGlobSigH_5;
extern OBJ _AImpDecl4SigAna_57(OBJ,OBJ);extern OBJ __AImpDecl4SigAna_57;

#include "Char.h"

#include "Int.h"

#include "Bitset.h"
OBJ __ASubstitution_2; /* empty */
extern OBJ _ASubstitution_3(OBJ,OBJ);OBJ __ASubstitution_3; /* + */
extern TUP2 _ASubstitution_4(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_4; /* unify */
extern TUP2 _ASubstitution_5(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_5; /* unify,1 */
extern TUP2 _ASubstitution_6(OBJ,OBJ);OBJ __ASubstitution_6; /* apply */
extern TUP2 _ASubstitution_7(OBJ,OBJ);OBJ __ASubstitution_7; /* apply,1 */
extern OBJ _ASubstitution_9(OBJ);OBJ __ASubstitution_9; /* name */
extern OBJ _ASubstitution_10(OBJ);OBJ __ASubstitution_10; /* name? */
extern OBJ _ASubstitution_11(OBJ);OBJ __ASubstitution_11; /* name,1 */
extern OBJ _ASubstitution_12(OBJ);OBJ __ASubstitution_12; /* fct */
extern OBJ _ASubstitution_13(OBJ);OBJ __ASubstitution_13; /* fct? */
extern OBJ _ASubstitution_14(OBJ);OBJ __ASubstitution_14; /* fct,1 */
extern OBJ _ASubstitution_15(OBJ);OBJ __ASubstitution_15; /* subst */
extern OBJ _ASubstitution_16(OBJ);OBJ __ASubstitution_16; /* subst? */
extern OBJ _ASubstitution_17(OBJ);OBJ __ASubstitution_17; /* map */
extern TUP2 _ASubstitution_19(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_19; /* doUnify */
OBJ __ASubstitution_21; /* traceUnify? */
extern OBJ _ASubstitution_22(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_22; /* traceUnify */
extern TUP2 _ASubstitution_23(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_23; /* doUnify,1 */
extern OBJ _ASubstitution_24(OBJ,OBJ,OBJ);OBJ __ASubstitution_24; /* occurs? */
extern OBJ _ASubstitution_25(OBJ,OBJ,OBJ);OBJ __ASubstitution_25; /* occurs?,1 */
extern OBJ _ASubstitution_26(OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_26; /* split */
extern OBJ _ASubstitution_27(OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_27; /* splitFixLen */
extern OBJ _ASubstitution_28(OBJ,OBJ);OBJ __ASubstitution_28; /* :: */
extern OBJ _ASubstitution_29(OBJ,OBJ);OBJ __ASubstitution_29; /* flatten */
extern OBJ _ASubstitution_30(OBJ,OBJ);OBJ __ASubstitution_30; /* flatten,1 */
extern OBJ _ASubstitution_32(OBJ,OBJ);OBJ __ASubstitution_32; /* flatFunct */
extern OBJ _ASubstitution_33(OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_33; /* unify,2 */
extern OBJ _ASubstitution_34(OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_34; /* unify,3 */
extern OBJ _ASubstitution_35(OBJ,OBJ,OBJ);OBJ __ASubstitution_35; /* occurs?,2 */
extern OBJ _ASubstitution_36(OBJ,OBJ,OBJ);OBJ __ASubstitution_36; /* occurs?,3 */
OBJ __ASubstitution_37; /* apply'37 */
extern OBJ _ASubstitution_38(OBJ,OBJ,OBJ);OBJ __ASubstitution_38; /* apply'38 */
OBJ __ASubstitution_39; /* apply,1'39 */
extern OBJ _ASubstitution_40(OBJ,OBJ,OBJ);OBJ __ASubstitution_40; /* apply,1'40 */
OBJ __ASubstitution_41; /* traceUnify'41 */
OBJ __ASubstitution_42; /* traceUnify'42 */
OBJ __ASubstitution_43; /* traceUnify'43 */
OBJ __ASubstitution_44; /* traceUnify'44 */
extern OBJ _ASubstitution_45(OBJ,OBJ);OBJ __ASubstitution_45; /* ::'45 */
extern OBJ _ASubstitution_46(OBJ);OBJ __ASubstitution_46; /* split'46 */
extern OBJ _ASubstitution_47(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_47; /* unify,3'47 */
extern OBJ _ASubstitution_48(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_48; /* doUnify,1'48 */
extern OBJ _ASubstitution_49(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_49; /* doUnify,1'49 */
extern OBJ _ASubstitution_50(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_50; /* doUnify,1'50 */
extern OBJ _ASubstitution_51(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_51; /* doUnify,1'51 */
extern OBJ _ASubstitution_52(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_52; /* doUnify'52 */
extern OBJ _ASubstitution_53(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __ASubstitution_53; /* unify,1'53 */
OBJ __ASubstitution_54; /* traceUnify?'54 */

extern OBJ _ASubstitution_3(OBJ x1,OBJ x2) /* + */
{OBJ r;
 r=_ANatMap_12(x1,x2);
 return r;}

extern TUP2 _ASubstitution_4(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* unify */
{TUP2 r;
 CPCLS(__ASubstitution_22,1);
 COPY(x1,1);
 COPY(x2,1);
 COPY(x3,1);
 CPPRD(x4,1);
 {TUP2 x7;OBJ x9;
  x7=_ASubstitution_23(x1,x2,x3,x4,x5);r.c2=x7.c2;
  COPY(x7.c1,1);
  x9=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))METHOD(__ASubstitution_22,5))(__ASubstitution_22,x1,x2,x3,x4,x7.c1);
  r.c1=_ADEBUG_2(__ASubstitution_21,x9,x7.c1);}
 return r;}
extern OBJ _ASubstitution_4_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* unify */
{OBJ r;
 {TUP2 t=_ASubstitution_4(x1,x2,x3,x4,x5);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _ASubstitution_5(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* unify,1 */
{TUP2 r;
 CPCLS(__ASubstitution_53,1);
 {OBJ x6;OBJ x7;OBJ x8;
  PRD1F(2,x6);FLD1(x6,1)=__ASeq_6;FLD1(x6,2)=x5;
  x7=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ))METHOD(__ASubstitution_53,4))(__ASubstitution_53,x1,x2,x3,x5);
  x8=_ASeqReduce_4(x7,x6,x4);
  {OBJ x15=FLD1(x8,1);OBJ x16=FLD1(x8,2);
   if(EXPRD(x8,1)){
    r.c1=x15;r.c2=x16;
    DSPRDF(x8);
   }else{
    COPY(x15,1);
    r.c1=x15;r.c2=x16;
    FRPRD(x8,1);}}}
 return r;}
extern OBJ _ASubstitution_5_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* unify,1 */
{OBJ r;
 {TUP2 t=_ASubstitution_5(x1,x2,x3,x4,x5);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _ASubstitution_6(register OBJ x1,register OBJ x2) /* apply */
{TUP2 r;
 for(;;){
  CPCLS(__AName_6,1);
  COPY(x2,1);
  {OBJ x3;
   x3=(*(OBJ(*)(OBJ,OBJ))METHOD(__AName_6,1))(__AName_6,x2);
   if(ISTGPRM(x3,1)){
    CPPRD(x1,1);
    COPY(x2,1);
    CPCLS(__AName_7,1);
    {OBJ x4;OBJ x5;
     x4=(*(OBJ(*)(OBJ,OBJ))METHOD(__AName_7,1))(__AName_7,x2);
     x5=_ANatMap_17(x4,x1);
     if(ISTGPRM(x5,1)){
      FREE(x2,1);
      CPPRD(x1,1);
      {OBJ x6;OBJ x10;
       x6=_ANatMap_14(x1,x4);
       if(ISTGPRD(x6,1)){
	{OBJ x7=FLD(x6,1);
	 if(EXPRD(x6,1)){
	  x10=x7;
	  DSPRDF(x6);
	 }else{
	  COPY(x7,1);
	  x10=x7;
	  FRPRD(x6,1);}}
       }else{
	HLT("Substitution at <42,18-21> : undefined selection name\'Substitution:val->name");}
       x2=x10;continue;}
     }else{
      FRPRD(x1,1);
      r.c1=x2;r.c2=__ABUILTIN_3;}}
   }else{
    if(ISPRD(x2)&&(ISTGPRD(x2,5))){
     {OBJ x35=FLD(x2,3);
      COPY(x35,1);
      CPPRD(__ASubstitution_37,1);
      CPCLS(__ASubstitution_38,1);
      {OBJ x36;OBJ x37;
       x36=(*(OBJ(*)(OBJ,OBJ))METHOD(__ASubstitution_38,1))(__ASubstitution_38,x1);
       x37=_ASeqReduce_3(x36,__ASubstitution_37,x35);
       {OBJ x38=FLD1(x37,1);OBJ x39=FLD1(x37,2);
	if(EXPRD(x37,1)){
	 r.c2=x39;
	 DSPRDF(x37);
	}else{
	 COPY(x38,1);
	 r.c2=x39;
	 FRPRD(x37,1);}
	r.c1=_AAnalyzedGlobSig_14(x2,x38);}}}
    }else{
     FRPRD(x1,1);
     r.c1=x2;r.c2=__ABUILTIN_5;}}}
  break;}
 return r;}
extern OBJ _ASubstitution_6_c(OBJ x1,OBJ x2) /* apply */
{OBJ r;
 {TUP2 t=_ASubstitution_6(x1,x2);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _ASubstitution_7(register OBJ x1,register OBJ x2) /* apply,1 */
{TUP2 r;
 for(;;){
  if(ISPRM(x2)){
   HLT("Substitution at <unknown> : missing else in apply\'Substitution:subst**fct->fct**bool");
  }else{
   switch(TGPRD(x2)){
    case 3:
     {OBJ x161=FLD(x2,1);FLAG x_x2=EXPRD(x2,1);
      if(x_x2){
      }else{}
      CPPRD(x1,1);
      {OBJ x162;
       x162=_ANatMap_17(x161,x1);
       if(ISTGPRM(x162,1)){
	if(x_x2){
	 DSPRDF(x2);
	}else{
	 FRPRD(x2,1);}
	CPPRD(x1,1);
	{OBJ x163;OBJ x167;
	 x163=_ANatMap_14(x1,x161);
	 if(ISTGPRD(x163,0)){
	  {OBJ x164=FLD(x163,1);
	   if(EXPRD(x163,1)){
	    x167=x164;
	    DSPRDF(x163);
	   }else{
	    COPY(x164,1);
	    x167=x164;
	    FRPRD(x163,1);}}
	 }else{
	  HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	 x2=x167;continue;}
       }else{
	FRPRD(x1,1);
	if(x_x2){
	 RPRDF(x2,r.c1);
	}else{
	 FRPRD(x2,1);PRDF(1,3,r.c1);FLD(r.c1,1)=x161;}
	r.c2=__ABUILTIN_3;}}}break;
    case 4:
     {OBJ x169=FLD(x2,1);FLAG x_x2=EXPRD(x2,1);
      if(x_x2){
      }else{}
      CPPRD(x1,1);
      {OBJ x170;
       x170=_ANatMap_17(x169,x1);
       if(ISTGPRM(x170,1)){
	if(x_x2){
	 DSPRDF(x2);
	}else{
	 FRPRD(x2,1);}
	CPPRD(x1,1);
	{OBJ x171;OBJ x175;
	 x171=_ANatMap_14(x1,x169);
	 if(ISTGPRD(x171,0)){
	  {OBJ x172=FLD(x171,1);
	   if(EXPRD(x171,1)){
	    x175=x172;
	    DSPRDF(x171);
	   }else{
	    COPY(x172,1);
	    x175=x172;
	    FRPRD(x171,1);}}
	 }else{
	  HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	 x2=x175;continue;}
       }else{
	FRPRD(x1,1);
	if(x_x2){
	 RPRDF(x2,r.c1);
	}else{
	 FRPRD(x2,1);PRDF(1,4,r.c1);FLD(r.c1,1)=x169;}
	r.c2=__ABUILTIN_3;}}}break;
    case 2:
     {OBJ x177=FLD(x2,1);OBJ x178=FLD(x2,2);
      if(EXPRD(x2,1)){
       DSPRDF(x2);
      }else{
       COPY(x177,1);COPY(x178,1);
       FRPRD(x2,1);}
      CPPRD(x1,1);
      {TUP2 x180;TUP2 x183;OBJ x186;OBJ x185;
       x180=_ASubstitution_7(x1,x178);
       x183=_ASubstitution_7(x1,x177);
       if(ISTGPRM(x183.c2,1)){
	r.c2=x180.c2;
       }else{
	r.c2=__ABUILTIN_3;}
       r.c1=_ASubstitution_32(x183.c1,x180.c1);}}break;
    case 0:
     {OBJ x187=FLD(x2,1);
      if(EXPRD(x2,1)){
       {
	RPRD(x2,r.c1);
	{TUP2 t=_ASubstitution_6(x1,x187);
	 FLD(r.c1,1)=t.c1;
	 r.c2=t.c2;}}
      }else{
       COPY(x187,1);
       {
	FRPRD(x2,1);PRD(1,0,r.c1);
	{TUP2 t=_ASubstitution_6(x1,x187);
	 FLD(r.c1,1)=t.c1;
	 r.c2=t.c2;}}}}break;
    default: 
     {OBJ x154=FLD(x2,1);FLAG x_x2=EXPRD(x2,1);
      if(x_x2){
      }else{
       COPY(x154,1);}
      CPPRD(__ASubstitution_39,1);
      CPCLS(__ASubstitution_40,1);
      {OBJ x155;OBJ x156;
       x155=(*(OBJ(*)(OBJ,OBJ))METHOD(__ASubstitution_40,1))(__ASubstitution_40,x1);
       x156=_ASeqReduce_3(x155,__ASubstitution_39,x154);
       {OBJ x157=FLD1(x156,1);OBJ x158=FLD1(x156,2);
	if(EXPRD(x156,1)){
	 r.c2=x158;
	 DSPRDF(x156);
	}else{
	 COPY(x157,1);
	 r.c2=x158;
	 FRPRD(x156,1);}
	if(x_x2){
	 RPRD(x2,r.c1);FLD(r.c1,1)=x157;
	}else{
	 FRPRD(x2,1);PRD(1,1,r.c1);FLD(r.c1,1)=x157;}}}}}}
  break;}
 return r;}
extern OBJ _ASubstitution_7_c(OBJ x1,OBJ x2) /* apply,1 */
{OBJ r;
 {TUP2 t=_ASubstitution_7(x1,x2);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _ASubstitution_9(OBJ x1) /* name */
{OBJ r;
 PRD(1,1,r);FLD(r,1)=x1;
 return r;}

extern OBJ _ASubstitution_10(OBJ x1) /* name? */
{OBJ r;
 if(ISTGPRD(x1,1)){
  if(EXPRD(x1,1)){
   FREE(FLD(x1,1),1);DSPRDF(x1);
  }else{
   DCPRD(x1,1);}
  r=__ABUILTIN_5;
 }else{
  if(EXPRD(x1,1)){
   FREE(FLD(x1,1),1);DSPRDF(x1);
  }else{
   DCPRD(x1,1);}
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _ASubstitution_11(OBJ x1) /* name,1 */
{OBJ r;
 if(ISTGPRD(x1,1)){
  {OBJ x2=FLD(x1,1);
   if(EXPRD(x1,1)){
    r=x2;
    DSPRDF(x1);
   }else{
    COPY(x2,1);
    r=x2;
    FRPRD(x1,1);}}
 }else{
  HLT("Substitution at <42,18-21> : undefined selection name\'Substitution:val->name");}
 return r;}

extern OBJ _ASubstitution_12(OBJ x1) /* fct */
{OBJ r;
 PRD(1,0,r);FLD(r,1)=x1;
 return r;}

extern OBJ _ASubstitution_13(OBJ x1) /* fct? */
{OBJ r;
 if(ISTGPRD(x1,0)){
  if(EXPRD(x1,1)){
   FREE(FLD(x1,1),1);DSPRDF(x1);
  }else{
   DCPRD(x1,1);}
  r=__ABUILTIN_5;
 }else{
  if(EXPRD(x1,1)){
   FREE(FLD(x1,1),1);DSPRDF(x1);
  }else{
   DCPRD(x1,1);}
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _ASubstitution_14(OBJ x1) /* fct,1 */
{OBJ r;
 if(ISTGPRD(x1,0)){
  {OBJ x2=FLD(x1,1);
   if(EXPRD(x1,1)){
    r=x2;
    DSPRDF(x1);
   }else{
    COPY(x2,1);
    r=x2;
    FRPRD(x1,1);}}
 }else{
  HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
 return r;}

extern OBJ _ASubstitution_15(OBJ x1) /* subst */
{OBJ r;
 r=x1;
 return r;}

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

extern OBJ _ASubstitution_17(OBJ x1) /* map */
{OBJ r;
 r=x1;
 return r;}

extern TUP2 _ASubstitution_19(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* doUnify */
{TUP2 r;
 CPCLS(__ASubstitution_52,1);
 {OBJ x6;OBJ x7;OBJ x8;
  PRD1F(2,x6);FLD1(x6,1)=__ASeq_6;FLD1(x6,2)=x5;
  x7=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ))METHOD(__ASubstitution_52,4))(__ASubstitution_52,x1,x2,x3,x5);
  x8=_ASeqReduce_4(x7,x6,x4);
  {OBJ x15=FLD1(x8,1);OBJ x16=FLD1(x8,2);
   if(EXPRD(x8,1)){
    r.c1=x15;r.c2=x16;
    DSPRDF(x8);
   }else{
    COPY(x15,1);
    r.c1=x15;r.c2=x16;
    FRPRD(x8,1);}}}
 return r;}
extern OBJ _ASubstitution_19_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* doUnify */
{OBJ r;
 {TUP2 t=_ASubstitution_19(x1,x2,x3,x4,x5);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _ASubstitution_22(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6) /* traceUnify */
{OBJ r;
 {OBJ x9;OBJ x11;OBJ x13;OBJ x14;OBJ x15;OBJ x16;OBJ x17;OBJ x18;OBJ x19;OBJ x20;OBJ x21;OBJ x22;
  if(ISPRM(x5)){
   CPCLS(__AAnalyzedGlobSig_25,1);
   x9=__ABUILTIN_5;
  }else{
   if(EXPRD(x5,1)){
    DSPRD(x5);
   }else{
    DCPRD(x5,1);}
   CPCLS(__AAnalyzedGlobSig_25,1);
   x9=__ABUILTIN_3;}
  x11=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AAnalyzedGlobSig_25,2))(__AAnalyzedGlobSig_25,x1,__AAnalyzedGlobSig_22);
  if(ISTGPRM(x9,1)){
   CPPRD(x4,1);
   CPCLS(x11,1);
   CPPRD(__ASubstitution_41,1);
   CPPRD(__ASubstitution_43,1);
   CPPRD(__ASubstitution_44,1);
   x13=__ASubstitution_41;
  }else{
   CPPRD(x4,1);
   CPCLS(x11,1);
   CPPRD(__ASubstitution_42,1);
   CPPRD(__ASubstitution_43,1);
   CPPRD(__ASubstitution_44,1);
   x13=__ASubstitution_42;}
  {TUP2 t=_ASubstitution_7(x4,x3);
   x14=t.c1;
   x15=t.c2;}
  x16=_AFct_45(x11,__ABUILTIN_3,x14);
  ADenotation_4(x16,x13,x17);
  ADenotation_4(__ASubstitution_43,x17,x18);
  {TUP2 t=_ASubstitution_7(x4,x2);
   x19=t.c1;
   x20=t.c2;}
  x21=_AFct_45(x11,__ABUILTIN_3,x19);
  ADenotation_4(x21,x18,x22);
  ADenotation_4(__ASubstitution_44,x22,r);}
 return r;}

extern TUP2 _ASubstitution_23(register OBJ x1,register OBJ x2,register OBJ x3,register OBJ x4,register OBJ x5) /* doUnify,1 */
{TUP2 r;
 for(;;){
  if(ISPRM(x2)){
   HLT("Substitution at <111,5-11> : missing else in doUnify\'Substitution:globSig->fct**fct**subst**nat->seq**nat");
  }else{
   switch(TGPRD(x2)){
    case 3:
     {OBJ x3516=FLD(x2,1);
      if(ISPRM(x3)){
       FREE(x1,1);
       if(EXPRD(x2,1)){
	DSPRDF(x2);
       }else{
	DCPRD(x2,1);}
       FRPRD(x4,1);
       r.c1=__ASeq_6;r.c2=x5;
      }else{
       switch(TGPRD(x3)){
	case 3:
	 {OBJ x3522=FLD(x3,1);
	  {OBJ x3523;
	   ANat_76(x3516,x3522,x3523);
	   if(ISTGPRM(x3523,1)){
	    FREE(x1,1);
	    if(EXPRD(x2,1)){
	     DSPRDF(x2);
	    }else{
	     DCPRD(x2,1);}
	    if(EXPRD(x3,1)){
	     DSPRDF(x3);
	    }else{
	     DCPRD(x3,1);}
	    PRD1(2,r.c1);FLD1(r.c1,1)=x4;FLD1(r.c1,2)=__ASeq_6;
	    r.c2=x5;
	   }else{
	    CPPRD(x4,1);
	    {OBJ x3525;
	     x3525=_ANatMap_17(x3516,x4);
	     if(ISTGPRM(x3525,1)){
	      if(EXPRD(x2,1)){
	       DSPRDF(x2);
	      }else{
	       DCPRD(x2,1);}
	      CPPRD(x4,1);
	      {OBJ x3526;OBJ x3530;
	       x3526=_ANatMap_14(x4,x3516);
	       if(ISTGPRD(x3526,0)){
		{OBJ x3527=FLD(x3526,1);
		 if(EXPRD(x3526,1)){
		  x3530=x3527;
		  DSPRDF(x3526);
		 }else{
		  COPY(x3527,1);
		  x3530=x3527;
		  FRPRD(x3526,1);}}
	       }else{
		HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	       x2=x3530;continue;}
	     }else{
	      CPPRD(x4,1);
	      {OBJ x3531;
	       x3531=_ANatMap_17(x3522,x4);
	       if(ISTGPRM(x3531,1)){
		if(EXPRD(x3,1)){
		 DSPRDF(x3);
		}else{
		 DCPRD(x3,1);}
		CPPRD(x4,1);
		{OBJ x3532;OBJ x3536;
		 x3532=_ANatMap_14(x4,x3522);
		 if(ISTGPRD(x3532,0)){
		  {OBJ x3533=FLD(x3532,1);
		   if(EXPRD(x3532,1)){
		    x3536=x3533;
		    DSPRDF(x3532);
		   }else{
		    COPY(x3533,1);
		    x3536=x3533;
		    FRPRD(x3532,1);}}
		 }else{
		  HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
		 x3=x3536;continue;}
	       }else{
		FREE(x1,1);
		if(EXPRD(x2,1)){
		 DSPRDF(x2);
		}else{
		 DCPRD(x2,1);}
		{OBJ x3537;OBJ x3538;
		 PRD(1,0,x3537);FLD(x3537,1)=x3;
		 x3538=_ANatMap_4(x3516,x3537,x4);
		 PRD1(2,r.c1);FLD1(r.c1,1)=x3538;FLD1(r.c1,2)=__ASeq_6;
		 r.c2=x5;}}}}}}}}break;
	case 4:
	 {OBJ x3540=FLD(x3,1);
	  CPPRD(x4,1);
	  {OBJ x3541;
	   x3541=_ANatMap_17(x3516,x4);
	   if(ISTGPRM(x3541,1)){
	    if(EXPRD(x2,1)){
	     DSPRDF(x2);
	    }else{
	     DCPRD(x2,1);}
	    CPPRD(x4,1);
	    {OBJ x3542;OBJ x3546;
	     x3542=_ANatMap_14(x4,x3516);
	     if(ISTGPRD(x3542,0)){
	      {OBJ x3543=FLD(x3542,1);
	       if(EXPRD(x3542,1)){
		x3546=x3543;
		DSPRDF(x3542);
	       }else{
		COPY(x3543,1);
		x3546=x3543;
		FRPRD(x3542,1);}}
	     }else{
	      HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	     x2=x3546;continue;}
	   }else{
	    if(EXPRD(x3,1)){
	     DSPRDF(x3);
	    }else{
	     DCPRD(x3,1);}
	    CPPRD(x4,1);
	    {OBJ x3547;
	     x3547=_ANatMap_17(x3540,x4);
	     if(ISTGPRM(x3547,1)){
	      CPPRD(x4,1);
	      {OBJ x3548;OBJ x3552;
	       x3548=_ANatMap_14(x4,x3540);
	       if(ISTGPRD(x3548,0)){
		{OBJ x3549=FLD(x3548,1);
		 if(EXPRD(x3548,1)){
		  x3552=x3549;
		  DSPRDF(x3548);
		 }else{
		  COPY(x3549,1);
		  x3552=x3549;
		  FRPRD(x3548,1);}}
	       }else{
		HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	       x3=x3552;continue;}
	     }else{
	      FREE(x1,1);
	      {OBJ x3553;OBJ x3554;
	       PRD(1,0,x3553);FLD(x3553,1)=x2;
	       x3554=_ANatMap_4(x3540,x3553,x4);
	       PRD1(2,r.c1);FLD1(r.c1,1)=x3554;FLD1(r.c1,2)=__ASeq_6;
	       r.c2=x5;}}}}}}break;
	case 2:
	 if(EXPRD(x2,1)){
	  DSPRDF(x2);
	 }else{
	  DCPRD(x2,1);}
	 CPPRD(x4,1);
	 {OBJ x3558;
	  x3558=_ANatMap_17(x3516,x4);
	  if(ISTGPRM(x3558,1)){
	   CPPRD(x4,1);
	   {OBJ x3559;OBJ x3563;
	    x3559=_ANatMap_14(x4,x3516);
	    if(ISTGPRD(x3559,0)){
	     {OBJ x3560=FLD(x3559,1);
	      if(EXPRD(x3559,1)){
	       x3563=x3560;
	       DSPRDF(x3559);
	      }else{
	       COPY(x3560,1);
	       x3563=x3560;
	       FRPRD(x3559,1);}}
	    }else{
	     HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	    x2=x3563;continue;}
	  }else{
	   FREE(x1,1);
	   CPPRD(x3,1);
	   CPPRD(x4,1);
	   {OBJ x3564;
	    x3564=_ASubstitution_24(x3516,x3,x4);
	    if(ISTGPRM(x3564,1)){
	     if(EXPRD(x3,1)){
	      DSPRD(x3);
	     }else{
	      DCPRD(x3,1);}
	     FRPRD(x4,1);
	     r.c1=__ASeq_6;r.c2=x5;
	    }else{
	     {OBJ x3565;OBJ x3566;
	      PRD(1,0,x3565);FLD(x3565,1)=x3;
	      x3566=_ANatMap_4(x3516,x3565,x4);
	      PRD1(2,r.c1);FLD1(r.c1,1)=x3566;FLD1(r.c1,2)=__ASeq_6;
	      r.c2=x5;}}}}}break;
	case 0:
	 {OBJ x3568=FLD(x3,1);
	  COPY(x3568,1);
	  if(EXPRD(x2,1)){
	   DSPRDF(x2);
	  }else{
	   DCPRD(x2,1);}
	  CPPRD(x4,1);
	  {OBJ x3569;
	   x3569=_ANatMap_17(x3516,x4);
	   if(ISTGPRM(x3569,1)){
	    FREE(x3568,1);
	    CPPRD(x4,1);
	    {OBJ x3570;OBJ x3574;
	     x3570=_ANatMap_14(x4,x3516);
	     if(ISTGPRD(x3570,0)){
	      {OBJ x3571=FLD(x3570,1);
	       if(EXPRD(x3570,1)){
		x3574=x3571;
		DSPRDF(x3570);
	       }else{
		COPY(x3571,1);
		x3574=x3571;
		FRPRD(x3570,1);}}
	     }else{
	      HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	     x2=x3574;continue;}
	   }else{
	    FREE(x1,1);
	    CPPRD(x4,1);
	    {OBJ x3575;
	     x3575=_ASubstitution_35(x3516,x3568,x4);
	     if(ISTGPRM(x3575,1)){
	      if(EXPRD(x3,1)){
	       FREE(FLD(x3,1),1);DSPRDF(x3);
	      }else{
	       DCPRD(x3,1);}
	      FRPRD(x4,1);
	      r.c1=__ASeq_6;r.c2=x5;
	     }else{
	      {OBJ x3576;OBJ x3577;
	       PRD(1,0,x3576);FLD(x3576,1)=x3;
	       x3577=_ANatMap_4(x3516,x3576,x4);
	       PRD1(2,r.c1);FLD1(r.c1,1)=x3577;FLD1(r.c1,2)=__ASeq_6;
	       r.c2=x5;}}}}}}break;
	default: 
	 {OBJ x3517=FLD(x3,1);
	  if(EXPRD(x3,1)){
	   DSPRDF(x3);
	  }else{
	   COPY(x3517,1);
	   FRPRD(x3,1);}
	  if(ISPRM(x3517)){
	   FREE(x1,1);
	   if(EXPRD(x2,1)){
	    DSPRDF(x2);
	   }else{
	    DCPRD(x2,1);}
	   FRPRD(x4,1);
	   r.c1=__ASeq_6;r.c2=x5;
	  }else{
	   {OBJ x3518=FLD1(x3517,1);OBJ x3519=FLD1(x3517,2);
	    if(EXPRD(x3517,1)){
	     DSPRDF(x3517);
	    }else{
	     COPY(x3518,1);COPY(x3519,1);
	     FRPRD(x3517,1);}
	    if(ISPRM(x3519)){
	     x3=x3518;continue;
	    }else{
	     if(EXPRD(x3519,1)){
	      DSPRD(x3519);
	     }else{
	      DCPRD(x3519,1);}
	     FREE(x1,1);
	     if(EXPRD(x2,1)){
	      DSPRDF(x2);
	     }else{
	      DCPRD(x2,1);}
	     FRPRD(x4,1);
	     FREE(x3518,1);
	     r.c1=__ASeq_6;r.c2=x5;}}}}}}}break;
    case 4:
     {OBJ x3579=FLD(x2,1);
      if(ISPRD(x3)&&(ISTGPRD(x3,1))){
       {OBJ x3580=FLD(x3,1);
	COPY(x3580,1);
	if(EXPRD(x2,1)){
	 DSPRDF(x2);
	}else{
	 DCPRD(x2,1);}
	if(ISPRM(x3580)){
	 FREE(x1,1);
	 if(EXPRD(x3,1)){
	  FREE(FLD(x3,1),1);DSPRDF(x3);
	 }else{
	  DCPRD(x3,1);}
	 FRPRD(x4,1);
	 r.c1=__ASeq_6;r.c2=x5;
	}else{
	 CPPRD(x4,1);
	 {OBJ x3583;
	  x3583=_ANatMap_17(x3579,x4);
	  if(ISTGPRM(x3583,1)){
	   if(EXPRD(x3580,1)){
	    DSPRD(x3580);
	   }else{
	    DCPRD(x3580,1);}
	   CPPRD(x4,1);
	   {OBJ x3584;OBJ x3588;
	    x3584=_ANatMap_14(x4,x3579);
	    if(ISTGPRD(x3584,0)){
	     {OBJ x3585=FLD(x3584,1);
	      if(EXPRD(x3584,1)){
	       x3588=x3585;
	       DSPRDF(x3584);
	      }else{
	       COPY(x3585,1);
	       x3588=x3585;
	       FRPRD(x3584,1);}}
	    }else{
	     HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	    x2=x3588;continue;}
	  }else{
	   FREE(x1,1);
	   CPPRD(x3,1);
	   CPPRD(x4,1);
	   {OBJ x3589;
	    x3589=_ASubstitution_24(x3579,x3,x4);
	    if(ISTGPRM(x3589,1)){
	     if(EXPRD(x3580,1)){
	      DSPRD(x3580);
	     }else{
	      DCPRD(x3580,1);}
	     if(EXPRD(x3,1)){
	      FREE(FLD(x3,1),1);DSPRDF(x3);
	     }else{
	      DCPRD(x3,1);}
	     FRPRD(x4,1);
	     r.c1=__ASeq_6;r.c2=x5;
	    }else{
	     {OBJ x3590;OBJ x3591;
	      PRD(1,0,x3590);FLD(x3590,1)=x3;
	      x3591=_ANatMap_4(x3579,x3590,x4);
	      if(EXPRD(x3580,1)){
	       RSOME(x3580,r.c1);FREE(FLD1(r.c1,1),1);FLD1(r.c1,1)=x3591;FREE(FLD1(r.c1,2),1);FLD1(r.c1,2)=__ASeq_6;
	      }else{
	       DCPRD(x3580,1);PRD1(2,r.c1);FLD1(r.c1,1)=x3591;FLD1(r.c1,2)=__ASeq_6;}
	      r.c2=x5;}}}}}}}
      }else{
       if(ISPRD(x3)&&(ISTGPRD(x3,4))){
	{OBJ x3593=FLD(x3,1);
	 {OBJ x3594;
	  ANat_76(x3579,x3593,x3594);
	  if(ISTGPRM(x3594,1)){
	   FREE(x1,1);
	   if(EXPRD(x2,1)){
	    DSPRDF(x2);
	   }else{
	    DCPRD(x2,1);}
	   if(EXPRD(x3,1)){
	    DSPRDF(x3);
	   }else{
	    DCPRD(x3,1);}
	   PRD1(2,r.c1);FLD1(r.c1,1)=x4;FLD1(r.c1,2)=__ASeq_6;
	   r.c2=x5;
	  }else{
	   CPPRD(x4,1);
	   {OBJ x3596;
	    x3596=_ANatMap_17(x3579,x4);
	    if(ISTGPRM(x3596,1)){
	     if(EXPRD(x2,1)){
	      DSPRDF(x2);
	     }else{
	      DCPRD(x2,1);}
	     CPPRD(x4,1);
	     {OBJ x3597;OBJ x3601;
	      x3597=_ANatMap_14(x4,x3579);
	      if(ISTGPRD(x3597,0)){
	       {OBJ x3598=FLD(x3597,1);
		if(EXPRD(x3597,1)){
		 x3601=x3598;
		 DSPRDF(x3597);
		}else{
		 COPY(x3598,1);
		 x3601=x3598;
		 FRPRD(x3597,1);}}
	      }else{
	       HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	      x2=x3601;continue;}
	    }else{
	     CPPRD(x4,1);
	     {OBJ x3602;
	      x3602=_ANatMap_17(x3593,x4);
	      if(ISTGPRM(x3602,1)){
	       if(EXPRD(x3,1)){
		DSPRDF(x3);
	       }else{
		DCPRD(x3,1);}
	       CPPRD(x4,1);
	       {OBJ x3603;OBJ x3607;
		x3603=_ANatMap_14(x4,x3593);
		if(ISTGPRD(x3603,0)){
		 {OBJ x3604=FLD(x3603,1);
		  if(EXPRD(x3603,1)){
		   x3607=x3604;
		   DSPRDF(x3603);
		  }else{
		   COPY(x3604,1);
		   x3607=x3604;
		   FRPRD(x3603,1);}}
		}else{
		 HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
		x3=x3607;continue;}
	      }else{
	       FREE(x1,1);
	       if(EXPRD(x2,1)){
		DSPRDF(x2);
	       }else{
		DCPRD(x2,1);}
	       {OBJ x3608;OBJ x3609;
		PRD(1,0,x3608);FLD(x3608,1)=x3;
		x3609=_ANatMap_4(x3579,x3608,x4);
		PRD1(2,r.c1);FLD1(r.c1,1)=x3609;FLD1(r.c1,2)=__ASeq_6;
		r.c2=x5;}}}}}}}}
       }else{
	if(EXPRD(x2,1)){
	 DSPRDF(x2);
	}else{
	 DCPRD(x2,1);}
	CPPRD(x4,1);
	{OBJ x3611;
	 x3611=_ANatMap_17(x3579,x4);
	 if(ISTGPRM(x3611,1)){
	  CPPRD(x4,1);
	  {OBJ x3612;OBJ x3616;
	   x3612=_ANatMap_14(x4,x3579);
	   if(ISTGPRD(x3612,0)){
	    {OBJ x3613=FLD(x3612,1);
	     if(EXPRD(x3612,1)){
	      x3616=x3613;
	      DSPRDF(x3612);
	     }else{
	      COPY(x3613,1);
	      x3616=x3613;
	      FRPRD(x3612,1);}}
	   }else{
	    HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	   x2=x3616;continue;}
	 }else{
	  FREE(x1,1);
	  COPY(x3,1);
	  CPPRD(x4,1);
	  {OBJ x3617;
	   x3617=_ASubstitution_24(x3579,x3,x4);
	   if(ISTGPRM(x3617,1)){
	    FREE(x3,1);
	    FRPRD(x4,1);
	    r.c1=__ASeq_6;r.c2=x5;
	   }else{
	    {OBJ x3618;OBJ x3619;
	     PRD(1,0,x3618);FLD(x3618,1)=x3;
	     x3619=_ANatMap_4(x3579,x3618,x4);
	     PRD1(2,r.c1);FLD1(r.c1,1)=x3619;FLD1(r.c1,2)=__ASeq_6;
	     r.c2=x5;}}}}}}}}break;
    case 2:
     {OBJ x3621=FLD(x2,1);OBJ x3622=FLD(x2,2);
      COPY(x3621,1);COPY(x3622,1);
      if(ISPRD(x3)&&(ISTGPRD(x3,2))){
       {OBJ x3623=FLD(x3,1);OBJ x3624=FLD(x3,2);
	if(EXPRD(x3,1)){
	 DSPRDF(x3);
	}else{
	 COPY(x3623,1);COPY(x3624,1);
	 FRPRD(x3,1);}
	if(EXPRD(x2,1)){
	 DSPRD(x2);
	}else{
	 DCPRD(x2,1);}
	COPY(x1,1);
	{TUP2 x3626;TUP2 x3629;
	 x3626=_ASubstitution_23(x1,x3621,x3623,x4,x5);
	 x3629=_ASubstitution_19(x1,x3622,x3624,x3626.c1,x3626.c2);
	 if(ISPRM(x3629.c1)){
	  r.c1=__ASeq_6;r.c2=x5;
	 }else{
	  r.c1=x3629.c1;r.c2=x3629.c2;}}}
      }else{
       if(ISPRD(x3)&&(ISTGPRD(x3,4)||ISTGPRD(x3,3))){
	{OBJ x3633=FLD(x3,1);
	 if(EXPRD(x3,1)){
	  DSPRD(x3);
	 }else{
	  FRPRD(x3,1);}
	 FREE(x3621,1);
	 FREE(x3622,1);
	 CPPRD(x4,1);
	 {OBJ x3634;
	  x3634=_ANatMap_17(x3633,x4);
	  if(ISTGPRM(x3634,1)){
	   CPPRD(x4,1);
	   {OBJ x3635;OBJ x3639;
	    x3635=_ANatMap_14(x4,x3633);
	    if(ISTGPRD(x3635,0)){
	     {OBJ x3636=FLD(x3635,1);
	      if(EXPRD(x3635,1)){
	       x3639=x3636;
	       DSPRDF(x3635);
	      }else{
	       COPY(x3636,1);
	       x3639=x3636;
	       FRPRD(x3635,1);}}
	    }else{
	     HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	    x3=x3639;continue;}
	  }else{
	   FREE(x1,1);
	   CPPRD(x2,1);
	   CPPRD(x4,1);
	   {OBJ x3640;
	    x3640=_ASubstitution_24(x3633,x2,x4);
	    if(ISTGPRM(x3640,1)){
	     if(EXPRD(x2,1)){
	      DSPRD(x2);
	     }else{
	      DCPRD(x2,1);}
	     FRPRD(x4,1);
	     r.c1=__ASeq_6;r.c2=x5;
	    }else{
	     {OBJ x3641;OBJ x3642;
	      PRD(1,0,x3641);FLD(x3641,1)=x2;
	      x3642=_ANatMap_4(x3633,x3641,x4);
	      PRD1(2,r.c1);FLD1(r.c1,1)=x3642;FLD1(r.c1,2)=__ASeq_6;
	      r.c2=x5;}}}}}}
       }else{
	if(ISPRD(x3)&&(ISTGPRD(x3,1))){
	 {OBJ x3655=FLD(x3,1);
	  if(EXPRD(x3,1)){
	   DSPRDF(x3);
	  }else{
	   COPY(x3655,1);
	   FRPRD(x3,1);}
	  FREE(x3621,1);
	  FREE(x3622,1);
	  if(ISPRM(x3655)){
	   FREE(x1,1);
	   if(EXPRD(x2,1)){
	    DSPRD(x2);
	   }else{
	    DCPRD(x2,1);}
	   FRPRD(x4,1);
	   r.c1=__ASeq_6;r.c2=x5;
	  }else{
	   {OBJ x3656=FLD1(x3655,1);OBJ x3657=FLD1(x3655,2);
	    if(EXPRD(x3655,1)){
	     DSPRDF(x3655);
	    }else{
	     COPY(x3656,1);COPY(x3657,1);
	     FRPRD(x3655,1);}
	    if(ISPRM(x3657)){
	     x3=x3656;continue;
	    }else{
	     if(EXPRD(x3657,1)){
	      DSPRD(x3657);
	     }else{
	      DCPRD(x3657,1);}
	     FREE(x1,1);
	     if(EXPRD(x2,1)){
	      DSPRD(x2);
	     }else{
	      DCPRD(x2,1);}
	     FRPRD(x4,1);
	     FREE(x3656,1);
	     r.c1=__ASeq_6;r.c2=x5;}}}}
	}else{
	 FREE(x1,1);
	 if(EXPRD(x2,1)){
	  DSPRD(x2);
	 }else{
	  DCPRD(x2,1);}
	 FREE(x3,1);
	 FRPRD(x4,1);
	 FREE(x3621,1);
	 FREE(x3622,1);
	 r.c1=__ASeq_6;r.c2=x5;}}}}break;
    case 0:
     {OBJ x3660=FLD(x2,1);
      COPY(x3660,1);
      if(ISPRD(x3)&&(ISTGPRD(x3,1))){
       {OBJ x3661=FLD(x3,1);
	if(EXPRD(x3,1)){
	 DSPRDF(x3);
	}else{
	 COPY(x3661,1);
	 FRPRD(x3,1);}
	FREE(x3660,1);
	if(ISPRM(x3661)){
	 FREE(x1,1);
	 if(EXPRD(x2,1)){
	  FREE(FLD(x2,1),1);DSPRDF(x2);
	 }else{
	  DCPRD(x2,1);}
	 FRPRD(x4,1);
	 r.c1=__ASeq_6;r.c2=x5;
	}else{
	 {OBJ x3662=FLD1(x3661,1);OBJ x3663=FLD1(x3661,2);
	  if(EXPRD(x3661,1)){
	   DSPRDF(x3661);
	  }else{
	   COPY(x3662,1);COPY(x3663,1);
	   FRPRD(x3661,1);}
	  if(ISPRM(x3663)){
	   x3=x3662;continue;
	  }else{
	   if(EXPRD(x3663,1)){
	    DSPRD(x3663);
	   }else{
	    DCPRD(x3663,1);}
	   FREE(x1,1);
	   if(EXPRD(x2,1)){
	    FREE(FLD(x2,1),1);DSPRDF(x2);
	   }else{
	    DCPRD(x2,1);}
	   FRPRD(x4,1);
	   FREE(x3662,1);
	   r.c1=__ASeq_6;r.c2=x5;}}}}
      }else{
       if(ISPRD(x3)&&(ISTGPRD(x3,4)||ISTGPRD(x3,3))){
	{OBJ x3666=FLD(x3,1);
	 if(EXPRD(x3,1)){
	  DSPRD(x3);
	 }else{
	  FRPRD(x3,1);}
	 FREE(x3660,1);
	 CPPRD(x4,1);
	 {OBJ x3667;
	  x3667=_ANatMap_17(x3666,x4);
	  if(ISTGPRM(x3667,1)){
	   CPPRD(x4,1);
	   {OBJ x3668;OBJ x3672;
	    x3668=_ANatMap_14(x4,x3666);
	    if(ISTGPRD(x3668,0)){
	     {OBJ x3669=FLD(x3668,1);
	      if(EXPRD(x3668,1)){
	       x3672=x3669;
	       DSPRDF(x3668);
	      }else{
	       COPY(x3669,1);
	       x3672=x3669;
	       FRPRD(x3668,1);}}
	    }else{
	     HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	    x3=x3672;continue;}
	  }else{
	   FREE(x1,1);
	   {OBJ x3673;OBJ x3674;
	    PRD(1,0,x3673);FLD(x3673,1)=x2;
	    x3674=_ANatMap_4(x3666,x3673,x4);
	    PRD1(2,r.c1);FLD1(r.c1,1)=x3674;FLD1(r.c1,2)=__ASeq_6;
	    r.c2=x5;}}}}
       }else{
	if(ISPRD(x3)&&(ISTGPRD(x3,0))){
	 {OBJ x3686=FLD(x3,1);
	  if(EXPRD(x3,1)){
	   DSPRDF(x3);
	  }else{
	   COPY(x3686,1);
	   FRPRD(x3,1);}
	  if(EXPRD(x2,1)){
	   FREE(FLD(x2,1),1);DSPRDF(x2);
	  }else{
	   DCPRD(x2,1);}
	  r.c1=_ASubstitution_33(x1,x3660,x3686,x4);
	  r.c2=x5;}
	}else{
	 FREE(x1,1);
	 if(EXPRD(x2,1)){
	  FREE(FLD(x2,1),1);DSPRDF(x2);
	 }else{
	  DCPRD(x2,1);}
	 FREE(x3,1);
	 FRPRD(x4,1);
	 FREE(x3660,1);
	 r.c1=__ASeq_6;r.c2=x5;}}}}break;
    default: 
     {OBJ x3343=FLD(x2,1);
      COPY(x3343,1);
      if(ISPRM(x3343)){
       FREE(x1,1);
       if(EXPRD(x2,1)){
	FREE(FLD(x2,1),1);DSPRDF(x2);
       }else{
	DCPRD(x2,1);}
       if(ISPRD(x3)&&(ISTGPRD(x3,1))){
	{OBJ x3344=FLD(x3,1);
	 if(EXPRD(x3,1)){
	  DSPRDF(x3);
	 }else{
	  COPY(x3344,1);
	  FRPRD(x3,1);}
	 if(ISPRM(x3344)){
	  PRD1(2,r.c1);FLD1(r.c1,1)=x4;FLD1(r.c1,2)=__ASeq_6;
	  r.c2=x5;
	 }else{
	  if(EXPRD(x3344,1)){
	   DSPRD(x3344);
	  }else{
	   DCPRD(x3344,1);}
	  FRPRD(x4,1);
	  r.c1=__ASeq_6;r.c2=x5;}}
       }else{
	FREE(x3,1);
	FRPRD(x4,1);
	r.c1=__ASeq_6;r.c2=x5;}
      }else{
       {OBJ x3348=FLD1(x3343,1);OBJ x3349=FLD1(x3343,2);
	COPY(x3348,1);COPY(x3349,1);
	if(ISPRD(x3348)&&(ISTGPRD(x3348,1))){
	 {OBJ x3351=FLD(x3348,1);
	  COPY(x3351,1);
	  if(EXPRD(x3343,1)){
	   DSPRD(x3343);
	  }else{
	   DCPRD(x3343,1);}
	  if(ISPRM(x3349)){
	   if(EXPRD(x2,1)){
	    FREE(FLD(x2,1),1);DSPRDF(x2);
	   }else{
	    DCPRD(x2,1);}
	   FREE(x3351,1);
	   x2=x3348;continue;
	  }else{
	   {OBJ x3352=FLD1(x3349,1);OBJ x3353=FLD1(x3349,2);
	    COPY(x3352,1);COPY(x3353,1);
	    if(EXPRD(x3348,1)){
	     FREE(FLD(x3348,1),1);DSPRDF(x3348);
	    }else{
	     DCPRD(x3348,1);}
	    if(ISPRD(x3)&&(ISTGPRD(x3,1))){
	     {OBJ x3354=FLD(x3,1);
	      COPY(x3354,1);
	      if(EXPRD(x3349,1)){
	       DSPRD(x3349);
	      }else{
	       DCPRD(x3349,1);}
	      if(ISPRM(x3354)){
	       FREE(x1,1);
	       if(EXPRD(x2,1)){
		FREE(FLD(x2,1),1);DSPRDF(x2);
	       }else{
		DCPRD(x2,1);}
	       if(EXPRD(x3,1)){
		FREE(FLD(x3,1),1);DSPRDF(x3);
	       }else{
		DCPRD(x3,1);}
	       FRPRD(x4,1);
	       FREE(x3351,1);
	       FREE(x3352,1);
	       FREE(x3353,1);
	       r.c1=__ASeq_6;r.c2=x5;
	      }else{
	       {OBJ x3355=FLD1(x3354,1);OBJ x3356=FLD1(x3354,2);
		COPY(x3355,1);COPY(x3356,1);
		if(EXPRD(x3354,1)){
		 DSPRD(x3354);
		}else{
		 DCPRD(x3354,1);}
		if(ISPRD(x3355)&&(ISTGPRD(x3355,1))){
		 if(ISPRM(x3356)){
		  if(EXPRD(x3,1)){
		   FREE(FLD(x3,1),1);DSPRDF(x3);
		  }else{
		   DCPRD(x3,1);}
		  FREE(x3351,1);
		  FREE(x3352,1);
		  FREE(x3353,1);
		  x3=x3355;continue;
		 }else{
		  if(EXPRD(x2,1)){
		   FREE(FLD(x2,1),1);DSPRDF(x2);
		  }else{
		   DCPRD(x2,1);}
		  if(EXPRD(x3355,1)){
		   FREE(FLD(x3355,1),1);DSPRDF(x3355);
		  }else{
		   DCPRD(x3355,1);}
		  {OBJ x3362;OBJ x3363;OBJ x3364;
		   if(EXPRD(x3356,1)){
		    RSOME(x3356,x3362);FREE(FLD1(x3362,1),1);FLD1(x3362,1)=x3352;FREE(FLD1(x3362,2),1);FLD1(x3362,2)=x3353;
		   }else{
		    DCPRD(x3356,1);PRD1(2,x3362);FLD1(x3362,1)=x3352;FLD1(x3362,2)=x3353;}
		   x3363=_ASeq_26(x3351,x3362);
		   PRD(1,1,x3364);FLD(x3364,1)=x3363;
		   x2=x3364;continue;}}
		}else{
		 if(ISPRM(x3356)){
		  if(EXPRD(x3,1)){
		   FREE(FLD(x3,1),1);DSPRDF(x3);
		  }else{
		   DCPRD(x3,1);}
		  FREE(x3351,1);
		  FREE(x3352,1);
		  FREE(x3353,1);
		  {OBJ x3377;
		   if(ISPRD(x3355)&&(ISTGPRD(x3355,4))){
		    x3377=__ABUILTIN_5;
		   }else{
		    x3377=__ABUILTIN_3;}
		   x3=x3355;continue;}
		 }else{
		  if(EXPRD(x2,1)){
		   FREE(FLD(x2,1),1);DSPRDF(x2);
		  }else{
		   DCPRD(x2,1);}
		  {OBJ x3369;OBJ x3371;OBJ x3372;OBJ x3373;
		   if(ISPRD(x3355)&&(ISTGPRD(x3355,4))){
		    if(EXPRD(x3355,1)){
		     DSPRDF(x3355);
		    }else{
		     DCPRD(x3355,1);}
		    x3369=__ABUILTIN_5;
		   }else{
		    FREE(x3355,1);
		    x3369=__ABUILTIN_3;}
		   if(EXPRD(x3356,1)){
		    RSOME(x3356,x3371);FREE(FLD1(x3371,1),1);FLD1(x3371,1)=x3352;FREE(FLD1(x3371,2),1);FLD1(x3371,2)=x3353;
		   }else{
		    DCPRD(x3356,1);PRD1(2,x3371);FLD1(x3371,1)=x3352;FLD1(x3371,2)=x3353;}
		   x3372=_ASeq_26(x3351,x3371);
		   PRD(1,1,x3373);FLD(x3373,1)=x3372;
		   x2=x3373;continue;}}}}}}
	    }else{
	     if(ISPRD(x3)&&(ISTGPRD(x3,4))){
	      {OBJ x3379=FLD(x3,1);FLAG x_x3=EXPRD(x3,1);
	       if(x_x3){
	       }else{}
	       FREE(x3351,1);
	       FREE(x3352,1);
	       FREE(x3353,1);
	       CPPRD(x4,1);
	       {OBJ x3380;
		x3380=_ANatMap_17(x3379,x4);
		if(ISTGPRM(x3380,1)){
		 if(x_x3){
		  DSPRDF(x3);
		 }else{
		  FRPRD(x3,1);}
		 if(EXPRD(x3349,1)){
		  DSPRD(x3349);
		 }else{
		  DCPRD(x3349,1);}
		 CPPRD(x4,1);
		 {OBJ x3381;OBJ x3385;
		  x3381=_ANatMap_14(x4,x3379);
		  if(ISTGPRD(x3381,0)){
		   {OBJ x3382=FLD(x3381,1);
		    if(EXPRD(x3381,1)){
		     x3385=x3382;
		     DSPRDF(x3381);
		    }else{
		     COPY(x3382,1);
		     x3385=x3382;
		     FRPRD(x3381,1);}}
		  }else{
		   HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
		  x3=x3385;continue;}
		}else{
		 FREE(x1,1);
		 CPPRD(x2,1);
		 CPPRD(x4,1);
		 {OBJ x3386;
		  x3386=_ASubstitution_24(x3379,x2,x4);
		  if(ISTGPRM(x3386,1)){
		   if(x_x3){
		    DSPRDF(x3);
		   }else{
		    FRPRD(x3,1);}
		   if(EXPRD(x3349,1)){
		    DSPRD(x3349);
		   }else{
		    DCPRD(x3349,1);}
		   if(EXPRD(x2,1)){
		    FREE(FLD(x2,1),1);DSPRDF(x2);
		   }else{
		    DCPRD(x2,1);}
		   FRPRD(x4,1);
		   r.c1=__ASeq_6;r.c2=x5;
		  }else{
		   {OBJ x3387;OBJ x3388;
		    if(x_x3){
		     RPRD(x3,x3387);CHGTG(x3387,0);FLD(x3387,1)=x2;
		    }else{
		     FRPRD(x3,1);PRD(1,0,x3387);FLD(x3387,1)=x2;}
		    x3388=_ANatMap_4(x3379,x3387,x4);
		    if(EXPRD(x3349,1)){
		     RSOME(x3349,r.c1);FREE(FLD1(r.c1,1),1);FLD1(r.c1,1)=x3388;FREE(FLD1(r.c1,2),1);FLD1(r.c1,2)=__ASeq_6;
		    }else{
		     DCPRD(x3349,1);PRD1(2,r.c1);FLD1(r.c1,1)=x3388;FLD1(r.c1,2)=__ASeq_6;}
		    r.c2=x5;}}}}}}
	     }else{
	      if(EXPRD(x3349,1)){
	       DSPRD(x3349);
	      }else{
	       DCPRD(x3349,1);}
	      FREE(x1,1);
	      if(EXPRD(x2,1)){
	       FREE(FLD(x2,1),1);DSPRDF(x2);
	      }else{
	       DCPRD(x2,1);}
	      FREE(x3,1);
	      FRPRD(x4,1);
	      FREE(x3351,1);
	      FREE(x3352,1);
	      FREE(x3353,1);
	      r.c1=__ASeq_6;r.c2=x5;}}}}}
	}else{
	 if(ISPRM(x3349)){
	  if(EXPRD(x2,1)){
	   FREE(FLD(x2,1),1);DSPRDF(x2);
	  }else{
	   DCPRD(x2,1);}
	  if(EXPRD(x3343,1)){
	   DSPRD(x3343);
	  }else{
	   DCPRD(x3343,1);}
	  if(ISPRD(x3348)&&(ISTGPRD(x3348,4))){
	   x2=x3348;continue;
	  }else{
	   x2=x3348;continue;}
	 }else{
	  if(ISPRD(x3348)&&(ISTGPRD(x3348,4))){
	   {OBJ x3393=FLD(x3348,1);
	    if(EXPRD(x3343,1)){
	     DSPRD(x3343);
	    }else{
	     DCPRD(x3343,1);}
	    if(ISPRD(x3)&&(ISTGPRD(x3,1))){
	     {OBJ x3394=FLD(x3,1);FLAG x_x3=EXPRD(x3,1);
	      if(x_x3){
	      }else{
	       COPY(x3394,1);}
	      if(ISPRM(x3394)){
	       if(x_x3){
		DSPRDF(x3);
	       }else{
		FRPRD(x3,1);}
	       if(EXPRD(x3348,1)){
		DSPRDF(x3348);
	       }else{
		DCPRD(x3348,1);}
	       FREE(x1,1);
	       if(EXPRD(x2,1)){
		FREE(FLD(x2,1),1);DSPRDF(x2);
	       }else{
		DCPRD(x2,1);}
	       FRPRD(x4,1);
	       if(EXPRD(x3349,1)){
		DSPRD(x3349);
	       }else{
		DCPRD(x3349,1);}
	       r.c1=__ASeq_6;r.c2=x5;
	      }else{
	       {OBJ x3395=FLD1(x3394,1);OBJ x3396=FLD1(x3394,2);
		COPY(x3395,1);COPY(x3396,1);
		if(ISPRD(x3395)&&(ISTGPRD(x3395,1))){
		 {OBJ x3398=FLD(x3395,1);
		  COPY(x3398,1);
		  if(x_x3){
		   DSPRDF(x3);
		  }else{
		   FRPRD(x3,1);}
		  if(EXPRD(x3349,1)){
		   DSPRD(x3349);
		  }else{
		   DCPRD(x3349,1);}
		  if(EXPRD(x3394,1)){
		   DSPRD(x3394);
		  }else{
		   DCPRD(x3394,1);}
		  if(ISPRM(x3396)){
		   if(EXPRD(x3348,1)){
		    DSPRDF(x3348);
		   }else{
		    DCPRD(x3348,1);}
		   FREE(x3398,1);
		   x3=x3395;continue;
		  }else{
		   {OBJ x3399;OBJ x3400;FLAG x_x3396=EXPRD(x3396,1);
		    if(x_x3396){
		    }else{
		     x3399=FLD1(x3396,1);x3400=FLD1(x3396,2);COPY(x3399,1);COPY(x3400,1);}
		    if(EXPRD(x3395,1)){
		     FREE(FLD(x3395,1),1);DSPRDF(x3395);
		    }else{
		     DCPRD(x3395,1);}
		    {OBJ x3402;OBJ x3403;OBJ x3404;
		     if(x_x3396){
		      RSOME(x3396,x3402);
		     }else{
		      FRPRD(x3396,1);PRD1(2,x3402);FLD1(x3402,1)=x3399;FLD1(x3402,2)=x3400;}
		     x3403=_ASeq_26(x3398,x3402);
		     if(EXPRD(x3348,1)){
		      RPRD(x3348,x3404);CHGTG(x3404,1);FLD(x3404,1)=x3403;
		     }else{
		      DCPRD(x3348,1);PRD(1,1,x3404);FLD(x3404,1)=x3403;}
		     x3=x3404;continue;}}}}
		}else{
		 if(ISPRM(x3396)){
		  if(x_x3){
		   DSPRDF(x3);
		  }else{
		   FRPRD(x3,1);}
		  if(EXPRD(x3348,1)){
		   DSPRDF(x3348);
		  }else{
		   DCPRD(x3348,1);}
		  if(EXPRD(x3349,1)){
		   DSPRD(x3349);
		  }else{
		   DCPRD(x3349,1);}
		  if(EXPRD(x3394,1)){
		   DSPRD(x3394);
		  }else{
		   DCPRD(x3394,1);}
		  if(ISPRD(x3395)&&(ISTGPRD(x3395,4))){
		   x3=x3395;continue;
		  }else{
		   x3=x3395;continue;}
		 }else{
		  if(EXPRD(x2,1)){
		   FREE(FLD(x2,1),1);DSPRDF(x2);
		  }else{
		   DCPRD(x2,1);}
		  if(ISPRD(x3395)&&(ISTGPRD(x3395,4))){
		   if(EXPRD(x3348,1)){
		    DSPRDF(x3348);
		   }else{
		    DCPRD(x3348,1);}
		   CPPRD(x4,1);
		   {OBJ x3409;
		    x3409=_ANatMap_17(x3393,x4);
		    if(ISTGPRM(x3409,1)){
		     CPPRD(x4,1);
		     {OBJ x3410;OBJ x3411;OBJ x3415;OBJ x3416;OBJ x3417;
		      if(x_x3){
		       RPRD(x3,x3410);
		      }else{
		       FRPRD(x3,1);PRD(1,1,x3410);FLD(x3410,1)=x3394;}
		      x3411=_ANatMap_14(x4,x3393);
		      if(ISTGPRD(x3411,0)){
		       {OBJ x3412=FLD(x3411,1);
			if(EXPRD(x3411,1)){
			 x3415=x3412;
			 DSPRDF(x3411);
			}else{
			 COPY(x3412,1);
			 x3415=x3412;
			 FRPRD(x3411,1);}}
		      }else{
		       HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
		      if(EXPRD(x3396,1)){
		       RSOME(x3396,x3416);FREE(FLD1(x3416,1),1);FLD1(x3416,1)=x3415;FREE(FLD1(x3416,2),1);FLD1(x3416,2)=x3349;
		      }else{
		       DCPRD(x3396,1);PRD1(2,x3416);FLD1(x3416,1)=x3415;FLD1(x3416,2)=x3349;}
		      if(EXPRD(x3395,1)){
		       RPRD(x3395,x3417);CHGTG(x3417,1);FLD(x3417,1)=x3416;
		      }else{
		       DCPRD(x3395,1);PRD(1,1,x3417);FLD(x3417,1)=x3416;}
		      x2=x3417;x3=x3410;continue;}
		    }else{
		     if(x_x3){
		      DSPRDF(x3);
		     }else{
		      FRPRD(x3,1);}
		     if(EXPRD(x3395,1)){
		      DSPRDF(x3395);
		     }else{
		      DCPRD(x3395,1);}
		     CPPRD(x4,2);
		     CPCLS(__ASubstitution_48,1);
		     {OBJ x3418;OBJ x3419;OBJ x3420;OBJ x3421;OBJ x3422;OBJ x3423;OBJ x3424;
		      if(EXPRD(x3396,1)){
		       RSOME(x3396,x3418);FREE(FLD1(x3418,1),1);FLD1(x3418,1)=__ASeq_6;FREE(FLD1(x3418,2),1);FLD1(x3418,2)=x5;
		      }else{
		       DCPRD(x3396,1);PRD1F(2,x3418);FLD1(x3418,1)=__ASeq_6;FLD1(x3418,2)=x5;}
		      x3419=_ASubstitution_29(x3394,x4);
		      x3420=_ASubstitution_29(x3349,x4);
		      COPY(x3420,1);
		      x3421=_ASeq_52(x3420,__ANat_5);
		      x3422=_ASubstitution_26(x3419,x4,x5,x3421);
		      x3423=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__ASubstitution_48,3))(__ASubstitution_48,x1,x3393,x3420);
		      x3424=_ASeqReduce_4(x3423,x3418,x3422);
		      {OBJ x3425=FLD1(x3424,1);OBJ x3426=FLD1(x3424,2);
		       if(EXPRD(x3424,1)){
			r.c1=x3425;r.c2=x3426;
			DSPRDF(x3424);
		       }else{
			COPY(x3425,1);
			r.c1=x3425;r.c2=x3426;
			FRPRD(x3424,1);}}}}}
		  }else{
		   FREE(x3395,1);
		   CPPRD(x4,1);
		   {OBJ x3427;
		    x3427=_ANatMap_17(x3393,x4);
		    if(ISTGPRM(x3427,1)){
		     CPPRD(x4,1);
		     {OBJ x3428;OBJ x3429;OBJ x3433;OBJ x3434;OBJ x3435;
		      if(x_x3){
		       RPRD(x3,x3428);
		      }else{
		       FRPRD(x3,1);PRD(1,1,x3428);FLD(x3428,1)=x3394;}
		      x3429=_ANatMap_14(x4,x3393);
		      if(ISTGPRD(x3429,0)){
		       {OBJ x3430=FLD(x3429,1);
			if(EXPRD(x3429,1)){
			 x3433=x3430;
			 DSPRDF(x3429);
			}else{
			 COPY(x3430,1);
			 x3433=x3430;
			 FRPRD(x3429,1);}}
		      }else{
		       HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
		      if(EXPRD(x3396,1)){
		       RSOME(x3396,x3434);FREE(FLD1(x3434,1),1);FLD1(x3434,1)=x3433;FREE(FLD1(x3434,2),1);FLD1(x3434,2)=x3349;
		      }else{
		       DCPRD(x3396,1);PRD1(2,x3434);FLD1(x3434,1)=x3433;FLD1(x3434,2)=x3349;}
		      if(EXPRD(x3348,1)){
		       RPRD(x3348,x3435);CHGTG(x3435,1);FLD(x3435,1)=x3434;
		      }else{
		       DCPRD(x3348,1);PRD(1,1,x3435);FLD(x3435,1)=x3434;}
		      x2=x3435;x3=x3428;continue;}
		    }else{
		     if(x_x3){
		      DSPRDF(x3);
		     }else{
		      FRPRD(x3,1);}
		     if(EXPRD(x3348,1)){
		      DSPRDF(x3348);
		     }else{
		      DCPRD(x3348,1);}
		     CPPRD(x4,2);
		     CPCLS(__ASubstitution_50,1);
		     {OBJ x3436;OBJ x3437;OBJ x3438;OBJ x3439;OBJ x3440;OBJ x3441;OBJ x3442;
		      if(EXPRD(x3396,1)){
		       RSOME(x3396,x3436);FREE(FLD1(x3436,1),1);FLD1(x3436,1)=__ASeq_6;FREE(FLD1(x3436,2),1);FLD1(x3436,2)=x5;
		      }else{
		       DCPRD(x3396,1);PRD1F(2,x3436);FLD1(x3436,1)=__ASeq_6;FLD1(x3436,2)=x5;}
		      x3437=_ASubstitution_29(x3394,x4);
		      x3438=_ASubstitution_29(x3349,x4);
		      COPY(x3438,1);
		      x3439=_ASeq_52(x3438,__ANat_5);
		      x3440=_ASubstitution_26(x3437,x4,x5,x3439);
		      x3441=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__ASubstitution_50,3))(__ASubstitution_50,x1,x3393,x3438);
		      x3442=_ASeqReduce_4(x3441,x3436,x3440);
		      {OBJ x3443=FLD1(x3442,1);OBJ x3444=FLD1(x3442,2);
		       if(EXPRD(x3442,1)){
			r.c1=x3443;r.c2=x3444;
			DSPRDF(x3442);
		       }else{
			COPY(x3443,1);
			r.c1=x3443;r.c2=x3444;
			FRPRD(x3442,1);}}}}}}}}}}}
	    }else{
	     if(ISPRD(x3)&&(ISTGPRD(x3,4))){
	      {OBJ x3447=FLD(x3,1);
	       if(EXPRD(x3,1)){
		DSPRDF(x3);
	       }else{
		FRPRD(x3,1);}
	       if(EXPRD(x3349,1)){
		DSPRD(x3349);
	       }else{
		DCPRD(x3349,1);}
	       CPPRD(x4,1);
	       {OBJ x3448;
		x3448=_ANatMap_17(x3447,x4);
		if(ISTGPRM(x3448,1)){
		 if(EXPRD(x3348,1)){
		  DSPRDF(x3348);
		 }else{
		  DCPRD(x3348,1);}
		 CPPRD(x4,1);
		 {OBJ x3449;OBJ x3453;
		  x3449=_ANatMap_14(x4,x3447);
		  if(ISTGPRD(x3449,0)){
		   {OBJ x3450=FLD(x3449,1);
		    if(EXPRD(x3449,1)){
		     x3453=x3450;
		     DSPRDF(x3449);
		    }else{
		     COPY(x3450,1);
		     x3453=x3450;
		     FRPRD(x3449,1);}}
		  }else{
		   HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
		  x3=x3453;continue;}
		}else{
		 FREE(x1,1);
		 CPPRD(x2,1);
		 CPPRD(x4,1);
		 {OBJ x3454;
		  x3454=_ASubstitution_24(x3447,x2,x4);
		  if(ISTGPRM(x3454,1)){
		   if(EXPRD(x3348,1)){
		    DSPRDF(x3348);
		   }else{
		    DCPRD(x3348,1);}
		   if(EXPRD(x2,1)){
		    FREE(FLD(x2,1),1);DSPRDF(x2);
		   }else{
		    DCPRD(x2,1);}
		   FRPRD(x4,1);
		   r.c1=__ASeq_6;r.c2=x5;
		  }else{
		   {OBJ x3455;OBJ x3456;
		    if(EXPRD(x3348,1)){
		     RPRD(x3348,x3455);CHGTG(x3455,0);FLD(x3455,1)=x2;
		    }else{
		     DCPRD(x3348,1);PRD(1,0,x3455);FLD(x3455,1)=x2;}
		    x3456=_ANatMap_4(x3447,x3455,x4);
		    PRD1(2,r.c1);FLD1(r.c1,1)=x3456;FLD1(r.c1,2)=__ASeq_6;
		    r.c2=x5;}}}}}}
	     }else{
	      if(EXPRD(x3348,1)){
	       DSPRDF(x3348);
	      }else{
	       DCPRD(x3348,1);}
	      FREE(x1,1);
	      if(EXPRD(x2,1)){
	       FREE(FLD(x2,1),1);DSPRDF(x2);
	      }else{
	       DCPRD(x2,1);}
	      FREE(x3,1);
	      FRPRD(x4,1);
	      if(EXPRD(x3349,1)){
	       DSPRD(x3349);
	      }else{
	       DCPRD(x3349,1);}
	      r.c1=__ASeq_6;r.c2=x5;}}}
	  }else{
	   if(ISPRD(x3)&&(ISTGPRD(x3,1))){
	    {OBJ x3458=FLD(x3,1);FLAG x_x3=EXPRD(x3,1);
	     if(x_x3){
	     }else{
	      COPY(x3458,1);}
	     if(ISPRM(x3458)){
	      if(x_x3){
	       DSPRDF(x3);
	      }else{
	       FRPRD(x3,1);}
	      FREE(x1,1);
	      if(EXPRD(x2,1)){
	       FREE(FLD(x2,1),1);DSPRDF(x2);
	      }else{
	       DCPRD(x2,1);}
	      FRPRD(x4,1);
	      if(EXPRD(x3343,1)){
	       DSPRD(x3343);
	      }else{
	       DCPRD(x3343,1);}
	      FREE(x3348,1);
	      if(EXPRD(x3349,1)){
	       DSPRD(x3349);
	      }else{
	       DCPRD(x3349,1);}
	      r.c1=__ASeq_6;r.c2=x5;
	     }else{
	      {OBJ x3459=FLD1(x3458,1);OBJ x3460=FLD1(x3458,2);FLAG x_x3458=EXPRD(x3458,1);
	       if(x_x3458){
	       }else{
		COPY(x3459,1);COPY(x3460,1);}
	       if(ISPRD(x3459)&&(ISTGPRD(x3459,1))){
		{OBJ x3462=FLD(x3459,1);
		 COPY(x3462,1);
		 if(x_x3458){
		  DSPRDF(x3458);
		 }else{
		  FRPRD(x3458,1);}
		 if(EXPRD(x3343,1)){
		  DSPRD(x3343);
		 }else{
		  DCPRD(x3343,1);}
		 FREE(x3348,1);
		 if(EXPRD(x3349,1)){
		  DSPRD(x3349);
		 }else{
		  DCPRD(x3349,1);}
		 if(ISPRM(x3460)){
		  if(x_x3){
		   DSPRDF(x3);
		  }else{
		   FRPRD(x3,1);}
		  FREE(x3462,1);
		  x3=x3459;continue;
		 }else{
		  {OBJ x3463;OBJ x3464;FLAG x_x3460=EXPRD(x3460,1);
		   if(x_x3460){
		   }else{
		    x3463=FLD1(x3460,1);x3464=FLD1(x3460,2);COPY(x3463,1);COPY(x3464,1);}
		   if(EXPRD(x3459,1)){
		    FREE(FLD(x3459,1),1);DSPRDF(x3459);
		   }else{
		    DCPRD(x3459,1);}
		   {OBJ x3466;OBJ x3467;OBJ x3468;
		    if(x_x3460){
		     RSOME(x3460,x3466);
		    }else{
		     FRPRD(x3460,1);PRD1(2,x3466);FLD1(x3466,1)=x3463;FLD1(x3466,2)=x3464;}
		    x3467=_ASeq_26(x3462,x3466);
		    if(x_x3){
		     RPRD(x3,x3468);FLD(x3468,1)=x3467;
		    }else{
		     FRPRD(x3,1);PRD(1,1,x3468);FLD(x3468,1)=x3467;}
		    x3=x3468;continue;}}}}
	       }else{
		if(ISPRM(x3460)){
		 if(x_x3){
		  DSPRDF(x3);
		 }else{
		  FRPRD(x3,1);}
		 if(x_x3458){
		  DSPRDF(x3458);
		 }else{
		  FRPRD(x3458,1);}
		 if(EXPRD(x3343,1)){
		  DSPRD(x3343);
		 }else{
		  DCPRD(x3343,1);}
		 FREE(x3348,1);
		 if(EXPRD(x3349,1)){
		  DSPRD(x3349);
		 }else{
		  DCPRD(x3349,1);}
		 if(ISPRD(x3459)&&(ISTGPRD(x3459,4))){
		  x3=x3459;continue;
		 }else{
		  x3=x3459;continue;}
		}else{
		 if(EXPRD(x2,1)){
		  FREE(FLD(x2,1),1);DSPRDF(x2);
		 }else{
		  DCPRD(x2,1);}
		 if(ISPRD(x3459)&&(ISTGPRD(x3459,4))){
		  {OBJ x3472=FLD(x3459,1);FLAG x_x3459=EXPRD(x3459,1);
		   if(x_x3459){
		   }else{}
		   FREE(x3348,1);
		   if(EXPRD(x3349,1)){
		    DSPRD(x3349);
		   }else{
		    DCPRD(x3349,1);}
		   CPPRD(x4,1);
		   {OBJ x3473;
		    x3473=_ANatMap_17(x3472,x4);
		    if(ISTGPRM(x3473,1)){
		     CPPRD(x4,1);
		     {OBJ x3474;OBJ x3475;OBJ x3479;OBJ x3480;OBJ x3481;
		      if(x_x3459){
		       RPRD(x3459,x3474);CHGTG(x3474,1);FLD(x3474,1)=x3343;
		      }else{
		       FRPRD(x3459,1);PRD(1,1,x3474);FLD(x3474,1)=x3343;}
		      x3475=_ANatMap_14(x4,x3472);
		      if(ISTGPRD(x3475,0)){
		       {OBJ x3476=FLD(x3475,1);
			if(EXPRD(x3475,1)){
			 x3479=x3476;
			 DSPRDF(x3475);
			}else{
			 COPY(x3476,1);
			 x3479=x3476;
			 FRPRD(x3475,1);}}
		      }else{
		       HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
		      if(x_x3458){
		       RSOME(x3458,x3480);FLD1(x3480,1)=x3479;
		      }else{
		       FRPRD(x3458,1);PRD1(2,x3480);FLD1(x3480,1)=x3479;FLD1(x3480,2)=x3460;}
		      if(x_x3){
		       RPRD(x3,x3481);FLD(x3481,1)=x3480;
		      }else{
		       FRPRD(x3,1);PRD(1,1,x3481);FLD(x3481,1)=x3480;}
		      x2=x3474;x3=x3481;continue;}
		    }else{
		     if(x_x3){
		      DSPRDF(x3);
		     }else{
		      FRPRD(x3,1);}
		     if(x_x3459){
		      DSPRDF(x3459);
		     }else{
		      FRPRD(x3459,1);}
		     CPPRD(x4,2);
		     CPCLS(__ASubstitution_51,1);
		     {OBJ x3482;OBJ x3483;OBJ x3484;OBJ x3485;OBJ x3486;OBJ x3487;OBJ x3488;
		      if(x_x3458){
		       RSOME(x3458,x3482);FLD1(x3482,1)=__ASeq_6;FLD1(x3482,2)=x5;
		      }else{
		       FRPRD(x3458,1);PRD1F(2,x3482);FLD1(x3482,1)=__ASeq_6;FLD1(x3482,2)=x5;}
		      x3483=_ASubstitution_29(x3343,x4);
		      x3484=_ASubstitution_29(x3460,x4);
		      COPY(x3484,1);
		      x3485=_ASeq_52(x3484,__ANat_5);
		      x3486=_ASubstitution_26(x3483,x4,x5,x3485);
		      x3487=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__ASubstitution_51,3))(__ASubstitution_51,x1,x3472,x3484);
		      x3488=_ASeqReduce_4(x3487,x3482,x3486);
		      {OBJ x3489=FLD1(x3488,1);OBJ x3490=FLD1(x3488,2);
		       if(EXPRD(x3488,1)){
			r.c1=x3489;r.c2=x3490;
			DSPRDF(x3488);
		       }else{
			COPY(x3489,1);
			r.c1=x3489;r.c2=x3490;
			FRPRD(x3488,1);}}}}}}
		 }else{
		  if(x_x3458){
		   DSPRDF(x3458);
		  }else{
		   FRPRD(x3458,1);}
		  if(EXPRD(x3343,1)){
		   DSPRD(x3343);
		  }else{
		   DCPRD(x3343,1);}
		  COPY(x1,1);
		  {OBJ x3492;OBJ x3493;TUP2 x3494;TUP2 x3497;
		   if(x_x3){
		    RPRD(x3,x3492);FLD(x3492,1)=x3349;
		   }else{
		    FRPRD(x3,1);PRD(1,1,x3492);FLD(x3492,1)=x3349;}
		   PRD(1,1,x3493);FLD(x3493,1)=x3460;
		   x3494=_ASubstitution_23(x1,x3348,x3459,x4,x5);
		   x3497=_ASubstitution_19(x1,x3492,x3493,x3494.c1,x3494.c2);
		   if(ISPRM(x3497.c1)){
		    r.c1=__ASeq_6;r.c2=x5;
		   }else{
		    r.c1=x3497.c1;r.c2=x3497.c2;}}}}}}}}
	   }else{
	    if(ISPRD(x3)&&(ISTGPRD(x3,4))){
	     {OBJ x3503=FLD(x3,1);FLAG x_x3=EXPRD(x3,1);
	      if(x_x3){
	      }else{}
	      if(EXPRD(x3343,1)){
	       DSPRD(x3343);
	      }else{
	       DCPRD(x3343,1);}
	      FREE(x3348,1);
	      if(EXPRD(x3349,1)){
	       DSPRD(x3349);
	      }else{
	       DCPRD(x3349,1);}
	      CPPRD(x4,1);
	      {OBJ x3504;
	       x3504=_ANatMap_17(x3503,x4);
	       if(ISTGPRM(x3504,1)){
		if(x_x3){
		 DSPRDF(x3);
		}else{
		 FRPRD(x3,1);}
		CPPRD(x4,1);
		{OBJ x3505;OBJ x3509;
		 x3505=_ANatMap_14(x4,x3503);
		 if(ISTGPRD(x3505,0)){
		  {OBJ x3506=FLD(x3505,1);
		   if(EXPRD(x3505,1)){
		    x3509=x3506;
		    DSPRDF(x3505);
		   }else{
		    COPY(x3506,1);
		    x3509=x3506;
		    FRPRD(x3505,1);}}
		 }else{
		  HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
		 x3=x3509;continue;}
	       }else{
		FREE(x1,1);
		CPPRD(x2,1);
		CPPRD(x4,1);
		{OBJ x3510;
		 x3510=_ASubstitution_24(x3503,x2,x4);
		 if(ISTGPRM(x3510,1)){
		  if(x_x3){
		   DSPRDF(x3);
		  }else{
		   FRPRD(x3,1);}
		  if(EXPRD(x2,1)){
		   FREE(FLD(x2,1),1);DSPRDF(x2);
		  }else{
		   DCPRD(x2,1);}
		  FRPRD(x4,1);
		  r.c1=__ASeq_6;r.c2=x5;
		 }else{
		  {OBJ x3511;OBJ x3512;
		   if(x_x3){
		    RPRD(x3,x3511);CHGTG(x3511,0);FLD(x3511,1)=x2;
		   }else{
		    FRPRD(x3,1);PRD(1,0,x3511);FLD(x3511,1)=x2;}
		   x3512=_ANatMap_4(x3503,x3511,x4);
		   PRD1(2,r.c1);FLD1(r.c1,1)=x3512;FLD1(r.c1,2)=__ASeq_6;
		   r.c2=x5;}}}}}}
	    }else{
	     FREE(x1,1);
	     if(EXPRD(x2,1)){
	      FREE(FLD(x2,1),1);DSPRDF(x2);
	     }else{
	      DCPRD(x2,1);}
	     FREE(x3,1);
	     FRPRD(x4,1);
	     if(EXPRD(x3343,1)){
	      DSPRD(x3343);
	     }else{
	      DCPRD(x3343,1);}
	     FREE(x3348,1);
	     if(EXPRD(x3349,1)){
	      DSPRD(x3349);
	     }else{
	      DCPRD(x3349,1);}
	     r.c1=__ASeq_6;r.c2=x5;}}}}}}}}}}
  break;}
 return r;}
extern OBJ _ASubstitution_23_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* doUnify,1 */
{OBJ r;
 {TUP2 t=_ASubstitution_23(x1,x2,x3,x4,x5);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _ASubstitution_24(register OBJ x1,register OBJ x2,register OBJ x3) /* occurs? */
{OBJ r;
 for(;;){
  if(ISPRM(x2)){
   HLT("Substitution at <328,5-11> : missing else in occurs\?\'Substitution:nat**fct**subst->bool");
  }else{
   switch(TGPRD(x2)){
    case 3:case 4:
     {OBJ x85=FLD(x2,1);
      if(EXPRD(x2,1)){
       DSPRD(x2);
      }else{
       FRPRD(x2,1);}
      {OBJ x86;
       ANat_76(x1,x85,x86);
       if(ISTGPRM(x86,1)){
	FRPRD(x3,1);
	r=__ABUILTIN_5;
       }else{
	CPPRD(x3,1);
	{OBJ x87;
	 x87=_ANatMap_17(x85,x3);
	 if(ISTGPRM(x87,1)){
	  CPPRD(x3,1);
	  {OBJ x88;OBJ x92;
	   x88=_ANatMap_14(x3,x85);
	   if(ISTGPRD(x88,0)){
	    {OBJ x89=FLD(x88,1);
	     if(EXPRD(x88,1)){
	      x92=x89;
	      DSPRDF(x88);
	     }else{
	      COPY(x89,1);
	      x92=x89;
	      FRPRD(x88,1);}}
	   }else{
	    HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	   x2=x92;continue;}
	 }else{
	  FRPRD(x3,1);
	  r=__ABUILTIN_3;}}}}}break;
    case 2:
     {OBJ x101=FLD(x2,1);OBJ x102=FLD(x2,2);
      if(EXPRD(x2,1)){
       DSPRDF(x2);
      }else{
       COPY(x101,1);COPY(x102,1);
       FRPRD(x2,1);}
      CPPRD(x3,1);
      {OBJ x103;
       x103=_ASubstitution_24(x1,x101,x3);
       if(ISTGPRM(x103,1)){
	FRPRD(x3,1);
	FREE(x102,1);
	r=__ABUILTIN_5;
       }else{
	x2=x102;continue;}}}break;
    case 0:
     if(EXPRD(x2,1)){
      FREE(FLD(x2,1),1);DSPRDF(x2);
     }else{
      DCPRD(x2,1);}
     FRPRD(x3,1);
     r=__ABUILTIN_3;break;
    default: 
     {OBJ x84=FLD(x2,1);
      if(EXPRD(x2,1)){
       DSPRDF(x2);
      }else{
       COPY(x84,1);
       FRPRD(x2,1);}
      r=_ASubstitution_25(x1,x84,x3);}}}
  break;}
 return r;}

extern OBJ _ASubstitution_25(register OBJ x1,register OBJ x2,register OBJ x3) /* occurs?,1 */
{OBJ r;
 for(;;){
  if(ISPRM(x2)){
   FRPRD(x3,1);
   r=__ABUILTIN_3;
  }else{
   {OBJ x22=FLD1(x2,1);OBJ x23=FLD1(x2,2);
    if(EXPRD(x2,1)){
     DSPRDF(x2);
    }else{
     COPY(x22,1);COPY(x23,1);
     FRPRD(x2,1);}
    CPPRD(x3,1);
    {OBJ x25;
     x25=_ASubstitution_24(x1,x22,x3);
     if(ISTGPRM(x25,1)){
      FRPRD(x3,1);
      FREE(x23,1);
      r=__ABUILTIN_5;
     }else{
      x2=x23;continue;}}}}
  break;}
 return r;}

extern OBJ _ASubstitution_26(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* split */
{OBJ r;
 if(ISPRM(x1)){
  FRPRD(x2,1);
  r=__ASeq_6;
 }else{
  {OBJ x46=FLD1(x1,1);OBJ x47=FLD1(x1,2);
   COPY(x46,1);COPY(x47,1);
   CPPRD(x1,1);
   CPCLS(__ASubstitution_46,1);
   {OBJ x48;OBJ x49;
    x48=(*(OBJ(*)(OBJ,OBJ))METHOD(__ASubstitution_46,1))(__ASubstitution_46,__ABUILTIN_20);
    x49=_ASeq_42(x48,x1);
    if(ISTGPRM(x49,1)){
     FREE(x46,1);
     FREE(x47,1);
     r=_ASubstitution_27(x1,x2,x3,x4);
    }else{
     if(EXPRD(x1,1)){
      DSPRD(x1);
     }else{
      DCPRD(x1,1);}
     {OBJ x54;OBJ x51;OBJ x52;OBJ x55;
      if(ISPRD(x46)&&(ISTGPRD(x46,4))){
       CPPRD(x2,1);
       CPPRD(x46,2);
       COPY(x47,1);
       CPCLS(__ASubstitution_45,1);
       x54=__ABUILTIN_5;
      }else{
       CPPRD(x2,1);
       COPY(x46,2);
       COPY(x47,1);
       CPCLS(__ASubstitution_45,1);
       x54=__ABUILTIN_3;}
      PRD1(2,x51);FLD1(x51,1)=x46;FLD1(x51,2)=__ASeq_6;
      x52=(*(OBJ(*)(OBJ,OBJ))METHOD(__ASubstitution_45,1))(__ASubstitution_45,x46);
      PRD1(4,x55);FLD1(x55,1)=x51;FLD1(x55,2)=x47;FLD1(x55,3)=x2;FLD1(x55,4)=x3;
      if(ISTGPRM(x54,1)){
       {OBJ x56;OBJ x57;OBJ x64;OBJ x58;OBJ x59;OBJ x60;OBJ x61;OBJ x65;OBJ x66;OBJ x67;OBJ x68;OBJ x69;OBJ x70;OBJ x71;OBJ x72;OBJ x73;
	PRDF(1,4,x56);FLD(x56,1)=x3;
	ANat_2(x3,x57);
	if(ISPRD(x46)&&(ISTGPRD(x46,4)||ISTGPRD(x46,3))){
	 {OBJ x62=FLD(x46,1);
	  if(EXPRD(x46,1)){
	   x64=x62;
	   DSPRD(x46);
	  }else{
	   x64=x62;
	   FRPRD(x46,1);}
	  CPPRD(x2,1);
	  COPY(x47,1);
	  COPY(x56,1);}
	}else{
	 HLT("Fct at <unknown> : undefined selection id\'Fct:fct->nat");}
	ANat_2(x57,x58);
	PRD1(2,x59);FLD1(x59,1)=x56;FLD1(x59,2)=__ASeq_6;
	PRDF(1,4,x60);FLD(x60,1)=x57;
	COPY(x60,1);
	x61=_ASubstitution_26(x47,x2,x3,x4);
	PRD1(2,x65);FLD1(x65,1)=x60;FLD1(x65,2)=__ASeq_6;
	PRD1(2,x66);FLD1(x66,1)=x60;FLD1(x66,2)=x47;
	x67=_ASeqMap_3(x52,x61);
	PRD1(2,x68);FLD1(x68,1)=x55;FLD1(x68,2)=x67;
	PRD1(2,x69);FLD1(x69,1)=x56;FLD1(x69,2)=x65;
	PRD(1,1,x70);FLD(x70,1)=x69;
	PRD(1,0,x71);FLD(x71,1)=x70;
	x72=_ANatMap_4(x64,x71,x2);
	PRD1(4,x73);FLD1(x73,1)=x59;FLD1(x73,2)=x66;FLD1(x73,3)=x72;FLD1(x73,4)=x58;
	PRD1(2,r);FLD1(r,1)=x73;FLD1(r,2)=x68;}
      }else{
       FREE(x46,1);
       {OBJ x74;
	x74=_ASubstitution_26(x47,x2,x3,x4);
	PRD1(2,r);FLD1(r,1)=x55;
	FLD1(r,2)=_ASeqMap_3(x52,x74);}}}}}}}
 return r;}

extern OBJ _ASubstitution_27(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* splitFixLen */
{OBJ r;
 COPY(x1,1);
 {OBJ x5;OBJ x6;
  x5=_ASeq_52(x1,__ANat_5);
  ANat_81(x4,x5,x6);
  if(ISTGPRM(x6,1)){
   FREE(x1,1);
   FRPRD(x2,1);
   r=__ASeq_6;
  }else{
   {OBJ x12;OBJ x9;OBJ x14;OBJ x15;OBJ x13;OBJ x16;OBJ x17;
    if(ISPRM(x1)){
     HLT("Seq at <unknown> : undefined selection rt\'Seq:seq->seq");
    }else{
     {OBJ x20=FLD1(x1,1);OBJ x21=FLD1(x1,2);
      if(EXPRD(x1,1)){
       x9=x20;x12=x21;
       DSPRDF(x1);
      }else{
       COPY(x20,1);COPY(x21,1);
       x9=x20;x12=x21;
       FRPRD(x1,1);}
      CPPRD(x2,1);
      CPCLS(__ASubstitution_45,1);}}
    COPY(x12,1);
    COPY(x9,1);
    x14=(*(OBJ(*)(OBJ,OBJ))METHOD(__ASubstitution_45,1))(__ASubstitution_45,x9);
    PRD1(2,x15);FLD1(x15,1)=x9;FLD1(x15,2)=__ASeq_6;
    x13=_ASubstitution_27(x12,x2,x3,x4);
    x16=_ASeqMap_3(x14,x13);
    PRD1(4,x17);FLD1(x17,1)=x15;FLD1(x17,2)=x12;FLD1(x17,3)=x2;FLD1(x17,4)=x3;
    PRD1(2,r);FLD1(r,1)=x17;FLD1(r,2)=x16;}}}
 return r;}

extern OBJ _ASubstitution_28(OBJ x1,OBJ x2) /* :: */
{OBJ r;
 CPCLS(__ASubstitution_45,1);
 {OBJ x3;
  x3=(*(OBJ(*)(OBJ,OBJ))METHOD(__ASubstitution_45,1))(__ASubstitution_45,x1);
  r=_ASeqMap_3(x3,x2);}
 return r;}

extern OBJ _ASubstitution_29(OBJ x1,OBJ x2) /* flatten */
{OBJ r;
 CPCLS(__ASubstitution_30,1);
 {OBJ x3;OBJ x4;
  x3=(*(OBJ(*)(OBJ,OBJ))METHOD(__ASubstitution_30,1))(__ASubstitution_30,x2);
  x4=_ASeqMap_3(x3,x1);
  r=_ASeqOfSeq_2(x4);}
 return r;}

extern OBJ _ASubstitution_30(register OBJ x1,register OBJ x2) /* flatten,1 */
{OBJ r;
 for(;;){
  if(ISPRD(x2)&&(ISTGPRD(x2,3))){
   {OBJ x38=FLD(x2,1);
    CPPRD(x1,1);
    {OBJ x39;
     x39=_ANatMap_17(x38,x1);
     if(ISTGPRM(x39,1)){
      if(EXPRD(x2,1)){
       DSPRDF(x2);
      }else{
       DCPRD(x2,1);}
      CPPRD(x1,1);
      {OBJ x40;OBJ x44;
       x40=_ANatMap_14(x1,x38);
       if(ISTGPRD(x40,0)){
	{OBJ x41=FLD(x40,1);
	 if(EXPRD(x40,1)){
	  x44=x41;
	  DSPRDF(x40);
	 }else{
	  COPY(x41,1);
	  x44=x41;
	  FRPRD(x40,1);}}
       }else{
	HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
       x2=x44;continue;}
     }else{
      FRPRD(x1,1);
      PRD1(2,r);FLD1(r,1)=x2;FLD1(r,2)=__ASeq_6;}}}
  }else{
   if(ISPRD(x2)&&(ISTGPRD(x2,4))){
    {OBJ x45=FLD(x2,1);
     CPPRD(x1,1);
     {OBJ x46;
      x46=_ANatMap_17(x45,x1);
      if(ISTGPRM(x46,1)){
       if(EXPRD(x2,1)){
	DSPRDF(x2);
       }else{
	DCPRD(x2,1);}
       CPPRD(x1,1);
       {OBJ x47;OBJ x51;
	x47=_ANatMap_14(x1,x45);
	if(ISTGPRD(x47,0)){
	 {OBJ x48=FLD(x47,1);
	  if(EXPRD(x47,1)){
	   x51=x48;
	   DSPRDF(x47);
	  }else{
	   COPY(x48,1);
	   x51=x48;
	   FRPRD(x47,1);}}
	}else{
	 HLT("Substitution at <41,17-19> : undefined selection fct\'Substitution:val->fct");}
	x2=x51;continue;}
      }else{
       FRPRD(x1,1);
       PRD1(2,r);FLD1(r,1)=x2;FLD1(r,2)=__ASeq_6;}}}
   }else{
    if(ISPRD(x2)&&(ISTGPRD(x2,1))){
     {OBJ x52=FLD(x2,1);
      if(EXPRD(x2,1)){
       DSPRDF(x2);
      }else{
       COPY(x52,1);
       FRPRD(x2,1);}
      r=_ASubstitution_29(x52,x1);}
    }else{
     FRPRD(x1,1);
     PRD1(2,r);FLD1(r,1)=x2;FLD1(r,2)=__ASeq_6;}}}
  break;}
 return r;}

extern OBJ _ASubstitution_32(OBJ x1,OBJ x2) /* flatFunct */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,1))){
  {OBJ x187=FLD(x1,1);
   COPY(x187,1);
   {OBJ x189;
    if(ISPRD(x2)&&(ISTGPRD(x2,1))){
     x189=__ABUILTIN_5;
    }else{
     x189=__ABUILTIN_3;}
    if(ISPRM(x187)){
     if(ISTGPRM(x189,1)){
      if(ISPRD(x2)&&(ISTGPRD(x2,1))){
       {OBJ x204=FLD(x2,1);
	COPY(x204,1);
	if(ISPRM(x204)){
	 PRD(2,2,r);FLD(r,1)=x1;FLD(r,2)=x2;
	}else{
	 {OBJ x205=FLD1(x204,1);OBJ x206=FLD1(x204,2);
	  COPY(x205,1);COPY(x206,1);
	  if(EXPRD(x204,1)){
	   DSPRD(x204);
	  }else{
	   DCPRD(x204,1);}
	  if(ISPRM(x206)){
	   if(EXPRD(x2,1)){
	    FREE(FLD(x2,1),1);DSPRDF(x2);
	   }else{
	    DCPRD(x2,1);}
	   PRD(2,2,r);FLD(r,1)=x1;FLD(r,2)=x205;
	  }else{
	   if(EXPRD(x206,1)){
	    DSPRD(x206);
	   }else{
	    DCPRD(x206,1);}
	   FREE(x205,1);
	   PRD(2,2,r);FLD(r,1)=x1;FLD(r,2)=x2;}}}}
      }else{
       HLT("Fct at <unknown> : undefined selection elems\'Fct:fct->seq");}
     }else{
      PRD(2,2,r);FLD(r,1)=x1;FLD(r,2)=x2;}
    }else{
     {OBJ x190=FLD1(x187,1);OBJ x191=FLD1(x187,2);
      COPY(x190,1);COPY(x191,1);
      if(EXPRD(x187,1)){
       DSPRD(x187);
      }else{
       DCPRD(x187,1);}
      if(ISPRM(x191)){
       if(EXPRD(x1,1)){
	FREE(FLD(x1,1),1);DSPRDF(x1);
       }else{
	DCPRD(x1,1);}
       if(ISTGPRM(x189,1)){
	if(ISPRD(x2)&&(ISTGPRD(x2,1))){
	 {OBJ x192=FLD(x2,1);
	  COPY(x192,1);
	  if(ISPRM(x192)){
	   PRD(2,2,r);FLD(r,1)=x190;FLD(r,2)=x2;
	  }else{
	   {OBJ x193=FLD1(x192,1);OBJ x194=FLD1(x192,2);
	    COPY(x193,1);COPY(x194,1);
	    if(EXPRD(x192,1)){
	     DSPRD(x192);
	    }else{
	     DCPRD(x192,1);}
	    if(ISPRM(x194)){
	     if(EXPRD(x2,1)){
	      FREE(FLD(x2,1),1);DSPRDF(x2);
	     }else{
	      DCPRD(x2,1);}
	     PRD(2,2,r);FLD(r,1)=x190;FLD(r,2)=x193;
	    }else{
	     if(EXPRD(x194,1)){
	      DSPRD(x194);
	     }else{
	      DCPRD(x194,1);}
	     FREE(x193,1);
	     PRD(2,2,r);FLD(r,1)=x190;FLD(r,2)=x2;}}}}
	}else{
	 HLT("Fct at <unknown> : undefined selection elems\'Fct:fct->seq");}
       }else{
	PRD(2,2,r);FLD(r,1)=x190;FLD(r,2)=x2;}
      }else{
       if(EXPRD(x191,1)){
	DSPRD(x191);
       }else{
	DCPRD(x191,1);}
       FREE(x190,1);
       if(ISTGPRM(x189,1)){
	if(ISPRD(x2)&&(ISTGPRD(x2,1))){
	 {OBJ x199=FLD(x2,1);
	  COPY(x199,1);
	  if(ISPRM(x199)){
	   PRD(2,2,r);FLD(r,1)=x1;FLD(r,2)=x2;
	  }else{
	   {OBJ x200=FLD1(x199,1);OBJ x201=FLD1(x199,2);
	    COPY(x200,1);COPY(x201,1);
	    if(EXPRD(x199,1)){
	     DSPRD(x199);
	    }else{
	     DCPRD(x199,1);}
	    if(ISPRM(x201)){
	     if(EXPRD(x2,1)){
	      FREE(FLD(x2,1),1);DSPRDF(x2);
	     }else{
	      DCPRD(x2,1);}
	     PRD(2,2,r);FLD(r,1)=x1;FLD(r,2)=x200;
	    }else{
	     if(EXPRD(x201,1)){
	      DSPRD(x201);
	     }else{
	      DCPRD(x201,1);}
	     FREE(x200,1);
	     PRD(2,2,r);FLD(r,1)=x1;FLD(r,2)=x2;}}}}
	}else{
	 HLT("Fct at <unknown> : undefined selection elems\'Fct:fct->seq");}
       }else{
	PRD(2,2,r);FLD(r,1)=x1;FLD(r,2)=x2;}}}}}}
 }else{
  if(ISPRD(x2)&&(ISTGPRD(x2,1))){
   {OBJ x216=FLD(x2,1);
    COPY(x216,1);
    if(ISPRM(x216)){
     PRD(2,2,r);FLD(r,1)=x1;FLD(r,2)=x2;
    }else{
     {OBJ x217=FLD1(x216,1);OBJ x218=FLD1(x216,2);
      COPY(x217,1);COPY(x218,1);
      if(EXPRD(x216,1)){
       DSPRD(x216);
      }else{
       DCPRD(x216,1);}
      if(ISPRM(x218)){
       if(EXPRD(x2,1)){
	FREE(FLD(x2,1),1);DSPRDF(x2);
       }else{
	DCPRD(x2,1);}
       PRD(2,2,r);FLD(r,1)=x1;FLD(r,2)=x217;
      }else{
       if(EXPRD(x218,1)){
	DSPRD(x218);
       }else{
	DCPRD(x218,1);}
       FREE(x217,1);
       PRD(2,2,r);FLD(r,1)=x1;FLD(r,2)=x2;}}}}
  }else{
   PRD(2,2,r);FLD(r,1)=x1;FLD(r,2)=x2;}}
 return r;}

extern OBJ _ASubstitution_33(register OBJ x1,register OBJ x2,register OBJ x3,register OBJ x4) /* unify,2 */
{OBJ r;
 for(;;){
  CPCLS(__AName_6,2);
  COPY(x2,1);
  COPY(x3,1);
  {OBJ x5;OBJ x6;
   x5=(*(OBJ(*)(OBJ,OBJ))METHOD(__AName_6,1))(__AName_6,x2);
   x6=(*(OBJ(*)(OBJ,OBJ))METHOD(__AName_6,1))(__AName_6,x3);
   if(ISTGPRM(x5,1)){
    if(ISTGPRM(x6,1)){
     COPY(x2,1);
     COPY(x3,1);
     CPCLS(__AName_7,2);
     {OBJ x7;OBJ x8;OBJ x9;
      x7=(*(OBJ(*)(OBJ,OBJ))METHOD(__AName_7,1))(__AName_7,x2);
      x8=(*(OBJ(*)(OBJ,OBJ))METHOD(__AName_7,1))(__AName_7,x3);
      ANat_76(x7,x8,x9);
      if(ISTGPRM(x9,1)){
       FREE(x1,1);
       FREE(x2,1);
       FREE(x3,1);
       PRD1(2,r);FLD1(r,1)=x4;FLD1(r,2)=__ASeq_6;
      }else{
       CPPRD(x4,1);
       {OBJ x10;
	x10=_ANatMap_17(x7,x4);
	if(ISTGPRM(x10,1)){
	 FREE(x2,1);
	 CPPRD(x4,1);
	 {OBJ x11;OBJ x15;
	  x11=_ANatMap_14(x4,x7);
	  if(ISTGPRD(x11,1)){
	   {OBJ x12=FLD(x11,1);
	    if(EXPRD(x11,1)){
	     x15=x12;
	     DSPRDF(x11);
	    }else{
	     COPY(x12,1);
	     x15=x12;
	     FRPRD(x11,1);}}
	  }else{
	   HLT("Substitution at <42,18-21> : undefined selection name\'Substitution:val->name");}
	  x2=x15;continue;}
	}else{
	 CPPRD(x4,1);
	 {OBJ x16;
	  x16=_ANatMap_17(x8,x4);
	  if(ISTGPRM(x16,1)){
	   FREE(x3,1);
	   CPPRD(x4,1);
	   {OBJ x17;OBJ x21;
	    x17=_ANatMap_14(x4,x8);
	    if(ISTGPRD(x17,1)){
	     {OBJ x18=FLD(x17,1);
	      if(EXPRD(x17,1)){
	       x21=x18;
	       DSPRDF(x17);
	      }else{
	       COPY(x18,1);
	       x21=x18;
	       FRPRD(x17,1);}}
	    }else{
	     HLT("Substitution at <42,18-21> : undefined selection name\'Substitution:val->name");}
	    x3=x21;continue;}
	  }else{
	   FREE(x1,1);
	   FREE(x2,1);
	   {OBJ x22;
	    PRD(1,1,x22);FLD(x22,1)=x3;
	    PRD1(2,r);FLD1(r,2)=__ASeq_6;
	    FLD1(r,1)=_ANatMap_4(x7,x22,x4);}}}}}}}
    }else{
     CPPRD(x4,1);
     CPCLS(__AName_7,1);
     {OBJ x24;OBJ x25;
      x24=(*(OBJ(*)(OBJ,OBJ))METHOD(__AName_7,1))(__AName_7,x2);
      x25=_ANatMap_17(x24,x4);
      if(ISTGPRM(x25,1)){
       CPPRD(x4,1);
       {OBJ x26;OBJ x30;
	x26=_ANatMap_14(x4,x24);
	if(ISTGPRD(x26,1)){
	 {OBJ x27=FLD(x26,1);
	  if(EXPRD(x26,1)){
	   x30=x27;
	   DSPRDF(x26);
	  }else{
	   COPY(x27,1);
	   x30=x27;
	   FRPRD(x26,1);}}
	}else{
	 HLT("Substitution at <42,18-21> : undefined selection name\'Substitution:val->name");}
	x2=x30;continue;}
      }else{
       FREE(x1,1);
       COPY(x3,1);
       CPPRD(x4,1);
       {OBJ x31;
	x31=_ASubstitution_35(x24,x3,x4);
	if(ISTGPRM(x31,1)){
	 FREE(x3,1);
	 FRPRD(x4,1);
	 r=__ASeq_6;
	}else{
	 {OBJ x32;
	  PRD(1,1,x32);FLD(x32,1)=x3;
	  PRD1(2,r);FLD1(r,2)=__ASeq_6;
	  FLD1(r,1)=_ANatMap_4(x24,x32,x4);}}}}}}
   }else{
    if(ISTGPRM(x6,1)){
     CPPRD(x4,1);
     CPCLS(__AName_7,1);
     {OBJ x34;OBJ x35;
      x34=(*(OBJ(*)(OBJ,OBJ))METHOD(__AName_7,1))(__AName_7,x3);
      x35=_ANatMap_17(x34,x4);
      if(ISTGPRM(x35,1)){
       CPPRD(x4,1);
       {OBJ x36;OBJ x40;
	x36=_ANatMap_14(x4,x34);
	if(ISTGPRD(x36,1)){
	 {OBJ x37=FLD(x36,1);
	  if(EXPRD(x36,1)){
	   x40=x37;
	   DSPRDF(x36);
	  }else{
	   COPY(x37,1);
	   x40=x37;
	   FRPRD(x36,1);}}
	}else{
	 HLT("Substitution at <42,18-21> : undefined selection name\'Substitution:val->name");}
	x3=x40;continue;}
      }else{
       FREE(x1,1);
       COPY(x2,1);
       CPPRD(x4,1);
       {OBJ x41;
	x41=_ASubstitution_35(x34,x2,x4);
	if(ISTGPRM(x41,1)){
	 FREE(x2,1);
	 FRPRD(x4,1);
	 r=__ASeq_6;
	}else{
	 {OBJ x42;
	  PRD(1,1,x42);FLD(x42,1)=x2;
	  PRD1(2,r);FLD1(r,2)=__ASeq_6;
	  FLD1(r,1)=_ANatMap_4(x34,x42,x4);}}}}}
    }else{
     {OBJ x47;OBJ x51;
      if(ISPRD(x2)&&(ISTGPRD(x2,5))){
       x47=__ABUILTIN_5;
      }else{
       x47=__ABUILTIN_3;}
      if(ISTGPRM(x47,1)){
       x51=__ABUILTIN_5;
      }else{
       if(ISPRD(x3)&&(ISTGPRD(x3,5))){
	x51=__ABUILTIN_5;
       }else{
	x51=__ABUILTIN_3;}}
      if(ISTGPRM(x51,1)){
       COPY(x2,1);
       COPY(x3,1);
       {OBJ x52;
	x52=_AImpDecl4SigAna_57(x2,x3);
	if(ISTGPRM(x52,1)){
	 COPY(x1,2);
	 {OBJ x53;OBJ x54;
	  x53=_AAnalyzedGlobSigH_2(x1,x2);
	  x54=_AAnalyzedGlobSigH_2(x1,x3);
	  r=_ASubstitution_34(x1,x53,x54,x4);}
	}else{
	 FREE(x1,1);
	 FREE(x2,1);
	 FREE(x3,1);
	 FRPRD(x4,1);
	 r=__ASeq_6;}}
      }else{
       {OBJ x55;
	x55=_AAnalyzedGlobSigH_5(x1,x2,x3);
	if(ISTGPRM(x55,1)){
	 PRD1(2,r);FLD1(r,1)=x4;FLD1(r,2)=__ASeq_6;
	}else{
	 FRPRD(x4,1);
	 r=__ASeq_6;}}}}}}}
  break;}
 return r;}

extern OBJ _ASubstitution_34(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* unify,3 */
{OBJ r;
 if(ISPRM(x2)){
  FREE(x1,1);
  if(ISPRM(x3)){
   PRD1(2,r);FLD1(r,1)=x4;FLD1(r,2)=__ASeq_6;
  }else{
   HLT("Substitution at <526,5-9> : missing else in unify\'Substitution:globSig->seq**seq**subst->seq");}
 }else{
  {OBJ x70=FLD1(x2,1);OBJ x71=FLD1(x2,2);
   if(EXPRD(x2,1)){
    DSPRDF(x2);
   }else{
    COPY(x70,1);COPY(x71,1);
    FRPRD(x2,1);}
   if(ISPRM(x3)){
    HLT("Substitution at <526,5-9> : missing else in unify\'Substitution:globSig->seq**seq**subst->seq");
   }else{
    {OBJ x72=FLD1(x3,1);OBJ x73=FLD1(x3,2);
     if(EXPRD(x3,1)){
      DSPRDF(x3);
     }else{
      COPY(x72,1);COPY(x73,1);
      FRPRD(x3,1);}
     COPY(x1,1);
     CPCLS(__ASubstitution_47,1);
     {OBJ x76;OBJ x77;
      x76=_ASubstitution_33(x1,x70,x72,x4);
      x77=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__ASubstitution_47,3))(__ASubstitution_47,x1,x71,x73);
      r=_ASeqReduce_4(x77,__ASeq_6,x76);}}}}}
 return r;}

extern OBJ _ASubstitution_35(register OBJ x1,register OBJ x2,register OBJ x3) /* occurs?,2 */
{OBJ r;
 for(;;){
  CPCLS(__AName_6,1);
  COPY(x2,1);
  {OBJ x4;
   x4=(*(OBJ(*)(OBJ,OBJ))METHOD(__AName_6,1))(__AName_6,x2);
   if(ISTGPRM(x4,1)){
    CPCLS(__AName_7,1);
    {OBJ x5;OBJ x6;
     x5=(*(OBJ(*)(OBJ,OBJ))METHOD(__AName_7,1))(__AName_7,x2);
     ANat_76(x1,x5,x6);
     if(ISTGPRM(x6,1)){
      FRPRD(x3,1);
      r=__ABUILTIN_5;
     }else{
      CPPRD(x3,1);
      {OBJ x7;
       x7=_ANatMap_17(x5,x3);
       if(ISTGPRM(x7,1)){
	CPPRD(x3,1);
	{OBJ x8;OBJ x12;
	 x8=_ANatMap_14(x3,x5);
	 if(ISTGPRD(x8,1)){
	  {OBJ x9=FLD(x8,1);
	   if(EXPRD(x8,1)){
	    x12=x9;
	    DSPRDF(x8);
	   }else{
	    COPY(x9,1);
	    x12=x9;
	    FRPRD(x8,1);}}
	 }else{
	  HLT("Substitution at <42,18-21> : undefined selection name\'Substitution:val->name");}
	 x2=x12;continue;}
       }else{
	FRPRD(x3,1);
	r=__ABUILTIN_3;}}}}
   }else{
    if(ISPRD(x2)&&(ISTGPRD(x2,5))){
     {OBJ x23=FLD(x2,3);
      if(EXPRD(x2,1)){
       DSPRDF(x2);
      }else{
       COPY(x23,1);
       FRPRD(x2,1);}
      r=_ASubstitution_36(x1,x23,x3);}
    }else{
     FREE(x2,1);
     FRPRD(x3,1);
     r=__ABUILTIN_3;}}}
  break;}
 return r;}

extern OBJ _ASubstitution_36(register OBJ x1,register OBJ x2,register OBJ x3) /* occurs?,3 */
{OBJ r;
 for(;;){
  if(ISPRM(x2)){
   FRPRD(x3,1);
   r=__ABUILTIN_3;
  }else{
   {OBJ x22=FLD1(x2,1);OBJ x23=FLD1(x2,2);
    if(EXPRD(x2,1)){
     DSPRDF(x2);
    }else{
     COPY(x22,1);COPY(x23,1);
     FRPRD(x2,1);}
    CPPRD(x3,1);
    {OBJ x25;
     x25=_ASubstitution_35(x1,x22,x3);
     if(ISTGPRM(x25,1)){
      FRPRD(x3,1);
      FREE(x23,1);
      r=__ABUILTIN_5;
     }else{
      x2=x23;continue;}}}}
  break;}
 return r;}

extern OBJ _ASubstitution_38(OBJ x1,OBJ x2,OBJ x3) /* apply'38 */
{OBJ r;
 {OBJ x15=FLD1(x3,1);OBJ x16=FLD1(x3,2);FLAG x_x3=EXPRD(x3,1);
  if(x_x3){
  }else{
   COPY(x15,1);}
  {TUP2 x17;OBJ x20;OBJ x19;
   x17=_ASubstitution_6(x1,x2);
   if(ISTGPRM(x16,1)){
    x20=x17.c2;
   }else{
    x20=__ABUILTIN_3;}
   if(x_x3){
    RSOME(x3,x19);FLD1(x19,1)=x17.c1;FLD1(x19,2)=x15;
   }else{
    FRPRD(x3,1);PRD1(2,x19);FLD1(x19,1)=x17.c1;FLD1(x19,2)=x15;}
   PRD1(2,r);FLD1(r,1)=x19;FLD1(r,2)=x20;}}
 return r;}

extern OBJ _ASubstitution_40(OBJ x1,OBJ x2,OBJ x3) /* apply,1'40 */
{OBJ r;
 {OBJ x19=FLD1(x3,1);OBJ x20=FLD1(x3,2);
  if(EXPRD(x3,1)){
   {TUP2 x21;OBJ x24;OBJ x25;OBJ x27;
    x21=_ASubstitution_7(x1,x2);
    if(ISPRD(x21.c1)&&(ISTGPRD(x21.c1,1))){
     x24=__ABUILTIN_5;
    }else{
     x24=__ABUILTIN_3;}
    if(ISTGPRM(x20,1)){
     x25=x21.c2;
    }else{
     x25=__ABUILTIN_3;}
    if(ISTGPRM(x24,1)){
     if(ISPRD(x21.c1)&&(ISTGPRD(x21.c1,1))){
      {OBJ x26=FLD(x21.c1,1);
       if(EXPRD(x21.c1,1)){
	DSPRDF(x21.c1);
       }else{
	COPY(x26,1);
	FRPRD(x21.c1,1);}
       x27=_ASeq_26(x26,x19);}
     }else{
      HLT("Fct at <unknown> : undefined selection elems\'Fct:fct->seq");}
    }else{
     PRD1(2,x27);FLD1(x27,1)=x21.c1;FLD1(x27,2)=x19;}
    RSOME(x3,r);FLD1(r,1)=x27;FLD1(r,2)=x25;}
  }else{
   COPY(x19,1);
   {TUP2 x21;OBJ x24;OBJ x25;OBJ x27;
    x21=_ASubstitution_7(x1,x2);
    if(ISPRD(x21.c1)&&(ISTGPRD(x21.c1,1))){
     x24=__ABUILTIN_5;
    }else{
     x24=__ABUILTIN_3;}
    if(ISTGPRM(x20,1)){
     x25=x21.c2;
    }else{
     x25=__ABUILTIN_3;}
    if(ISTGPRM(x24,1)){
     if(ISPRD(x21.c1)&&(ISTGPRD(x21.c1,1))){
      {OBJ x26=FLD(x21.c1,1);
       if(EXPRD(x21.c1,1)){
	DSPRDF(x21.c1);
       }else{
	COPY(x26,1);
	FRPRD(x21.c1,1);}
       x27=_ASeq_26(x26,x19);}
     }else{
      HLT("Fct at <unknown> : undefined selection elems\'Fct:fct->seq");}
    }else{
     PRD1(2,x27);FLD1(x27,1)=x21.c1;FLD1(x27,2)=x19;}
    FRPRD(x3,1);PRD1(2,r);FLD1(r,1)=x27;FLD1(r,2)=x25;}}}
 return r;}

extern OBJ _ASubstitution_45(OBJ x1,OBJ x2) /* ::'45 */
{OBJ r;
 {OBJ x24=FLD1(x2,1);OBJ x25;OBJ x26;OBJ x27;
  if(EXPRD(x2,1)){
   {OBJ x28;
    PRD1(2,x28);FLD1(x28,1)=x1;FLD1(x28,2)=x24;
    RSOME(x2,r);FLD1(r,1)=x28;}
  }else{
   x25=FLD1(x2,2);x26=FLD1(x2,3);x27=FLD1(x2,4);COPY(x24,1);COPY(x25,1);CPPRD(x26,1);
   {OBJ x28;
    PRD1(2,x28);FLD1(x28,1)=x1;FLD1(x28,2)=x24;
    FRPRD(x2,1);PRD1(4,r);FLD1(r,1)=x28;FLD1(r,2)=x25;FLD1(r,3)=x26;FLD1(r,4)=x27;}}}
 return r;}

extern OBJ _ASubstitution_46(OBJ x1) /* split'46 */
{OBJ r;
 CPCLS(__ABUILTIN_7,1);
 CPCLS(__AFct_5,1);
 CPCLS(__ACompose_4,1);
 r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__ACompose_4,2))(__ACompose_4,__ABUILTIN_7,__AFct_5);
 return r;}

extern OBJ _ASubstitution_47(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* unify,3'47 */
{OBJ r;
 {OBJ x6;
  x6=_ASubstitution_34(x1,x2,x3,x4);
  r=_ASeq_26(x6,x5);}
 return r;}

extern OBJ _ASubstitution_48(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* doUnify,1'48 */
{OBJ r;
 {OBJ x42=FLD1(x5,1);OBJ x43=FLD1(x5,2);FLAG x_x5=EXPRD(x5,1);
  if(x_x5){
  }else{
   COPY(x42,1);}
  {OBJ x74=FLD1(x4,1);OBJ x75=FLD1(x4,2);OBJ x76=FLD1(x4,3);OBJ x77=FLD1(x4,4);
   if(EXPRD(x4,1)){
    DSPRDF(x4);
   }else{
    COPY(x74,1);COPY(x75,1);CPPRD(x76,1);
    FRPRD(x4,1);}
   {OBJ x78;OBJ x79;OBJ x80;OBJ x81;OBJ x82;TUP2 x84;OBJ x86;
    PRD(1,1,x78);FLD(x78,1)=x75;
    PRD(1,1,x79);FLD(x79,1)=x74;
    PRD(1,0,x80);FLD(x80,1)=x79;
    PRD(1,1,x81);FLD(x81,1)=x3;
    x82=_ANatMap_4(x2,x80,x76);
    x84=_ASubstitution_23(x1,x81,x78,x82,x77);
    x86=_ASeq_26(x42,x84.c1);
    if(x_x5){
     RSOME(x5,r);FLD1(r,1)=x86;
    }else{
     FRPRD(x5,1);PRD1(2,r);FLD1(r,1)=x86;}
    ANat_73(x43,x84.c2,FLD1(r,2));}}}
 return r;}

extern OBJ _ASubstitution_49(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* doUnify,1'49 */
{OBJ r;
 {OBJ x42=FLD1(x5,1);OBJ x43=FLD1(x5,2);FLAG x_x5=EXPRD(x5,1);
  if(x_x5){
  }else{
   COPY(x42,1);}
  {OBJ x74=FLD1(x4,1);OBJ x75=FLD1(x4,2);OBJ x76=FLD1(x4,3);OBJ x77=FLD1(x4,4);
   if(EXPRD(x4,1)){
    DSPRDF(x4);
   }else{
    COPY(x74,1);COPY(x75,1);CPPRD(x76,1);
    FRPRD(x4,1);}
   {OBJ x78;OBJ x79;OBJ x80;OBJ x81;OBJ x82;TUP2 x84;OBJ x86;
    PRD(1,1,x78);FLD(x78,1)=x75;
    PRD(1,1,x79);FLD(x79,1)=x74;
    PRD(1,0,x80);FLD(x80,1)=x79;
    PRD(1,1,x81);FLD(x81,1)=x3;
    x82=_ANatMap_4(x2,x80,x76);
    x84=_ASubstitution_23(x1,x81,x78,x82,x77);
    x86=_ASeq_26(x42,x84.c1);
    if(x_x5){
     RSOME(x5,r);FLD1(r,1)=x86;
    }else{
     FRPRD(x5,1);PRD1(2,r);FLD1(r,1)=x86;}
    ANat_73(x43,x84.c2,FLD1(r,2));}}}
 return r;}

extern OBJ _ASubstitution_50(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* doUnify,1'50 */
{OBJ r;
 {OBJ x42=FLD1(x5,1);OBJ x43=FLD1(x5,2);FLAG x_x5=EXPRD(x5,1);
  if(x_x5){
  }else{
   COPY(x42,1);}
  {OBJ x74=FLD1(x4,1);OBJ x75=FLD1(x4,2);OBJ x76=FLD1(x4,3);OBJ x77=FLD1(x4,4);
   if(EXPRD(x4,1)){
    DSPRDF(x4);
   }else{
    COPY(x74,1);COPY(x75,1);CPPRD(x76,1);
    FRPRD(x4,1);}
   {OBJ x78;OBJ x79;OBJ x80;OBJ x81;OBJ x82;TUP2 x84;OBJ x86;
    PRD(1,1,x78);FLD(x78,1)=x75;
    PRD(1,1,x79);FLD(x79,1)=x74;
    PRD(1,0,x80);FLD(x80,1)=x79;
    PRD(1,1,x81);FLD(x81,1)=x3;
    x82=_ANatMap_4(x2,x80,x76);
    x84=_ASubstitution_23(x1,x81,x78,x82,x77);
    x86=_ASeq_26(x42,x84.c1);
    if(x_x5){
     RSOME(x5,r);FLD1(r,1)=x86;
    }else{
     FRPRD(x5,1);PRD1(2,r);FLD1(r,1)=x86;}
    ANat_73(x43,x84.c2,FLD1(r,2));}}}
 return r;}

extern OBJ _ASubstitution_51(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* doUnify,1'51 */
{OBJ r;
 {OBJ x42=FLD1(x5,1);OBJ x43=FLD1(x5,2);FLAG x_x5=EXPRD(x5,1);
  if(x_x5){
  }else{
   COPY(x42,1);}
  {OBJ x74=FLD1(x4,1);OBJ x75=FLD1(x4,2);OBJ x76=FLD1(x4,3);OBJ x77=FLD1(x4,4);
   if(EXPRD(x4,1)){
    DSPRDF(x4);
   }else{
    COPY(x74,1);COPY(x75,1);CPPRD(x76,1);
    FRPRD(x4,1);}
   {OBJ x78;OBJ x79;OBJ x80;OBJ x81;OBJ x82;TUP2 x84;OBJ x86;
    PRD(1,1,x78);FLD(x78,1)=x75;
    PRD(1,1,x79);FLD(x79,1)=x74;
    PRD(1,0,x80);FLD(x80,1)=x79;
    PRD(1,1,x81);FLD(x81,1)=x3;
    x82=_ANatMap_4(x2,x80,x76);
    x84=_ASubstitution_23(x1,x81,x78,x82,x77);
    x86=_ASeq_26(x42,x84.c1);
    if(x_x5){
     RSOME(x5,r);FLD1(r,1)=x86;
    }else{
     FRPRD(x5,1);PRD1(2,r);FLD1(r,1)=x86;}
    ANat_73(x43,x84.c2,FLD1(r,2));}}}
 return r;}

extern OBJ _ASubstitution_52(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6) /* doUnify'52 */
{OBJ r;
 {OBJ x18=FLD1(x6,1);OBJ x19=FLD1(x6,2);
  if(EXPRD(x6,1)){
   {TUP2 x20;OBJ x22;
    x20=_ASubstitution_23(x1,x2,x3,x5,x4);
    ANat_73(x19,x20.c2,x22);
    RSOME(x6,r);FLD1(r,2)=x22;
    FLD1(r,1)=_ASeq_26(x20.c1,x18);}
  }else{
   COPY(x18,1);
   {TUP2 x20;OBJ x22;
    x20=_ASubstitution_23(x1,x2,x3,x5,x4);
    ANat_73(x19,x20.c2,x22);
    FRPRD(x6,1);PRD1(2,r);FLD1(r,2)=x22;
    FLD1(r,1)=_ASeq_26(x20.c1,x18);}}}
 return r;}

extern OBJ _ASubstitution_53(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6) /* unify,1'53 */
{OBJ r;
 {OBJ x18=FLD1(x6,1);OBJ x19=FLD1(x6,2);
  if(EXPRD(x6,1)){
   {TUP2 x20;OBJ x22;
    x20=_ASubstitution_4(x1,x2,x3,x5,x4);
    ANat_73(x19,x20.c2,x22);
    RSOME(x6,r);FLD1(r,2)=x22;
    FLD1(r,1)=_ASeq_26(x20.c1,x18);}
  }else{
   COPY(x18,1);
   {TUP2 x20;OBJ x22;
    x20=_ASubstitution_4(x1,x2,x3,x5,x4);
    ANat_73(x19,x20.c2,x22);
    FRPRD(x6,1);PRD1(2,r);FLD1(r,2)=x22;
    FLD1(r,1)=_ASeq_26(x20.c1,x18);}}}
 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;}

static OBJ _mt_5_0_1(OBJ t,OBJ t1) 
{OBJ r;
 DPCLS(t,r);
 INCCLS(r,0,1);
 FLDCLS(r,1)=t1;
 return r;}

static OBJ _mt_5_0_3(OBJ t,OBJ t1,OBJ t2,OBJ t3) 
{OBJ r;
 DPCLS(t,r);
 INCCLS(r,0,3);
 FLDCLS(r,1)=t1;
 FLDCLS(r,2)=t2;
 FLDCLS(r,3)=t3;
 return r;}

static OBJ _mt_5_1_4(OBJ t,OBJ t1,OBJ t2,OBJ t3,OBJ t4) 
{OBJ r;
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  COPY(FLDCLS(t,1),1);
  DCCLS(t,1);}
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),t1,t2,t3,t4);
 return r;}

static OBJ _mt_5_3_2(OBJ t,OBJ t1,OBJ t2) 
{OBJ r;
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  COPY(FLDCLS(t,1),1);
  COPY(FLDCLS(t,2),1);
  COPY(FLDCLS(t,3),1);
  DCCLS(t,1);}
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),FLDCLS(t,2),FLDCLS(t,3),t1,t2);
 return r;}

static OBJ _mt_6_0_4(OBJ t,OBJ t1,OBJ t2,OBJ t3,OBJ t4) 
{OBJ r;
 DPCLS(t,r);
 INCCLS(r,0,4);
 FLDCLS(r,1)=t1;
 FLDCLS(r,2)=t2;
 FLDCLS(r,3)=t3;
 FLDCLS(r,4)=t4;
 return r;}

static OBJ _mt_6_0_5(OBJ t,OBJ t1,OBJ t2,OBJ t3,OBJ t4,OBJ t5) 
{OBJ r;
 DPCLS(t,r);
 INCCLS(r,0,5);
 FLDCLS(r,1)=t1;
 FLDCLS(r,2)=t2;
 FLDCLS(r,3)=t3;
 FLDCLS(r,4)=t4;
 FLDCLS(r,5)=t5;
 return r;}

static OBJ _mt_6_4_2(OBJ t,OBJ t1,OBJ t2) 
{OBJ r;
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  COPY(FLDCLS(t,1),1);
  COPY(FLDCLS(t,2),1);
  COPY(FLDCLS(t,3),1);
  COPY(FLDCLS(t,4),1);
  DCCLS(t,1);}
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),FLDCLS(t,2),FLDCLS(t,3),FLDCLS(t,4),t1,t2);
 return r;}

static OBJ _mt_6_5_1(OBJ t,OBJ t1) 
{OBJ r;
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  COPY(FLDCLS(t,1),1);
  COPY(FLDCLS(t,2),1);
  COPY(FLDCLS(t,3),1);
  COPY(FLDCLS(t,4),1);
  COPY(FLDCLS(t,5),1);
  DCCLS(t,1);}
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),FLDCLS(t,2),FLDCLS(t,3),FLDCLS(t,4),FLDCLS(t,5),t1);
 return r;}
static OBJ _mt_6_5_1_l(OBJ t,OBJ t1) 
{OBJ r;
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),FLDCLS(t,2),FLDCLS(t,3),FLDCLS(t,4),FLDCLS(t,5),t1);
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  DCCLS(t,1);
  FLDCLS(t,1)=NIL;FLDCLS(t,2)=NIL;FLDCLS(t,3)=NIL;FLDCLS(t,4)=NIL;FLDCLS(t,5)=NIL;
  COPY(r,1);LZYCLS(t,r);}
 return r;}

init_ASubstitution()
{
 static int visited=0; if(visited) return; visited=1;
 init_ADeclEntry();
 init_APartNameEntry();
 init_AImpExpEntry();
 init_APragma();
 init_ANat();
 init_AAttributes();
 init_ASeq();
 init_ADArray();
 init_AFct();
 init_ANatMap();
 init_AAnalyzedGlobSig();
 init_AArray();
 init_AGlobSig();
 init_APartName();
 init_AGlobPragma();
 init_ACompose();
 init_AName();
 init_ADenotation();
 init_AGlobSigImpl();
 init_AQuadruple();
 init_AObjects();
 init_ASeqOfSeq();
 init_AImpl();
 init_ASeqMap();
 init_APatterns();
 init_ASeqReduce();
 init_APair();
 init_ADEBUG();
 init_AMap();
 init_ATree();
 init_AOcError();
 init_AAbsyFun3();
 init_ARep();
 init_AAnalyzedGlobSigH();
 init_AOption();
 init_AGlobSigToText();
 init_AOcPos();
 init_AImpDecl4SigAna();
 init_ACom();
 init_AMySeqFun1();
 init_AVoid();
 init_AName4SigAna();
 init_AChar();
 init_ASetByBST();
 init_AString();
 init_ABSTree();
 init_AOcOptions();
 init_AStream();
 init_AFile();
 init_AInt();
 init_ASet();
 init_ABitset();
 init_ATable();
 init_AUniqueTable();
 CLS(2,_ASubstitution_30,__ASubstitution_30);
 CLS(2,_ASubstitution_29,__ASubstitution_29);
 CLS(2,_ASubstitution_28,__ASubstitution_28);
 CLS(4,_ASubstitution_27,__ASubstitution_27);
 CLS(4,_ASubstitution_26,__ASubstitution_26);
 CLS(3,_ASubstitution_25,__ASubstitution_25);
 CLS(3,_ASubstitution_24,__ASubstitution_24);
 CLS(5,_ASubstitution_23_c,__ASubstitution_23);
 DEN("-ztraceUnify",__ASubstitution_54);
 LCLS(6,_ASubstitution_22,__ASubstitution_22);
 CLS(6,_ASubstitution_53,__ASubstitution_53);
 CLS(6,_ASubstitution_52,__ASubstitution_52);
 CLS(5,_ASubstitution_51,__ASubstitution_51);
 CLS(5,_ASubstitution_19_c,__ASubstitution_19);
 CLS(5,_ASubstitution_50,__ASubstitution_50);
 CLS(5,_ASubstitution_49,__ASubstitution_49);
 CLS(1,_ASubstitution_17,__ASubstitution_17);
 CLS(5,_ASubstitution_48,__ASubstitution_48);
 CLS(1,_ASubstitution_16,__ASubstitution_16);
 CLS(5,_ASubstitution_47,__ASubstitution_47);
 CLS(1,_ASubstitution_15,__ASubstitution_15);
 LCLS(1,_ASubstitution_46,__ASubstitution_46);
 CLS(1,_ASubstitution_14,__ASubstitution_14);
 CLS(2,_ASubstitution_45,__ASubstitution_45);
 CLS(1,_ASubstitution_13,__ASubstitution_13);
 DEN("unification of \'",__ASubstitution_44);
 CLS(1,_ASubstitution_12,__ASubstitution_12);
 DEN("\' and \'",__ASubstitution_43);
 CLS(1,_ASubstitution_11,__ASubstitution_11);
 DEN("\' succeeds",__ASubstitution_42);
 CLS(1,_ASubstitution_10,__ASubstitution_10);
 DEN("\' fails",__ASubstitution_41);
 CLS(1,_ASubstitution_9,__ASubstitution_9);
 CLS(3,_ASubstitution_40,__ASubstitution_40);
 CLS(2,_ASubstitution_7_c,__ASubstitution_7);
 CLS(3,_ASubstitution_38,__ASubstitution_38);
 CLS(2,_ASubstitution_6_c,__ASubstitution_6);
 CLS(5,_ASubstitution_5_c,__ASubstitution_5);
 CLS(5,_ASubstitution_4_c,__ASubstitution_4);
 CLS(3,_ASubstitution_36,__ASubstitution_36);
 CLS(2,_ASubstitution_3,__ASubstitution_3);
 CLS(3,_ASubstitution_35,__ASubstitution_35);
 CLS(4,_ASubstitution_34,__ASubstitution_34);
 CLS(4,_ASubstitution_33,__ASubstitution_33);
 CLS(2,_ASubstitution_32,__ASubstitution_32);
 MTH(1,0,2,_mt_1_0_2);LZYMTH(1,0,2,_mt_1_0_2);
 MTH(5,0,1,_mt_5_0_1);LZYMTH(5,0,1,_mt_5_0_1);
 MTH(5,0,3,_mt_5_0_3);LZYMTH(5,0,3,_mt_5_0_3);
 MTH(5,1,4,_mt_5_1_4);LZYMTH(5,1,4,_mt_5_1_4);
 MTH(5,3,2,_mt_5_3_2);LZYMTH(5,3,2,_mt_5_3_2);
 MTH(6,0,4,_mt_6_0_4);LZYMTH(6,0,4,_mt_6_0_4);
 MTH(6,0,5,_mt_6_0_5);LZYMTH(6,0,5,_mt_6_0_5);
 MTH(6,4,2,_mt_6_4_2);LZYMTH(6,4,2,_mt_6_4_2);
 MTH(6,5,1,_mt_6_5_1);LZYMTH(6,5,1,_mt_6_5_1_l);
 CPPRD(__ANatMap_3,1);
 __ASubstitution_2=__ANatMap_3;
 CPPRD(__ASubstitution_54,1);
 __ASubstitution_21=_ADEBUG_10(__ASubstitution_54);
 PRD1F(2,__ASubstitution_37);FLD1(__ASubstitution_37,1)=__ASeq_6;FLD1(__ASubstitution_37,2)=__ABUILTIN_5;
 PRD1F(2,__ASubstitution_39);FLD1(__ASubstitution_39,1)=__ASeq_6;FLD1(__ASubstitution_39,2)=__ABUILTIN_5;}

