Extend ISAC Knowledge

Survey on ISAC knowledge
ISAC comprises three kinds of knowledge plus a fourth kind, examples using this knowledge:
 * 1) theories hold axioms, definitions, theorems and proofs deduced from first principles, i.e. the axioms of high-order logic (HOL); theorems used in ISAC are extracted for specific access. So theories represent the deductive aspect of mathematics.
 * 2) problems hold specifications of problem types, i.e. the input items, the preconditions on these, the output items and the post-condition relating input and output. So problems represent the application-oriented aspect of mathematics.
 * 3) methods hold TP-based programs describing an algorithm which solves a problem; a respective problem's specification is included as a guard for the program. So methods represent the algorithmic aspect of mathematics.
 * 4) examples hold courses like the one for differentiation at web-page > Examples > IsacCore > Calculus > Differentiation. Such courses use the knowledge previously defined in ISAC for interactive calculation with next-step-guidance.

Survey on ISAC's architecture
The figure below shows the architecture with respect to distribution of components, of data(knowledge) and respective connections:



Knowledge is on the right in the above figure. ISAC's knowledge is represented in three different formats: : : yellow (1) in the above figure v
 * as SML data structures for efficient internal operations of Isabelle/ISAC. Here we assume these data as already created by math-authors; designing courses and examples is not a concern of math-authors, so examples do not exist in this representation.
 * in XML format for operations of the tutoring system (external to Isabelle/ISAC) and for management and extension by course designers. Course designer add courses and examples, as well as (multimedia) explanations and illustrative examples to each knowledge item of theories (i.e. to theorems, rule sets, etc), of problems (i.e. to specifications and alternatives in solving methods, etc) and of methods (i.e. explanations to the algorithm, etc).

Not shown in the above figure: XML format is also read by WindowApplication when an example is started -- the url to the selected exp_XYZ.html is re-used to fetch the example's specificiation from exp_XYZ.xml. Presently XML-RPC is only used by GenHTML (see java code) for yellow (2) below: : : yellow (2) in the above figure v
 * in HTML format for presenting HTML content in the tutoring system and for browsing on the web, presently without interactive stepwise problem solving. This format is generated by the *.css stylefiles also used for access to the XML format by the tutoring system. Specific *.xml files generate several *.html files (e.g. *.html, *_author.html, *_nomodel.html), presently only the simple *.html files are used.

Below are ad-hoc descriptions of tasks for course designers, i.e. descriptions on how to create knowledge according to the yellow steps (1) and (2) in the figure. The manual (and time-consuming !) operations reflect the prototype status of ISAC; automation will come as soon as representation and role of knowledge has settled. The question of representation is related to open research questions about mathematics wikis.

The implementation of new knowledge enforces strict syntax in XML representation; how to check syntax of knowledge implemented in the tasks below is described here.

Format of content in knowledge
Content is added in HTML format in the   tag. The HTLM format accepted by ISAC's present JavaSwing components is restricted.

