W tej sekcji omówimy naturę języków reprezentacji. Języki programowania (takie jak C++, Java czy Python) to największa klasa powszechnie używanych języków formalnych. Struktury danych w programach mogą służyć do reprezentowania faktów; na przykład program może użyć tablicy 4 x 4 do reprezentowania zawartości świata wumpus. Tak więc instrukcja języka programowania World[2,2] ← Pit to dość naturalny sposób na stwierdzenie, że tam to zagłębienie w kwadracie [2,2]. Zestawienie ciągu takich stwierdzeń wystarczy do przeprowadzenia symulacji świata wumpusów. To, czego brakuje w językach programowania, to ogólny mechanizm wyprowadzania faktów z innych faktów; każda aktualizacja struktury danych jest wykonywana przez procedurę specyficzną dla domeny, której szczegóły są wyprowadzane przez programistę z jego własnej wiedzy o domenie. Takiemu podejściu proceduralnemu można przeciwstawić deklaratywną naturę logiki zdań, w której wiedza i wnioskowanie są oddzielone, a wnioskowanie jest całkowicie niezależne od dziedziny. Bazy danych SQL wykorzystują mieszankę wiedzy deklaratywnej i proceduralnej.
Drugą wadą struktur danych w programach (i bazach danych) jest brak łatwego sposobu powiedzenia, na przykład „W [2,2] lub [3,1] jest dziura” lub „Jeśli wumpus jest w [1,1] to nie ma go w [2,2].” Programy mogą przechowywać pojedynczą wartość dla każdej zmiennej, a niektóre systemy pozwalają, aby wartość była „nieznana”, ale brakuje im wyrazistości wymaganej do bezpośredniego przetwarzania częściowych informacji.
Logika zdań jest językiem deklaratywnym, ponieważ jej semantyka opiera się na relacji prawdziwości między zdaniami a możliwymi światami. Ma również wystarczającą siłę wyrazu, aby radzić sobie z częściowymi informacjami, używając alternatywy i negacji. Logika zdań ma trzecią właściwość pożądaną w językach reprezentacji, a mianowicie kompozycyjność. W języku kompozycyjnym znaczenie zdania jest funkcją znaczenia jego części. Na przykład znaczenie „S1,4 Λ S1,2 ” jest powiązane ze znaczeniami „S1,4” i „S1,2 ”. Byłoby bardzo dziwne, gdyby „S1,4 ” oznaczało, że w kwadracie jest smród [1,4] a „S1,2 ” oznacza, że smród w kwadracie [1,2], ale „S1,4 Λ S1,2 ” oznaczało, że Francja i Polska zremisowały 1:1 w zeszłotygodniowym meczu eliminacyjnym hokeja na lodzie.
Jednak logice zdań, jako reprezentacji na czynniki, brakuje wyrazistej mocy, by zwięźle opisać środowisko z wieloma obiektami. Na przykład byliśmy zmuszeni napisać osobną zasadę dotyczącą bryz i dołów dla każdego kwadratu, na przykład
W języku angielskim wydaje się dość łatwe, aby raz na zawsze powiedzieć: „Kwadraty przylegające do dołów są przewiewne”. Składnia i semantyka języka angielskiego umożliwiają zwięzłe opisanie środowiska: język angielski, podobnie jak logika pierwszego rzędu, jest reprezentacją strukturalną.