larsmans がすでに述べたように、これは計算意味論 (計算言語学のサブフィールド) と呼ばれる、かなりオープンな研究分野です。
comp-sem の世界に入る前に、理解しておく必要がある重要なことが 1 つあります。そこでは、ほとんどの人が派手な高水準言語を使用しています。高レベルとは、C を意味するのではなく、LISP、Prolog、または最近では Haskell のようなものです。計算セマンティクスはロジックに非常に近いため、このトピックを研究している人々は、関数型言語や論理型言語をより快適に使用できます。つまり、実際に一日中使用する言語に近いのです。
また、述語論理の基本的なコースを最初に確認することも非常に役立ちます。これは、基礎となる文献では通常、当然のことと考えられているためです。ロジックと言語の関係についての良い入門書は、LTF Gamut — ロジック、言語、および意味、ボリューム Iです。これはセマンティクスの言語的側面を扱っており、実装には何の役にも立ちませんが、次の文献を理解するのに役立ちます。とはいえ、少なくとも述語論理を説明している本はいくつかありますが、私に尋ねれば、本当に興味がある人なら誰でも正式なシステムとしての言語の表現では、述語と、おそらく直観主義的および内包的論理のコースを受講する必要があります。
少し覗いてみると、あなたの例は現在のcomp-semアプローチでは扱いがかなり難しいです。不可能ではありませんが、すでにかなりの難易度です。それを困難にしているのは、一部の時制です (時制とアスペクトを扱うと、通常、偶数のセマンティクスになります) だけでなく、この例で機能する方法でギブとアベイルの関係を定義する必要があります。(より簡単な例としては、「私は
犬を飼っていましたが、犬を飼っていなかったダニーにあげました。その理由がわかりますか?」
「私は犬を飼っています」を訳してみましょう。
∃x[dog(x) ∧ have(I,x)]
(オブジェクト x があり、x は犬であり、所有関係は "I" と x の間に成立します。)
これらの文は、「I」定数がすでに定義されている可能性があるモデルに対して評価されます。複数の文を順番に評価することで、会話を追跡できるようにそのモデルを変更できます。
始めるためのいくつかの提案をしましょう。古典的な comp-sem システムは
SHRDLUで、特定の色の幾何学的図形を仮想環境に配置します。リンク先のページにオンラインで Windows 互換のデモがあるので、いろいろ試してみてください。
このトピックに関する最も優れた最新の本は、おそらくBlackburn and Bos (2005)です。これは Prolog で書かれていますが、Prolog を学ぶためのページにリンクされているソースがあります (今すぐ!)
Van Eijck と Ungerは、Haskell の計算セマンティクスに関する優れたコースを提供しています。これはもう少し新しいものですが、生の計算セマンティクスに関しては、Blackburn と Bos ほど教育的ではないと思います。