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

showTrees([Baum|Baeume],Einrueckung) :-
    nl,showTree(Baum,Einrueckung),
    showTrees(Baeume,Einrueckung).
showTrees([],_).
writeTr([Wurzel,B|Bs],Einrueckung) :-
    !,tab(Einrueckung),writeq(Wurzel),
    (B = [_|_] ->    % B ist ein Baum
        Einrueckung2 is Einrueckung + 3,
        writeTrs([B|Bs],Einrueckung2)
    ; writeTr([B],_)). % B ist ein Blatt
writeTr([Wurzel],_Einrueckung) :-
    !,tab(1), writeq(Wurzel).
writeTr(Wurzel,Einrueckung) :-
    tab(Einrueckung), writeq(Wurzel).
    
writeTrs([Baum|Baeume],Einrueckung) :-
    nl,writeTr(Baum,Einrueckung),
    writeTrs(Baeume,Einrueckung).
writeTrs([],_).
writeTrLam(Baum,Einrueckung) :-
    Baum = [Wurzel,B|Bs],
    !,tab(Einrueckung),writeq(Wurzel),
      (sem(Baum,LamTerm)
      -> nl,tab(Einrueckung),
          write('+ '),writen(LamTerm)
      ; true), % für Wörter ohne Bedeutung
    (B = [_|_] ->    % B ist ein Baum
        Einrueckung2 is Einrueckung + 3,
        writeTrsLam([B|Bs],Einrueckung2)
    ; writeTrLam([B],_)). % B ist ein Blatt
writeTrLam([Wurzel],_Einrueckung) :-
    !,tab(1), writeq(Wurzel).
writeTrLam(Wurzel,Einrueckung) :-
    tab(Einrueckung), writeq(Wurzel).
    
writeTrsLam([Baum|Baeume],Einrueckung) :-
    nl,writeTrLam(Baum,Einrueckung),
    writeTrsLam(Baeume,Einrueckung).
writeTrsLam([],_).

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