[1-19] Explanation of Don't Know / Don't Care nondeterminism

> Could anybody give me the definitions of committed choice, don't
> know, and don't care nondeterminism, please?

Don't know/don't care nondeterminism:
If I say to a class of students ``Write all your names on this piece of
paper'' then I know that I want ALL the names, but I don't KNOW which
ORDER they will be written in.

If I say to a class of students ``One of you must clean the board
before the lesson'' then I only want ONE of them to do it, and I don't
CARE who.

Or, in an operating system, when I save a file in the editor, I don't
care which particular block of the disk the file is written on. But
once the OS has started writing the file to one block, I don't want it
to change its mind half-way through -- I want it to COMMIT to the
CHOICE it has made.

So don't know nondeterminism is what you get from Prolog's search rule
whereas don't care nondeterminism (sometimes called `indeterminism') is
what you would expect from an OS, or from ``Committed choice parallel
logic languages'' such as Parlog or FGHC. Committed choice is linked to
the idea of a `guard' or `commit' operator which is like the `cut' in
Prolog (but imagine having to have a cut at the begining of every
clause, so once you have selected it, you are committed to it and there
is no back-tracking).

Committed-choice and don't care --> you lose the link between
declarative (model-theoretic) and operational semantics which is one of
the nice things about Prolog.
Go Back Up

Go To Previous

Go To Next