.TH HAT-DELTA 1 local .SH NAME hat-delta \- find a bug by algorithmic debugging, with delta debugging optimisations. .SH SYNOPSIS .B hat-delta .RB [ \-chv ] .RB [ \-d .IR depth ] .RB [ \-f .IR heuristicFunction ] .RB [ \-s .IR sliceDepth ] prog[.hat] .SH DESCRIPTION .I hat-delta is an interactive tool for finding bugs in the trace of a Haskell program .I prog supplied as its argument. The user must answer a sequence of yes/no questions. Each question asked by hat-delta concerns the reduction of a function application to a value. You answer .I yes if the reduction is correct with respect to your intentions, and .I no otherwise. After a number of questions hat-delta reports an example equation which is the cause of the observed faulty behaviour - that is, which function definition is incorrect. .SH OPTIONS .TP .B -c Disable compression of the EDT based on reporting the same answer for several questions. .TP .B -d depth Set the maximum depth hat-delta will consider making a jump into the EDT. .TP .B -f function Set the heuristic function that hat-delta should use. Heuristic functions are input in the form of a Haskell data structure as discussed in the Heuristic functions section. .TP .B -h Display help message and exit. .TP .B -s sliceDepth Set the number of child connections hat-delta will follow when generating a program slice. .TP .B -v Print hat-delta's version number, and exit. .SH INTERACTIVE COMMANDS .PP The hat-delta browser asks you questions, so the basic mode of interaction is to type answers: .TP .B yes Yes, the equation looks correct by my understanding of the meaning of the function. .TP .B no No, the equation looks incorrect. Given the displayed arguments, the function is returning the wrong result. .PP The following other commands are available. They each begin with a colon. .TP .B :show Show the EDTs hat-detect is currently searching for bugs .TP .B :quit Exit the interactive tool. .TP .B :help Shows help text giving an overview of the commands available. .TP .B :source Shows (in a separate window) the source code for the reduction currently being queried. .TP .B :anim Start the hat-anim browser in a new window, beginning with the currently queried rediction. .TP .B :delta or .B :split Start the hat-delta browser in a new window, beginning with the currently queried reduction. .TP .B :detect Start the hat-detect browser in a new window, beginning with the currently queried reduction. .TP .B :explore Start the hat-explore browser in a new window, beginning with the currently queried reduction. .TP .B :trail Start a hat-trail browser in a new window, beginning with the currently queried reduction. .TP .B :set Set an option in the form `:set option value`. Options are:\n\ .B depthLimit Set the maximum depth hat-delta will consider making a jump into the EDT. Must be greater than 0. .B sliceDepth Set the number of child connections hat-delta will follow when generating a program slice. Must be positive. A depth of 0 indicates that the whole function definition should be used as a slice. .B heuristic Set the heuristic function, as described in the Heuristic functions section. .SH HEURISTIC FUNCTIONS .PP Heuristic functions calculate an estimate of how likely a particular program slice is to be the buggy one. They may be specified by the user in the form of a Haskell data structure using the following constructors. .TP .B ZeroHeuristic Constant 0.0 .TP .B OneHeuristic Constant 1.0 .TP .B Correct The number of correct evaluations of the slice. .TP .B Incorrect The number of incorrect evaluations of the slice. .TP .B Add f1 f2 Add the values of f1 and f2. .TP .B Negate f Negate the value of f. .TP .B Multiply f1 f2 Multiply the values of f1 and f2. .TP .B Invert f Invert the value of f. .PP If no heuristic is specified, the system will use Negate (Multiply Correct (Invert (Add Correct Incorrect))). .SH FILES .TP 25 .B @BINDIR@/hat-delta .SH "SEE ALSO" hmake(1), hat-trans(1), hat-detect(1), hat-stack(1), hat-observe(1), hat-trail(1)