代数論理関数(ALF)プログラミング言語は、関数型プログラミングと論理型プログラミングの手法を組み合わせたものです。その基盤となるのは、等号を含むホーン節論理であり、論理型プログラミングでは述語とホーン節、関数型プログラミングでは関数と方程式で構成されます。
ALFは、両方のプログラミングパラダイムを真に統合するように設計されており、そのため、任意の関数式を目標リテラルで使用でき、任意の述語を等式の条件に使用できます。ALFの操作的意味論は、リテラルを解決するための解決規則と、関数式を評価するためのナローイングに基づいています。可能なナローイングステップの数を減らすために、最も左から最も内側の基本ナローイング戦略が使用され、これは効率的に実装できるとされています。ナローイングステップが適用される前に書き換えによって項が単純化され、両辺の最上位に異なるコンストラクタがある場合は等式が拒否されます。書き換えと拒否により、検索ツリーが大幅に削減され、Prologの解決戦略よりも効率的な操作的意味論が生成されると考えられています。Prologと同様に、ALFは導出ツリーの深さ優先探索に対応するバックトラッキング戦略を使用します。
ALFシステムは、解決、絞り込み、書き換え、および拒否を効率的に組み合わせた実装として設計されました。ALFプログラムは、ウォーレン抽象マシン(WAM)をベースに、絞り込みと書き換えを実装するためのいくつかの拡張機能を加えた抽象マシンの命令にコンパイルされます。現在のALF実装では、この抽象マシンのプログラムはC言語で書かれたエミュレータによって実行されます。
カーネギーメロン大学の人工知能リポジトリ[ 1 ]には、 ALFがAIプログラミング言語として、より具体的には関数型/論理プログラミング言語Prologの実装として含まれています。[ 2 ]言語とシステムの使用方法を説明するユーザーマニュアル[ 3 ]が利用可能です。ALFシステム[ 4 ]はUnix上で動作し、「評価、研究、教育目的」での使用権を付与する独自のソフトウェアライセンスの下で利用可能ですが、商用または軍事目的での使用は許可されていません。[ 5 ]