2

先日、私の素晴らしい車が私を悩ませたため、プログラミング言語のクラスに参加できませんでした。私は宿題に取り組んでいます。この恐ろしく見える質問にたどり着くまで、私はかなりうまくやっています:

"5. Solve the term constraint f(X; Y; g(a)) = f(g(Y ); Z; X). Show steps."

今、私はスライドを読みましたが、彼が何を言おうとしているのか理解できません (彼は中国出身です)。

親切な方で、この問題に似た問題を解決する方法を教えていただけないでしょうか。あたかも私が 5 歳であるかのように説明してください。

御時間ありがとうございます。

編集:私は講義ノートの間違ったセクションにいました、私はこれを見つけました:

  • 用語の制約は次のように処理されます

ケース 1 : c1=c2 の形式で、c1 と c2 は定数です – c1 が c2 と同一である場合、それを破棄します。それ以外の場合は解決策を報告しない

ケース 2 : x=t1 の形式です (x は変数で、t1 は項です) – t1 を x に代入し、この制約を破棄し、allterm 制約のすべての x を t1 で置き換えます ift1 に x が含まれていない場合。それ以外の場合は報告しない

ケース 3 : f(s1,…,sn) = g(t1,…,tn)(f,g: 関数記号、si および ti:項) の形式 – fsidentical が g と同一の場合、termconstraint 制約を制約で置き換えます。制約

s1=t1 および s2=t2,……,sn=tn; それ以外の場合: 解決策なし

– 制約がなくなるか、解決策がないというレポートが存在しなくなるまで、このプロセスを繰り返します。

私にはまだはっきりとはわかりませんが、はっきりするまで読み続けます。私が解決策だと思うものを投稿します。おそらく、私が正しいかどうか教えてください。

4

1 に答える 1

1
f(X; Y; g(a)) = f(g(Y ); Z; X).

f/3最初のステップは=に気づくことですf/3。これがケース 3 です。ケース 3 は、X=g(Y)、Y=Z、および g(a) = X の場合に成功します。

それならX=g(Y)自明に真実かもしれません。両側で X を g(Y) に置き換えましょう。

f(g(Y); Y; g(a)) = f(g(Y); Z; g(y))

では、Y を Z で統一しましょう。

f(g(Y); Y; g(a)) = f(g(Y); Y; g(Y))

先に進み、次は ですg(a) = g(Y)。これでY=aの統一に成功。結果の用語は次のとおりです。

f(g(a); a; g(a)) = f(g(a); a; g(a))

これは明らかです。X = g(a)、Y = Z = a.

これが正しいかどうかはわかりませんが、私の推測です。

于 2013-05-06T19:17:52.510 に答える