Sketch API, some documentation
This commit is contained in:
parent
f013772522
commit
f59e9a1b9d
|
@ -33,10 +33,11 @@ Much of this text was written between 1986 and 1988 on Xerox 1108 and 1186 works
|
||||||
### Part Two: Into the wild wood
|
### Part Two: Into the wild wood
|
||||||
|
|
||||||
1. [Arboretum](Arboretum.html)
|
1. [Arboretum](Arboretum.html)
|
||||||
2. [Conception](Conception.html)
|
2. [Arden](Arden.html)
|
||||||
3. [Reimagining](Reimagining.html)
|
3. [KnacqTools](KnacqTools.html)
|
||||||
4. [Implementing](Implementing.html)
|
4. [Bialowieza](Bialowieza.html)
|
||||||
5. [Experience](Experience.html)
|
5. [Implementing](Implementing.html)
|
||||||
|
6. [Experience](Experience.html)
|
||||||
|
|
||||||
### Endmatter
|
### Endmatter
|
||||||
|
|
||||||
|
|
432
doc/Arboretum.md
432
doc/Arboretum.md
|
@ -1,7 +1,433 @@
|
||||||
# Arboretum
|
# Arboretum
|
||||||
|
|
||||||
**TODO**: To be scanned from chapter iv of the 21st June 1988 draft.
|
This chapter describes briefly an inference mechanism, implemented in
|
||||||
|
the Arboretum prototype; this is included here to show the results
|
||||||
|
achieved in the author's early work on explanation, on which it is hoped
|
||||||
|
to build in the current work. A fuller description of this mechanism,
|
||||||
|
and of the Arboretum prototype, will be found in \[Mott & Brooke 87\],
|
||||||
|
from which this chapter is largely drawn.
|
||||||
|
|
||||||