where the blanks (inserted in order to circumvent the wiki's renderer) need to be dropped.
 * Special characters require standard representation, e.g.


 * HTML code commonly generated ...

... needs simplification to 


 * more than 1 large img in one page are displayed by chance (some different dropped on different occasions)

Add an example in XML format
Adding examples is simple, because this cannot overwrite knowledge prepared in SML data structures (see the laborious merges required for other kinds of knowledge).

Let us assume, we want to add a test example $$\frac{d}{d\;x} x^2 + \sin (3 \cdot x^4)$$. With this goal in mind we go the following steps:

  Tests   exp_IsacCore_Tests    solve_linear_as_rootpbl   exp_IsacCore_Tests_1a    :   :    </NODE>   Tests </ID>  exp_IsacCore_Tests </CONTENTREF>   solve_linear_as_rootpbl </ID>  exp_IsacCore_Tests_1a </CONTENTREF> </NODE>   rule-based dialog </ID>  exp_IsacCore_Tests_rules1 </CONTENTREF> </NODE>  :
 * (1) In the ISAC tutor we view the example browser and decide where to locate the new example; we decide to locate it as 2nd item in Examples > IsacCore > Tests.
 * (2) We load the respective hierarchy, ~/proto3/repos/xmldata/exp/exp_hierarchy.xml, into an editor and search this location; the XML hierarchy is recursive, we have to search down Examples > IsacCore > Tests:
 * (3) We decide to label the example in the hierarchy with rule-based dialog and to store the data for the example in a file named exp_IsacCore_Tests_rules1.xml; then the hierarchy is extended like that:
 * (4) The example concerns differentiation; so we search the example browser in the ISAC tutor and find a similar examples at Example > IsacCore > Caclulus > Differentiation > Introduction > sum rule

 Introduction </ID>  exp_IsacCore_CD_intro </CONTENTREF>   sum rule </ID>  exp_IsacCore_CDi_sum </CONTENTREF> </NODE>  <EXAMPLE> <META> </META> <DESCRIPTION> <a href="exp_IsacCore_CDi_sum.html#COMMAND_EXEC_EXAMPLE#exp_IsacCore_CDi_sum.xml">start</a> Diff (x^2 + x + 1, x) which is no problem, because each part can be differentiated independent from the other. </DESCRIPTION> <FORMALIZATION> <VARIANT> <TERMLIST> <MATHML> <ISA> functionTerm (x^2 + x + (1::real)) </ISA> </MATHML> <MATHML> <ISA> differentiateFor x </ISA> </MATHML> <MATHML> <ISA> derivative f_' </ISA> </MATHML> </TERMLIST> <SPECIFICATION> <THEORY> Isac </THEORY> <PROBLEM> <KEY> <ID> derivative_of </ID> <ID> function </ID> </KEY> </PROBLEM> <METHOD> <KEY> <ID> diff </ID> <ID> differentiate_on_R </ID> </KEY> </METHOD> </SPECIFICATION> <HIDE> </HIDE> <DETAIL> </DETAIL> </VARIANT> </FORMALIZATION> <AUTHOR> isac-team 2007 </AUTHOR> </EXAMPLE>
 * (5) We search exp_hierarchy.xml down Example > IsacCore > Caclulus > Differentiation > Introduction > sum rule and find the entry
 * (6) from this entry we know the file name exp_IsacCore_CDi_sum.xml, which we find in directory ~/proto3/repos/xmldata/exp/:

<EXAMPLE> <META> </META> <DESCRIPTION> The example Diff (x ^ 2 + sin (3 * x ^ 4), x)   is used to develop rule-based user-guidance following <a href="http://www.ist.tugraz.at/projects/isac/publ/090209-cogsci.pdf">this presentation</a>. <a href="exp_IsacCore_Tests_rules1.html#COMMAND_EXEC_EXAMPLE#exp_IsacCore_Tests_rules1.xml">Start the example</a>. </DESCRIPTION> <FORMALIZATION> <VARIANT> <TERMLIST> <MATHML> <ISA> functionTerm (x ^ 2 + sin (3 * x ^ 4)) </ISA> </MATHML> <MATHML> <ISA> differentiateFor x </ISA> </MATHML> <MATHML> <ISA> derivative f_' </ISA> </MATHML> </TERMLIST> <SPECIFICATION> <THEORY> Isac </THEORY> <PROBLEM> <KEY> <ID> derivative_of </ID> <ID> function </ID> </KEY> </PROBLEM> <METHOD> <KEY> <ID> diff </ID> <ID> differentiate_on_R </ID> </KEY> </METHOD> </SPECIFICATION> <HIDE> </HIDE> <DETAIL> </DETAIL> </VARIANT> </FORMALIZATION> <AUTHOR> isac-team 2012 </AUTHOR> </EXAMPLE> Theory, problem and method remain the same.
 * (7) We adapt the content of file exp_IsacCore_Tests_rules1.xml as follows (note, that the file contains its own name at least twice !):


 * (8) The final steps are explained in the section on generating XML and HTML representations. There you skip the first two steps (1.3) and (1.4), and proceed with exp instead of met and take exp_IsacCore_Tests_rules1.xml instead of met_SP_Ztrans_inv_subpbl.xml.