showTree([Wurzel|Bs],Einrueckung) :-
    tab(Einrueckung), writeq(Wurzel),
    (Bs = [[Blatt]] -> tab(1), writeq(Blatt)
    ; Einrueckung2 is Einrueckung + 3,
        showTrees(Bs,Einrueckung2)).
showTree([],Einrueckung) :-
    tab(Einrueckung), writeq([]).

showTrees([Baum|Baeume],Einrueckung) :-
    nl,showTree(Baum,Einrueckung),
    showTrees(Baeume,Einrueckung).
showTrees([],_).
writeTrLam([Wurzel|Bs],Einrueckung) :-
    tab(Einrueckung),writeq(Wurzel),
    (sem([Wurzel|Bs],LamTerm) % 2.sem.Lesarten?
     -> (debugging(typisieren)
        -> type([],LamTerm,LamTermGetypt,Typ),
            Term = (LamTermGetypt:Typ)
        ; Term=LamTerm),
        nl,tab(Einrueckung),write('+ '),writen(Term)
    ; true), % Wörter ohne Bedeutung
    (Bs = [[Blatt]] 
    -> tab(1), writeq(Blatt)
    ; Einrueckung2 is Einrueckung + 3,
        writeTrsLam(Bs,Einrueckung2)
    ).

writeTrLam([],Einrueckung) :-
    tab(Einrueckung), writeq([]).
    
writeTrsLam([Baum|Baeume],Einrueckung) :-
    nl,writeTrLam(Baum,Einrueckung),
    writeTrsLam(Baeume,Einrueckung).
writeTrsLam([],_).

writen(Term) :- \+ \+((numbervars(Term,23,_),
           write_term(Term,[numbervars(true)]))).
