unifjcation
play

Unifjcation Dr. Mattox Beckman University of Illinois at - PowerPoint PPT Presentation

Introduction The Problem The Algorithm Examples Implementation Unifjcation Dr. Mattox Beckman University of Illinois at Urbana-Champaign Department of Computer Science Introduction The Problem The Algorithm Examples Implementation


  1. Introduction The Problem The Algorithm Examples Implementation Unifjcation Dr. Mattox Beckman University of Illinois at Urbana-Champaign Department of Computer Science

  2. Introduction The Problem The Algorithm Examples Implementation Objectives You should be able to... Unifjcation is a third major topic that will appear many times in this course. It is used in languages such as Haskell and Prolog, and also in theoretical discussions. ◮ Be able to describe the problem of unifjcation. ◮ Be able to solve a unifjcation problem. ◮ Be able to implement unifjcation in Haskell. ◮ Know how to use unifjcation to implement pattern matching. ◮ Know how to use unifjcation to check types of functions.

  3. Introduction The Problem The Algorithm Examples Implementation The Domain Terms Have name and arity ◮ The name will be in western alphabet ◮ Arity = “number of arguments” — may be zero ◮ Examples: x, z, f(x,y), x(y,f,z) Variables Written using Greek alphabet, may be subscripted ◮ Represent a target for substitution ◮ Examples: α, β 12 , γ 7 Substitutions Mappings from Variables to Terms ◮ Examples: σ = { α �→ f ( x , β ) , β �→ y } ◮ Substitutions are applied : σ ( g ( β )) → g ( y ) Note: arguments to terms may have non-zero arity, or may be variables.

  4. Introduction The Problem The Algorithm Examples Implementation The Problem ◮ Given terms s and t , try to fjnd a substitution σ such that σ ( s ) = σ ( t ) . ◮ If such a substitution exists, it is said that s and t unify. ◮ A unifjcation problem is a set of equations S = { s 1 = t 1 , s 2 = t 2 , . . . } . ◮ A unifjcation problem S = { x 1 = t 1 , x 2 = t 2 , . . . } is in solved form if ◮ the terms x i are distinct variables ◮ none of them occur in t i . Our approach: given a unifjcation problem S , we want to fjnd the most general unifjer σ that solves it. We will do this by transforming the equations.

  5. Introduction The Problem The Algorithm Examples Implementation Four Operations Start with a unifjcation problem S = { s 1 = t 1 , s 2 = t 2 , . . . } and apply the following transformations as necessary: Delete A trivial equation t = t can be deleted. Decompose An equation f ( t n ) = f ( u n ) can be replaced by the set { t 1 = u 1 , . . . , t n = u n } Orient An equation t = x can be replaced by x = t if x is a variable and t is not. Eliminate an equation x = t can be used to substitute all occurrences of x in the remainder of S .

  6. Introduction The Problem The Algorithm Examples Implementation Example (Stolen from “Term Rewriting and All That”) { α = f ( x ) , g ( α, α ) = g ( α, β ) }

  7. Introduction The Problem The Algorithm Examples Implementation Example (Stolen from “Term Rewriting and All That”) { α = f ( x ) , g ( α, α ) = g ( α, β ) } We can use the Eliminate method, replace α with f ( x ) on the right sides of the equations.

  8. Introduction The Problem The Algorithm Examples Implementation Example (Stolen from “Term Rewriting and All That”) { α = f ( x ) , g ( α, α ) = g ( α, β ) } We can use the Eliminate method, replace α with f ( x ) on the right sides of the equations. { α = f ( x ) , g ( f ( x ) , f ( x )) = g ( f ( x ) , β ) } We can use the Decompose method, and get rid of the g functions.

  9. Introduction The Problem The Algorithm Examples Implementation Example (Stolen from “Term Rewriting and All That”) { α = f ( x ) , g ( α, α ) = g ( α, β ) } We can use the Eliminate method, replace α with f ( x ) on the right sides of the equations. { α = f ( x ) , g ( f ( x ) , f ( x )) = g ( f ( x ) , β ) } We can use the Decompose method, and get rid of the g functions. { α = f ( x ) , f ( x ) = f ( x ) , f ( x ) = β } We can delete the f ( x ) = f ( x ) equation.

  10. Introduction The Problem The Algorithm Examples Implementation Example (Stolen from “Term Rewriting and All That”) { α = f ( x ) , g ( α, α ) = g ( α, β ) } We can use the Eliminate method, replace α with f ( x ) on the right sides of the equations. { α = f ( x ) , g ( f ( x ) , f ( x )) = g ( f ( x ) , β ) } We can use the Decompose method, and get rid of the g functions. { α = f ( x ) , f ( x ) = f ( x ) , f ( x ) = β } We can delete the f ( x ) = f ( x ) equation. { α = f ( x ) , f ( x ) = β } Now we can reorient to make the variables show up on the left side.

  11. Introduction The Problem The Algorithm Examples Implementation Example (Stolen from “Term Rewriting and All That”) { α = f ( x ) , g ( α, α ) = g ( α, β ) } We can use the Eliminate method, replace α with f ( x ) on the right sides of the equations. { α = f ( x ) , g ( f ( x ) , f ( x )) = g ( f ( x ) , β ) } We can use the Decompose method, and get rid of the g functions. { α = f ( x ) , f ( x ) = f ( x ) , f ( x ) = β } We can delete the f ( x ) = f ( x ) equation. { α = f ( x ) , f ( x ) = β } Now we can reorient to make the variables show up on the left side. { α = f ( x ) , β = f ( x ) } Now we are done.... S = { α �→ f ( x ) , β �→ f ( x ) }

  12. Introduction The Problem The Algorithm Examples Implementation Example — Compatibility ◮ Your advisor wants you to take CS 421 and some theory class. ◮ Your mom wants you to take CS 374 and some languages class. ◮ Can both your advisor and your mom be happy? This is a problem we can solve using unifjcation: ◮ Let f be a “schedule function”, the fjrst argument is a language class, the second argument is a theory class. ◮ s = f ( cs 421 , β ) (where β is a theory class) ◮ t = f ( α, cs 374) (where α is a language class) ◮ Let σ = { α �→ cs 421 , β �→ cs 374 }

  13. inc :: Int -> Int map :: (a -> b) -> [a] -> [b] foo :: [Int] Introduction The Problem The Algorithm Examples Implementation Example — Types Type checking is also a form of unifjcation. Will map(inc)(foo) work? S = { ( α ⇒ β ) = ( Int ⇒ Int ) , List [ α ] = List [ Int ] }

  14. Introduction The Problem The Algorithm Examples Implementation Type Checking Solution S = { ( α ⇒ β ) = ( Int ⇒ Int ) , List [ α ] = List [ Int ] } ◮ Decompose: { α = Int , β = Int , List [ α ] = List [ Int ] } ◮ Substitute: { α = Int , β = Int , List [ Int ] = List [ Int ] } ◮ Delete: { α = Int , β = Int } The original type of map was ( α ⇒ β ) ⇒ List [ α ] ⇒ List [ β ] We can use our pattern to get the output type: S ( List [ β ]) ≡ List [ Int ]

  15. inc : String -> Int map :: (a->b) -> [a] -> [b] foo : [Int] Introduction The Problem The Algorithm Examples Implementation Example 2 — Types Here’s an example that fails. Will map(inc)(foo) work? S = { ( α ⇒ β ) = ( String ⇒ Int ) , List [ α ] = List [ Int ] }

  16. Introduction The Problem The Algorithm Examples Implementation Type Checking 2 Solution S = { ( α ⇒ β ) = ( String ⇒ Int ) , List [ α ] = List [ Int ] } ◮ Decompose: { α = String , β = Int , List [ α ] = List [ Int ] } ◮ Substitute: { α = string , β = Int , List [ String ] = List [ Int ] } ◮ Error: List [ string ] � = List [ Int ] !

  17. Introduction The Problem The Algorithm Examples Implementation How to make this work in Haskell To build a unifjer, you need: ◮ a way to represent unifjcation problems... i.e., a type, ◮ a way to decide which unifjcation step is appropriate, ◮ (and a way to tell when we are done) ◮ and functions to perform the various unifjcation steps. How should we represent things?

  18. Introduction The Problem The Algorithm Examples Implementation Strategy for Writing the Function ◮ You need three lists: ◮ One is the list of solved-form equations. ◮ Two form a queue of elements in progress. ◮ You need functions to perform the transformations we need. ◮ Substitute ◮ Deconstruct ◮ Reorient (easy) ◮ Drop (very easy) ◮ You may need a fmag to indicate completion. Time to start coding! We’ll implement this in class.

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend