Pilha Binária AVL (teste de Balanace)

Eu estou tentando alcançar um teste se uma árvore é uma árvore AVL ou não usando o prólogo.

Eu fiz um teste de altura que funciona para os testes que fiz até agora, mas meu teste de equilíbrio ainda não está indo forte.

Este é o meu trabalho até agora:

avl('Branch'(LeftBranch,RightBranch)) :-
  height(LeftBranch,H1),
  height(RightBranch,H2),
  abs(H1-H2) =< 1.

Eu baseei esse código em um código mais antigo de stackoverflow. Mas isso não funciona em todos os casos. Incluirá meu código de altura. Em algum lugar eu fiz um erro e tenho certeza de onde encontrá-lo.

height(leaf(_),1).
height('Branch'(LeftBranch,RightBranch,H) :-
  height(LeftBranch,H1),
  height(RightBranch,H2),
  H is max(H1,H2)+1.

Por que meu código não avalia algumas árvores?

Prolog - árvore equilibrada ou não

Este foi o tópico em que eu baseei meu teste de árvore de balanace, e eu tentei com a árvore que ele postou nos comentários, mas eu falhei, alguma idéia?

questionAnswers(2)

yourAnswerToTheQuestion