L'application de transformation de grammaires attribuées (voir section «Transformations de grammaires en Prolog»*) et le système (voir section «Un système ouvert»*) sont des exemples d'applications qui manipulent des formules. Dans la première, les formules sont des grammaires attribuées, dont la forme concrète est lue, dont une forme interne est produite puis transformée en la forme interne d'une autre grammaire dont la forme concrète est finalement affichée. Dans le compilateur de la seconde, les formules sont des programmes Prolog et C, et dans une moindre mesure des script Unix. Les programmes Prolog sont lus, plusieurs formes internes successives sont produites puis consommées par différents modules de vérification et de normalisation. La forme interne d'un programme impératif est enfin produite, puis traduite en C. Tout autre langage de programmation impératif aurait convenu. Un autre programme Prolog enchaîne les opérations de compilation de modules Prolog élémentaires et de module C résultants, et l'édition de lien en produisant des scripts Unix. La compilation des modules C résultants occupe environ les 2/3 du temps de compilation.
L'application de transformation de grammaires attribuées est une relativement petite application de 4000 lignes de Prolog. Elle ne comporte pas de composant écrit dans un autre langage de programmation.
Le système est une application beaucoup plus complexe. Il est fait de 8000 lignes de Prolog pour le compilateur, 5000 lignes de Prolog pour les bibliothèques, 16000 lignes de C pour l'exécutif (run-time system), et 4000 lignes de C/Motif pour l'interface graphique du débogueur symbolique. Il faut remarquer que le système étant auto-compilé le compilateur et les bibliothèques sont écrits dans des versions différentes de . Dans un état donné du développement du système , les bibliothèques sont compilées par la version courante du compilateur de et reliées avec la même version de l'exécutif, et le compilateur l'est par la version précédente du compilateur et de l'exécutif. L'objectif du bootstrapping et de faire se superposer la version courante et la version précédente, mais ce n'est qu'une situation idéale atteinte en fin de mise au point de chaque nouvelle version. Il faut donc maintenir la distinction entre les deux sortes de sources Prolog pendant le développement, c'est-à-dire tout le temps.