/* Definition de la relation chercher_ou_inserer/2 */

chercher_ou_inserer(Mot,X,[Mot,X,_,_]).

chercher_ou_inserer(Mot,Valeur,[Mot1,_,Gauche,_]):-
	Mot @< Mot1,
	chercher_ou_inserer(Mot,Valeur,Gauche).

chercher_ou_inserer(Mot,Valeur,[Mot1,_,_,Droit]):-
	Mot @> Mot1,
	chercher_ou_inserer(Mot,Valeur,Droit).

chercher_ou_inserer1(Mot,X,[Mot,X,_,_]).

chercher_ou_inserer1(Mot,Valeur,[Mot1,_,Gauche,_]):-
	\+(var(Mot)),\+(var(Mot1)),
	Mot @< Mot1,
	chercher_ou_inserer1(Mot,Valeur,Gauche).

chercher_ou_inserer1(Mot,Valeur,[Mot1,_,_,Droit]):-
	\+(var(Mot)),	\+(var(Mot1)),
	Mot @> Mot1,
	chercher_ou_inserer1(Mot,Valeur,Droit).

chercher_ou_inserer2(Mot,T,[M,T,_,_]):-
	\+ var(Mot), \+ var(T), M=Mot.

chercher_ou_inserer2(Mot,Valeur,[Mot1,_,Gauche,_]):-
	\+(var(Mot)),\+(var(Mot1)),
	Mot @< Mot1,
	chercher_ou_inserer2(Mot,Valeur,Gauche).

chercher_ou_inserer2(Mot,Valeur,[Mot1,_,_,Droit]):-
	\+(var(Mot)),	\+(var(Mot1)),
	Mot @> Mot1,
	chercher_ou_inserer2(Mot,Valeur,Droit).

chercher_ou_inserer2(M,V,[Mot,Valeur,_,_]):-
	var(M), \+(var(Mot)),	\+(var(Valeur)),
	V = Valeur, M = Mot.
chercher_ou_inserer2(Mot,Valeur,[_,T,Gauche,Droit]):-
	var(Mot),	\+(var(Valeur)), \+(Valeur = T),
	(chercher_ou_inserer2(Mot,Valeur,Droit);chercher_ou_inserer2(Mot,Valeur,Gauche)) .


/* Dictionnaire */

dico([avion,plane,[arbre,tree,_,_],[peuple,people,_,_]]).


/* Essais 
dico(Arbre),	chercher_ou_inserer2(avion,P,Arbre).
dico(Arbre),	chercher_ou_inserer2(A,plane,Arbre).
dico(Arbre),	chercher_ou_inserer2(arbre,Valeur,Arbre).
dico(Arbre),	chercher_ou_inserer2(Valeur,tree,Arbre).
dico(Arbre),	chercher_ou_inserer2(arbuste,bush,Arbre).
dico(Arbre),	chercher_ou_inserer2(racine,root,Arbre).
dico(Arbre),	chercher_ou_inserer2(peuple,P,Arbre).
dico(Arbre),	chercher_ou_inserer2(P,people,Arbre).

true
*/
