| 12 W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic debugging with assertions. In H. Abramson and M.H.Rogers, editors, Meta-programming in Logic Programming, pages 501-522. MIT Press, 1989. |
....in the body of procedure P end of Rule A; Some formalism for describing similar rules remains to be developed in the framework of FORMAN. One of our goals is to formalize, for instance, debugging strategies presented in [25] 16] Algorithmic Debugging with assertions in Prolog is presented in [11]. 7 Principles of Implementation There are two separate tasks to be done when performing any computations over H space. To generate the event set (the trace) To perform necessary computations over it. For the efficiency reasons these two steps could be combined and optimized. There are at ....
W.Drabent, S. Nadjm-Tehrani, J.Maluszinski, Algorithmic Debugging with Assertions, in: Meta-Programming in Logic programming (eds. H.Abramson, M.H.Rogers), MIT Press, 1989, pp.501-521.
....program debugging method with functional testing (CPM ) and with programslicing. The goal is to develop an effective system for debugging and testing of programs written in Prolog. Other debugging techniques and tools of PROLOG programs were developed APROPOS [10] EDS [6] DED [9] and ADAss [4]) PRESET [15] RD [14] OPIUM [3] PTP [5] NUPROLOG debugging environment [11] The main disadvantage of these systems is that they can debug programs which are written using only the standard PROLOG syntax and 1 This work was supported by the grants of Bayerischer Habilitationsforderpreis ....
....it is incorrect. So we try to find the error in the program. As the first step the trace tree is generated (see Figure 3) Then the improved algorithm asks the following questions. Example 3 The questions asked by the improved algorithm Is it intended that the goal primes(9) numbers(2,9,[2,3,4,5,6,7,8,9]) print( 2,3,4,5,6,7,8,9] nl, sieve( 2,3,4,5,6,7,8,9] 2 Primes] fails (y n) n The user is asked whether it is intended or not that the predicate primes with the number 9 as argument delivers fail. Of course it is incorrect so the answer is no. Is it intended that the goal ....
[Article contains additional citation context not shown here]
Drabent, W., Nadjm-Tehrani, S., Ma/luszy'nski, J.: Algorithmic Debugging with Assertions, In Proc Meta-Programming in Logic Programming, 1988, 375-378,
....(normally the user) which is capable of answering questions about the intended behaviour of the program is assumed. In this context assertions have been used in order to replace the oracle as much as possible by allowing the user expressing properties which should hold if the program were correct [8, 9, 1]. If it is possible to answer the questions posed by the declarative debugger just by using the information given as assertions, then there is no need to ask the oracle (the user) Note that here again, assertions are used to express properties which should hold for the program. Compile time ....
W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic debugging with assertions. In (H. Abramson and M.H.Rogers, editors, Meta-programming in Logic Programming, pages 501--522. MIT Press, 1989.
....by a single computed answer constraint. Thus, for insufficiency diagnosis, a computed answer cannot be considered alone. We have to consider the set (or a subset) of computed answers. We cannot limit exploration to a single skeleton. An error is rather a non completely covered constrained atom [3] than a non covered constrained atoms [4] as shown in [9] ....
Drabent, W., Nadjm-Tehrani, S., and Ma/luszy'nski, J., Algorithmic Debugging with Assertions. In Meta-Programming in Logic Programming, pages 501--522. MIT Press, 1989.
.... visualizers (see, for example, 1,22,21] for a more comprehensive discussion of tools and possible debugging scenarios) In this paper we concentrate our attention on the particular issue of program validation and debugging via direct static and or dynamic checking of user provided assertions [18,19,8,6,36,2]. Classical examples of assertions are the type declarations used in languages such as Godel [30] or Mercury [42] and in traditional functional languages) But here, and encouraged by the capabilities of the currently available abstract interpreters, we depart in several ways from the traditional ....
....the first case the corresponding assertions are 5 As oppossed to abstract incorrectness symptoms, which are the ones detected by compile time checking. 6 It is out of the scope of this paper to discuss how program diagnosis should be performed. However, techniques such as declarative debugging [41,6,18,19], abstract debugging [13,14] or more traditional interactive debuggers [11,20] may be applied. 6 rewritten as checked assertions; in the second case abstract symptoms are detected, the corresponding assertions are rewritten as false assertions, and error messages are presented to the user. ....
[Article contains additional citation context not shown here]
W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic debugging with assertions. In H. Abramson and M.H.Rogers, editors, Meta-programming in Logic Programming, pages 501--522. MIT Press, 1989.
....have been found lacking by users developing industrial applications is debugging, in terms of ensuring correctness as well as understanding and improving performance of the program. Possible solutions can be based on both static and dynamic techniques. One technique is the use of assertions [12, 4]. Assertions can be seen as a generalization of type systems (often including directional types) in which relatively general preconditions and postconditions can be declared for procedures. Assertions can be provided by the user and checked at compile time or run time. Compile time checking can ....
W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic debugging with assertions. In H.Abramson and M.H.Rogers, editors, Meta-programming in Logic Programming. MIT Press, 1989.
....(normally the user) which is capable of answering questions about the intended behaviour of the program is assumed. In this context assertions have been used in order to replace the oracle as much as possible by allowing the user expressing properties which should hold if the program were correct [9, 10, 1]. If it is possible to answer the questions posed by the declarative debugger just by using the information given as assertions, then there is no need to ask the oracle (the user) Note that here again, assertions are used to express properties which should hold for the program. Compile time ....
W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic debugging with assertions. In H. Abramson and M.H.Rogers, editors, Meta-programming in Logic Programming, pages 501-522. MIT Press, 1989.
....scenarios) In this paper we concentrate our attention on the particular issue of program validation and debugging via direct static and or dynamic checking of user provided assertions. We assume that a (partial) speci cation is available with the program and written in terms of assertions [5, 4, 13, 14, 23, 25]. Classical examples of assertions are the type declarations used in languages such as G odel [21] or Mercury [29] and in functional languages) However, herein we are interested in supporting a more general setting in which, on one hand assertions can be of a more general nature, including ....
....These systems can statically infer a wide range of properties (from types to determinacy or termination) accurately and ef ciently, for realistic programs. Thus, we would like to take advantage of standard program analysis tools, rather than developing new abstract procedures, such as concrete [4, 13, 14] or abstract [9, 10] diagnosers and debuggers, or using traditional proof based methods [2, 3, 12, 15, 30] Figure 1 presents the general architecture of the type of debugging environment that we propose. Hexagons represent the di erent tools involved and arrows indicate the communication paths ....
W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic debugging with assertions. In H. Abramson and M.H.Rogers, editors, Meta-programming in Logic Programming, pages 501-522. MIT Press, 1989.
....As most declarative debugging research has been done in loosely typed environments, the strong typing of Godel combined with data abstraction presents difficulties for debugging types whose structures are hidden. Nadjm Tehrani s work has followed several strands of debugging. The first work [7] centres on the issues associated with debugging programs that miss answers without expecting the user to provide instances of atoms which are correct. In earlier debuggers this had been a problem as these type of questions can sometimes be very difficult to answer and in some cases, impossible. ....
....strategy will be more efficient. Given the presentation here, a left most search strategy is not implementable via weights, but if we allow access to nodes of the tree to perform more complex analysis, we can always then adopt a left most first approach. Is Primes(10, 2,4,8] VALID n Is Sift([2,3,4,5,6,7,8,9,10], 2,4,8] VALID n Is RemoveMults( 3,4,5,6,7,8,9,10] 2, 4,6,8,10] VALID n Is RemoveMults( 4,5,6,7,8,9,10] 2, 4,6,8,10] VALID n Is RemoveMults( 5,6,7,8,9,10] 2, 6,8,10] VALID n Is RemoveMults( 6,7,8,9,10] 2, 6,8,10] VALID n Is RemoveMults( 7,8,9,10] 2, 8,10] VALID n A Generic ....
[Article contains additional citation context not shown here]
W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic debugging with assertions. In Meta88. Univeristy of Bristol, 1988.
.... In addition GIDTS supports debugging directed editing of the source program, and a quick source code navigation via any of the tools (for example: the debugger, the static call graph and the information retriever) Other debugging techniques and tools of PROLOG programs were developed ( Lo88] [DNM88], TakShi] Per86] and [NDZ89] The main disadvantage of these systems is that they cannot handle the full PROLOG syntax and se mantics (using for example repeat, if and definite clause grammar) and they support the debugging task only with a textual user interface. In the remainder of this ....
....concludes the paper. 2 Related Work As we mentioned research on this topic started with the development of Shapiro s APD System ( shapiro] Many other debugging techniques and tools of PROLOG programs were developed. Some of them are based on Shapiro s algorithm (APROPOS [Lo88] and ADAss [DNM88]) or used other methods (PRESET [TakShi] RD [Per86] NU PROLOG debugging environment [NDZ89] The big deficiencies of the existing debugging tools are: ffl They use only the proof tree. It means that they can not find the error if it is situated in the redo branch of the derivation of the given ....
Drabent, W., Nadjm-Tehrani, S., Mal/uszynski, J.: Algorithmic Debugging with Assertions, In Proc MetaProgramming in Logic Programming, 1988, 375-378,
....debugging can be thought of as searching a tree for a buggy node. To determine if an node is erroneous an oracle is used. Often the oracle is the programmer, who is asked questions about the validity of atoms, though a runnable specification of the program can also be used [ET83] DL87] [DNTM89] [KKMH89] This is particularly useful when the size of data structures makes questions difficult to comprehend. To illustrate a typical declarative debugging session we use the NU Prolog Debugging Environment (NUDE) NDZ89] NUDE uses a top down search of the tree and (optionally) prints the ....
....answers in Prolog as follows. Each node in the tree contains a tag, mp, a Prolog atom 7 and the set of computed answers for the atom. The implementation of erroneous checks to see if all correct answers were computed. This can be done by asking the user incompleteness questions [Nai92][DNTM89][Per86] An incomplete call has a valid instance which fails. If the call itself failed then the user can simply be asked if the atom is valid (if it is ground) or satisfiable. Assuming a left to right computation rule, the children of a node containing atom A are the atoms: fB i j H : GammaB 1 ....
[Article contains additional citation context not shown here]
Wlodek Drabent, Simin Nadjim-Tehrani, and Jan Maluszynski. Algorithmic debugging with assertions. In John W. Lloyd, editor, Meta-programming in Logic Programming, page MIT Press. 1989.
....insufficiency) a[c] is an incompleteness symptom (resp. insufficiency symptom) of P according to I if a[c] 2 I Gamma lfp(T ffi ;P ) resp. a[c] 2 I Gamma gfp(T ffi ;P ) The interest is that the definitions are formulated in a uniform framework and extend existing definitions of LP [18, 6, 5, 14, 3, 7, 16]. Thus, they are better understood, particularly thanks to proof trees and T ffi ;P . In the particular case of LP: our framework contributes to the comparison between above papers. Lemma 8. 1. If a[c] is a strong insufficiency then a[c] is a weak insufficiency. 2. There exists a strong ....
.... c 1 ; c m then there exists C fc 1 ; c m g such that c C (i.e. a[c] 2 SS (P ) Consequently, if there exists a computed symptom then there exists a strong insufficiency and a weak insufficiency (regardless of the computation rule) Now, we propose an algorithm inspired from [5]. The input is a computed symptom according to the standard strategy and the output is a weak insufficiency. Thus the user just answers yes or no while it has to answer by constraint in an algorithm which searches a strong insufficiency. The search forest for a consists of a tree for each ....
W. Drabent, S. Nadjm-Tehrani, and J. Ma/luszy'nski. Algorithmic Debugging with Assertions. In H. Abramson and M. H. Rogers, editors, Meta-Programming in Logic Programming, pages 501--522. MIT Press, 1989.
....about the operational aspect of the program. All that they need to know is the intended interpretation of the program. The quantity of the queries imposed on the oracle may be large and reducing the quantity of the queries has been the main objective of much research into declarative diagnosis [4, 2, 3, 15, 16]. The quantity of the queries is dependent on the size of the search space and the search strategy [18, 9] This paper formalises the programmer s practice of using assertions about the correctness of the program and uses two kinds of correctness assertion to reduce the size of the search space of ....
....symptom. The following is a c.p.p. for qs( 2; 3; 1] 2; 1; 3] It is a part of a proof tree for qs( 2; 3; 1] 2; 1; 3] because in a proof tree for qs( 2; 3; 1] 2; 1; 3] each of node (3) labelled with 2 = 3) and node (5) labelled with 2 1) has a child labelled with true. qs([2,3,1], 2,1,3] 1) pt( 3,1] 2, 1] 3] 2) qs( 3] 3] 18) 2= 3 (3) pt( 3, 19) pt( 1] 2, 1] 4) true (20) 2 1 (5) qs( 21) pt( 2, 6) ....
[Article contains additional citation context not shown here]
W. Drabent, S. Nadjm-Tehrani, and J. Ma/luszynski. Algorithmic debugging with assertions. In Harvey Abramson and M.H. Rogers, editors, Meta-Programming in Logic Programming, pages 502--521. The MIT Press, 1989.
....process whereby a declarative diagnoser obtains the intended interpretation of the program from an oracle, usually the programmer, and compares the intended interpretation with the actual interpretation of the program. There has been much research into declarative logic program diagnosis [4, 8, 11, 13, 18, 19, 22]. A buggy logic program may exhibit many kinds of bug symptom. It may produce a wrong answer, fail to produce a correct answer, fall into looping, call procedures with wrong types of arguments, or violate the safe rule of negation as failure, etc. This paper is concerned with the first two kinds ....
....not need to know anything about the operational aspect of the program. All that they need to know about is the intended interpretation of the program. The quantity of queries may be large and reducing the quantity of queries has been the main objective of much research into declarative diagnosis [3, 4, 6, 16, 17]. The quantity of queries is dependent on the size of the search space and the search strategy [13, 19] In this paper we present a declarative diagnoser for normal programs. A normal program consists of a set of normal clauses of the form A L 1 ; Delta Delta Delta ; Lm 1 We use the term ....
[Article contains additional citation context not shown here]
W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic Debugging with Assertions. In Harvey Abramson and M.H. Rogers, editors, Meta-Programming in Logic Programming, pages 502--521. The MIT Press, 1989.
....a correct logic program. Like all incremental techniques, the technique is sensitive to the evidence ordering, and can be forced into the induction of infinite, redundant, or dead code. Also, it cannot perform any kind of predicate invention. Many improvements of MIS have been proposed [26] [38] 39] 52] and many variations thereof have been designed. Here we just list those that have been demonstrated essentially through their ability to synthesise recursive programs. The CONSTRUCTIVE INTERPRETER [23] is a passive variant, as it fully mechanises the oracle by requiring that a ....
W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic debugging with assertions. In H. Abramson and M.H. Rogers (eds), Proc. of META'88, pp. 501--521. The MIT Press, 1988.
....for deciding could seem unrealistic. However this presupposition is necessary to give a meaning to debugging questions and in fact it is the notion of expected properties which has to be realistic. In practice the oracle can be embodied by the programmer or by other means, for example assertions [3, 5, 4]) and the expected properties can be defined by using an abstract (approximate, graphical, view of the computed result (see task 2.2 and work package 3 of the project) This question is relevant to the presentation problem ( 15] Symptoms are caused by errors in the program. An error is a ....
.... would be incoherent to use only low level debugging tools whereas theses languages benefit from a declarative semantics (as opposed to operational semantics) Declarative Debugging (DD) was introduced in Logic Programming (LP) by Shapiro (and called Algorithmic Program Debugging [24] see also [8, 14, 6, 7, 21, 5, 18, 19]) Declarative means that the user has no need to consider the computational behaviour of the logic programming system, he needs only a declarative knowledge of the expected properties of the program. The previous reflections on symptoms and errors can be applied to Constraint Logic Programming ....
[Article contains additional citation context not shown here]
W. Drabent, S. Nadjm-Tehrani, and J. Ma/luszy'nski. Algorithmic Debugging with Assertions. In H. Abramson and M. H. Rogers, editors, Meta-Programming in Logic Programming, pages 501--522. MIT Press, 1989.
....if a node is erroneous, an oracle is used. Often the oracle is the programmer, who is asked questions about the validity of atoms, 4 The Journal of Functional and Logic Programming 1997 3 Naish A Declarative Debugging Scheme x3 though a runnable specification of the program can also be used [ET83, DL87, DNTM89, KKMH89]. This is particularly useful when the size of data structures makes questions difficult to comprehend. Figure 2 illustrates declarative debugging using a session of the NU Prolog Debugging Environment (NUDE) NDZ89] The top level interface of NUProlog is modified so the debugger can be entered ....
....missing answers in Prolog as follows. Each node in the tree contains a tag, mp (miss Prolog) a Prolog atom, and the set of computed answers for the atom. The implementation of erroneous checks to see if all correct answers were computed. This is done by asking the user incompleteness questions [Nai92, DNTM89, Per86]. An incomplete call has a valid instance that fails. If the call itself failed, then the user can simply be asked if the atom is valid (if it is ground) or satisfiable. Assuming a left to right computation rule, the children of a node containing atom A contain the atoms: fB i j H : GammaB 1 ; ....
[Article contains additional citation context not shown here]
Wlodek Drabent, Simin Nadjim-Tehrani, and Jan Maluszynski. Algorithmic debugging with assertions. In John W. Lloyd, editor, Meta-programming in Logic Programming. The MIT Press, Cambridge, MA, 1989.
....In this framework we can also recover Lloyd s approach ( 25, 24] which is based on the logical semantics of Clark s completion, SLDNF resolution and a notion of intended interpretation I such that no error means I is a model of the completed program. Another notion of error is used ([37, 14]) not completely covered atom (or weak insufficiency) It is an atom possibly with variables which has an instance which is an uncovered atom (i.e. an insufficiency) So this notion of error is weaker than insufficiency but it occurs in diagnosis algorithms (see below) in which the interaction ....
.... reduce the number of queries to the programmer is to store its previous answers, then it is no more invoked to answer to a query subsumed by a previous answer [39, 28, 7] A partial specification of the intended semantics can be given to the diagnoser in order to reduce again the number of queries [9, 14]. Drabent et al. 14] suggest to use assertions, which can be attached to the program predicates, as partial specification. In [13] an executable specification is used to generate test cases, locate bug and guide correction, using deductive and inductive inference techniques. The advantage of ....
[Article contains additional citation context not shown here]
W. Drabent, S. Nadjm-Tehrani, and J. Ma/luszy'nski. Algorithmic Debugging with Assertions. In H. Abramson and M. H. Rogers, editors, Meta-Programming in Logic Programming, pages 501--522. MIT Press, 1989.
.... execution visualizers (see, for example, 1] for a more comprehensive discussion of tools and possible debugging scenarios) In this paper we concentrate our attention on the particular issue of program validation and debugging via direct static and or dynamic checking of user provided assertions [17, 18, 8, 6, 30, 2]. Classical examples of assertions are the type declarations used in languages such as Godel [24] or Mercury [36] and in functional languages) But here, and encouraged by the capabilities of the currently available abstract interpreters, we depart in several ways from the traditional approaches. ....
....in our framework (see Figure 1) by a program 4 As oppossed to abstract incorrectness symptoms, which are the ones detected by compile time checking. 5 It is out of the scope of this paper to discuss how program diagnosis should be performed. However, techniques such as declarative debugging [35, 6, 17, 18] or abstract debugging [12, 13] may be applied. Report No. CLIP8 98.0 Using Global Analysis for Program Validation and Debugging 5 analyzer (the abstract interpreter) and an assertion comparator. Properties of the program are automatically derived by the analyzer module (the kind of analysis ....
[Article contains additional citation context not shown here]
W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic debugging with assertions. In H. Abramson and M.H.Rogers, editors, Meta-programming in Logic Programming, pages 501--522. MIT Press, 1989.
....generally, the problem is about the lack of provision of domain knowledge to the synthesizer (another recommendation by Green and Barstow [42] and has been perceived a while ago. Various proposed solutions are type declarations for the parameters [76] type assertions about the intended relation [28], properties of the intended relation [31] 32] integrity constraints about a set of intended relations [20] 21] and bias (all knowledge potentially useful for narrowing the search space [71] as generally used in ILP. Note that special care needs to be taken not to require complete knowledge ....
.... now arises as to whether cooperation and cross fertilization are possible with (other) branches of deduction based Software Engineering Some attempts at solving Software Engineering tasks with induction based techniques have been made, such as logic program synthesis and debugging [5] 23] [28] [43] 76] test case generation [4] and program verification [13] but there was no sign of actual cross fertilization. So what is the potential of such cooperation and cross fertilization One of the major problems we pointed out with the deduction based synthesis paradigm is due to the ....
[Article contains additional citation context not shown here]
Wlodek Drabent, Simin Nadjm-Tehrani, and Jan Maluszynski. Algorithmic debugging with assertions. In H. Abramson and M. H. Rogers (editors), Meta-Programming in Logic Programming: Proceedings of META'88, pages 501--521. The MIT Press.
No context found.
12 W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic debugging with assertions. In H. Abramson and M.H.Rogers, editors, Meta-programming in Logic Programming, pages 501-522. MIT Press, 1989.
No context found.
W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic debugging with assertions. In H. Abramson and M.H.Rogers, editors, Meta-programming in Logic Programming, pages 501-522. MIT Press, 1989.
No context found.
W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic debugging with assertions. In (H. Abramson and M.H.Rogers, editors, Meta-programming in Logic Programming, pages 501--522. MIT Press, 1989.
No context found.
W. Drabent, S. Nadjm-Tehrani, and J. Maluszynski. Algorithmic debugging with assertions. In H.Abramson and M.H.Rogers, editors, Meta-programming in Logic Programming. MIT Press, 1989.
No context found.
Drabent W., Nadjm-Tehrani S., Maluszy'nski J. , "Algorithmic Debugging with Assertions", in Meta-Programming in Logic Programming, Harvey Abramson and M.H. Rogers (eds.), MIT Press, 501-522, (1989).
First 50 documents
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC