یکسان‌سازی (رایانه)

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

این مقاله راجع به موضوع علم کامپیوتر است. برای ایدهٔ جهانی یکسان سازی، globalization را ببینید. برای موارد دیگر،Unification (disambiguation) را ببینید.

در منطق ریاضی، مخصوصا آنچه در علم کامپیوتر به کار می رود، اتحاد رابطه یا جمله نوعی الحاق(در معنی شبکه)، با توجه به یک نوع تخصصی، می باشد. به معنای دیگر، ما یک preorder را روی یک سری از روابط در نظر می گیریم، مثلاً t* ≤ t یعنی اینکه t* از t گرفته شده، به وسیلهٔ جانشانی برخی رابطه (ها) برای یک یا تعداد بیشتری از متغیرهای آزاد در t. اتحاد u از s و t، در صورت وجود، یک رابطه است که برای هردوی t و s یک مثال جانشانی به شمار می رود. اگر هر مثال جانشانی از s و t یک مثال برای u هم باشد، u اتحاد کمین نامیده می شود. برای مثال، در مورد چند جمله ای ها، X 2 و Y 3 می توانند به صورت  Z6 متحد شوند، اگر X را Z3 و Y را Z2 بگیریم.

محتوا

  • تعریف یکسان سازی برای منطق نوع اول
  • یکسان سازی در برنامه نویسی منطقی و تئوری نوع
  • یکسان سازی نوع بالاتر
  • مثال هایی از یکسان سازی
  • هم چنین ببینید
  • یادداشت ها
  • مرجع ها

تعریف یکسان سازی برای منطق نوع اول[ویرایش]

بگذارید p و q جملاتی در منطق نوع اول باشند. UNIFY (p، q) = U where subst (U،p) = subst (U،q) هرجا subst(U،p) باشد یعنی نتیجهٔ به کار گیری U جانشانی روی جملهٔ p. بنابراین U متحد کنندهٔ p و q نامیده می‌شود. یکسان سازی نتیجهٔ به کار گیری از U برای هردوی p و q است. فرض کنید L مجموعه ایی از جملات باشد، برای مثال L = {p،q}. یک متحد کنندهٔ U، عمومی‌ترین متحد کننده نامیده می‌شود اگر برای تمام متحد کننده‌های U' از L، یک جایگزین s وجود داشته باشد که subst(U'،L) = subst(s،subst(U،L)).

یکسان سازی در برنامه نویسی منطقی و تئوری نوع[ویرایش]

مفهوم یکسان سازی یکی از ایده‌های مهم در ورای برنامه نویسی منطقی است، که با زبان Prolog به بهترین نحو شناخته شده است. این برنامه مکانیزم محصور ومنسجم کردن محتویات متغیرها را نشان می دهد و می تواند به صورت نوعی از گمارش "یک زمانی" به نمایش در آید. در پرولوگ، این عملکرد به وسیلهٔ نماد تساوی = مشخص می شود، اما هنگام معرفی متغیرها نیز انجام می شود(قسمت زیر را ببینید). هم چنین در زبان‌های دیگر با استفاده از نماد تساوی =، استفاده می شود، اما هم چنین در رابطه با خیلی از عملگرها از جمله+، -، *، /. الگوریتم‌های استنباط نوع، به طور نمونه بر مبنای یکسان سازی هستند.

در پرولوگ

  1. متغیری که معرفی نشده است-یعنی هیچ متحد کنندهٔ قبلی روی آن کاری انجام نداده است-می تواند با یک جزء، یک جمله، یا متغیر معرفی نشدهٔ دیگر متحد و یکسان شود، بنابراین به شیوهٔ کارآمدی، نام مستعار آن می شود. در بسیاری از گویش‌های نوین پرولوگ ودر منطق نوع اول، یک متغیر نمی‌تواند با جمله ای یکسان شود که آن جمله شامل آن متغیر است؛ این مورد به اصطلاح occurs check می باشد.
  2. دو جزء کوچک تنها زمانی می توانند یکسان شوند که دقیقاً شبیه هم باشند.
  3. به طور مشابه، یک جمله زمانی می تواند با جمله دیگری یکسان شود که top function symbols و arities جملات دقیقاً شبیه هم باشند و همزمان پارامترها بتوانند متحد گردند. توجه داشته باشید که این یک رفتار بازگشتی است(عکس آن نیز درست است).

