Is this code correct in the GMPL implementation ?

Domingo Alvarez Duarte <[email protected]> Sat, 25 Jul 2020 13:35:23 +0200
Newsgroups gmane.comp.gnu.glpk
Message-ID <[email protected]>
Hello !

Trying to change the actual TUPLE structure by:

====

#ifndef TUPLE_SIZE_T
#define TUPLE_SIZE_T int
#endif
struct TUPLE
{
       TUPLE_SIZE_T size;
       TUPLE_SIZE_T refcount;
       SYMBOL sym[1];
       /* symbol, which the component refers to; cannot be NULL */
};

====

I found the code bellow (in src/mpl/mpl3.c) that I'm not sure I 
understand it,

it seems that it's only testing the last tuple against 
"code->arg.arg.y", shouldn't it be testing inside the loop for every tuple ?

I would appreciate someone could help understand this code !

====

int is_member(MPL *mpl, CODE *code, const TUPLE *tuple)
{     int value;
...

          case O_CROSS:
             {  int j;
                value = is_member(mpl, code->arg.arg.x, tuple);
                if (value)
                {  for (j = 1; j <= code->arg.arg.x->dim; j++)
                   {  xassert(tuple != NULL);
                      tuple = tuple->next;
                   }
                   value = is_member(mpl, code->arg.arg.y, tuple);
                }
             }
             break;

====

Cheers !