K-Prolog Compiler Version 6.0 
プログラムのファイルに書くものは述語の定義と種々の宣言からなります。 もちろんコメントは任意のところに書けます。
節.
節.
・
・
・
節は、頭部と本体部からなり、
頭部 :- 本体部.
または、
頭部.
の形です。
[例]述語のアリティ reverse(X,Y) :- reverse(X,[],Y). reverse([],N,N). reverse([E|L],M,N) :- reverse(L,[E|M],N). これは、reverse/2 と reverse/3の2つの述語の定義です。名前が同じでも、アリティが違えば異なる述語として扱います。 述語どうしの相対的な位置関係は任意ですが、 述語の中の節の順序はアルゴリズムを記述する上で重要です。 なお、1つの述語の中では節の順序は意味がありますが、節の間に他の述語の 節や宣言が入っていてもかまいません。
[例] 述語の混在 capital(usa,washington). population(usa,22000). capital(japan,tokyo). population(japan,11000). capital(china,peking). population(china,118000).本体部は、ゴールを "," などの制御子 で区切って並べたものです(ゴール列)。 ","でゴールを区切って並べると、ゴールを述語として順に実行することを意味します (関数や手続きを呼び出すことに相当します)。
[例] ","で区切られた本体部を持つ述語 subset([X|Y],Z) :- member(X,Y),!,subset(Y,Z). subset([],Z).member(X,Y)と ! や subset(Y,Z)はそれぞれゴールです。
本体部のゴールには、述語の呼び出しの形を書きます。
呼び出される述語はそのゴールが実行されるまでに定義されていなければなりません。
上例の2番目の節には本体部がありません。この形の節を単位節と呼ぶことがあ
ります。単位節は、true のみを本体部とする節と意味は同じです。true は、
組込み述語で何もしない述語です。
[例] subset([],Z). と subset([],Z) :- true. は意味は同じ。
:- 命令.宣言には、ファイルの中での位置によって意味が異なるものと、 任意の位置に置けるものとがあります。
宣言として使用される命令の代表的なものは、
モジュール宣言は、プログラムの中の述語のスコープ規則に 関する指定であり、次のモジュール宣言またはファイルの終わりまでに 定義される述語がそのモジュールに所属することを宣言しますから、 プログラムの中での位置が重要です。 一つのモジュールには普通、まとまった機能の集まりとなる述語群を記述します。
公開宣言は、指定の述語がモジュールの外から実行できるように するための宣言で、モジュールの中であれば指定の述語の前後どこにでも置けます。 通常は、見やすいようにモジュール宣言の直後か、述語の定義の直前に書きます。
動的宣言はコンパイル時に有効な宣言で、コンパイルされる述 語の中で呼び出されるインタプリトされる述語をコンパイラに通知します。 動的宣言された述語は、コンパイルされるモジュール内に 配置できますが、call/1によってインタプリタを通して実行されます。
コンパイルオプションは コンパイル時に有効で、compile組込み述語と同じオプションリストを指定 できます。
演算子宣言は、指定の記号の演算子としての働きを定義しますから、 その記号が使用されるよりも前に書かれなければなりません。 モジュール宣言の直後に書くのがよいでしょう。
ファイル組込み宣言は、指定のファイルを読み込むことを指示しています。 これもファイルの先頭に書く方が望ましいでしょう。