Prolog List Plateau

@Just foi apresentado ao prólogo, tentando fazer alguns exercícios simples, mas eu fiquei meio preso nesse. Estou tentando escrever um programa que produz todas as sublistas da lista de entrada, onde cada sublist tem comprimento> 1 e não pode ser estendido para uma sublist maior. Também exibirá a posição inicial na lista da sublist. Portanto, uma saída de amostra seria

| ?- plateau([a,a,b,2,2,2,a+1,a+1,s(1,2)], I, Len).
    I = 1,
    Len = 2 ? ;
    I = 4,
    Len = 3 ? ;
    I = 7,
    Len = 2 ? ;
    no

Ainda estou bastante confuso com a coisa declarativa e com muitos problemas para sair do modo imperativo. Estou pensando que quero que meu programa faça algo como

program([H|T],I,L):-
    T = [H1|T1] %split the tail
    ([H] = [H1] -> Count is Count+1, program(T,I,Count) 
     %if First element = second element, recurse with new values
    ; length(T,Spot), 
      %get the spot where you are in the list, so we know where sublist starts
      program(T,Spot,L) %run again, from tail, since sublist didn't have another  element?
program([],I,L). %terminate when entire list has been run through?

Então isso não está funcionando, pelo que posso dizer por algumas razões. Eu não redefino 'count', então está somando os valores de todas as sublistas juntas? Existe alguma maneira de contornar isso? Meu caso base também pode não ser o que eu quero - não tenho certeza do que deveria ser realmente? Provavelmente estou perdendo outras coisas também ... qualquer ajuda é muito apreciada! :) Obrigado

questionAnswers(10)

yourAnswerToTheQuestion