Q8: égales

Profil

égales: liste x liste -> booleen

Exemples

égales( (a b c), (a b c) ) = vrai
égales( (a b c), (a c b) ) = faux
égales( (a b c), (a b c) ) 
 =  égales( (b c), (b c) ) 
 =  égales( ( c ), ( c ) ) 
 =  égales( (), () ) 
 =  vrai
égales( (a b c), (a c b) ) 
 =  égales( (b c), (c b) ) 
 =  faux

Axiomes

égales(liste_vide(), liste_vide()) = vrai
égales(cons(x1, L1), liste_vide()) = faux
égales(liste_vide(), cons(x2, L2)) = faux
égales(cons(x1, L1), cons(x2, L2)) = (x1 = x2) et égales(L1, L2)

Traduction en C

unsigned int egale(liste L1, liste L2)
{
  if (est_vide(L1))
  {
    if (est_vide(L1))
    {
      return true;
    }
    else
    {
      return false;
    }
  }
  else
  {
    if (est_vide(L2))
    {
      return false;
    }
    else
    {
      return (prem(L1) == prem(L2)) && (egale(reste(L1), reste(L2)));
    }
  }
}