|
Arboretum was written in InterLisp-D\[4\] using LOOPS \[5\] object
|
||||||
|
oriented facilities, to allow people to manipulate DTree structures
|
||||||
|
through graphical representations: to build arbitrarily large knowledge
|
||||||
|
bases, to use these to provide answers to questions about objects in
|
||||||
|
domains admitting incomplete information - and to provide natural
|
||||||
|
language explanations of these answers. The inference process by which
|
||||||
|
answers are produced is shown as an animated graph. The user can ask the
|
||||||
|
system how the value of any particular feature was arrived at, and what
|
||||||
|
that value was. . It was developed for the Alvey DHSS Large Demonstrator
|
||||||
|
Project, and sought to meet early perceptions of the needs of DHSS
|
||||||
|
Adjudication Officers. Adjudication Officers decide claimants'
|
||||||
|
eligibility over a wide range of welfare benefits. There is a very large
|
||||||
|
volume of work to be done, so they work under considerable pressure.
|
||||||
|
|
||||||
*Arboretum screen showing a number of generated explanations. This picture was scanned from a 32 year old acetate slide, apologies for quality*
|
The Adjudication process within the DHSS has its own levels of authority
|
||||||
|
culminating in the
|
||||||
|
|
||||||
|
Office of the Chief Adjudication Officer. This monitors the quality of
|
||||||
|
the decision making of Adjudication Officers, issues written guidelines
|
||||||
|
to assist them in their decision making, and distributes information
|
||||||
|
about changes in the benefit rules.
|
||||||
|
|
||||||
|
These modifications occur frequently, both to correct local anomalies
|
||||||
|
and of course to reflect more substantial political changes in the
|
||||||
|
provision of welfare. A static support system could not be useful
|
||||||
|
because it would become outdated almost immediately. What is required is
|
||||||
|
a system that can be modified and updated easily by the officials in the
|
||||||
|
O.C.A.O.
|
||||||
|
|
||||||
|
The general context is then of a large organisation in which relatively
|
||||||
|
numerous junior officials apply extensive and frequently changed
|
||||||
|
legislation in limited time under the supervision of relatively few
|
||||||
|
senior officials. The task of an IKBS support system is to maintain and
|
||||||
|
if possible improve the decision making quality of the former and render
|
||||||
|
more effective the supervision exercised by the latter.
|
||||||
|
|
||||||
|
We designed a system to meet these perceived needs around the DTree
|
||||||
|
algorithm devised by Peter Mott. This algorithm interprets graphical
|
||||||
|
data-structures (called 'DTrees') as rules of a non-monotonic (default)
|
||||||
|
logic.
|
||||||
|
|
||||||
|
Our intention was that the system should access a legislative rule base
|
||||||
|
composed of such rules, should propose a decision for the case in
|
||||||
|
question, and should then draft a letter explaining that decision to the
|
||||||
|
claimant. If the case was straightforward the Adjudication Officer would
|
||||||
|
accept the suggestion offered by the machine. Otherwise (s)he could
|
||||||
|
study a graphically presented trace of the machine's inference process
|
||||||
|
to assist in formulating an alternative decision.
|
||||||
|
|
||||||
|
One of the most significant advantages we would claim for the system as
|
||||||
|
implemented is that it is extremely simple for relatively naive users to
|
||||||
|
build knowledge bases. Knowledge engineering with this system requires
|
||||||
|
no understanding of computer language, no very abstruse knowledge about
|
||||||
|
the machine, and no complex calculation of weightings and probabilities.
|
||||||
|
The logic is designed to facilitate a methodology which we call
|
||||||
|
Elicitation by Exception.
|
||||||
|
|
||||||
|
The knowledge engineer's task, using this methodology to build a rule,
|
||||||
|
is simply to ask: is a given predicate normally true? If it were true,
|
||||||
|
would it normally be a T sufficient condition? And having got this far,
|
||||||
|
is there anything at all which would overturn the decision? If nothing
|
||||||
|
could, the process terminates; but if there is some more abstruse factor
|
||||||
|
which could still cause a change of mind, then that is added as a new
|
||||||
|
condition and once more one asks if there is anything further that could
|
||||||
|
cause a change of mind. Thus we proceed down a conceptual tree where at
|
||||||
|
each level the decision just made is reversed.
|
||||||
|
|
||||||
|
Intuitively the deeper the level, the more unlikely the situations that
|
||||||
|
occupy that level. It is our suggestion that the structure of exceptions
|
||||||
|
that can explicitly be recovered by the knowledge engineer in this way
|
||||||
|
is what is implicitly and imperfectly represented by the certainty
|
||||||
|
factors in classical expert systems.
|
||||||
|
|
||||||
|
These trees can then be directly interpreted as rules by the DTree
|
||||||
|
algorithm, the root idea of which is that a decision has always been
|
||||||
|
made, there is always an answer available, but one which the system is
|
||||||
|
currently trying to refute. The eventual decision is simply the last one
|
||||||
|
made, the one that the system has failed to refute. At any point it
|
||||||
|
tries to "change its mind", and when it can no longer do so that is the
|
||||||
|
decision it delivers. After all, if there is nothing as yet unexamined
|
||||||
|
that could make you change your mind why deliberate further, while if
|
||||||
|
there is how may you legitimately stop? The idea of an alternating
|
||||||
|
'yes/no' with decision characterised simply by its position at the end
|
||||||
|
is a very old one indeed due to Thomas Hobbes (16\]. The emphasis on
|
||||||
|
trying to refute rather than trying to confirm is of course Popperian
|
||||||
|
(passim, but see for example his \[17\]).
|
||||||
|
|
||||||
|
Let us summarise how to read a DTree rule structure. The basic units are
|
||||||
|
nodes and the edges between them. An edge should always be read
|
||||||
|
downwards, and, when connecting different colours, as meaning 'unless'.
|
||||||
|
Thus the most basic structure is "hypothesis is false unless condition
|
||||||
|
is true":
|
||||||
|
|
||||||
|
Basic DTree
|
||||||
|
|
||||||
|
Hypothesis -
|
||||||
|
|
||||||
|
Condition +
|
||||||
|
|
||||||
|
fig 3: simplest possible rule Conjunctions are represented by columns of
|
||||||
|
nodes, only the last of which has the colour to be returned if all are
|
||||||
|
true and disjunctions by branches, each of which terminates in the
|
||||||
|
colour to be returned if any are true. These can be combined in any
|
||||||
|
fashion desired, although we consider it good practise to keep
|
||||||
|
individual rule structures small. This is shown in the figure below:
|
||||||
|
|
||||||
|
Example DTree
|
||||||
|
|
||||||
|
Root Node -
|
||||||
|
|
||||||
|
1st Conjunct -
|
||||||
|
|
||||||
|
2nd Conjunct +
|
||||||
|
|
||||||
|
1st Disjunct -
|
||||||
|
|
||||||
|
2nd Disjunct -
|
||||||
|
|
||||||
|
fig 4: example rule, showing syntax The rule would read: "(rootnode) is
|
||||||
|
false unless (first conjunct) is true and (second conjunct) is true, in
|
||||||
|
which case it is true unless either (first disjunct) or (second
|
||||||
|
disjunct) is true".
|
||||||
|
|
||||||
|
A DTree system contains at any time a number of features, objects and
|
||||||
|
nodes. In a LISP implementation these are litatoms equipped with
|
||||||
|
property lists; the LOOPS implementation is rather different but not in
|
||||||
|
any way that affects the underlying ideas.
|
||||||
|
|
||||||
|
A feature has the properties:
|
||||||
|
|
||||||
|
(methods DTreeRootnode default activeFlg)
|
||||||
|
|
||||||
|
where methods is the list of
|
||||||
|
methods that the feature applies to see if it holds of the given object,
|
||||||
|
DTreeRootnode holds a pointer to a DTree node if the feature is equipped
|
||||||
|
with one (else NIL), default holds the default value of the feature, and
|
||||||
|
activeFlg is simply a semaphore to prevent DTrees calling themselves.
|
||||||
|
|
||||||
|
A word more about the methods property. This may in principle hold a
|
||||||
|
list of any functions that are to be applied (in the order found) with
|
||||||
|
standard arguments by the feature when it is called. A feature may thus
|
||||||
|
be seen as a local "expert" whose task is to decide whether it holds of
|
||||||
|
a given object by applying the list of methods it has been supplied with
|
||||||
|
(this picture was suggested by Lenat \[18\]). However, for the sake of
|
||||||
|
simplicity, we shall henceforth assume, that the methods property is
|
||||||
|
just the list (DoTree Default) and describe the algorithms accordingly.
|
||||||
|
|
||||||
|
A DTree for a feature is a list of nodes. A node has the properties:
|
||||||
|
|
||||||
|
(feature, colour, children, parent)
|
||||||
|
|
||||||
|
Feature points to a feature of the
|
||||||
|
system, colour is either Yes or No, children point to successor nodes of
|
||||||
|
the node (if any) and parent to the unique predescessor node (NIL for
|
||||||
|
the origin of the DTree).
|
||||||
|
|
||||||
|
An object is just a litatom. The system updates the property list of the
|
||||||
|
object.
|
||||||
|
|
||||||
|
The top-level function call is (Decide Feat feature object). This first
|
||||||
|
looks on the property list of object. If it finds (feature. Yes) or
|
||||||
|
(feature . No) it returns Yes or No as the case may be. Otherwise it
|
||||||
|
calls the features's Dtree if there is one (using DoTree) or if not,
|
||||||
|
returns a default value (using Default). Default may be a complicated
|
||||||
|
function (indeed it may initiate a substantial train of activity) but
|
||||||
|
for present purposes it may be thought of as simply recovering 'Yes or
|
||||||
|
'No from the default property of the feature.
|
||||||
|
|
||||||
|
The function of DoTree is just clerical, the work is done by DSearch.
|
||||||
|
This function induces a subtree of the DTree, the leaf nodes of which
|
||||||
|
are exactly those nodes from which no exit was possible. They represent
|
||||||
|
the points at which the system can no longer "change its mind". We call
|
||||||
|
them stickNodes, and DSearch passes them to the function Decide.
|
||||||
|
|
||||||
|
DSearch uses left to right depth first search. which corresponds well
|
||||||
|
with the conceptual structure of the DTree, exploring each possibility
|
||||||
|
exhaustively as it arises; but other traversals are not ruled out.
|
||||||
|
|
||||||
|
This only leaves the function Decide. This simply scans the nodes
|
||||||
|
submitted to it. If all of them have colour No then Decide returns No.
|
||||||
|
But if even one has colour Yes then Yes is returned instead. This
|
||||||
|
represents the fact that our domain rules provide sufficient conditions
|
||||||
|
for access to a benefit. If you qualify by any of the criteria then the
|
||||||
|
overall decision is Yes.
|
||||||
|
|
||||||
|
## The Explanation System
|
||||||
|
|
||||||
|
The explanation facility is the feature of the system which is of most
|
||||||
|
interest to us here. Arboretum had two innovations in this field. The
|
||||||
|
first was the Natural Language justification of decisions, which is the
|
||||||
|
central matter of interest to us; but the graphical display, and in
|
||||||
|
particular the animated search trace, also contributed to the user's
|
||||||
|
ease of comprehension of the systems decisions.
|
||||||
|
|
||||||
|
This system provided the equivalent of the more traditional "ask how"
|
||||||
|
and "ask why" queries provided by other inference mechanisms. The user
|
||||||
|
could see why a question was being asked, simply by looking at the
|
||||||
|
display and seeing that the answer was needed in the evaluation of the
|
||||||
|
current rule, whose result was needed by the preceding rule, and so on
|
||||||
|
back to the question originally asked. To ask how a particular value was
|
||||||
|
found, after completion of a run, we could point to a node representing
|
||||||
|
the feature in question and select "How?" from the left button menu. The
|
||||||
|
machine would respond by printing out a message saying whether the value
|
||||||
|
was supplied by the user, evaluated from a DTree, or taken from a
|
||||||
|
default. If a DTree had been called, it was displayed.
|
||||||
|
|
||||||
|
However, the natural language explanation system was vitally important
|
||||||
|
to the usefulness of the system. Without it, the user must effectively
|
||||||
|
take the decisions of the machine on faith, and in a domain with
|
||||||
|
imperfect information that is dangerous; furthermore, the machine is
|
||||||
|
reduced to giving yes/no answers. We could ask: 'is this person entitled
|
||||||
|
to benefit', but not 'which benefit is this person entitled to'. Of
|
||||||
|
course the system with explanation could still only give 'yes/no'
|
||||||
|
decisions, because that is the nature of the logic; but now it could
|
||||||
|
say: 'yes, this person is entitled to benefit; and the benefit they are
|
||||||
|
entitled to is mobility allowance'.
|
||||||
|
|
||||||
|
The explanation system depended on and exploited the fact that DTrees
|
||||||
|
are structured through exceptions from the very general to the more
|
||||||
|
abstruse and particular; and that, in consequence, any path through a
|
||||||
|
rule structure follows a line of coherent argument, again from the
|
||||||
|
general to the particular. Thus a sticking node on the DTree for a
|
||||||
|
feature both records a decision and, by its position in the DTree,
|
||||||
|
implies an explanation of why that decision was made.
|
||||||
|
|
||||||
|
Consequently, we attached to each node in the system a text fragment to
|
||||||
|
explain the consequence for the feature whose rule the node was in, if
|
||||||
|
that node were a sticking node. This explanation fragment was a piece of
|
||||||
|
canned text, written by the knowledge engineer.
|
||||||
|
|
||||||
|
When writing fragments, the knowledge engineer did not need to look
|
||||||
|
beyond the DTree that was being edited. The task was simply to consider
|
||||||
|
a node and attach text saying why the feature of the DTree obtained (or
|
||||||
|
did not) when that node was conceived as the only sticking node. The
|
||||||
|
structure of the system itself then ensured that in the final text, the
|
||||||
|
fragment would follow sensibly from the preceding one.
|
||||||
|
|
||||||
|
We discussed and experimented with several algorithms for the recovery
|
||||||
|
of explanations. The one we used worked as follows: when a search
|
||||||
|
resulted in a 'no' decision (ineligible for a benefit) then we
|
||||||
|
concatenated the explanation fragments from the deepest sticking node in
|
||||||
|
each succesive tree on the search path. The reason was that this
|
||||||
|
represents the "nearest" that the claimant got to succeeding in the
|
||||||
|
claim. This follows from the structure of the DTree, the deeper nodes
|
||||||
|
represent more abstruse conditions: to reach them at all more general
|
||||||
|
requirements for eligibility must have been met.
|
||||||
|
|
||||||
|
Furthermore, the information given in this explanation should be
|
||||||
|
sufficient to assist in the preparation of an appeal, if the claimant
|
||||||
|
felt there were further relevant facts which hadn't been considered -
|
||||||
|
and this was, indeed, precisely our intention. It is, we think, part of
|
||||||
|
the notion of relevance that it is the "nearest miss" that should be
|
||||||
|
described in such cases.
|
||||||
|
|
||||||
|
In the case of a 'yes' decision we chose the opposite approach and
|
||||||
|
selected the shallowest sticking node available. This was partly because
|
||||||
|
the claimant who succeeds is less concerned about why, but mostly
|
||||||
|
because it is not relevant to describe how a long and tortuous inference
|
||||||
|
path finally delivered 'yes' when a much shorter less involved one did
|
||||||
|
so too. Again this seems in accord with ordinary ideas of relevance.
|
||||||
|
|
||||||
|
To provide a small worked example of an explanation generated by the
|
||||||
|
system, which is yet large enough to give some flavour, let us assume
|
||||||
|
our knowledge base contains the following rules:
|
||||||
|
|
||||||
|
DTree for Entitled to Widow's Allowance
|
||||||
|
|
||||||
|
Entitled to Widov's Allowance -
|
||||||
|
|
||||||
|
Satisfies conditions for Widoy's Allowance +
|
||||||
|
|
||||||
|
>26 Yeeks Killed husband - Dead - bereaved -
|
||||||
|
|
||||||
|
-
|
||||||
|
|
||||||
|
in prison - Levering with
|
||||||
|
|
||||||
|
in prison - Living Yith
|
||||||
|
|
||||||
|
Partner -
|
||||||
|
|
||||||
|
fig 1: Rule for "Entitled to Widow's Allowance"
|
||||||
|
|
||||||
|
DTree for Living with Partner
|
||||||
|
|
||||||
|
Living with Partner -
|
||||||
|
|
||||||
|
Remarried +
|
||||||
|
|
||||||
|
Cohabiting +
|
||||||
|
|
||||||
|
fig 2: rule for "Living with Partner"
|
||||||
|
|
||||||
|
which, together, partially encode
|
||||||
|
the following legislation fragment, from the Social Security Act 1975
|
||||||
|
\[6\], chapter 14, section 24, as amended by the Social Security
|
||||||
|
(Miscellaneous Provisions) Act 1977, chapter 5, .section 22(2). This
|
||||||
|
reads:
|
||||||
|
|
||||||
|
24.-(1) A woman who has been widowed shall be entitled to widow's
|
||||||
|
allowance at the weekly rate specified in relation thereto in Schedule
|
||||||
|
4, Part I, paragraph 5, if -
|
||||||
|
|
||||||
|
\(a) she was under pensionable age at the time when her late husband
|
||||||
|
died, or he was then not entitled to a Category A retirement pension
|
||||||
|
(section 28); and
|
||||||
|
|
||||||
|
\(b) her late husband satisfied the contribution requirement for a
|
||||||
|
widow's allowance specified in Schedule 3, Part I, paragraph 4.
|
||||||
|
|
||||||
|
\(2) The period for which widow's allowance shall be payable shall be the
|
||||||
|
26 weeks next following the husband's death:
|
||||||
|
|
||||||
|
Provided that the allowance shall not be payable for any period after
|
||||||
|
the widow's death or remarriage or for any period during which she and a
|
||||||
|
man to whom she is not married are living together as man and wife.
|
||||||
|
|
||||||
|
Let us further assume we have entered at least the following explanation
|
||||||
|
fragments, each providing an explanation simply in the context of the
|
||||||
|
rule in which it appears:
|
||||||
|
|
||||||
|
1\. on the node for "Living with Partner" in the rule for "Entitled to
|
||||||
|
Widow's Allowance", the text:
|
||||||
|
|
||||||
|
> Although you satisfy the basic conditions for eligibility for Widow's
|
||||||
|
Allowance, you are not eligible, as we understand that you now have
|
||||||
|
another partner."
|
||||||
|
|
||||||
|
2\. on the node for "Remarried" in the rule for "Living with Partner",
|
||||||
|
the text:
|
||||||
|
|
||||||
|
> "We understand that you have remarried."
|
||||||
|
|
||||||
|
Of course we would also enter text fragments for all the other nodes in
|
||||||
|
our rules. Now assume we are dealing with the case of a widow whose
|
||||||
|
previous husband had paid his National Insurance stamps as required, and
|
||||||
|
who had not reached pensionable age at the time of his death. Assume
|
||||||
|
further that, within the first six months of her bereavement, our
|
||||||
|
claimant has remarried. The text that would be generated would be:
|
||||||
|
|
||||||
|
> Dear \[name of claimant\]
|
||||||
|
|
||||||
|
> Although you satisfy the basic conditions for eligibility for Widow's
|
||||||
|
Allowance, you are not eligible, as we understand that you now have
|
||||||
|
another partner. We understand that you have remarried.
|
||||||
|
|
||||||
|
> Yours Sincerely
|
||||||
|
|
||||||
|
> \[your name\]
|
||||||
|
|
||||||
|
There are a number of points to notice. Firstly, we could easily have
|
||||||
|
written far more friendly and less formal fragments; for example, We
|
||||||
|
could have written "we wish you all the best in your new marriage". The
|
||||||
|
formality here is simply to help in understanding the mechanical nature
|
||||||
|
of the concatenation process.
|
||||||
|
|
||||||
|
Much more significantly, note that although the inference engine must
|
||||||
|
have known or discovered, for example, that her previous husband had
|
||||||
|
indeed been regular and conscientious about his national insurance
|
||||||
|
contributions for it to have reached its conclusions, this information
|
||||||
|
has been 'included out of the explanation. It is irrelevant. It is clear
|
||||||
|
that, if our claimant wished to make an appeal, her grounds for doing so
|
||||||
|
would have to be that the information provided had been incorrect, and
|
||||||
|
that she had not, in fact remarried.
|
||||||
|
|
||||||
|
## Explanation: a discussion
|
||||||
|
|
||||||
|
{\*\* Write something (preferably rather a lot) here \*\*}
|
||||||
|
|
||||||
|
This ability to abstract relevant information from an inference engine's
|
||||||
|
backtrace represents a partial solution to the problem described in the
|
||||||
|
preceding chapters.
|
||||||
|
|
||||||
|
## References:
|
||||||
|
|
||||||
|
3\. Xerox Corporation: InterLisp Reference Manual ( Xerox Corporation,
|
||||||
|
1985)
|
||||||
|
|
||||||
|
4\. Daniel Bobrow & Mark Stefik: The LOOPS Manual (Xerox Corporation,
|
||||||
|
1983)
|
||||||
|
|
||||||
|
5\. Mark Richer & William Clancey: "Guidon Watch: A Graphic Interface for
|
||||||
|
Viewing a knowledge-Based System" IEEE Computer Gaphics and Applications
|
||||||
|
vol 5 no 11,1985
|
||||||
|
|
||||||
|
6\. Social Security Act 1975: Her Majesty's Stationery Office, London,
|
||||||
|
1975 Social Security (Miscellanous Provisions) Act 1977: Her Majesty's
|
||||||
|
Stationery Office, London, 1977
|
||||||
|
|
||||||
|
7\. D. Neligan: Social Security Case Law: Digest of Commisioners'
|
||||||
|
Decisions (Her Majesty's Stationary Office, London, 1979)
|
||||||
|
|
||||||
|
8\. Mark Richer: "An Evaluation of Expert System Development Tools"
|
||||||
|
Expert Systems vol 3 no 3 1986
|
||||||
|
|
||||||
|
9\. William Swartout: "XPLAIN: a System for Creating and Explaining
|
||||||
|
Expert Consulting Programs" Artificial Intelligence 21, 1983
|
||||||
|
|
||||||
|
10\. Peter Jackson: "Explaining Expert Systems Behaviour" paper given at
|
||||||
|
Workshop on Explanation, Alvey IKBS Expert System Theme 20th-21st March
|
||||||
|
1986: available from the Alvey Directorate.
|
||||||
|
|
||||||
|
11\. William Clancey: "The Epistemology of a Rule-Based Expert System - a
|
||||||
|
Framework for Explanation" Artificial Intelligence 20, 1983
|
||||||
|
|
||||||
|
12\. E. H. Shortliffe: MYCIN: Computer Based Medical Consultations
|
||||||
|
(Elsevier 1976)
|
||||||
|
|
||||||
|
13\. P. Hammond: "APES: A user manual" Research Report DOC 82/9, Imperial
|
||||||
|
College, London
|
||||||
|
|
||||||
|
14\. W. van Melle, E. Shortliffe & G. Buchanan: "EMYCIN: A Knowledge
|
||||||
|
Engineer's tool for constructing Rule-Based Expert Systems" (in Rule
|
||||||
|
Based Expert Systems ed Buchanan, G. & Shortliffe, E., Addison-Wesley,
|
||||||
|
1984)
|
||||||
|
|
||||||
|
15\. Diane Warner Hasling, William Clancey & Glenn Rennels: "Strategic
|
||||||
|
Explanations for a Diagnostic Consulting System" International Journal
|
||||||
|
of Man Machine Studies 20, 1984
|
||||||
|
|
||||||
|
16\. Thomas Hobbes: Leviathan (ed C. B. MacPherson, Penguin 1968)
|
||||||
|
|
||||||
|
17\. Karl Popper: Conjectures and Refutations (Routledge Kegan Paul,
|
||||||
|
1963)
|
||||||
|
|
318
doc/Arden.md
Normal file
318
doc/Arden.md
Normal file
|
@ -0,0 +1,318 @@
|
||||||
|
# Arden
|
||||||
|
|
||||||
|
## Why Arden?
|
||||||
|
|
||||||
|
It was something of tradition in the InterLisp-D community to give successive versions of a project codenames with successive alphabetical initials. So the first version would have a name starting 'A', the second 'B', and so on. The first prototype for Wildwood was called 'Arden', because it starts with an 'A', and because it is a fantastical dream-like forest depicted in Shakespeare's play 'As You Like It', which if I recall correctly was performed as a promenade performance by the Duke's Theatre in Lancaster in that year. While Arboretum - that carefully tended garden of trees - had been, as I've said, largely Peter's in concept, Wildwood would be mine.
|
||||||
|
|
||||||
|
## Background
|
||||||
|
|
||||||
|
After work had finished on [Arboretum](Arboretum.html), I started at once to think how the ideas we had implemented could be improved. However, academic work is a job, and I was a significant part of the programming resource of the Alvey DHSS Large Demonstrator Project. I was switched to a different task within the project, the 'Policy Prototype', a constraints-based system intended to assist DHSS policy officers in the formulation of new policy.
|
||||||
|
|
||||||
|
From my perspective, the great frustration of my time with the Alvey project was that, at the very start, we'd had a meeting at which people had been asked whether they could program or whether they could not. I, of course, could. But, actually, at least on the academic teams within the project, only a few, and only junior people admitted that they could (and, strictly, this was mostly honest - those who said they couldn't, couldn't). But this left us with a very small pool of developers, and a much larger pool of analysts.
|
||||||
|
|
||||||
|
Peter Mott and I had worked largely experimentally, developing our own design insights on the creation of Arboretum. I should say that while the implementation was mine, the ideas and the insights were mostly Peter's. But we worked together as a great team, and felt that we were building something which was genuinely powerful and exciting. Arboretum was completed in less than a year, between September 1986 and June 1987, and it worked. It felt like a success. We had achieved something.
|
||||||
|
|
||||||
|
While we were doing this, an enormous and ambitious specification was being written for the Policy Prototype by people who had little idea how it might be implemented. Three people, myself and two others, were assigned to build it. It was rapidly apparent that the specification was in many areas incomplete, in some areas inconsistent, and the bits that were implementable were vastly too expensive of compute power to run efficiently on our hardware. Over the course of a year, there were repeated demonstrations within the project of progress so far, and there was always disappointment from the senior members of the team - again, especially on the academic side.
|
||||||
|
|
||||||
|
It's worth saying that we were well supported by the commercial team in ICL, of whom I'd especially note Charlie Portman, Chris Burton and Nick Perry. Chris was a very old hand: he'd worked, as an apprentice, on the original build of the [Manchester Mark 1 ('Baby')](https://en.wikipedia.org/wiki/Manchester_Mark_1), and, later, after he had retired from ICL, would go on to lead the team which rebuilt it. Charlie was a very senior software person and also an excellent man manager. He'd led the operating systems design team within ICL, and had been responsible for (among many other things) the [VME operating system environment](https://en.wikipedia.org/wiki/ICL_VME). Nick was the geek's geek: someone we would now recognise as, like me, very autistic. I learned a lot from these people, and greatly appreciated their support.
|
||||||
|
|
||||||
|
As deadlines approached for the Policy Prototype, the three of us who were actually building it entered what would now be known as a four month 'crunch' - trying to build a system with too little manpower on inadequate hardware under immense pressure. I worked regularly sixteen hours a day, including weekends. However, by the time the Alvey conference was due, major parts of the prototype didn't work, and the parts which did work were so slow as to be unusable.
|
||||||
|
|
||||||
|
This wasn't a pleasant experience.
|
||||||
|
|
||||||
|
It was under these conditions that I started on the design of Wildwood, and most of what there is of this chapter were written. I still had access to InterLisp-D, which is a wonderful programming environment; I built a prototype I called Arden, which implemented some of the ideas; Arden was to be the first iteration of the Wildwood project. And I started writing this thesis, in support of it.
|
||||||
|
|
||||||
|
But the pressure of the Policy Prototype had been too much; I burned out, left the project, and worked for a year as a research fellow in the Department of Computing at Lancaster, building a noddy natural language query interface for relational databases in Prolog, which worked but didn't excite me. I lost access to the InterLisp-D machines, and consequently work on Arden came to an end. I don't believe I now have even floppy disks of the source code, and I certainly don't have a machine which could read them.
|
||||||
|
|
||||||
|
In 1989, after the year building the query interface, Peter Mott, myself, and some other ex-students of Peter's set up a company, Common Knowledge, to commercialise the work we'd done on Arboretum, because we thought it was both interesting and important, but the commercial partners in the Alvey DHSS Large Demonstrator Project were not interested in taking it further. ICL was entering a spiral of decline, and had no energy for experimental projects; I think they too felt burned by the experience of the Policy Prototype.
|
||||||
|
|
||||||
|
At Common Knowledge, I was appointed Managing Director and also techincal lead. It was in this period that we built KnacqTools, described in a separate chapter. The Wildwood project went on hold and has remained so until 2020.
|
||||||
|
|
||||||
|
## The ideas in Arden: starting to play
|
||||||
|
|
||||||
|
**TODO**: write something.
|
||||||
|
|
||||||
|
## Explanation is a social behaviour
|
||||||
|
|
||||||
|
**TODO**: write something.
|
||||||
|
|
||||||
|
## Games are social behaviours which can be modeled
|
||||||
|
|
||||||
|
**TODO**: write something.
|
||||||
|
|
||||||
|
## Explanation can be viewed as a game-playing activity
|
||||||
|
|
||||||
|
One of the models we frequently use in real life situations where a
|
||||||
|
decision has to be made on the basis of uncertain or conflicting
|
||||||
|
evidence is the dialectic model. In this, one authority proposes a
|
||||||
|
decision, giving an argument which supports it; another authority brings
|
||||||
|
forward objections to the argument, and may propose an alternative
|
||||||
|
decision. This process may continue recursively until there is no
|
||||||
|
further argument which can be advanced.
|
||||||
|
|
||||||
|
This is the model which underlies both academic and parliamentary
|
||||||
|
debate, and the proceedings of the law courts. The model supports a
|
||||||
|
'decision support' conception of the Expert System's role, rather than a
|
||||||
|
'decision-making' one: the user is placed in a position analogous to
|
||||||
|
that of a jury, considering the arguments presented by the advocates,
|
||||||
|
and making a decision on the basis of them.
|
||||||
|
|
||||||
|
We can view this dialectic approach to decision support as a game, with
|
||||||
|
a fixed set of legitimate moves.
|
||||||
|
|
||||||
|
## Hintikka's game theoretic logic
|
||||||
|
|
||||||
|
This approach seems very promising. It may tie in well with
|
||||||
|
game-theoretic logics such as those of Ehrenfeucht \[Ehrenfeucht 61\]
|
||||||
|
and Hintikka \[Hintikka & Kulas, 83 and passim\] Of course, these logics
|
||||||
|
are strictly monotonic. Problem areas where monotonic logics are
|
||||||
|
adequate are of limited interest, and unlikely to give rise to
|
||||||
|
interesting problems of explanation; but it should be possible to
|
||||||
|
develop a provable semantics for a non-monotonic extension. The decision
|
||||||
|
procedure for a game theoretic logic should not raise any particular
|
||||||
|
difficulties; the 'games' are zero sum, under complete information.
|
||||||
|
|
||||||
|
However, the adoption of a game-theoretic explanation mechanism does not
|
||||||
|
commit us to adopting a game theoretic logic; so (although interesting)
|
||||||
|
this line will only be pursued if it proves easy.
|
||||||
|
|
||||||
|
## The object of an explanation game
|
||||||
|
|
||||||
|
If explanation is to be seen as a game, what is to be its objective? If
|
||||||
|
we were to take a positivist position, we might say that the purpose of
|
||||||
|
explanation was to convey understanding; then the game would be a
|
||||||
|
co-operative one, with the object of both players being to achieve this
|
||||||
|
end.
|
||||||
|
|
||||||
|
But seeing that we have rejected this position, the object of an
|
||||||
|
explanation must be to persuade.
|
||||||
|
|
||||||
|
Furthermore, if we accept the argument advanced in chapter iii above
|
||||||
|
that explanation is hegemonistic, the explanee may be seen to have an
|
||||||
|
object in resisting explanation. So now we can have s clear idea of what
|
||||||
|
the object of an explanation game will be: The explainer will win, if
|
||||||
|
the explainee is brought to the point of no longer being able to produce
|
||||||
|
a rational reason for resisting the explanation. Otherwise, if when all
|
||||||
|
the supporting arguments the explainer can bring to bear have been
|
||||||
|
advanced the explainee is still unconvinced, then the explainee has won.
|
||||||
|
|
||||||
|
'Rational', here, is of course a fix. In an explanation situation
|
||||||
|
involving two human beings, the explainee might continue to resist even
|
||||||
|
if there were no 'rational’ reason for doing so. This situation would be
|
||||||
|
non-deterministic, though, and too difficult for me to deal with.
|
||||||
|
|
||||||
|
## Legitimate moves in an explanation game
|
||||||
|
|
||||||
|
A possible set of legitimate moves which might be used as the basis for
|
||||||
|
an explanation generator in a non-monotonic expert system might be:
|
||||||
|
|
||||||
|
### PRESENT
|
||||||
|
|
||||||
|
- present a case, supported by an argument, which may include one or
|
||||||
|
more assumptions.
|
||||||
|
|
||||||
|
Generally, in a non-monotonic system, we are dealing with incomplete
|
||||||
|
information \[and indeed, this is generally the case in 'real life').
|
||||||
|
Consequently, any conclusion is likely to be based upon one or more
|
||||||
|
unsupported assumptions.
|
||||||
|
|
||||||
|
\[starting move\]
|
||||||
|
|
||||||
|
### DOUBT
|
||||||
|
|
||||||
|
- challenge one or more of the assumptions.
|
||||||
|
|
||||||
|
\[basic response to PRESENT, REBUT, or COUNTER-EXAMPLE\]
|
||||||
|
|
||||||
|
### DOUBT-IRRELEVANT
|
||||||
|
|
||||||
|
- claim that if the assumption were false, it would make no difference
|
||||||
|
to the decision.
|
||||||
|
|
||||||
|
\[blocking response to DOUBT\]
|
||||||
|
|
||||||
|
### ASSUMPTION-PROBABLE
|
||||||
|
|
||||||
|
- claim that the assumption is probable on the basis of prior
|
||||||
|
experience.
|
||||||
|
|
||||||
|
\[weaker response to DOUBT\]
|
||||||
|
|
||||||
|
### REBUT
|
||||||
|
|
||||||
|
- this is essentially a PRESENT, but of an argument based on the
|
||||||
|
opposite assumption to that challenged in the preceding DOUBT.
|
||||||
|
|
||||||
|
\[response to a PASS following a DOUBT\]
|
||||||
|
|
||||||
|
### COUNTER-EXAMPLE
|
||||||
|
|
||||||
|
- present a known case similar to the current one, where the predicate
|
||||||
|
of the assumption which has been challenged holds the opposite value.
|
||||||
|
|
||||||
|
\[response to ASSUMPTION-PROBABLE\]
|
||||||
|
|
||||||
|
### PASS
|
||||||
|
|
||||||
|
- a null move in response to any other move. Forces other player to
|
||||||
|
move. In some sense this might be seen as equivalent to saying 'so
|
||||||
|
what': the opponent has made a move, but there is nothing further which
|
||||||
|
the player wants to advance at this stage. This move is inherently
|
||||||
|
dangerous, because the game ends when the two players PASS in succesive
|
||||||
|
moves.
|
||||||
|
|
||||||
|
\[weakest response to anything\]
|
||||||
|
|
||||||
|
Obviously, in human dialectic, other legitimate moves attack the
|
||||||
|
validity of
|
||||||
|
|
||||||
|
inference steps; but for a machine implementation, we can assume all
|
||||||
|
inference steps are in themselves valid.
|
||||||
|
|
||||||
|
Implementing a game theoretic approach to explanation
|
||||||
|
======================================================
|
||||||
|
|
||||||
|
Playing the explanation game
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
The game playing algorithm required to implement an explanation system
|
||||||
|
need not be sophisticated: indeed, it must not be too sophisticated, at
|
||||||
|
least as a game player. Consider: a good game playing algorithm looks
|
||||||
|
ahead to calculate what the probable responses to the moves it makes
|
||||||
|
will be. If it sees that one possible move leads to a dead end, it will
|
||||||
|
not make that move.
|
||||||
|
|
||||||
|
But in generating an explanation, we need to explore any path whose
|
||||||
|
conclusion is not immediately obvious. So either the game-playing
|
||||||
|
algorithm should not look ahead more than, perhaps, one ply, or else, if
|
||||||
|
it does so, then when it sees a 'closed path', it should print out a
|
||||||
|
message something of the form:
|
||||||
|
|
||||||
|
Critic: Oh yes, I see that even if the assumption that Carol hasTwoLegs
|
||||||
|
is false it would not affect the assumption that Carol canSwim.
|
||||||
|
|
||||||
|
Initially, however, I propose to implement a game-playing algorithm
|
||||||
|
which simply makes the strongest move available to the player, based on
|
||||||
|
a scoring scheme which does not look ahead. The game will proceed
|
||||||
|
something like tennis; the player who last made a PRESENT or REBUT move
|
||||||
|
will have the initiative, the 'serve' as it were, and need only defend
|
||||||
|
to win. The other player must try to 'break' this 'serve', by forcing a
|
||||||
|
DOUBT...PASS sequence, which allows a REBUT play. Dialectic explanation
|
||||||
|
- the two player game.
|
||||||
|
|
||||||
|
With this schema, we can mechanize a dialectic about a case. The game is
|
||||||
|
played by the machine against itself; 'agents' in the machine play moves
|
||||||
|
in turn until both sequentially pass, or until the user interrupts. Each
|
||||||
|
move produces a natural language statement on the display. Ideally, the
|
||||||
|
user could interrupt at any time, either to request further
|
||||||
|
justification for a move, or to halt the process.
|
||||||
|
|
||||||
|
As a (simple) example of what might be produced, here is some sample
|
||||||
|
output from a very crude prototype system :
|
||||||
|
|
||||||
|
User: K- \#\$ Carol Explain \#\$CanSwim)
|
||||||
|
|
||||||
|
\[send to the object called Carol a message asking for an explanation of
|
||||||
|
the value Carol holds for the predicate named
|
||||||
|
|
||||||
|
CanSwim \]
|
||||||
|
|
||||||
|
Consultant: What is the value of CanSwim for Carol?
|
||||||
|
|
||||||
|
\[ 'Consultant' and 'Critic' are the names given to the two 'agents' -
|
||||||
|
the knowledge base doesn't contain the relevant information, so it must
|
||||||
|
be inferred. \]
|
||||||
|
|
||||||
|
User: Don't know...
|
||||||
|
|
||||||
|
Consultant: I found that CanSwim was true of Carol by Default using the
|
||||||
|
following assumptions:
|
||||||
|
|
||||||
|
(I assumed \#ScanSwim was true of Carol)
|
||||||
|
|
||||||
|
My reasons are:
|
||||||
|
|
||||||
|
CanSwim is true of most Mammals; Carol is a Mammal; Therefore it is
|
||||||
|
probable that CanSwim
|
||||||
|
|
||||||
|
is true of Carol.
|
||||||
|
|
||||||
|
Critic: The assumption that CanSwim is true is unsafe: Henry is also of
|
||||||
|
type (s) (Person) but
|
||||||
|
|
||||||
|
CanSwim is false of Henry.
|
||||||
|
|
||||||
|
This is output from Wildwood version Arden, my first prototype
|
||||||
|
object-based inference mechanism. It DOES NOT implement the game-playing
|
||||||
|
model given.
|
||||||
|
|
||||||
|
This example shows 'Consultant' PRESENTing a case based on a single
|
||||||
|
assumption, and 'Critic' responding with a COUNTER-EXAMPLE - a move
|
||||||
|
which would not be legal under the scheme given. However, this should
|
||||||
|
give some indication of how the idea might be implemented.
|
||||||
|
|
||||||
|
{**TODO**: figure}
|
||||||
|
|
||||||
|
Interaction Trace
|
||||||
|
|
||||||
|
User: \[QU\] Is it true that Carol canSwim?
|
||||||
|
|
||||||
|
Consultant: \[PR\] I assume that carol canSwim.
|
||||||
|
|
||||||
|
User: \[DO\] I doubt that...
|
||||||
|
|
||||||
|
Consultant: \[AP\] It is probable that Carol canSwim because:
|
||||||
|
|
||||||
|
can Swim is true of most mammals, and Carol is a mammal
|
||||||
|
|
||||||
|
Options... Counter
|
||||||
|
|
||||||
|
QUery
|
||||||
|
|
||||||
|
Andrew Present
|
||||||
|
|
||||||
|
Belinda Doubt
|
||||||
|
|
||||||
|
Charles Doubl relevant Diana Assumption Prob Frederick Rebut
|
||||||
|
|
||||||
|
Ginny Counter-Exam Henry PAss
|
||||||
|
|
||||||
|
Tris James Katharine Leonard
|
||||||
|
|
||||||
|
User:
|
||||||
|
|
||||||
|
fig 5.1: Showing how the Critic could guide the user in interacting with
|
||||||
|
the Consultant. The Consultant has made an 'Assumption Probable' move
|
||||||
|
(marked \[AP\]). The Critic is guiding the user firstly by greying the
|
||||||
|
illegal moves, and secondly by indicating with a tick the preferred
|
||||||
|
move. The user has selected this (shown by the boxing on the options
|
||||||
|
menu) and the Critic has opened a menu of all the objects which might be
|
||||||
|
advanced as valid counter-examples, again indicating the preferred choice.
|
||||||
|
|
||||||
|
The simple model described above has not achieved all that we want,
|
||||||
|
however. The machine, in the form of the agent Consultant' has attempted
|
||||||
|
to explain to itself, wearing its 'Critic' hat. The user's role has
|
||||||
|
simply been that of passive observer. The first enhancement would be to
|
||||||
|
give the user control of the 'critic'; but because the user cannot have
|
||||||
|
the same view of the knowledge base as the machine, the Critic will have
|
||||||
|
to guide the user, firstly by showing the user the legal moves
|
||||||
|
available, and second by finding supplementary information to support
|
||||||
|
these moves.
|
||||||
|
|
||||||
|
Explanation as conversation - a three player game
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
A better design still might be to allow the machine to carry on its
|
||||||
|
dialogue as before, but to allow the user to interrupt and challenge
|
||||||
|
either of the agents. It seems probable that the most interesting moves
|
||||||
|
the user could make would be DOUBT, and also COUNTER-EXAMPLE, where the
|
||||||
|
user could present an example case not previously known to the machine.
|
||||||
|
Now the user can sit back and watch, if the conversation brings out the
|
||||||
|
points which seem relevant; but equally the user can intervene to steer
|
||||||
|
the conversation.
|
||||||
|
|
||||||
|
These ideas had not, needless to say, yet been implemented in 1988 when
|
||||||
|
I moved onto working on KnacqTools.
|
||||||
|
|
||||||
|
I hope that they will be implemented as I develop the ideas in this
|
||||||
|
document.
|
7
doc/Bialowieza.md
Normal file
7
doc/Bialowieza.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Bialowieza
|
||||||
|
|
||||||
|
{not yet written. To cover development of the Clojure Wildwood library, and the thinking and design which develops as I do it}
|
||||||
|
|
||||||
|
## Why Bialowieza?
|
||||||
|
|
||||||
|
Bialowieza is the second iteration of the Wildwood engine, and this following convention its name should start with 'B'. [Białowieża](https://en.wikipedia.org/wiki/Bia%C5%82owie%C5%BCa) is Europe's last great wild wood, and it is currently under threat.
|
|
@ -1,3 +0,0 @@
|
||||||
# Conception
|
|
||||||
|
|
||||||
**TODO**: To be scanned from chapter v of the 21st June 1988 draft.
|
|
15
doc/KnacqTools.md
Normal file
15
doc/KnacqTools.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# KnacqTools
|
||||||
|
|
||||||
|
## Background
|
||||||
|
|
||||||
|
KnacqTools ('Knowledge Acquisition Toolkit") was essentially a productisation of the ideas developed in [Arboretum](Arboretum.html). It was written in C, originally for Acorn's RISC OS operating system, and later ported to UNIX. The only major innovation of KnacqTools was that it was able to transform DTree knowledge structures into the rule languages of a number of contemporary 'expert system' inference engines.
|
||||||
|
|
||||||
|
Thus the expected use of KnacqTools was not to run an inference process itself (although of course it could do this), but to allow a knowledge engineer, using Peter Mott's 'elicitation by exception' technique, which I and others had polished in the field, to enter DTrees elicited from domain experts, compile these DTrees into production rules, and export those prodution rules to the selected expert system package for deployment.
|
||||||
|
|
||||||
|
KnacqTools was briefly successful between about 1990 and 1992. The commercially important UNIX port was never fully debugged.
|
||||||
|
|
||||||
|
## KnacqTools and explanation
|
||||||
|
|
||||||
|
While the KnacqTools engine had a complete implementation of Arboretum's explanation system and generated high quality explanations itself, the exported production rule sets (depending on the selected expert system package) was not necessarily capable of the same degree of explanation.
|
||||||
|
|
||||||
|
There were no new innovations in explanation, in KnacqTools.
|
|
@ -1,3 +0,0 @@
|
||||||
# Reimagining
|
|
||||||
|
|
||||||
{not yet written. To cover development of the Clojure Wildwood library, and the thinking and design which develops as I do it}
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html PUBLIC ""
|
<!DOCTYPE html PUBLIC ""
|
||||||
"">
|
"">
|
||||||
<html><head><meta charset="UTF-8" /><title>Against Truth</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 current"><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Conception.html"><div class="inner"><span>Conception</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="Reimagining.html"><div class="inner"><span>Reimagining</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#against-truth" name="against-truth"></a>Against Truth</h1>
|
<html><head><meta charset="UTF-8" /><title>Against Truth</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 current"><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#against-truth" name="against-truth"></a>Against Truth</h1>
|
||||||
<p><a href="mailto:simon@journeyman.cc">Simon Brooke</a></p>
|
<p><a href="mailto:simon@journeyman.cc">Simon Brooke</a></p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>Hey, what IS truth, man? [Beeblebrox, quoted in [Adams, 1978]]</p>
|
<p>Hey, what IS truth, man? [Beeblebrox, quoted in [Adams, 1978]]</p>
|
||||||
|
@ -26,8 +26,9 @@
|
||||||
<h3><a href="#part-two-into-the-wild-wood" name="part-two-into-the-wild-wood"></a>Part Two: Into the wild wood</h3>
|
<h3><a href="#part-two-into-the-wild-wood" name="part-two-into-the-wild-wood"></a>Part Two: Into the wild wood</h3>
|
||||||
<ol>
|
<ol>
|
||||||
<li><a href="Arboretum.html">Arboretum</a></li>
|
<li><a href="Arboretum.html">Arboretum</a></li>
|
||||||
<li><a href="Conception.html">Conception</a></li>
|
<li><a href="Arden.html">Arden</a></li>
|
||||||
<li><a href="Reimagining.html">Reimagining</a></li>
|
<li><a href="KnacqTools.html">KnacqTools</a></li>
|
||||||
|
<li><a href="Bialowieza.html">Bialowieza</a></li>
|
||||||
<li><a href="Implementing.html">Implementing</a></li>
|
<li><a href="Implementing.html">Implementing</a></li>
|
||||||
<li><a href="Experience.html">Experience</a></li>
|
<li><a href="Experience.html">Experience</a></li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html PUBLIC ""
|
<!DOCTYPE html PUBLIC ""
|
||||||
"">
|
"">
|
||||||
<html><head><meta charset="UTF-8" /><title>Analysis</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 current"><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Conception.html"><div class="inner"><span>Conception</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="Reimagining.html"><div class="inner"><span>Reimagining</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#analysis" name="analysis"></a>Analysis</h1>
|
<html><head><meta charset="UTF-8" /><title>Analysis</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 current"><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#analysis" name="analysis"></a>Analysis</h1>
|
||||||
<h2><a href="#accounts-from-the-philosophy-of-science" name="accounts-from-the-philosophy-of-science"></a>Accounts from the Philosophy of Science</h2>
|
<h2><a href="#accounts-from-the-philosophy-of-science" name="accounts-from-the-philosophy-of-science"></a>Accounts from the Philosophy of Science</h2>
|
||||||
<p>(Towards another chapter. What l want to do is: ,</p>
|
<p>(Towards another chapter. What l want to do is: ,</p>
|
||||||
<ol>
|
<ol>
|
||||||
|
|
|
@ -1,6 +1,123 @@
|
||||||
<!DOCTYPE html PUBLIC ""
|
<!DOCTYPE html PUBLIC ""
|
||||||
"">
|
"">
|
||||||
<html><head><meta charset="UTF-8" /><title>Arboretum</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 current"><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Conception.html"><div class="inner"><span>Conception</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="Reimagining.html"><div class="inner"><span>Reimagining</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#arboretum" name="arboretum"></a>Arboretum</h1>
|
<html><head><meta charset="UTF-8" /><title>Arboretum</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 current"><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#arboretum" name="arboretum"></a>Arboretum</h1>
|
||||||
<p><strong>TODO</strong>: To be scanned from chapter iv of the 21st June 1988 draft.</p>
|
<p>This chapter describes briefly an inference mechanism, implemented in the Arboretum prototype; this is included here to show the results achieved in the author’s early work on explanation, on which it is hoped to build in the current work. A fuller description of this mechanism, and of the Arboretum prototype, will be found in [Mott & Brooke 87], from which this chapter is largely drawn.</p>
|
||||||
<p><img src="../img/Arboretum_screen.png" alt="Arboretum screen view showing sample explanations" /></p>
|
<p>Arboretum was written in InterLisp-D[4] using LOOPS [5] object oriented facilities, to allow people to manipulate DTree structures through graphical representations: to build arbitrarily large knowledge bases, to use these to provide answers to questions about objects in domains admitting incomplete information - and to provide natural language explanations of these answers. The inference process by which answers are produced is shown as an animated graph. The user can ask the system how the value of any particular feature was arrived at, and what that value was. . It was developed for the Alvey DHSS Large Demonstrator Project, and sought to meet early perceptions of the needs of DHSS Adjudication Officers. Adjudication Officers decide claimants’ eligibility over a wide range of welfare benefits. There is a very large volume of work to be done, so they work under considerable pressure.</p>
|
||||||
<p><em>Arboretum screen showing a number of generated explanations. This picture was scanned from a 32 year old acetate slide, apologies for quality</em></p></div></div></div></body></html>
|
<p>The Adjudication process within the DHSS has its own levels of authority culminating in the</p>
|
||||||
|
<p>Office of the Chief Adjudication Officer. This monitors the quality of the decision making of Adjudication Officers, issues written guidelines to assist them in their decision making, and distributes information about changes in the benefit rules.</p>
|
||||||
|
<p>These modifications occur frequently, both to correct local anomalies and of course to reflect more substantial political changes in the provision of welfare. A static support system could not be useful because it would become outdated almost immediately. What is required is a system that can be modified and updated easily by the officials in the O.C.A.O.</p>
|
||||||
|
<p>The general context is then of a large organisation in which relatively numerous junior officials apply extensive and frequently changed legislation in limited time under the supervision of relatively few senior officials. The task of an IKBS support system is to maintain and if possible improve the decision making quality of the former and render more effective the supervision exercised by the latter.</p>
|
||||||
|
<p>We designed a system to meet these perceived needs around the DTree algorithm devised by Peter Mott. This algorithm interprets graphical data-structures (called ‘DTrees’) as rules of a non-monotonic (default) logic.</p>
|
||||||
|
<p>Our intention was that the system should access a legislative rule base composed of such rules, should propose a decision for the case in question, and should then draft a letter explaining that decision to the claimant. If the case was straightforward the Adjudication Officer would accept the suggestion offered by the machine. Otherwise (s)he could study a graphically presented trace of the machine’s inference process to assist in formulating an alternative decision.</p>
|
||||||
|
<p>One of the most significant advantages we would claim for the system as implemented is that it is extremely simple for relatively naive users to build knowledge bases. Knowledge engineering with this system requires no understanding of computer language, no very abstruse knowledge about the machine, and no complex calculation of weightings and probabilities. The logic is designed to facilitate a methodology which we call Elicitation by Exception.</p>
|
||||||
|
<p>The knowledge engineer’s task, using this methodology to build a rule, is simply to ask: is a given predicate normally true? If it were true, would it normally be a T sufficient condition? And having got this far, is there anything at all which would overturn the decision? If nothing could, the process terminates; but if there is some more abstruse factor which could still cause a change of mind, then that is added as a new condition and once more one asks if there is anything further that could cause a change of mind. Thus we proceed down a conceptual tree where at each level the decision just made is reversed.</p>
|
||||||
|
<p>Intuitively the deeper the level, the more unlikely the situations that occupy that level. It is our suggestion that the structure of exceptions that can explicitly be recovered by the knowledge engineer in this way is what is implicitly and imperfectly represented by the certainty factors in classical expert systems.</p>
|
||||||
|
<p>These trees can then be directly interpreted as rules by the DTree algorithm, the root idea of which is that a decision has always been made, there is always an answer available, but one which the system is currently trying to refute. The eventual decision is simply the last one made, the one that the system has failed to refute. At any point it tries to “change its mind”, and when it can no longer do so that is the decision it delivers. After all, if there is nothing as yet unexamined that could make you change your mind why deliberate further, while if there is how may you legitimately stop? The idea of an alternating ‘yes/no’ with decision characterised simply by its position at the end is a very old one indeed due to Thomas Hobbes (16]. The emphasis on trying to refute rather than trying to confirm is of course Popperian (passim, but see for example his [17]).</p>
|
||||||
|
<p>Let us summarise how to read a DTree rule structure. The basic units are nodes and the edges between them. An edge should always be read downwards, and, when connecting different colours, as meaning ‘unless’. Thus the most basic structure is “hypothesis is false unless condition is true”:</p>
|
||||||
|
<p>Basic DTree</p>
|
||||||
|
<p>Hypothesis -</p>
|
||||||
|
<p>Condition +</p>
|
||||||
|
<p>fig 3: simplest possible rule Conjunctions are represented by columns of nodes, only the last of which has the colour to be returned if all are true and disjunctions by branches, each of which terminates in the colour to be returned if any are true. These can be combined in any fashion desired, although we consider it good practise to keep individual rule structures small. This is shown in the figure below:</p>
|
||||||
|
<p>Example DTree</p>
|
||||||
|
<p>Root Node -</p>
|
||||||
|
<p>1st Conjunct -</p>
|
||||||
|
<p>2nd Conjunct +</p>
|
||||||
|
<p>1st Disjunct -</p>
|
||||||
|
<p>2nd Disjunct -</p>
|
||||||
|
<p>fig 4: example rule, showing syntax The rule would read: “(rootnode) is false unless (first conjunct) is true and (second conjunct) is true, in which case it is true unless either (first disjunct) or (second disjunct) is true”.</p>
|
||||||
|
<p>A DTree system contains at any time a number of features, objects and nodes. In a LISP implementation these are litatoms equipped with property lists; the LOOPS implementation is rather different but not in any way that affects the underlying ideas.</p>
|
||||||
|
<p>A feature has the properties:</p>
|
||||||
|
<pre><code>(methods DTreeRootnode default activeFlg)
|
||||||
|
</code></pre>
|
||||||
|
<p>where methods is the list of methods that the feature applies to see if it holds of the given object, DTreeRootnode holds a pointer to a DTree node if the feature is equipped with one (else NIL), default holds the default value of the feature, and activeFlg is simply a semaphore to prevent DTrees calling themselves.</p>
|
||||||
|
<p>A word more about the methods property. This may in principle hold a list of any functions that are to be applied (in the order found) with standard arguments by the feature when it is called. A feature may thus be seen as a local “expert” whose task is to decide whether it holds of a given object by applying the list of methods it has been supplied with (this picture was suggested by Lenat [18]). However, for the sake of simplicity, we shall henceforth assume, that the methods property is just the list (DoTree Default) and describe the algorithms accordingly.</p>
|
||||||
|
<p>A DTree for a feature is a list of nodes. A node has the properties:</p>
|
||||||
|
<pre><code>(feature, colour, children, parent)
|
||||||
|
</code></pre>
|
||||||
|
<p>Feature points to a feature of the system, colour is either Yes or No, children point to successor nodes of the node (if any) and parent to the unique predescessor node (NIL for the origin of the DTree).</p>
|
||||||
|
<p>An object is just a litatom. The system updates the property list of the object.</p>
|
||||||
|
<p>The top-level function call is (Decide Feat feature object). This first looks on the property list of object. If it finds (feature. Yes) or (feature . No) it returns Yes or No as the case may be. Otherwise it calls the features’s Dtree if there is one (using DoTree) or if not, returns a default value (using Default). Default may be a complicated function (indeed it may initiate a substantial train of activity) but for present purposes it may be thought of as simply recovering ’Yes or ’No from the default property of the feature.</p>
|
||||||
|
<p>The function of DoTree is just clerical, the work is done by DSearch. This function induces a subtree of the DTree, the leaf nodes of which are exactly those nodes from which no exit was possible. They represent the points at which the system can no longer “change its mind”. We call them stickNodes, and DSearch passes them to the function Decide.</p>
|
||||||
|
<p>DSearch uses left to right depth first search. which corresponds well with the conceptual structure of the DTree, exploring each possibility exhaustively as it arises; but other traversals are not ruled out.</p>
|
||||||
|
<p>This only leaves the function Decide. This simply scans the nodes submitted to it. If all of them have colour No then Decide returns No. But if even one has colour Yes then Yes is returned instead. This represents the fact that our domain rules provide sufficient conditions for access to a benefit. If you qualify by any of the criteria then the overall decision is Yes.</p>
|
||||||
|
<h2><a href="#the-explanation-system" name="the-explanation-system"></a>The Explanation System</h2>
|
||||||
|
<p>The explanation facility is the feature of the system which is of most interest to us here. Arboretum had two innovations in this field. The first was the Natural Language justification of decisions, which is the central matter of interest to us; but the graphical display, and in particular the animated search trace, also contributed to the user’s ease of comprehension of the systems decisions.</p>
|
||||||
|
<p>This system provided the equivalent of the more traditional “ask how” and “ask why” queries provided by other inference mechanisms. The user could see why a question was being asked, simply by looking at the display and seeing that the answer was needed in the evaluation of the current rule, whose result was needed by the preceding rule, and so on back to the question originally asked. To ask how a particular value was found, after completion of a run, we could point to a node representing the feature in question and select “How?” from the left button menu. The machine would respond by printing out a message saying whether the value was supplied by the user, evaluated from a DTree, or taken from a default. If a DTree had been called, it was displayed.</p>
|
||||||
|
<p>However, the natural language explanation system was vitally important to the usefulness of the system. Without it, the user must effectively take the decisions of the machine on faith, and in a domain with imperfect information that is dangerous; furthermore, the machine is reduced to giving yes/no answers. We could ask: ‘is this person entitled to benefit’, but not ‘which benefit is this person entitled to’. Of course the system with explanation could still only give ‘yes/no’ decisions, because that is the nature of the logic; but now it could say: ‘yes, this person is entitled to benefit; and the benefit they are entitled to is mobility allowance’.</p>
|
||||||
|
<p>The explanation system depended on and exploited the fact that DTrees are structured through exceptions from the very general to the more abstruse and particular; and that, in consequence, any path through a rule structure follows a line of coherent argument, again from the general to the particular. Thus a sticking node on the DTree for a feature both records a decision and, by its position in the DTree, implies an explanation of why that decision was made.</p>
|
||||||
|
<p>Consequently, we attached to each node in the system a text fragment to explain the consequence for the feature whose rule the node was in, if that node were a sticking node. This explanation fragment was a piece of canned text, written by the knowledge engineer.</p>
|
||||||
|
<p>When writing fragments, the knowledge engineer did not need to look beyond the DTree that was being edited. The task was simply to consider a node and attach text saying why the feature of the DTree obtained (or did not) when that node was conceived as the only sticking node. The structure of the system itself then ensured that in the final text, the fragment would follow sensibly from the preceding one.</p>
|
||||||
|
<p>We discussed and experimented with several algorithms for the recovery of explanations. The one we used worked as follows: when a search resulted in a ‘no’ decision (ineligible for a benefit) then we concatenated the explanation fragments from the deepest sticking node in each succesive tree on the search path. The reason was that this represents the “nearest” that the claimant got to succeeding in the claim. This follows from the structure of the DTree, the deeper nodes represent more abstruse conditions: to reach them at all more general requirements for eligibility must have been met.</p>
|
||||||
|
<p>Furthermore, the information given in this explanation should be sufficient to assist in the preparation of an appeal, if the claimant felt there were further relevant facts which hadn’t been considered - and this was, indeed, precisely our intention. It is, we think, part of the notion of relevance that it is the “nearest miss” that should be described in such cases.</p>
|
||||||
|
<p>In the case of a ‘yes’ decision we chose the opposite approach and selected the shallowest sticking node available. This was partly because the claimant who succeeds is less concerned about why, but mostly because it is not relevant to describe how a long and tortuous inference path finally delivered ‘yes’ when a much shorter less involved one did so too. Again this seems in accord with ordinary ideas of relevance.</p>
|
||||||
|
<p>To provide a small worked example of an explanation generated by the system, which is yet large enough to give some flavour, let us assume our knowledge base contains the following rules:</p>
|
||||||
|
<p>DTree for Entitled to Widow’s Allowance</p>
|
||||||
|
<p>Entitled to Widov’s Allowance -</p>
|
||||||
|
<p>Satisfies conditions for Widoy’s Allowance +</p>
|
||||||
|
<p>>26 Yeeks Killed husband - Dead - bereaved -</p>
|
||||||
|
<p>-</p>
|
||||||
|
<p>in prison - Levering with</p>
|
||||||
|
<p>in prison - Living Yith</p>
|
||||||
|
<p>Partner -</p>
|
||||||
|
<p>fig 1: Rule for “Entitled to Widow’s Allowance”</p>
|
||||||
|
<p>DTree for Living with Partner</p>
|
||||||
|
<p>Living with Partner -</p>
|
||||||
|
<p>Remarried +</p>
|
||||||
|
<p>Cohabiting +</p>
|
||||||
|
<p>fig 2: rule for “Living with Partner”</p>
|
||||||
|
<p>which, together, partially encode the following legislation fragment, from the Social Security Act 1975 [6], chapter 14, section 24, as amended by the Social Security (Miscellaneous Provisions) Act 1977, chapter 5, .section 22(2). This reads:</p>
|
||||||
|
<pre><code>24.-(1) A woman who has been widowed shall be entitled to widow's
|
||||||
|
allowance at the weekly rate specified in relation thereto in Schedule
|
||||||
|
4, Part I, paragraph 5, if -
|
||||||
|
|
||||||
|
\(a) she was under pensionable age at the time when her late husband
|
||||||
|
died, or he was then not entitled to a Category A retirement pension
|
||||||
|
(section 28); and
|
||||||
|
|
||||||
|
\(b) her late husband satisfied the contribution requirement for a
|
||||||
|
widow's allowance specified in Schedule 3, Part I, paragraph 4.
|
||||||
|
|
||||||
|
\(2) The period for which widow's allowance shall be payable shall be the
|
||||||
|
26 weeks next following the husband's death:
|
||||||
|
|
||||||
|
Provided that the allowance shall not be payable for any period after
|
||||||
|
the widow's death or remarriage or for any period during which she and a
|
||||||
|
man to whom she is not married are living together as man and wife.
|
||||||
|
</code></pre>
|
||||||
|
<p>Let us further assume we have entered at least the following explanation fragments, each providing an explanation simply in the context of the rule in which it appears:</p>
|
||||||
|
<p>1. on the node for “Living with Partner” in the rule for “Entitled to Widow’s Allowance”, the text:</p>
|
||||||
|
<blockquote>
|
||||||
|
<p>Although you satisfy the basic conditions for eligibility for Widow’s Allowance, you are not eligible, as we understand that you now have another partner."</p>
|
||||||
|
</blockquote>
|
||||||
|
<p>2. on the node for “Remarried” in the rule for “Living with Partner”, the text:</p>
|
||||||
|
<blockquote>
|
||||||
|
<p>“We understand that you have remarried.”</p>
|
||||||
|
</blockquote>
|
||||||
|
<p>Of course we would also enter text fragments for all the other nodes in our rules. Now assume we are dealing with the case of a widow whose previous husband had paid his National Insurance stamps as required, and who had not reached pensionable age at the time of his death. Assume further that, within the first six months of her bereavement, our claimant has remarried. The text that would be generated would be:</p>
|
||||||
|
<blockquote>
|
||||||
|
<p>Dear [name of claimant]</p>
|
||||||
|
<p>Although you satisfy the basic conditions for eligibility for Widow’s Allowance, you are not eligible, as we understand that you now have another partner. We understand that you have remarried.</p>
|
||||||
|
<p>Yours Sincerely</p>
|
||||||
|
<p>[your name]</p>
|
||||||
|
</blockquote>
|
||||||
|
<p>There are a number of points to notice. Firstly, we could easily have written far more friendly and less formal fragments; for example, We could have written “we wish you all the best in your new marriage”. The formality here is simply to help in understanding the mechanical nature of the concatenation process.</p>
|
||||||
|
<p>Much more significantly, note that although the inference engine must have known or discovered, for example, that her previous husband had indeed been regular and conscientious about his national insurance contributions for it to have reached its conclusions, this information has been ’included out of the explanation. It is irrelevant. It is clear that, if our claimant wished to make an appeal, her grounds for doing so would have to be that the information provided had been incorrect, and that she had not, in fact remarried.</p>
|
||||||
|
<h2><a href="#explanation-a-discussion" name="explanation-a-discussion"></a>Explanation: a discussion</h2>
|
||||||
|
<p>{** Write something (preferably rather a lot) here **}</p>
|
||||||
|
<p>This ability to abstract relevant information from an inference engine’s backtrace represents a partial solution to the problem described in the preceding chapters.</p>
|
||||||
|
<h2><a href="#references-" name="references-"></a>References:</h2>
|
||||||
|
<p>3. Xerox Corporation: InterLisp Reference Manual ( Xerox Corporation, 1985)</p>
|
||||||
|
<p>4. Daniel Bobrow & Mark Stefik: The LOOPS Manual (Xerox Corporation, 1983)</p>
|
||||||
|
<p>5. Mark Richer & William Clancey: “Guidon Watch: A Graphic Interface for Viewing a knowledge-Based System” IEEE Computer Gaphics and Applications vol 5 no 11,1985</p>
|
||||||
|
<p>6. Social Security Act 1975: Her Majesty’s Stationery Office, London, 1975 Social Security (Miscellanous Provisions) Act 1977: Her Majesty’s Stationery Office, London, 1977</p>
|
||||||
|
<p>7. D. Neligan: Social Security Case Law: Digest of Commisioners’ Decisions (Her Majesty’s Stationary Office, London, 1979)</p>
|
||||||
|
<p>8. Mark Richer: “An Evaluation of Expert System Development Tools” Expert Systems vol 3 no 3 1986</p>
|
||||||
|
<p>9. William Swartout: “XPLAIN: a System for Creating and Explaining Expert Consulting Programs” Artificial Intelligence 21, 1983</p>
|
||||||
|
<p>10. Peter Jackson: “Explaining Expert Systems Behaviour” paper given at Workshop on Explanation, Alvey IKBS Expert System Theme 20th-21st March 1986: available from the Alvey Directorate.</p>
|
||||||
|
<p>11. William Clancey: “The Epistemology of a Rule-Based Expert System - a Framework for Explanation” Artificial Intelligence 20, 1983</p>
|
||||||
|
<p>12. E. H. Shortliffe: MYCIN: Computer Based Medical Consultations (Elsevier 1976)</p>
|
||||||
|
<p>13. P. Hammond: “APES: A user manual” Research Report DOC 82/9, Imperial College, London</p>
|
||||||
|
<p>14. W. van Melle, E. Shortliffe & G. Buchanan: “EMYCIN: A Knowledge Engineer’s tool for constructing Rule-Based Expert Systems” (in Rule Based Expert Systems ed Buchanan, G. & Shortliffe, E., Addison-Wesley, 1984)</p>
|
||||||
|
<p>15. Diane Warner Hasling, William Clancey & Glenn Rennels: “Strategic Explanations for a Diagnostic Consulting System” International Journal of Man Machine Studies 20, 1984</p>
|
||||||
|
<p>16. Thomas Hobbes: Leviathan (ed C. B. MacPherson, Penguin 1968)</p>
|
||||||
|
<p>17. Karl Popper: Conjectures and Refutations (Routledge Kegan Paul, 1963)</p></div></div></div></body></html>
|
119
docs/codox/Arden.html
Normal file
119
docs/codox/Arden.html
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
<!DOCTYPE html PUBLIC ""
|
||||||
|
"">
|
||||||
|
<html><head><meta charset="UTF-8" /><title>Arden</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 current"><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#arden" name="arden"></a>Arden</h1>
|
||||||
|
<h2><a href="#why-arden-" name="why-arden-"></a>Why Arden?</h2>
|
||||||
|
<p>It was something of tradition in the InterLisp-D community to give successive versions of a project codenames with successive alphabetical initials. So the first version would have a name starting ‘A’, the second ‘B’, and so on. The first prototype for Wildwood was called ‘Arden’, because it starts with an ‘A’, and because it is a fantastical dream-like forest depicted in Shakespeare’s play ‘As You Like It’, which if I recall correctly was performed as a promenade performance by the Duke’s Theatre in Lancaster in that year. While Arboretum - that carefully tended garden of trees - had been, as I’ve said, largely Peter’s in concept, Wildwood would be mine.</p>
|
||||||
|
<h2><a href="#background" name="background"></a>Background</h2>
|
||||||
|
<p>After work had finished on <a href="Arboretum.html">Arboretum</a>, I started at once to think how the ideas we had implemented could be improved. However, academic work is a job, and I was a significant part of the programming resource of the Alvey DHSS Large Demonstrator Project. I was switched to a different task within the project, the ‘Policy Prototype’, a constraints-based system intended to assist DHSS policy officers in the formulation of new policy.</p>
|
||||||
|
<p>From my perspective, the great frustration of my time with the Alvey project was that, at the very start, we’d had a meeting at which people had been asked whether they could program or whether they could not. I, of course, could. But, actually, at least on the academic teams within the project, only a few, and only junior people admitted that they could (and, strictly, this was mostly honest - those who said they couldn’t, couldn’t). But this left us with a very small pool of developers, and a much larger pool of analysts.</p>
|
||||||
|
<p>Peter Mott and I had worked largely experimentally, developing our own design insights on the creation of Arboretum. I should say that while the implementation was mine, the ideas and the insights were mostly Peter’s. But we worked together as a great team, and felt that we were building something which was genuinely powerful and exciting. Arboretum was completed in less than a year, between September 1986 and June 1987, and it worked. It felt like a success. We had achieved something.</p>
|
||||||
|
<p>While we were doing this, an enormous and ambitious specification was being written for the Policy Prototype by people who had little idea how it might be implemented. Three people, myself and two others, were assigned to build it. It was rapidly apparent that the specification was in many areas incomplete, in some areas inconsistent, and the bits that were implementable were vastly too expensive of compute power to run efficiently on our hardware. Over the course of a year, there were repeated demonstrations within the project of progress so far, and there was always disappointment from the senior members of the team - again, especially on the academic side.</p>
|
||||||
|
<p>It’s worth saying that we were well supported by the commercial team in ICL, of whom I’d especially note Charlie Portman, Chris Burton and Nick Perry. Chris was a very old hand: he’d worked, as an apprentice, on the original build of the <a href="https://en.wikipedia.org/wiki/Manchester_Mark_1">Manchester Mark 1 (‘Baby’)</a>, and, later, after he had retired from ICL, would go on to lead the team which rebuilt it. Charlie was a very senior software person and also an excellent man manager. He’d led the operating systems design team within ICL, and had been responsible for (among many other things) the <a href="https://en.wikipedia.org/wiki/ICL_VME">VME operating system environment</a>. Nick was the geek’s geek: someone we would now recognise as, like me, very autistic. I learned a lot from these people, and greatly appreciated their support.</p>
|
||||||
|
<p>As deadlines approached for the Policy Prototype, the three of us who were actually building it entered what would now be known as a four month ‘crunch’ - trying to build a system with too little manpower on inadequate hardware under immense pressure. I worked regularly sixteen hours a day, including weekends. However, by the time the Alvey conference was due, major parts of the prototype didn’t work, and the parts which did work were so slow as to be unusable.</p>
|
||||||
|
<p>This wasn’t a pleasant experience.</p>
|
||||||
|
<p>It was under these conditions that I started on the design of Wildwood, and most of what there is of this chapter were written. I still had access to InterLisp-D, which is a wonderful programming environment; I built a prototype I called Arden, which implemented some of the ideas; Arden was to be the first iteration of the Wildwood project. And I started writing this thesis, in support of it.</p>
|
||||||
|
<p>But the pressure of the Policy Prototype had been too much; I burned out, left the project, and worked for a year as a research fellow in the Department of Computing at Lancaster, building a noddy natural language query interface for relational databases in Prolog, which worked but didn’t excite me. I lost access to the InterLisp-D machines, and consequently work on Arden came to an end. I don’t believe I now have even floppy disks of the source code, and I certainly don’t have a machine which could read them.</p>
|
||||||
|
<p>In 1989, after the year building the query interface, Peter Mott, myself, and some other ex-students of Peter’s set up a company, Common Knowledge, to commercialise the work we’d done on Arboretum, because we thought it was both interesting and important, but the commercial partners in the Alvey DHSS Large Demonstrator Project were not interested in taking it further. ICL was entering a spiral of decline, and had no energy for experimental projects; I think they too felt burned by the experience of the Policy Prototype.</p>
|
||||||
|
<p>At Common Knowledge, I was appointed Managing Director and also techincal lead. It was in this period that we built KnacqTools, described in a separate chapter. The Wildwood project went on hold and has remained so until 2020.</p>
|
||||||
|
<h2><a href="#the-ideas-in-arden-starting-to-play" name="the-ideas-in-arden-starting-to-play"></a>The ideas in Arden: starting to play</h2>
|
||||||
|
<p><strong>TODO</strong>: write something.</p>
|
||||||
|
<h2><a href="#explanation-is-a-social-behaviour" name="explanation-is-a-social-behaviour"></a>Explanation is a social behaviour</h2>
|
||||||
|
<p><strong>TODO</strong>: write something.</p>
|
||||||
|
<h2><a href="#games-are-social-behaviours-which-can-be-modeled" name="games-are-social-behaviours-which-can-be-modeled"></a>Games are social behaviours which can be modeled</h2>
|
||||||
|
<p><strong>TODO</strong>: write something.</p>
|
||||||
|
<h2><a href="#explanation-can-be-viewed-as-a-game-playing-activity" name="explanation-can-be-viewed-as-a-game-playing-activity"></a>Explanation can be viewed as a game-playing activity</h2>
|
||||||
|
<p>One of the models we frequently use in real life situations where a decision has to be made on the basis of uncertain or conflicting evidence is the dialectic model. In this, one authority proposes a decision, giving an argument which supports it; another authority brings forward objections to the argument, and may propose an alternative decision. This process may continue recursively until there is no further argument which can be advanced.</p>
|
||||||
|
<p>This is the model which underlies both academic and parliamentary debate, and the proceedings of the law courts. The model supports a ‘decision support’ conception of the Expert System’s role, rather than a ‘decision-making’ one: the user is placed in a position analogous to that of a jury, considering the arguments presented by the advocates, and making a decision on the basis of them.</p>
|
||||||
|
<p>We can view this dialectic approach to decision support as a game, with a fixed set of legitimate moves.</p>
|
||||||
|
<h2><a href="#hintikkas-game-theoretic-logic" name="hintikkas-game-theoretic-logic"></a>Hintikka’s game theoretic logic</h2>
|
||||||
|
<p>This approach seems very promising. It may tie in well with game-theoretic logics such as those of Ehrenfeucht [Ehrenfeucht 61] and Hintikka [Hintikka & Kulas, 83 and passim] Of course, these logics are strictly monotonic. Problem areas where monotonic logics are adequate are of limited interest, and unlikely to give rise to interesting problems of explanation; but it should be possible to develop a provable semantics for a non-monotonic extension. The decision procedure for a game theoretic logic should not raise any particular difficulties; the ‘games’ are zero sum, under complete information.</p>
|
||||||
|
<p>However, the adoption of a game-theoretic explanation mechanism does not commit us to adopting a game theoretic logic; so (although interesting) this line will only be pursued if it proves easy.</p>
|
||||||
|
<h2><a href="#the-object-of-an-explanation-game" name="the-object-of-an-explanation-game"></a>The object of an explanation game</h2>
|
||||||
|
<p>If explanation is to be seen as a game, what is to be its objective? If we were to take a positivist position, we might say that the purpose of explanation was to convey understanding; then the game would be a co-operative one, with the object of both players being to achieve this end.</p>
|
||||||
|
<p>But seeing that we have rejected this position, the object of an explanation must be to persuade.</p>
|
||||||
|
<p>Furthermore, if we accept the argument advanced in chapter iii above that explanation is hegemonistic, the explanee may be seen to have an object in resisting explanation. So now we can have s clear idea of what the object of an explanation game will be: The explainer will win, if the explainee is brought to the point of no longer being able to produce a rational reason for resisting the explanation. Otherwise, if when all the supporting arguments the explainer can bring to bear have been advanced the explainee is still unconvinced, then the explainee has won.</p>
|
||||||
|
<p>‘Rational’, here, is of course a fix. In an explanation situation involving two human beings, the explainee might continue to resist even if there were no ’rational’ reason for doing so. This situation would be non-deterministic, though, and too difficult for me to deal with.</p>
|
||||||
|
<h2><a href="#legitimate-moves-in-an-explanation-game" name="legitimate-moves-in-an-explanation-game"></a>Legitimate moves in an explanation game</h2>
|
||||||
|
<p>A possible set of legitimate moves which might be used as the basis for an explanation generator in a non-monotonic expert system might be:</p>
|
||||||
|
<h3><a href="#present" name="present"></a>PRESENT</h3>
|
||||||
|
<ul>
|
||||||
|
<li>present a case, supported by an argument, which may include one or more assumptions.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Generally, in a non-monotonic system, we are dealing with incomplete information [and indeed, this is generally the case in ‘real life’). Consequently, any conclusion is likely to be based upon one or more unsupported assumptions.</p>
|
||||||
|
<p>[starting move]</p>
|
||||||
|
<h3><a href="#doubt" name="doubt"></a>DOUBT</h3>
|
||||||
|
<ul>
|
||||||
|
<li>challenge one or more of the assumptions.</li>
|
||||||
|
</ul>
|
||||||
|
<p>[basic response to PRESENT, REBUT, or COUNTER-EXAMPLE]</p>
|
||||||
|
<h3><a href="#doubt-irrelevant" name="doubt-irrelevant"></a>DOUBT-IRRELEVANT</h3>
|
||||||
|
<ul>
|
||||||
|
<li>claim that if the assumption were false, it would make no difference to the decision.</li>
|
||||||
|
</ul>
|
||||||
|
<p>[blocking response to DOUBT]</p>
|
||||||
|
<h3><a href="#assumption-probable" name="assumption-probable"></a>ASSUMPTION-PROBABLE</h3>
|
||||||
|
<ul>
|
||||||
|
<li>claim that the assumption is probable on the basis of prior experience.</li>
|
||||||
|
</ul>
|
||||||
|
<p>[weaker response to DOUBT]</p>
|
||||||
|
<h3><a href="#rebut" name="rebut"></a>REBUT</h3>
|
||||||
|
<ul>
|
||||||
|
<li>this is essentially a PRESENT, but of an argument based on the opposite assumption to that challenged in the preceding DOUBT.</li>
|
||||||
|
</ul>
|
||||||
|
<p>[response to a PASS following a DOUBT]</p>
|
||||||
|
<h3><a href="#counter-example" name="counter-example"></a>COUNTER-EXAMPLE</h3>
|
||||||
|
<ul>
|
||||||
|
<li>present a known case similar to the current one, where the predicate of the assumption which has been challenged holds the opposite value.</li>
|
||||||
|
</ul>
|
||||||
|
<p>[response to ASSUMPTION-PROBABLE]</p>
|
||||||
|
<h3><a href="#pass" name="pass"></a>PASS</h3>
|
||||||
|
<ul>
|
||||||
|
<li>a null move in response to any other move. Forces other player to move. In some sense this might be seen as equivalent to saying ‘so what’: the opponent has made a move, but there is nothing further which the player wants to advance at this stage. This move is inherently dangerous, because the game ends when the two players PASS in succesive moves.</li>
|
||||||
|
</ul>
|
||||||
|
<p>[weakest response to anything]</p>
|
||||||
|
<p>Obviously, in human dialectic, other legitimate moves attack the validity of</p>
|
||||||
|
<p>inference steps; but for a machine implementation, we can assume all inference steps are in themselves valid.</p>
|
||||||
|
<h1><a href="#implementing-a-game-theoretic-approach-to-explanation" name="implementing-a-game-theoretic-approach-to-explanation"></a>Implementing a game theoretic approach to explanation</h1>
|
||||||
|
<h2><a href="#playing-the-explanation-game" name="playing-the-explanation-game"></a>Playing the explanation game</h2>
|
||||||
|
<p>The game playing algorithm required to implement an explanation system need not be sophisticated: indeed, it must not be too sophisticated, at least as a game player. Consider: a good game playing algorithm looks ahead to calculate what the probable responses to the moves it makes will be. If it sees that one possible move leads to a dead end, it will not make that move.</p>
|
||||||
|
<p>But in generating an explanation, we need to explore any path whose conclusion is not immediately obvious. So either the game-playing algorithm should not look ahead more than, perhaps, one ply, or else, if it does so, then when it sees a ‘closed path’, it should print out a message something of the form:</p>
|
||||||
|
<p>Critic: Oh yes, I see that even if the assumption that Carol hasTwoLegs is false it would not affect the assumption that Carol canSwim.</p>
|
||||||
|
<p>Initially, however, I propose to implement a game-playing algorithm which simply makes the strongest move available to the player, based on a scoring scheme which does not look ahead. The game will proceed something like tennis; the player who last made a PRESENT or REBUT move will have the initiative, the ‘serve’ as it were, and need only defend to win. The other player must try to ‘break’ this ‘serve’, by forcing a DOUBT…PASS sequence, which allows a REBUT play. Dialectic explanation - the two player game.</p>
|
||||||
|
<p>With this schema, we can mechanize a dialectic about a case. The game is played by the machine against itself; ‘agents’ in the machine play moves in turn until both sequentially pass, or until the user interrupts. Each move produces a natural language statement on the display. Ideally, the user could interrupt at any time, either to request further justification for a move, or to halt the process.</p>
|
||||||
|
<p>As a (simple) example of what might be produced, here is some sample output from a very crude prototype system :</p>
|
||||||
|
<p>User: K- #\$ Carol Explain #\$CanSwim)</p>
|
||||||
|
<p>[send to the object called Carol a message asking for an explanation of the value Carol holds for the predicate named</p>
|
||||||
|
<p>CanSwim ]</p>
|
||||||
|
<p>Consultant: What is the value of CanSwim for Carol?</p>
|
||||||
|
<p>[ ‘Consultant’ and ‘Critic’ are the names given to the two ‘agents’ - the knowledge base doesn’t contain the relevant information, so it must be inferred. ]</p>
|
||||||
|
<p>User: Don’t know…</p>
|
||||||
|
<p>Consultant: I found that CanSwim was true of Carol by Default using the following assumptions:</p>
|
||||||
|
<p>(I assumed #ScanSwim was true of Carol)</p>
|
||||||
|
<p>My reasons are:</p>
|
||||||
|
<p>CanSwim is true of most Mammals; Carol is a Mammal; Therefore it is probable that CanSwim</p>
|
||||||
|
<p>is true of Carol.</p>
|
||||||
|
<p>Critic: The assumption that CanSwim is true is unsafe: Henry is also of type (s) (Person) but</p>
|
||||||
|
<p>CanSwim is false of Henry.</p>
|
||||||
|
<p>This is output from Wildwood version Arden, my first prototype object-based inference mechanism. It DOES NOT implement the game-playing model given.</p>
|
||||||
|
<p>This example shows ‘Consultant’ PRESENTing a case based on a single assumption, and ‘Critic’ responding with a COUNTER-EXAMPLE - a move which would not be legal under the scheme given. However, this should give some indication of how the idea might be implemented.</p>
|
||||||
|
<p>{**TODO**: figure}</p>
|
||||||
|
<p>Interaction Trace</p>
|
||||||
|
<p>User: [QU] Is it true that Carol canSwim?</p>
|
||||||
|
<p>Consultant: [PR] I assume that carol canSwim.</p>
|
||||||
|
<p>User: [DO] I doubt that…</p>
|
||||||
|
<p>Consultant: [AP] It is probable that Carol canSwim because:</p>
|
||||||
|
<p>can Swim is true of most mammals, and Carol is a mammal</p>
|
||||||
|
<p>Options… Counter</p>
|
||||||
|
<p>QUery</p>
|
||||||
|
<p>Andrew Present</p>
|
||||||
|
<p>Belinda Doubt</p>
|
||||||
|
<p>Charles Doubl relevant Diana Assumption Prob Frederick Rebut</p>
|
||||||
|
<p>Ginny Counter-Exam Henry PAss</p>
|
||||||
|
<p>Tris James Katharine Leonard</p>
|
||||||
|
<p>User:</p>
|
||||||
|
<p>fig 5.1: Showing how the Critic could guide the user in interacting with the Consultant. The Consultant has made an ‘Assumption Probable’ move (marked [AP]). The Critic is guiding the user firstly by greying the illegal moves, and secondly by indicating with a tick the preferred move. The user has selected this (shown by the boxing on the options menu) and the Critic has opened a menu of all the objects which might be advanced as valid counter-examples, again indicating the preferred choice.</p>
|
||||||
|
<p>The simple model described above has not achieved all that we want, however. The machine, in the form of the agent Consultant’ has attempted to explain to itself, wearing its ‘Critic’ hat. The user’s role has simply been that of passive observer. The first enhancement would be to give the user control of the ‘critic’; but because the user cannot have the same view of the knowledge base as the machine, the Critic will have to guide the user, firstly by showing the user the legal moves available, and second by finding supplementary information to support these moves.</p>
|
||||||
|
<h2><a href="#explanation-as-conversation-a-three-player-game" name="explanation-as-conversation-a-three-player-game"></a>Explanation as conversation - a three player game</h2>
|
||||||
|
<p>A better design still might be to allow the machine to carry on its dialogue as before, but to allow the user to interrupt and challenge either of the agents. It seems probable that the most interesting moves the user could make would be DOUBT, and also COUNTER-EXAMPLE, where the user could present an example case not previously known to the machine. Now the user can sit back and watch, if the conversation brings out the points which seem relevant; but equally the user can intervene to steer the conversation.</p>
|
||||||
|
<p>These ideas had not, needless to say, yet been implemented in 1988 when I moved onto working on KnacqTools.</p>
|
||||||
|
<p>I hope that they will be implemented as I develop the ideas in this document.</p></div></div></div></body></html>
|
6
docs/codox/Bialowieza.html
Normal file
6
docs/codox/Bialowieza.html
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<!DOCTYPE html PUBLIC ""
|
||||||
|
"">
|
||||||
|
<html><head><meta charset="UTF-8" /><title>Bialowieza</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 current"><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#bialowieza" name="bialowieza"></a>Bialowieza</h1>
|
||||||
|
<p>{not yet written. To cover development of the Clojure Wildwood library, and the thinking and design which develops as I do it}</p>
|
||||||
|
<h2><a href="#why-bialowieza-" name="why-bialowieza-"></a>Why Bialowieza?</h2>
|
||||||
|
<p>Bialowieza is the second iteration of the Wildwood engine, and this following convention its name should start with ‘B’. <a href="https://en.wikipedia.org/wiki/Bia%C5%82owie%C5%BCa">Białowieża</a> is Europe’s last great wild wood, and it is currently under threat.</p></div></div></div></body></html>
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html PUBLIC ""
|
<!DOCTYPE html PUBLIC ""
|
||||||
"">
|
"">
|
||||||
<html><head><meta charset="UTF-8" /><title>Errata</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Conception.html"><div class="inner"><span>Conception</span></div></a></li><li class="depth-1 current"><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="Reimagining.html"><div class="inner"><span>Reimagining</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#errata" name="errata"></a>Errata</h1>
|
<html><head><meta charset="UTF-8" /><title>Errata</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 current"><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#errata" name="errata"></a>Errata</h1>
|
||||||
<ol>
|
<ol>
|
||||||
<li>On title page: the claim that Zaphod Beeblebrox is quoted as saying ‘Hey, what IS truth, man?’ in the printed text of Douglas Adams ‘Hitchhikers Guide to the Galaxy’ is false.</li>
|
<li>On title page: the claim that Zaphod Beeblebrox is quoted as saying ‘Hey, what IS truth, man?’ in the printed text of Douglas Adams ‘Hitchhikers Guide to the Galaxy’ is false.</li>
|
||||||
</ol></div></div></div></body></html>
|
</ol></div></div></div></body></html>
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html PUBLIC ""
|
<!DOCTYPE html PUBLIC ""
|
||||||
"">
|
"">
|
||||||
<html><head><meta charset="UTF-8" /><title>Experience</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Conception.html"><div class="inner"><span>Conception</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 current"><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="Reimagining.html"><div class="inner"><span>Reimagining</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#experience" name="experience"></a>Experience</h1>
|
<html><head><meta charset="UTF-8" /><title>Experience</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 current"><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#experience" name="experience"></a>Experience</h1>
|
||||||
<p>{Not yet written. To cover an evaluation of the Clojure Wildwood library, when it works, and what I can learn from it going forward}</p></div></div></div></body></html>
|
<p>{Not yet written. To cover an evaluation of the Clojure Wildwood library, when it works, and what I can learn from it going forward}</p></div></div></div></body></html>
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html PUBLIC ""
|
<!DOCTYPE html PUBLIC ""
|
||||||
"">
|
"">
|
||||||
<html><head><meta charset="UTF-8" /><title>History</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Conception.html"><div class="inner"><span>Conception</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 current"><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="Reimagining.html"><div class="inner"><span>Reimagining</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#history" name="history"></a>History</h1>
|
<html><head><meta charset="UTF-8" /><title>History</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 current"><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#history" name="history"></a>History</h1>
|
||||||
<h2><a href="#history-introduction" name="history-introduction"></a>History: Introduction</h2>
|
<h2><a href="#history-introduction" name="history-introduction"></a>History: Introduction</h2>
|
||||||
<p>The object of this chapter is to describe and discuss the development of Expert System explanations from the beginning’ to the most recent systems. The argument which I will try to advance is that development has been continuously driven by the perceived inadequacy of the explanations given; and that, while many ad hoc, and some principled, approaches have been tried, no really adequate explanation system has emerged. Further, I will claim that, as some of the later and more principled explanation systems accurately model the accounts of explanation advanced in current philosophy, the philosophical understanding of explanation is itself inadequate.</p>
|
<p>The object of this chapter is to describe and discuss the development of Expert System explanations from the beginning’ to the most recent systems. The argument which I will try to advance is that development has been continuously driven by the perceived inadequacy of the explanations given; and that, while many ad hoc, and some principled, approaches have been tried, no really adequate explanation system has emerged. Further, I will claim that, as some of the later and more principled explanation systems accurately model the accounts of explanation advanced in current philosophy, the philosophical understanding of explanation is itself inadequate.</p>
|
||||||
<p>{I ought to add to this chapter to give some overview of what’s happened since 1990, and look at explanations of neural network decisions, because that will help in later parts/chapters of Part One}</p>
|
<p>{I ought to add to this chapter to give some overview of what’s happened since 1990, and look at explanations of neural network decisions, because that will help in later parts/chapters of Part One}</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html PUBLIC ""
|
<!DOCTYPE html PUBLIC ""
|
||||||
"">
|
"">
|
||||||
<html><head><meta charset="UTF-8" /><title>Implementing</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Conception.html"><div class="inner"><span>Conception</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 current"><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="Reimagining.html"><div class="inner"><span>Reimagining</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#implementing" name="implementing"></a>Implementing</h1>
|
<html><head><meta charset="UTF-8" /><title>Implementing</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 current"><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#implementing" name="implementing"></a>Implementing</h1>
|
||||||
<p>{not yet written. To cover the actual structure of the Clojure Wildwood library, as I do it}</p></div></div></div></body></html>
|
<p>{not yet written. To cover the actual structure of the Clojure Wildwood library, as I do it}</p></div></div></div></body></html>
|
10
docs/codox/KnacqTools.html
Normal file
10
docs/codox/KnacqTools.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<!DOCTYPE html PUBLIC ""
|
||||||
|
"">
|
||||||
|
<html><head><meta charset="UTF-8" /><title>KnacqTools</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 current"><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#knacqtools" name="knacqtools"></a>KnacqTools</h1>
|
||||||
|
<h2><a href="#background" name="background"></a>Background</h2>
|
||||||
|
<p>KnacqTools (’Knowledge Acquisition Toolkit") was essentially a productisation of the ideas developed in <a href="Arboretum.html">Arboretum</a>. It was written in C, originally for Acorn’s RISC OS operating system, and later ported to UNIX. The only major innovation of KnacqTools was that it was able to transform DTree knowledge structures into the rule languages of a number of contemporary ‘expert system’ inference engines.</p>
|
||||||
|
<p>Thus the expected use of KnacqTools was not to run an inference process itself (although of course it could do this), but to allow a knowledge engineer, using Peter Mott’s ‘elicitation by exception’ technique, which I and others had polished in the field, to enter DTrees elicited from domain experts, compile these DTrees into production rules, and export those prodution rules to the selected expert system package for deployment.</p>
|
||||||
|
<p>KnacqTools was briefly successful between about 1990 and 1992. The commercially important UNIX port was never fully debugged.</p>
|
||||||
|
<h2><a href="#knacqtools-and-explanation" name="knacqtools-and-explanation"></a>KnacqTools and explanation</h2>
|
||||||
|
<p>While the KnacqTools engine had a complete implementation of Arboretum’s explanation system and generated high quality explanations itself, the exported production rule sets (depending on the selected expert system package) was not necessarily capable of the same degree of explanation.</p>
|
||||||
|
<p>There were no new innovations in explanation, in KnacqTools.</p></div></div></div></body></html>
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html PUBLIC ""
|
<!DOCTYPE html PUBLIC ""
|
||||||
"">
|
"">
|
||||||
<html><head><meta charset="UTF-8" /><title>Manifesto</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Conception.html"><div class="inner"><span>Conception</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 current"><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="Reimagining.html"><div class="inner"><span>Reimagining</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#manifesto" name="manifesto"></a>Manifesto</h1>
|
<html><head><meta charset="UTF-8" /><title>Manifesto</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 current"><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#manifesto" name="manifesto"></a>Manifesto</h1>
|
||||||
<p>Machine inference – automated reasoning, the core of what gets called Artificial Intellegence – has ab initio been based on the assumption that the purpose of reasoning was to preserve truth. It is because this assumption is false that the project has thus far failed to bear fruit, that Allan Turing’s eponymous test has yet to be passed.</p>
|
<p>Machine inference – automated reasoning, the core of what gets called Artificial Intellegence – has ab initio been based on the assumption that the purpose of reasoning was to preserve truth. It is because this assumption is false that the project has thus far failed to bear fruit, that Allan Turing’s eponymous test has yet to be passed.</p>
|
||||||
<p>Of course it is possible to build machines which, within the constraints of finite store, can accurately compute theora of first order predicate calculus ad nauseam but such machines do not display behaviour which is convincingly intelligent. They are cold and mechanical; we do not recognise ourselves in them. Like the Girl in the Fireplace’s beautiful clocks, they are precisely inhuman.</p>
|
<p>Of course it is possible to build machines which, within the constraints of finite store, can accurately compute theora of first order predicate calculus ad nauseam but such machines do not display behaviour which is convincingly intelligent. They are cold and mechanical; we do not recognise ourselves in them. Like the Girl in the Fireplace’s beautiful clocks, they are precisely inhuman.</p>
|
||||||
<p>As Turing’s test itself shows, intelligence is a hegemonic term, a term laden with implicit propaganda. A machine is ‘intelligent’ if it can persuade a person that it is a person. By ‘intelligent’ we don’t mean ‘capable of perfect reasoning’. We mean ‘like us’; and in meaning ‘like us’ we are smuggling under the covers, as semantic baggage, the claim that we ourselves are intelligent.</p>
|
<p>As Turing’s test itself shows, intelligence is a hegemonic term, a term laden with implicit propaganda. A machine is ‘intelligent’ if it can persuade a person that it is a person. By ‘intelligent’ we don’t mean ‘capable of perfect reasoning’. We mean ‘like us’; and in meaning ‘like us’ we are smuggling under the covers, as semantic baggage, the claim that we ourselves are intelligent.</p>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html PUBLIC ""
|
<!DOCTYPE html PUBLIC ""
|
||||||
"">
|
"">
|
||||||
<html><head><meta charset="UTF-8" /><title>On the First Dialogue of Hylas and Philonous</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Conception.html"><div class="inner"><span>Conception</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 current"><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="Reimagining.html"><div class="inner"><span>Reimagining</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#on-the-first-dialogue-of-hylas-and-philonous" name="on-the-first-dialogue-of-hylas-and-philonous"></a>On the First Dialogue of Hylas and Philonous</h1>
|
<html><head><meta charset="UTF-8" /><title>On the First Dialogue of Hylas and Philonous</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 current"><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#on-the-first-dialogue-of-hylas-and-philonous" name="on-the-first-dialogue-of-hylas-and-philonous"></a>On the First Dialogue of Hylas and Philonous</h1>
|
||||||
<p>The argument that our perception of a ‘real world’ does not prove its existence is not new, of course. Here is a classic statement of a similar argument from BerkeIey’s <em><a href="http://www.gutenberg.org/files/4724/4724-h/4724-h.htm">First Dialogue of Hylas and Philonous</a></em>:</p>
|
<p>The argument that our perception of a ‘real world’ does not prove its existence is not new, of course. Here is a classic statement of a similar argument from BerkeIey’s <em><a href="http://www.gutenberg.org/files/4724/4724-h/4724-h.htm">First Dialogue of Hylas and Philonous</a></em>:</p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>Hyl.: Do we not perceive the stars and moon, for example, to be a A great way off? Is not this, I say, manifest to the senses? I</p>
|
<p>Hyl.: Do we not perceive the stars and moon, for example, to be a A great way off? Is not this, I say, manifest to the senses? I</p>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html PUBLIC ""
|
<!DOCTYPE html PUBLIC ""
|
||||||
"">
|
"">
|
||||||
<html><head><meta charset="UTF-8" /><title>On the subtext of a predicate</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Conception.html"><div class="inner"><span>Conception</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 current"><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="Reimagining.html"><div class="inner"><span>Reimagining</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#on-the-subtext-of-a-predicate" name="on-the-subtext-of-a-predicate"></a>On the subtext of a predicate</h1>
|
<html><head><meta charset="UTF-8" /><title>On the subtext of a predicate</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 current"><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#on-the-subtext-of-a-predicate" name="on-the-subtext-of-a-predicate"></a>On the subtext of a predicate</h1>
|
||||||
<p>Predicates are not atomic. They do not come single spies, but freighted with battalions of inferable subtexts. Suppose Anthony says</p>
|
<p>Predicates are not atomic. They do not come single spies, but freighted with battalions of inferable subtexts. Suppose Anthony says</p>
|
||||||
<pre><code>Brutus killed Caesar in Rome during the ides of March
|
<pre><code>Brutus killed Caesar in Rome during the ides of March
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html PUBLIC ""
|
<!DOCTYPE html PUBLIC ""
|
||||||
"">
|
"">
|
||||||
<html><head><meta charset="UTF-8" /><title>The Problem</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Conception.html"><div class="inner"><span>Conception</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="Reimagining.html"><div class="inner"><span>Reimagining</span></div></a></li><li class="depth-1 current"><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#the-problem" name="the-problem"></a>The Problem</h1>
|
<html><head><meta charset="UTF-8" /><title>The Problem</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 current"><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#the-problem" name="the-problem"></a>The Problem</h1>
|
||||||
<p>In this chapter talk about the perceived need for expert system explanations. Advance:</p>
|
<p>In this chapter talk about the perceived need for expert system explanations. Advance:</p>
|
||||||
<p>the arguments used by expert systems designers, saying why explanations are needed;</p>
|
<p>the arguments used by expert systems designers, saying why explanations are needed;</p>
|
||||||
<p>the arguments used by critics which claim that the explanations given are not good enough.</p>
|
<p>the arguments used by critics which claim that the explanations given are not good enough.</p>
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html PUBLIC ""
|
<!DOCTYPE html PUBLIC ""
|
||||||
"">
|
"">
|
||||||
<html><head><meta charset="UTF-8" /><title>Introduction to Wildwood</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Conception.html"><div class="inner"><span>Conception</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="Reimagining.html"><div class="inner"><span>Reimagining</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 current"><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#introduction-to-wildwood" name="introduction-to-wildwood"></a>Introduction to Wildwood</h1>
|
<html><head><meta charset="UTF-8" /><title>Introduction to Wildwood</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 current"><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#introduction-to-wildwood" name="introduction-to-wildwood"></a>Introduction to Wildwood</h1>
|
||||||
<p>I started building Wildwood nearly forty years ago on InterLisp-D workstations. Then, because of changing academic projects, I lost access to those machines, and the project was effectively abandoned. But, I’ve kept thinking about it; it has cool ideas.</p>
|
<p>I started building Wildwood nearly forty years ago on InterLisp-D workstations. Then, because of changing academic projects, I lost access to those machines, and the project was effectively abandoned. But, I’ve kept thinking about it; it has cool ideas.</p>
|
||||||
<h2><a href="#explicable-inference" name="explicable-inference"></a>Explicable inference</h2>
|
<h2><a href="#explicable-inference" name="explicable-inference"></a>Explicable inference</h2>
|
||||||
<p>Wildwood was a follow on from ideas developed in Arboretum, an inference system based on a novel propositional logic using defaults. Arboretum was documented in our paper</p>
|
<p>Wildwood was a follow on from ideas developed in Arboretum, an inference system based on a novel propositional logic using defaults. Arboretum was documented in our paper</p>
|
||||||
|
|
7
docs/codox/wildwood.advocate.html
Normal file
7
docs/codox/wildwood.advocate.html
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<!DOCTYPE html PUBLIC ""
|
||||||
|
"">
|
||||||
|
<html><head><meta charset="UTF-8" /><title>wildwood.advocate documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch current"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="wildwood.advocate.html#var-Advocate"><div class="inner"><span>Advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.advocate.html#var-decide"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>decide</span></div></a></li><li class="depth-2 branch"><a href="wildwood.advocate.html#var-id"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>id</span></div></a></li><li class="depth-2"><a href="wildwood.advocate.html#var-move"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>move</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">wildwood.advocate</h1><div class="doc"><div class="markdown"><p>An agent capable of playing the explanation game.</p>
|
||||||
|
<p>An advocate must have its own knowledge accessor. Different advocates within a game may be accessing different knowledge bases, or different subsets of the same knowledge base with different - potentially competing - knowledge. It also needs to know the schema in which knowledge will be presented.</p>
|
||||||
|
<p>Since the mechanism by which the application will communicate with the library must include a way for users to interact with the game, and since the role of the user in the came is just as a participant, advocate must be defined as a protocol, in order that it may be extended by code within the application which is passed in to the game when the game is started. Indeed, multiple agents - the user(s) and potentially non-player characters - may be passed in.</p>
|
||||||
|
<p>In this conception, nothing within a default advocate has to be able to produce or consume natural language. It is sufficient for the API exposed by wildwood.advocate to receive and return wildwood.schema objects.</p>
|
||||||
|
<p>Obviously to show a user interface anything similar to Arden’s, or for what I intend for The Great Game, the advocates passed must ‘at their other end’ - that is, on the application side rather than the library side - be able to consume and emit natural language, but that functionality does not need to be part of the wildwood library, and certainly does not need to be part of the default advocate as specified here.</p></div></div><div class="public anchor" id="var-Advocate"><h3>Advocate</h3><h4 class="type">protocol</h4><div class="usage"></div><div class="doc"><div class="markdown"></div></div><div class="members"><h4>members</h4><div class="inner"><div class="public anchor" id="var-decide"><h3>decide</h3><div class="usage"><code>(decide self proposition argument)</code></div><div class="doc"><div class="markdown"><p>Return <code>true</code>, <code>false</code> or <code>nil</code> as the value of this <code>proposition</code>, given this <code>argument</code>. The value of <code>proposition</code> should be a proposition as defined by <code>wildwood.schema/proposition?</code>; the value of <code>argument</code> should satisfy <code>wildwood.schema/argument?</code>.</p></div></div></div><div class="public anchor" id="var-id"><h3>id</h3><div class="usage"><code>(id self)</code></div><div class="doc"><div class="markdown"><p>Return a value which uniquely identifies this agent.</p></div></div></div><div class="public anchor" id="var-move"><h3>move</h3><div class="usage"><code>(move self proposition argument)</code></div><div class="doc"><div class="markdown"><p>Return a new argument structure representing the result of applying my <code>decide</code> method to this <code>proposition</code> and <code>argument</code>, specifying in some way not yet determined what sort of move I have made.</p></div></div></div></div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/wildwood/advocate.clj#L32">view source</a></div></div></div></body></html>
|
7
docs/codox/wildwood.bialowieza.html
Normal file
7
docs/codox/wildwood.bialowieza.html
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<!DOCTYPE html PUBLIC ""
|
||||||
|
"">
|
||||||
|
<html><head><meta charset="UTF-8" /><title>wildwood.bialowieza documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch current"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="wildwood.bialowieza.html#var-decide"><div class="inner"><span>decide</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">wildwood.bialowieza</h1><div class="doc"><div class="markdown"><p>The second iteration of the core inference engine for Wildwood</p></div></div><div class="public anchor" id="var-decide"><h3>decide</h3><div class="usage"><code>(decide proposition & agents)</code></div><div class="doc"><div class="markdown"><p>Decide the truth value of this <code>proposition</code> by convening a game between these advocate <code>agents</code>. Iterate the game until all agents PASS; then finally offer each agent’s <code>assert</code> method the <code>proposition</code> together with the decided truth value (<code>true</code> or <code>false</code>), before returning that value.</p>
|
||||||
|
<p>The <code>proposition</code> is a proposition as defined in the <code>wildwood.schema</code>; that is to say, the predicate <code>wildwood.schema/predicate?</code> returns true of it. If the proposition isn’t a predicate, throw an exception.</p>
|
||||||
|
<p>Each of <code>agents</code> should be an object implementing the <code>wildwood.advocate/Advocate</code> protocol. If an agent isn’t an Advocate, throw an exception.</p>
|
||||||
|
<p>Do not throw an exception under any other circumstances.</p>
|
||||||
|
<p>If an agent throws an exception, catch it and treat it as a PASS.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/wildwood/bialowieza.clj#L10">view source</a></div></div></div></body></html>
|
|
@ -1,3 +1,3 @@
|
||||||
<!DOCTYPE html PUBLIC ""
|
<!DOCTYPE html PUBLIC ""
|
||||||
"">
|
"">
|
||||||
<html><head><meta charset="UTF-8" /><title>wildwood.core documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Conception.html"><div class="inner"><span>Conception</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="Reimagining.html"><div class="inner"><span>Reimagining</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 current"><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="wildwood.core.html#var-foo"><div class="inner"><span>foo</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">wildwood.core</h1><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="public anchor" id="var-foo"><h3>foo</h3><div class="usage"><code>(foo x)</code></div><div class="doc"><div class="markdown"><p>I don’t do a whole lot.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/wildwood/core.clj#L3">view source</a></div></div></div></body></html>
|
<html><head><meta charset="UTF-8" /><title>wildwood.core documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 current"><a href="wildwood.core.html"><div class="inner"><span>wildwood.core</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="wildwood.core.html#var-foo"><div class="inner"><span>foo</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">wildwood.core</h1><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="public anchor" id="var-foo"><h3>foo</h3><div class="usage"><code>(foo x)</code></div><div class="doc"><div class="markdown"><p>I don’t do a whole lot.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/wildwood/core.clj#L3">view source</a></div></div></div></body></html>
|
3
docs/codox/wildwood.knowledge-accessor.html
Normal file
3
docs/codox/wildwood.knowledge-accessor.html
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<!DOCTYPE html PUBLIC ""
|
||||||
|
"">
|
||||||
|
<html><head><meta charset="UTF-8" /><title>wildwood.knowledge-accessor documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch current"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">wildwood.knowledge-accessor</h1><div class="doc"><div class="markdown"><p>The key point of building Bialowieza as a library rather than a complete application is that it should be possible to hook it up to multiple sources of knowledge. Thus we must design a protocol through which knowledge can be accessed, and a schema in which it will be returned. Note that the accessor must be able to add knowledge to the knowledge base, as well as retrieve it.</p></div></div></div></body></html>
|
5
docs/codox/wildwood.schema.html
Normal file
5
docs/codox/wildwood.schema.html
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<!DOCTYPE html PUBLIC ""
|
||||||
|
"">
|
||||||
|
<html><head><meta charset="UTF-8" /><title>wildwood.schema documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wildwood</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="AgainstTruth.html"><div class="inner"><span>Against Truth</span></div></a></li><li class="depth-1 "><a href="Analysis.html"><div class="inner"><span>Analysis</span></div></a></li><li class="depth-1 "><a href="Arboretum.html"><div class="inner"><span>Arboretum</span></div></a></li><li class="depth-1 "><a href="Arden.html"><div class="inner"><span>Arden</span></div></a></li><li class="depth-1 "><a href="Bialowieza.html"><div class="inner"><span>Bialowieza</span></div></a></li><li class="depth-1 "><a href="Errata.html"><div class="inner"><span>Errata</span></div></a></li><li class="depth-1 "><a href="Experience.html"><div class="inner"><span>Experience</span></div></a></li><li class="depth-1 "><a href="History.html"><div class="inner"><span>History</span></div></a></li><li class="depth-1 "><a href="Implementing.html"><div class="inner"><span>Implementing</span></div></a></li><li class="depth-1 "><a href="KnacqTools.html"><div class="inner"><span>KnacqTools</span></div></a></li><li class="depth-1 "><a href="Manifesto.html"><div class="inner"><span>Manifesto</span></div></a></li><li class="depth-1 "><a href="OnHylasAndPhilonus.html"><div class="inner"><span>On the First Dialogue of Hylas and Philonous</span></div></a></li><li class="depth-1 "><a href="PredicateSubtext.html"><div class="inner"><span>On the subtext of a predicate</span></div></a></li><li class="depth-1 "><a href="TheProblem.html"><div class="inner"><span>The Problem</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to Wildwood</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wildwood</span></div></div></li><li class="depth-2 branch"><a href="wildwood.advocate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>advocate</span></div></a></li><li class="depth-2 branch"><a href="wildwood.bialowieza.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bialowieza</span></div></a></li><li class="depth-2 branch"><a href="wildwood.knowledge-accessor.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>knowledge-accessor</span></div></a></li><li class="depth-2 current"><a href="wildwood.schema.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>schema</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="wildwood.schema.html#var-argument.3F"><div class="inner"><span>argument?</span></div></a></li><li class="depth-1"><a href="wildwood.schema.html#var-proposition.3F"><div class="inner"><span>proposition?</span></div></a></li><li class="depth-1"><a href="wildwood.schema.html#var-rule.3F"><div class="inner"><span>rule?</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">wildwood.schema</h1><div class="doc"><div class="markdown"><p>The knowledge representation. This probably ends up looking a bit like a Toulmin schema, where claims are represented as propositions. There also need to be rules or predicates, things which can test whether a given proposition has a given value. There may be other stuff in here.</p>
|
||||||
|
<p>Internal representation of most of this will be as Clojure maps.</p></div></div><div class="public anchor" id="var-argument.3F"><h3>argument?</h3><div class="usage"><code>(argument? o)</code></div><div class="doc"><div class="markdown"><p>True if <code>o</code> qualifies as an argument structure.</p>
|
||||||
|
<p>I don’t yet fully know what an argument looks like, but it is probably conceptually very like a recursive Toulmin structure, or else a list each of whose elements comprises a map with keys : * :vote - <code>true</code>, <code>false</code> or <code>nil</code>; * :move - a keyword representing one of the valid moves in the game; * :agent - something identifying the agent which made the move; * :argument - a Toulmin structure.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/wildwood/schema.clj#L26">view source</a></div></div><div class="public anchor" id="var-proposition.3F"><h3>proposition?</h3><div class="usage"><code>(proposition? o)</code></div><div class="doc"><div class="markdown"><p>True if <code>o</code> qualifies as a proposition. A proposition is probably a map with some privileged keys, and may look something like a minimised <code>the-great-game.gossip.news-items</code> item.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/wildwood/schema.clj#L10">view source</a></div></div><div class="public anchor" id="var-rule.3F"><h3>rule?</h3><div class="usage"><code>(rule? o)</code></div><div class="doc"><div class="markdown"><p>True if <code>o</code> qualifies as a rule. A rule is should be function of one argument, and should (if this can simply be checked) return a truth value, where truth value is one of <code>true</code>, <code>false</code> or <code>nil</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/wildwood/schema.clj#L18">view source</a></div></div></div></body></html>
|
42
src/wildwood/advocate.clj
Normal file
42
src/wildwood/advocate.clj
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
(ns wildwood.advocate
|
||||||
|
"An agent capable of playing the explanation game.
|
||||||
|
|
||||||
|
An advocate must have its own knowledge accessor. Different advocates
|
||||||
|
within a game may be accessing different knowledge bases, or different
|
||||||
|
subsets of the same knowledge base with different - potentially competing
|
||||||
|
- knowledge. It also needs to know the schema in which knowledge will be
|
||||||
|
presented.
|
||||||
|
|
||||||
|
Since the mechanism by which the application will communicate with the
|
||||||
|
library must include a way for users to interact with the game, and
|
||||||
|
since the role of the user in the came is just as a participant,
|
||||||
|
advocate must be defined as a protocol, in order that it may be extended
|
||||||
|
by code within the application which is passed in to the game when the
|
||||||
|
game is started. Indeed, multiple agents - the user(s) and potentially
|
||||||
|
non-player characters - may be passed in.
|
||||||
|
|
||||||
|
In this conception, nothing within a default advocate has to be able to
|
||||||
|
produce or consume natural language. It is sufficient for the API exposed
|
||||||
|
by wildwood.advocate to receive and return wildwood.schema objects.
|
||||||
|
|
||||||
|
Obviously to show a user interface anything similar to Arden's, or for
|
||||||
|
what I intend for The Great Game, the advocates passed must 'at their
|
||||||
|
other end' - that is, on the application side rather than the library
|
||||||
|
side - be able to consume and emit natural language, but that functionality
|
||||||
|
does not need to be part of the wildwood library, and certainly does
|
||||||
|
not need to be part of the default advocate as specified here."
|
||||||
|
(:require [wildwood.knowledge-accessor :refer []]
|
||||||
|
[wildwood.schema :refer [proposition? argument?]]))
|
||||||
|
|
||||||
|
|
||||||
|
(defprotocol Advocate
|
||||||
|
(id [self] "Return a value which uniquely identifies this agent.")
|
||||||
|
(decide [self proposition argument]
|
||||||
|
"Return `true`, `false` or `nil` as the value of this `proposition`,
|
||||||
|
given this `argument`. The value of `proposition` should be a
|
||||||
|
proposition as defined by `wildwood.schema/proposition?`;
|
||||||
|
the value of `argument` should satisfy `wildwood.schema/argument?`.")
|
||||||
|
(move [self proposition argument]
|
||||||
|
"Return a new argument structure representing the result of applying my
|
||||||
|
`decide` method to this `proposition` and `argument`, specifying in
|
||||||
|
some way not yet determined what sort of move I have made."))
|
30
src/wildwood/bialowieza.clj
Normal file
30
src/wildwood/bialowieza.clj
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
(ns wildwood.bialowieza
|
||||||
|
"The second iteration of the core inference engine for Wildwood"
|
||||||
|
(:require [wildwood.advocate :refer [Advocate]]
|
||||||
|
[wildwood.schema :refer [proposition?]]))
|
||||||
|
|
||||||
|
;; to start a game we must have n advocates, where n > 1. Each must have
|
||||||
|
;; its own knowledge accessor, so at the level of the game engine we don't
|
||||||
|
;; need to know how to access knowledge.
|
||||||
|
|
||||||
|
(defn decide
|
||||||
|
"Decide the truth value of this `proposition` by convening a game between
|
||||||
|
these advocate `agents`. Iterate the game until all agents PASS; then finally
|
||||||
|
offer each agent's `assert` method the `proposition` together with the
|
||||||
|
decided truth value (`true` or `false`), before returning that value.
|
||||||
|
|
||||||
|
The `proposition` is a proposition as defined in the `wildwood.schema`;
|
||||||
|
that is to say, the predicate `wildwood.schema/predicate?` returns true
|
||||||
|
of it. If the proposition isn't a predicate, throw an exception.
|
||||||
|
|
||||||
|
Each of `agents` should be an object implementing the
|
||||||
|
`wildwood.advocate/Advocate` protocol. If an agent isn't an Advocate,
|
||||||
|
throw an exception.
|
||||||
|
|
||||||
|
Do not throw an exception under any other circumstances.
|
||||||
|
|
||||||
|
If an agent throws an exception, catch it and treat it as a PASS."
|
||||||
|
[proposition & agents]
|
||||||
|
;; TODO: actually write it.
|
||||||
|
|
||||||
|
false)
|
|
@ -1,6 +0,0 @@
|
||||||
(ns wildwood.core)
|
|
||||||
|
|
||||||
(defn foo
|
|
||||||
"I don't do a whole lot."
|
|
||||||
[x]
|
|
||||||
(println x "Hello, World!"))
|
|
7
src/wildwood/knowledge_accessor.clj
Normal file
7
src/wildwood/knowledge_accessor.clj
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
(ns wildwood.knowledge-accessor
|
||||||
|
"The key point of building Bialowieza as a library rather than a complete
|
||||||
|
application is that it should be possible to hook it up to multiple sources
|
||||||
|
of knowledge. Thus we must design a protocol through which knowledge can be
|
||||||
|
accessed, and a schema in which it will be returned. Note that the
|
||||||
|
accessor must be able to add knowledge to the knowledge base, as well as
|
||||||
|
retrieve it.")
|
38
src/wildwood/schema.clj
Normal file
38
src/wildwood/schema.clj
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
(ns wildwood.schema
|
||||||
|
"The knowledge representation. This probably ends up looking a bit like a
|
||||||
|
Toulmin schema, where claims are represented as propositions. There also
|
||||||
|
need to be rules or predicates, things which can test whether a given
|
||||||
|
proposition has a given value. There may be other stuff in here.
|
||||||
|
|
||||||
|
Internal representation of most of this will be as Clojure maps."
|
||||||
|
)
|
||||||
|
|
||||||
|
(defn proposition?
|
||||||
|
"True if `o` qualifies as a proposition. A proposition is probably a map
|
||||||
|
with some privileged keys, and may look something like a minimised
|
||||||
|
`the-great-game.gossip.news-items` item."
|
||||||
|
;; TODO: write this.
|
||||||
|
[o]
|
||||||
|
false)
|
||||||
|
|
||||||
|
(defn rule?
|
||||||
|
"True if `o` qualifies as a rule. A rule is should be function of one
|
||||||
|
argument, and should (if this can simply be checked) return a truth value,
|
||||||
|
where truth value is one of `true`, `false` or `nil`."
|
||||||
|
[o]
|
||||||
|
;; TODO: write this
|
||||||
|
false)
|
||||||
|
|
||||||
|
(defn argument?
|
||||||
|
"True if `o` qualifies as an argument structure.
|
||||||
|
|
||||||
|
I don't yet fully know what an argument looks like,
|
||||||
|
but it is probably conceptually very like a recursive Toulmin structure,
|
||||||
|
or else a list each of whose elements comprises a map with keys :
|
||||||
|
* :vote - `true`, `false` or `nil`;
|
||||||
|
* :move - a keyword representing one of the valid moves in the game;
|
||||||
|
* :agent - something identifying the agent which made the move;
|
||||||
|
* :argument - a Toulmin structure."
|
||||||
|
[o]
|
||||||
|
;; TODO: write this.
|
||||||
|
false)
|
Loading…
Reference in a new issue