در تئوری نوع، بیانیه‌های آنالوگ

  1. هر نوع متغیر با هر نوع بیان یکسان می شود، و به عنوان بیان معرفی می شود. یک تئوری خاص ممکن است این قاعده را با occurs check محدود کند.
  2. دو نوع ثابت تنها زمانی یکسان می شوند که نوعشان یکی باشد.
  3. دو نوع ساختار تنها زمانی یکسان می شوند که آن‌ها کاربردهای یک نوع سازنده باشند وتمام انواع مولفه هایشان به طور بازگشتی (متقابلاً) یکسان شود.

توجه داشته باشید که عکس آن نیز درست است. به دلیل این ذات اظهاری، ترتیب در یک توالی از یکسان سازی‌ها (معمولاً) مهم نیست. توجه داشته باشید که در واژگان منطق نوع اول، یک اتم یا یک جزء، گزاره ومفهوم پایه است و به طور مشابه با یک جملهٔ پرولوگ یکسان میشود. دانشمند فرانسوی کامپیوتر، Gérard Huet الگوریتمی برای یکسان سازی در simply typed lambda calculus در ۱۹۷۳ ارائه داد. از آن زمان پیشرفت‌های بسیاری در تئوری یکسان سازی صورت گرفته است.

یکسان سازی نوع بالاتر[ویرایش]

یکی از موثرترین تئوری‌های حذف این است که حذفیات، که مقدار آن‌ها با استفاده از یکسان سازی نوع بالاتر (HOU) تعیین شده است، توسط متغیرهای مستقل نمایش داده می شوند. برای مثال، نمایش معنایی جان شبیه مری است و پیتر هم چنین، این گونه است: (j; m)R(p) و مقدار R (نمایش معنایی حذفیات) توسط معادلهٔ شبیه به (j; m) = R(j) تعیین می شود. روند حل این معادله، یکسان سازی نوع بالاتر نامیده می شود.

مثال هایی از یکسان سازی[ویرایش]

  • در قرارداد پرولوگ، اجزاء کوچک تر با حروف وعبارت‌های lowercase شروع می شوند.
  • A، A : درست است. (tautology)
  A, B, abc  : هردوی توسط جزء abc یکسان شده است.
  • abc، B، A : مانند بالا (یکسان سازی متقارن است).
  • abc، abc : یکسان سازی درست است.
  • abc، xyz : یکسان سازی نادرست است، چون اجزاء متفاوت هستند.
  • f(A)، f(B) : A با یکسان B شده است.
  • f(A)، g(B) : نادرست است، چون آغاز حروف(یا عبارت ها) متفاوت است.
  • f(A)، f(B، C) : یکسان سازی نادرست است، چون عبارت‌ها arity متفاوتی دارند.
  • f(g(A))، f(B) : B را با عبارت g(A) یکسان می کند.
  • f(g(A)، A)، f(B، xyz) : A را با جزء xyz و Bبا عبارت g(xyz) یکسان می کند.
  • A، f(A) : یکسان سازی نامتناهی، A با f(f(f(f(...)))) یکسان می شود. در منطق مناسب نوع اول و بسیاری از گویش‌های مدرن پرولوگ، این مورد ممنوع است(و به وسیلهٔ occurs check اجرا می شود).
  • A، abc، xyz، X : یکسان سازی نادرست است؛ به گونهٔ موثر: abc = xyz .

مرجع‌ها

  • F. Baader and T. Nipkow، Term Rewriting and All That. Cambridge University Press، ۱۹۹۸.
  • F. Baader and W. Snyder، Unification Theory. In J.A. Robinson and A. Voronkov، editors، Handbook of Automated Reasoning، volume I، pages ۴۴۷–۵۳۳. Elsevier Science Publishers، ۲۰۰۱.
  • Joseph Goguen، What is Unification?.
  • Alex Sakharov، "Unification" from MathWorld.

Retrieved from "http://en.wikipedia.org/wiki/Unification" Categories: Automated theorem proving | Logic programming