und Entscheidbar, da folgende Prozedur existiert:
(define endlicheMenge (lambda (wort) (let ((zeichenListe (string->list wort))) (letrec ((alleZeichenImAlphabet? (lambda (alleZeichen) (cond [ (or (char=? #\a (car alleZeichen)) (char=? #\b (car alleZeichen))) (cond [(not (null? (cdr alleZeichen))) (alleZeichenImAlphabet?(cdr alleZeichen))] [else #t] ) ] [else #f] ) ) )) (cond [ (= (string-length wort) 3) (alleZeichenImAlphabet? zeichenListe) ] [else #f] ) ) ) ) )
(endlicheMenge "aba")
ausführen
(define abzaehlbarUnendlicheMenge (lambda (wort) (let ((zeichenListe (string->list wort))) (letrec ((alleZeichenImAlphabet? (lambda (alleZeichen) (cond [ (or (char=? #\a (car alleZeichen)) (char=? #\b (car alleZeichen))) (cond [(not (null? (cdr alleZeichen))) (alleZeichenImAlphabet?(cdr alleZeichen))] [else #t] ) ] [else #f] ) ) )) (cond [ (and (not (null? zeichenListe)) (char=? #\a (car zeichenListe))) (cond [(null? (cdr zeichenListe)) #t] [else (alleZeichenImAlphabet? (cdr zeichenListe))] ) ] [else #f] ) ) ) ) )
(abzaehlbarUnendlicheMenge "aaaaaba")