let est_rajoutable ~piece ~i ~j ~pl =
        myprint myverb ("Appel a 'est_rajoutable'. Indices : i="^(string_of_int i)^" et j="^(string_of_int j)^" !");
        
        (** Ici les 4 couleurs de '~pi' sont donc toutes des couleurs admissibles pour le plateau courant. Et l'indice i (resp. j) est entre 0 et m-1 (resp. n-1). *)

        let (c, n, m, p) = (pl.c, pl.n, pl.m, pl.p) in
        let result = ref true in
        match p.(i).(j) with
        | Some _        ->
                
                (** On essaie ici de rajouter une piece '~pi' sur une case déjà remplie de notre tableau, *)

                (* raise Case_deja_occupee;*)
                print_string "\tException non lancée : Case_deja_occupee";
                myprint myverb "\tResultat renvoyé : false";
                false;
        | None                ->
                
                (** là on tente de mettre une pièce sur une case libre. Il faut vérifier que cette pièce ne contredit pas les 4 (ou moins) relations de satisfaisabilité horizontales (avec la pièce à gauche et à droite), et verticales (avec la pièce en bas et en haut. *)

                
                
                (** Il y a plusieurs cas où on a différents nombres de compatibilité à vérifier. *)

                if (i > 0) then 
                     (** on peut comparer à gauche, *)

                        result := !result && (compatible_h_option p.(i-1).(j) (Some piece));
                if (j > 0) then 
                     (** on peut comparer en bas, *)

                        result := !result && (compatible_v_option p.(i).(j-1) (Some piece));
                if (i < m-1) then 
                     (** on peut comparer à droite, *)

                        result := !result && (compatible_h_option (Some piece) p.(i+1).(j));
                if (j < n-1) then 
                     (** on peut comparer en haut, *)

                        result := !result && (compatible_v_option (Some piece) p.(i).(j+1));
                
                
                (** On fait le "ET" des quatres résultats de ces tests, avec un "true" initialement, cela permet de dire que le résultat final est vrai ssi chaque test est vrai. *)

                myprint myverb ("\tResultat renvoyé : "^(string_of_bool !result));
                !result