<div class="notebook"> <div class="nb-cell markdown" name="md1"> ## 04.12. endliche Transduktoren Gegeben sei der folgende endliche Transduktor: https://prolog.xciv.de/wp-content/uploads/2020/11/Automat-04.12-768x361.png </div> <div class="nb-cell html" name="htm1"> <img src="https://prolog.xciv.de/wp-content/uploads/2020/11/Automat-04.12-768x361.png" alt=""> </div> <div class="nb-cell markdown" name="md2"> Dieser Transduktor akzeptiert Paare von Sequenzen über dem Alphabet {a,b}, wobei die zweite Sequenz aus der ersten hervorgeht, wenn man jedes zweite a durch ein b ersetzt. Repräsentiere diesen Automaten in Prolog und schreibe ein Prädikat trans_accept/2, das als Argumente Listenpaare nimmt und gelingt, wenn das Listenpaar von dem Transduktor akzeptiert wird. Erstelle hierzu ein eigenes Prolog Programm und teste dieses eigenständig. </div> <div class="nb-cell program" data-background="true" name="p2"> % trans_accept/2 % trans_accept: akzeptiert zwei valide Listenpaare trans_accept(L1,L2) :- </div> <div class="nb-cell query" name="q1"> trans_accept([a,b,a],[a,b,b]). </div> <div class="nb-cell markdown" name="md3"> true. </div> <div class="nb-cell query" name="q2"> trans_accept([a,a,a,a],X). </div> <div class="nb-cell markdown" name="md6"> X=[a,b,a,b]. </div> <div class="nb-cell query" name="q3"> trans_accept(X,[b,b]). </div> <div class="nb-cell markdown" name="md5"> X=[b,b]. </div> <div class="nb-cell query" name="q4"> trans_accept(X,[b,a,b]). </div> <div class="nb-cell markdown" name="md7"> X=[b,a,b],X=[b,a,a]. </div> <div class="nb-cell query" name="q5"> trans_accept([a,c],X). </div> <div class="nb-cell markdown" name="md4"> false. </div> </div>