Ch. 13 Ch. 131 jcmt CSE 3302 Programming Languages CSE3302 Programming Languages (notes?) Dr. Carter Tiernan
Ch. 13 Ch. 132 jcmt CSE 3302 Programming Languages Logic Programming Nonprocedural programming Higher-level language allows one to express the same program with less detail Language does more automatically Programmer focuses more on what to do not on how to do it
Ch. 13 Ch. 133 jcmt CSE 3302 Programming Languages Automatic deduction Automatic theorem proving –The development of programs that can construct formal proofs of propositions stated in symbolic language –Side effect of proof is construction of a result which demonstrates the proof Programs expressed in the form of propositions that assert the existence of a desired result
Ch. 13 Ch. 134 jcmt CSE 3302 Programming Languages Prolog Programs are structured like theorems –Clauses that define the problem domain –Facts (database of relationships among atomic individuals) –Goals Is a fact provable? Is there an individual satisfying the goal? Is there a solution satisfying the goal?
Ch. 13 Ch. 135 jcmt CSE 3302 Programming Languages Prolog Clauses Clauses define relationships or “predicates” Facts or hypotheses parent (charles, harry). Goals :- grandparent (elizabeth, X). Conditions or rules grandparent(Y, Z) :- parent (Y,W), parent(W,Z).
Ch. 13 Ch. 136 jcmt CSE 3302 Programming Languages Predicates :- Predicates –Relationship applied to terms – Relationships Properties of Relations among – Terms Atoms Variables Compound terms Horn clause form
Ch. 13 Ch. 137 jcmt CSE 3302 Programming Languages Goals Executing a goal –Match clauses in predicate by finding an assignment of values to the variables that makes the goal identical to the head of one of the clauses (unification) –Variables are bound (instantiated) to create subgoal –Recursive application and pattern matching
Ch. 13 Ch. 138 jcmt CSE 3302 Programming Languages Compound terms Compound term allows us to describe individuals without naming them Functor with atoms or variables d(X, plus(U,V), plus(DU,DV)) or d(X, U + V, DU + DV) Similar to LISP list structure Acts somewhat like a function but is not a function call
Ch. 13 Ch. 139 jcmt CSE 3302 Programming Languages Data structures No constructors Data structures are implicitly defined by their properties Few primitives Compound terms can provide logical description of structure –Some Prologs allow infix notation for functors
Ch. 13 Ch jcmt CSE 3302 Programming Languages Complex structures Compound terms represent themselves –Symbolic notations can be defined directly –Good for mathematical relationships Predicates can define structures –Predicates can replace compound terms –Expressions matched to clauses must exist within the Prolog “closed world” –Good for object-oriented relationships
Ch. 13 Ch jcmt CSE 3302 Programming Languages More data structures Abstract data types - so abstract they’re only described Infinite terms - “occurs check” Representation of ‘infinite’ list is finite –Circular structure
Ch. 13 Ch jcmt CSE 3302 Programming Languages Control Structures Separation of logic and control –Independent analysis Order of clauses has no effect on meaning or logic Control affects generation and unification of subgoals –Efficiency is an issue but not meaning
Ch. 13 Ch jcmt CSE 3302 Programming Languages Subgoal Generation Top-down –Start from goal; try to reach hypotheses –Recursive approach Bottom-up –Start with hypotheses; try to reach goal –Iterative approach
Ch. 13 Ch jcmt CSE 3302 Programming Languages Backtracking Multiple matching clauses may be available If a failure occurs after a choice point, execution backtracks to the last choice point Another match is made and execution continues. Implementation of efficient backtracking is crucial in logic programming
Ch. 13 Ch jcmt CSE 3302 Programming Languages Input / Output Parameters Goals attempt to satisfy subgoals with whatever value is unified Parameters are neither inherently input nor output. Which ever is supplied is used as input. When no parameter values are given, the systems attempts to search for any solution that satisfies the pattern
Ch. 13 Ch jcmt CSE 3302 Programming Languages Searching in Prolog Depth-first search is specified –Not pure logic programming Attempts to satisfy goals in the order written Will try matching clauses in the order in which they were entered into the DB
Ch. 13 Ch jcmt CSE 3302 Programming Languages Prolog vs. Logic Programming Interpretation of arithmetic jumps beyond the bounds of strict logic programming unless handled as succ() Efficiency requires the use underlying hardware support ‘is’ gives an assignment Binding forces ordering
Ch. 13 Ch jcmt CSE 3302 Programming Languages Search rationale Breadth-first –searches paths in parallel –needs exponentially more space than depth-first Depth-first –Can get caught in infinitely deep search –Programmer is required to order clauses to prevent endless search
Ch. 13 Ch jcmt CSE 3302 Programming Languages Nonmonotonic reasoning Updateable database –Assert –Retract Does not match logic Does match world state changes over time
Ch. 13 Ch jcmt CSE 3302 Programming Languages Cuts “You have found all the solutions there are; do not bother trying to find any others” Predicate that always succeeds, but past which you can never backtrack Used with repeat to provide looping
Ch. 13 Ch jcmt CSE 3302 Programming Languages Higher-order rules Parameters must be terms not predicates Logic programming is generally restricted to first-order logic Resolution algorithm is complete only for first-order logic
Ch. 13 Ch jcmt CSE 3302 Programming Languages Negation Unsatisfiability - cannot be proved true –Absence of data –Closed world assumption Conclusions can be drawn about relationships that DO hold NO conclusions can be made about relationships that do NOT hold not( -- ) predicate succeeds if -- fails
Ch. 13 Ch jcmt CSE 3302 Programming Languages Equivalence Term equality Other types of equivalence cannot be defined –In terms of logical properties Term inequality requires complete binding for correct interpretation