outline on logic programming
play

Outline On logic programming Logic Programming (LP) is declarative - PowerPoint PPT Presentation

Outline 2 LP Correctness DD Summary Outline 2 LP Correctness DD Summary Outline On logic programming Logic Programming (LP) is declarative and locating errors in programs We can do declarative programming in Prolog Debugging should


  1. Outline 2 LP Correctness DD Summary Outline 2 LP Correctness DD Summary Outline On logic programming Logic Programming (LP) is declarative and locating errors in programs We can do declarative programming in Prolog Debugging should be declarative too W� lodzimierz Drabent Methods exist: Declarative Diagnosis (DD), a.k.a. algorithmic debugging Institute of Computer Science, Polish Academy of Sciences (IPI PAN); [Shapiro’83,Pereira’86,Naish,...] IDA, Link¨ opings universitet, Sweden ·· Tools do not ⌢ SaS seminar 2019-11-08 Version 1.0, compiled November 15, 2019 We discuss the (possibly) main reason for non-acceptance of DD 1 / 24 3 / 24 Outline 2 LP Correctness DD Summary Outline 2 LP Correctness DD Summary Ex. ex.program Logic+control Outline Declarative programming WHAT to compute Program – a description of the problem ◮ Introduction to Logic Programming (LP) not a description of computer actions ◮ On proving program correctness (and completeness), i.e. how to reason about our programs Logic Programming ◮ Approximate specifications ◮ Declarative Diagnosis (DD) Program – a set of axioms Why abandoned; a cure Results – its logical consequences Inadequacy of Prolog debuggers Computation – proof construction ◮ Summary Main programming language – Prolog 2 / 24 4 / 24

  2. Outline 2 LP Correctness DD Summary Ex. ex.program Logic+control Outline 2 LP Correctness DD Summary Ex. ex.program Logic+control Logic Programming (LP). The core part Notation Program – a set of axioms ( of the form A 0 ← A 1 , . . . , A n Variables in programs – begin with upper case A i – atoms (atomic formulae) ). Computation – search for logical consequences of the program. – anonymous variable (each occurrence of – a distinct variable) Query Q ( of the form A 1 , . . . , A n ). [ a 1 , . . . , a n ] – list, its elements a 1 , . . . , a n ( n ≥ 0 ) Answers Qθ such that P | = Qθ [ ] – empty list ( P – the program, θ – substitution). [ h | t ] – the list with head h and tail t Any answer Q ′ computed for P is a logical consequence of P , P | = Q ′ . [ h 1 , h 2 | t ] – the list with head h 1 and tail [ h 2 | t ] , i.e. [ h 1 | [ h 2 | t ]] And conversely (if P | = Qθ then Qθ is an instance of a computed answer for Q ). Note: untyped logic 5 / 24 7 / 24 Outline 2 LP Correctness DD Summary Ex. ex.program Logic+control Outline 2 LP Correctness DD Summary Ex. ex.program Logic+control Y Z LP, example, puzzle LP, example, puzzle � �� � X Y Z solution ( S ) ← � �� � XY Z sequence 27( S ) , Build a sequence out of three 1’s, three 2’s, . . . , three 9’s, H K L sublist ( [1 , , 1 , , 1] , S ) , so that between each consecutive occurrences of i � �� � sublist ( [2 , , , 2 , , , 2] , S ) , M there are exactly i elements. sublist ( [3 , , , , 3 , , , , 3] , S ) , sublist ( [4 , , , , , 4 , , , , , 4] , S ) , sublist ( [5 , , , , , , 5 , , , , , , 5] , S ) , [1,9,1,2,1,8,2,4,6,2,7,9,4,5,8,6,3,4,7,5,3,9,6,8,3,5,7] sublist ( [6 , , , , , , , 6 , , , , , , , 6] , S ) , sublist ( [7 , , , , , , , , 7 , , , , , , , , 7] , S ) , [1,8,1,9,1,5,2,6,7,2,8,5,2,9,6,4,7,5,3,8,4,6,3,9,7,4,3] sublist ( [8 , , , , , , , , , 8 , , , , , , , , , 8] , S ) , [1,9,1,6,1,8,2,5,7,2,6,9,2,5,8,4,7,6,3,5,4,9,3,8,7,4,3] sublist ( [9 , , , , , , , , , , 9 , , , , , , , , , , 9] , S ) . [3,4,7,8,3,9,4,5,3,6,7,4,8,5,2,9,6,2,7,5,2,8,1,6,1,9,1] sublist ( Y , XYZ ) ← app ( , YZ , XYZ ) , app ( Y , , YZ ) . [3,4,7,9,3,6,4,8,3,5,7,4,6,9,2,5,8,2,7,6,2,5,1,9,1,8,1] sequence 27([ , , , , , , , , , , , , , , , , , , , , , , , , , , ]) . [7,5,3,8,6,9,3,5,7,4,3,6,8,5,4,9,7,2,6,4,2,8,1,2,1,9,1] app ( [ ] , L, L ) . app ( [ H | K ] , L, [ H | M ] ) ← app ( K, L, M ) . 6 / 24 8 / 24

  3. Outline 2 LP Correctness DD Summary Ex. ex.program Logic+control Outline 2 LP Correctness DD Summary method 1 method 2 Approximate... LP. Two levels of reading a program Reasoning about program correctness declarative – a set of axioms, Specification – a set S of ground atoms (a Herbrand interpretation) operational – a description of computations. Correctness (of P ) – each ground answer (of P ) ∈ S : M P ⊆ S ALGORITHM = LOGIC + CONTROL [Robert Kowalski, 1974] Correctness proving method: Operational level (prog. lang. Prolog): control information (the ordering within the program, some special constructs). S | = P ⇒ P correct w.r.t. S . ↑ Important:, often neglected: For each ground instance H ← B 1 , . . . , B n of a clause from P , The two levels can be considered separately. ☞ Program correctness is a property of the declarative level. if B 1 , . . . , B n ∈ S then H ∈ S . We do not need to reason in terms of von Neumann machine. (Out of atoms ∈ S , the rules of P produce only atoms ∈ S ) J.Backus, Can programming be liberated from the von Neumann style? CACM, 1978 The method has been already informally applied at this presentation. (One may also program operationally, neglecting the 1st level.) 9 / 24 11 / 24 Outline 2 LP Correctness DD Summary method 1 method 2 Approximate... Outline 2 LP Correctness DD Summary method 1 method 2 Approximate... Program correctness Reasoning about program completeness Completeness (of P w.r.t. S ) – each atom ∈ S is an answer of P How to reason about program results ? S ⊆ M P Imperative Completeness proving method programming: partial correctness + termination Main part of the sufficient condition – reverse of that for correctness ւ ց LP : correctness completeness If H ∈ S then full correctness (?) ( ∗ ) there exists a ground instance H ← B 1 , . . . , B n of a clause from P s.that B 1 , . . . , B n ∈ S . Correctness – the program answers compatible with the specification (Each atom of S can be produced by a rule of P from atoms of S .) Completeness – all the required answers will be produced (by the specification) The two methods much simpler than those for proving correctness of imperative programs ! 10 / 24 12 / 24

  4. Outline 2 LP Correctness DD Summary method 1 method 2 Approximate... Outline 2 LP Correctness DD Summary method 1 method 2 Approximate... Important feature Approximate specifications, example Exact specification – often not known. E.g. ◮ member ( e, t ) for a non-list t , Ex .: specification for member /2 : ◮ append ( l, t, t ′ ) for non-lists t, t ′ , S corr = S compl ∪ { member ( e, t ) | t not a list } , ◮ insert ( e, l, y ) in insertion sort, for unsorted l , S compl – the list membership relation, i.e. ◮ a predicate may have distinct semantics in distinct versions S compl = { member ( t i , [ t 1 , . . . , t n ]) | 1 ≤ i ≤ n } . of a program under development! (see Howe&King SAT solver in [D...,TPLP2018]) 13 / 24 15 / 24 ·· ⌢ ·· ⌣ Outline 2 LP Correctness DD Summary method 1 method 2 Approximate... Outline 2 LP Correctness DD Summary Prolog tool Approximate specifications Declarative diagnosis (DD) a.k.a. algorithmic debugging S compl specification for completeness Methods of locating errors in programs, � �� � based solely on the declarative semantics. [Shapiro’83,Pereira’86,Naish,...] [S.Nadjm-Tehrani,W.Drabent,J.Ma� luszy´ nski, does not required H.Nilsson,N.Shahmehri,M.Kamkar,P.Fritzson, incorrect matter R.Westman,P.Bunus,M.Sj¨ olund] The methods exist, but are abandoned. � �� � specification for correctness S corr 14 / 24 16 / 24

  5. ·· ·· ⌢ ·· ⌢ ·· ⌣ ⌣ Outline 2 LP Correctness DD Summary Prolog tool Outline 2 LP Correctness DD Summary Prolog tool DD (Declarative Diagnosis) Reasons for DD being neglected program, symptom ◮ No freedom: Fixed order or queries to answer ↓ ◮ The user cannot change her mind queries ◮ · · · user ● ● ● ● ● ● ● ● ● ● ● ❆ DD algorithm ◮ Exact specification ( intended model ) required from the user ☞ (oracle) ❉ ● ● ● ● ● ● ● ● ● ● ● But often she does not know it (and it does not matter) answers ↓ ◮ member ( e, t ) for a non-list t , ◮ append ( l, t, t ′ ) for non-lists t, t ′ , located ◮ insert ( e, l, y ) in insertion sort, for unsorted l , error ◮ a predicate may have distinct semantics in distinct versions of a program under development! Queries – about the intended declarative semantics of the program (see Howe&King SAT solver in [D...,TPLP2018]) User can locate the error without looking at the program solely in terms of declarative semantics 17 / 24 19 / 24 ·· ·· ⌢ ·· ⌢ ·· ⌣ ⌣ Outline 2 LP Correctness DD Summary Prolog tool Outline 2 LP Correctness DD Summary Prolog tool Examples – DD of incorrectness Instead of “the intended model” the user knows ◮ its certain superset S corr – what may be computed ◮ and a subset S compl – what must be computed Diagnosis sessions, to be shown after the first two items of the next slide i.e. an approximate specification The program should be correct w.r.t. S corr and complete w.r.t. S compl : S compl ⊆ M P ⊆ S corr * A buggy insertion sort program [Shapiro’83] The standard Declarative Diagnosis works! * An actual bug in a rather big student program (from TDDD08, lab) when instead of the intended model we use ◮ S corr for incorrectness diagnosis ◮ S compl for incompleteness diagnosis Apparently, this simple fact has been unnoticed 18 / 24 20 / 24

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