hat-delta

Langue: en

Version: 259603 (debian - 07/07/09)

Section: 1 (Commandes utilisateur)

NAME

hat-delta - find a bug by algorithmic debugging, with delta debugging optimisations.

SYNOPSIS

hat-delta [-chv] [-d depth] [-f heuristicFunction] [-s sliceDepth] prog[.hat]

DESCRIPTION

hat-delta is an interactive tool for finding bugs in the trace of a Haskell program 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 yes if the reduction is correct with respect to your intentions, and 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.

OPTIONS

-c
Disable compression of the EDT based on reporting the same answer for several questions.
-d depth
Set the maximum depth hat-delta will consider making a jump into the EDT.
-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.
-h
Display help message and exit.
-s sliceDepth
Set the number of child connections hat-delta will follow when generating a program slice.
-v
Print hat-delta's version number, and exit.

INTERACTIVE COMMANDS

The hat-delta browser asks you questions, so the basic mode of interaction is to type answers:

yes
Yes, the equation looks correct by my understanding of the meaning of the function.
no
No, the equation looks incorrect. Given the displayed arguments, the function is returning the wrong result.

The following other commands are available. They each begin with a colon.

:show
Show the EDTs hat-detect is currently searching for bugs
:quit
Exit the interactive tool.
:help
Shows help text giving an overview of the commands available.
:source
Shows (in a separate window) the source code for the reduction currently being queried.
:anim
Start the hat-anim browser in a new window, beginning with the currently queried rediction.
:delta
or :split Start the hat-delta browser in a new window, beginning with the currently queried reduction.
:detect
Start the hat-detect browser in a new window, beginning with the currently queried reduction.
:explore
Start the hat-explore browser in a new window, beginning with the currently queried reduction.
:trail
Start a hat-trail browser in a new window, beginning with the currently queried reduction.
:set
Set an option in the form `:set option value`. Options are:

depthLimit Set the maximum depth hat-delta will consider making a jump into the EDT. Must be greater than 0.

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.

heuristic Set the heuristic function, as described in the Heuristic functions section.

HEURISTIC FUNCTIONS

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.

ZeroHeuristic
Constant 0.0
OneHeuristic
Constant 1.0
Correct
The number of correct evaluations of the slice.
Incorrect
The number of incorrect evaluations of the slice.
Add f1 f2
Add the values of f1 and f2.
Negate f
Negate the value of f.
Multiply f1 f2
Multiply the values of f1 and f2.
Invert f
Invert the value of f.

If no heuristic is specified, the system will use Negate (Multiply Correct (Invert (Add Correct Incorrect))).

FILES

/usr/bin/hat-delta

SEE ALSO

hmake(1), hat-trans(1), hat-detect(1), hat-stack(1), hat-observe(1), hat-trail(1)