Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Unification (computer science)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Algorithmic process of solving equations}} In [[logic]] and [[computer science]], specifically [[automated reasoning]], '''unification''' is an algorithmic process of [[solving equations]] between symbolic [[expression (mathematics)|expressions]], each of the form ''Left-hand side = Right-hand side''. For example, using ''x'',''y'',''z'' as variables, and taking ''f'' to be an [[uninterpreted function]], the [[Singleton (mathematics)|singleton]] equation set { ''f''(1,''y'') = ''f''(''x'',2) } is a syntactic first-order unification problem that has the substitution { ''x'' [[↦]] 1, ''y'' ↦ 2 } as its only solution. Conventions differ on what values variables may assume and which expressions are considered equivalent. In first-order syntactic unification, variables range over [[first-order terms]] and equivalence is syntactic. This version of unification has a unique "best" answer and is used in [[logic programming]] and programming language [[type system]] implementation, especially in [[Hindley–Milner]] based [[type inference]] algorithms. In higher-order unification, possibly restricted to '''higher-order pattern unification''', terms may include lambda expressions, and equivalence is up to beta-reduction. This version is used in [[proof assistant]]s and higher-order logic programming, for example [[Isabelle (theorem prover)|Isabelle]], [[Twelf]], and [[lambdaProlog]]. Finally, in semantic unification or E-unification, equality is subject to background knowledge and variables range over a variety of domains. This version is used in [[SMT solver]]s, [[term rewriting]] algorithms, and [[cryptographic protocol]] analysis.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)