<!-- Title: Pure/pgip_isar.xml
Author: David Aspinall, University of Edinburgh
Author: Christoph Lüth, University of Bremen
This file contains the configuration messages which configure
PGIP interfaces for Isabelle/Isar, in particular, explaining
internal types of objects and operations available on them.
See http://proofgeneral.inf.ed.ac.uk/kit for more details.
This file is a contributed part of the Isabelle Distribution.
STATUS: incomplete and experimental.
-->
<displayconfig>
<welcomemsg>Welcome to Isabelle/Isar 2007.</welcomemsg>
<!-- Icon for Isabelle interface -->
<icon>
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
</icon>
<helpdoc name="Isabelle/HOL Tutorial"
descr="A gentle introduction to Isabelle/HOL"
url="http://isabelle.in.tum.de/dist/Isabelle/doc/tutorial.pdf"
>tutorial</helpdoc>
<helpdoc name="Isabelle HOL Logic Reference"
descr="The Isabelle HOL Logic in detail"
url="http://isabelle.in.tum.de/dist/Isabelle/doc/logics-HOL.pdf"
>logics-HOL</helpdoc>
<helpdoc name="Isar Tutorial"
descr="An Introduction to the Isar proof language"
url="http://isabelle.in.tum.de/dist/Isabelle/doc/isar-overview.pdf"
>isar-overview</helpdoc>
<helpdoc name="Isabelle/Isar Reference"
descr="Reference Manual for Isabelle/Isar"
url="http://isabelle.in.tum.de/dist/Isabelle/doc/isar-ref.pdf"
>isar-ref</helpdoc>
<helpdoc name="Isabelle Reference manual"
descr="Reference Manual for Isabelle"
url="http://isabelle.in.tum.de/dist/Isabelle/doc/ref.pdf"
>ref</helpdoc>
<helpdoc
name="Isabelle System manual"
descr="System Manual: interfaces, output, building logics."
url="http://isabelle.in.tum.de/dist/Isabelle/doc/system.pdf"
>system</helpdoc>
<!-- Example lexicalstructure element. This is incomplete and the
keywords need to be filled dynamically -->
<lexicalstructure>
<keyword word="begin"><shorthelp>Begin theory or proof</shorthelp></keyword>
<keyword word="end"><shorthelp>End theory or proof</shorthelp></keyword>
<stringdelimiter>"</stringdelimiter>
<commentdelimiter start="(*" end="*)"/>
<commentdelimiter start="--"/>
<identifiersyntax initialchars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
allowedchars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345689_'"/>
</lexicalstructure>
<!-- objtypes -->
<objtype name="toplevel" descr="top-level context (PGIP internal)">
<contains objtype="theory"/>
</objtype>
<objtype name="theory" descr="Isabelle theory">
<contains objtype="theorem"/>
<contains objtype="theory"/>
</objtype>
<objtype name="theorem" descr="Isabelle theorem">
<contains objtype="theorem-proof"/>
<hasprefs prefcategory="Theorem attributes">
<haspref name="thm-kind" descr="Theorem kind">
<pgipchoice>
<pgipconst name="theorem" descr="Theorem"/>
<pgipconst name="lemma" descr="Lemma"/>
<pgipconst name="corollary" descr="Corollary"/>
</pgipchoice>
</haspref>
<haspref name="thm-simp" descr="Include in simplifier set">
<pgipbool/>
</haspref>
<haspref name="thm-intro" descr="Flag as introduction rule">
<pgipbool/>
</haspref>
<haspref name="thm-elim" descr="Flag as elimination rule">
<pgipbool/>
</haspref>
<haspref name="thm-dest" descr="Flag as destruction rule">
<pgipbool/>
</haspref>
</hasprefs>
</objtype>
<objtype name="theorem-proof" descr="Isabelle proof">
</objtype>
<objtype name="term" descr="Isabelle term">
<icon>
R0lGODlhJgAgAIQAAP////r6+uDg4Nra2tnZ2fn5+WFhYUJCQkFBQWBgYMnO
91xq6K208wsg3XiD7OTm+0FR5CY54Pb29t3d3dfX119fX/T09NbW1tjY2AAA
AAAAAAAAAAAAAAAAAAAAAAAAACH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh
+QQBCgAfACwAAAAAJgAgAAAFnCAgjmRpnqgYCAPhvnAsz7BQAIJxIHzv/8Cg
LyHA6YTI5I8IWLVo0Gjtlqpar9istqRYLBTbMIDRaDDEW7IZrVWf2VYGw1F2
yBkP+KnM77/1Jm6AcWV/gyeChyiJioGFjYiPkCWMkyKVlpiTmpBqEJYlEWUR
XgugDBCjDnmgrZMSExQUUrQ0NgADFUq7SUy5vMBATBYDFxi1yFMAIQA7
</icon>
</objtype>
<objtype name="type" descr="Isabelle type">
<icon>
R0lGODlhJgAgAIQAAP////r6+uDg4Nra2tnZ2fn5+WFhYUJCQkFBQWBgYOTm
+62080FR5Asg3SY54Fxq6MnO95Kc73iD7Pb29t3d3dfX119fX/T09NbW1tjY
2AAAAAAAAAAAAAAAAAAAAAAAACH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh
+QQBCgAfACwAAAAAJgAgAAAFsyAgjmRpnqgYCAPhvnAsz7BQAIJxIHzv/8Cg
LyHA6YTI5I8IWLVo0Gjtlqpar9istqRYeL9exbaqYDTOaPRijFI40vDGmm16
NB74NwOPh9C5DWIidn9VERIkb4UpEYIiZ4tZkJFWEA0MlFYLd5lVmw+dKZ8k
fqEim4GnoKYAlndiDIisAG9ppawSaauzALkNsrzBwsPEIxMUFRVSyzQ2AAMW
StJJTNDT10BMFwMYGczfUwAhADs=
</icon>
</objtype>
<objtype name="thmset" descr="Set of Isabelle theorems">
<contains objtype="theorem"/>
</objtype>
<!-- possible objtypes not yet supported:
<objtype name="method" descr="Isar method or proof step"></objtype>
-->
<!-- object operations -->
<opn name="theory" descr="make a theory">
<opsrc name="name">identifier</opsrc>
<opsrc name="imports" listwithsep=" ">theory</opsrc>
<optrg>theory</optrg>
<opcmd>theory %name imports %imports begin
end</opcmd>
</opn>
<opn name="open lemma">
<inputform>
<field name="name"><pgipstring/><prompt>Input a name:</prompt></field>
<field name="term"><pgipstring/><prompt>Input a term:</prompt></field>
<field name="attributes">
<pgipchoice>
<pgipconst name="" descr="none"></pgipconst>
<pgipconst name="[simp]" descr="use in global simplifier context"></pgipconst>
</pgipchoice>
<prompt>Attributes:</prompt></field>
</inputform>
<opsrc></opsrc>
<opcmd>lemma %attributes %name : "%term"
sorry
</opcmd>
</opn>
<opn name="add to simpset">
<opsrc>theorem</opsrc>
<optrg></optrg>
<opcmd>declare %1 [simp]</opcmd>
</opn>
<opn name="remove from simpset">
<opsrc>theorem</opsrc>
<optrg></optrg>
<opcmd>declare %1 [simp del]</opcmd>
</opn>
<opn name="instantiate" descr="instantiate variable in theorem">
<opsrc>theorem</opsrc>
<opsrc>term</opsrc>
<optrg>theorem</optrg>
<opcmd>%1 [OF %2]</opcmd>
</opn>
<!-- interactive operations -->
<!-- da: this isn't really a good example.
Isar doesn't have cterms, the "term" command just checks & prints
a term in the current context. -->
<opn name="checkterm">
<inputform>
<field name="term"><pgipstring/><prompt>Input a term:</prompt></field>
</inputform>
<opsrc></opsrc>
<optrg>term</optrg>
<opcmd>term %term</opcmd>
</opn>
<!-- proof operations -->
<opn name="applyrule">
<opsrc>ruleset</opsrc>
<opcmd>apply (rule %1)</opcmd>
</opn>
<opn name="applyerule">
<opsrc>ruleset</opsrc>
<opcmd>apply (erule %1)</opcmd>
</opn>
<opn name="applydrule">
<opsrc>ruleset</opsrc>
<opcmd>apply (drule %1)</opcmd>
</opn>
<!-- introduce new goal -->
<!-- [FIXME: ideally need to generalise substitution for options? in pgipchoice] -->
</displayconfig>