Merge and upgrade to development version of Isabelle/HOL.
ci/woodpecker/push/build Pipeline failed
Details
ci/woodpecker/push/build Pipeline failed
Details
This commit is contained in:
commit
0d74645d2e
|
@ -751,7 +751,7 @@ This normal form is closed under deterministic and communication operators.
|
||||||
The advantage of this format is that we can mimick the well-known product automata construction
|
The advantage of this format is that we can mimick the well-known product automata construction
|
||||||
for an arbitrary number of synchronized processes under normal form.
|
for an arbitrary number of synchronized processes under normal form.
|
||||||
We only show the case of the synchronous product of two processes: \<close>
|
We only show the case of the synchronous product of two processes: \<close>
|
||||||
text*[T3::"theorem", short_name="\<open>Product Construction\<close>", level="Some 2"]\<open>
|
Theorem*[T3, short_name="\<open>Product Construction\<close>", level="Some 2"]\<open>
|
||||||
Parallel composition translates to normal form:
|
Parallel composition translates to normal form:
|
||||||
@{cartouche [display,indent=5]\<open>(P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\<lbrakk>\<tau>\<^sub>1,\<upsilon>\<^sub>1\<rbrakk> \<sigma>\<^sub>1) || (P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\<lbrakk>\<tau>\<^sub>2,\<upsilon>\<^sub>2\<rbrakk> \<sigma>\<^sub>2) =
|
@{cartouche [display,indent=5]\<open>(P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\<lbrakk>\<tau>\<^sub>1,\<upsilon>\<^sub>1\<rbrakk> \<sigma>\<^sub>1) || (P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\<lbrakk>\<tau>\<^sub>2,\<upsilon>\<^sub>2\<rbrakk> \<sigma>\<^sub>2) =
|
||||||
P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\<lbrakk>\<lambda>(\<sigma>\<^sub>1,\<sigma>\<^sub>2). \<tau>\<^sub>1 \<sigma>\<^sub>1 \<inter> \<tau>\<^sub>2 \<sigma>\<^sub>2 , \<lambda>(\<sigma>\<^sub>1,\<sigma>\<^sub>2).\<lambda>e.(\<upsilon>\<^sub>1 \<sigma>\<^sub>1 e, \<upsilon>\<^sub>2 \<sigma>\<^sub>2 e)\<rbrakk> (\<sigma>\<^sub>1,\<sigma>\<^sub>2)\<close>}
|
P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\<lbrakk>\<lambda>(\<sigma>\<^sub>1,\<sigma>\<^sub>2). \<tau>\<^sub>1 \<sigma>\<^sub>1 \<inter> \<tau>\<^sub>2 \<sigma>\<^sub>2 , \<lambda>(\<sigma>\<^sub>1,\<sigma>\<^sub>2).\<lambda>e.(\<upsilon>\<^sub>1 \<sigma>\<^sub>1 e, \<upsilon>\<^sub>2 \<sigma>\<^sub>2 e)\<rbrakk> (\<sigma>\<^sub>1,\<sigma>\<^sub>2)\<close>}
|
||||||
|
|
|
@ -347,7 +347,7 @@ text\<open>
|
||||||
\<^item> \<^ML>\<open>Context.proper_subthy : theory * theory -> bool\<close> subcontext test
|
\<^item> \<^ML>\<open>Context.proper_subthy : theory * theory -> bool\<close> subcontext test
|
||||||
\<^item> \<^ML>\<open>Context.Proof: Proof.context -> Context.generic \<close> A constructor embedding local contexts
|
\<^item> \<^ML>\<open>Context.Proof: Proof.context -> Context.generic \<close> A constructor embedding local contexts
|
||||||
\<^item> \<^ML>\<open>Context.proof_of : Context.generic -> Proof.context\<close> the inverse
|
\<^item> \<^ML>\<open>Context.proof_of : Context.generic -> Proof.context\<close> the inverse
|
||||||
\<^item> \<^ML>\<open>Context.theory_name : theory -> string\<close>
|
\<^item> \<^ML>\<open>Context.theory_name : {long:bool} -> theory -> string\<close>
|
||||||
\<^item> \<^ML>\<open>Context.map_theory: (theory -> theory) -> Context.generic -> Context.generic\<close>
|
\<^item> \<^ML>\<open>Context.map_theory: (theory -> theory) -> Context.generic -> Context.generic\<close>
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
|
@ -358,7 +358,7 @@ text\<open>The structure \<^ML_structure>\<open>Proof_Context\<close> provides a
|
||||||
\<^item> \<^ML>\<open> Context.Proof: Proof.context -> Context.generic \<close>
|
\<^item> \<^ML>\<open> Context.Proof: Proof.context -> Context.generic \<close>
|
||||||
the path to a generic Context, i.e. a sum-type of global and local contexts
|
the path to a generic Context, i.e. a sum-type of global and local contexts
|
||||||
in order to simplify system interfaces
|
in order to simplify system interfaces
|
||||||
\<^item> \<^ML>\<open> Proof_Context.get_global: theory -> string -> Proof.context\<close>
|
\<^item> \<^ML>\<open> Proof_Context.get_global: {long:bool} -> theory -> string -> Proof.context\<close>
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
|
|
||||||
|
@ -891,7 +891,6 @@ datatype thy = Thy of
|
||||||
\<^item> \<^ML>\<open>Theory.axiom_space: theory -> Name_Space.T\<close>
|
\<^item> \<^ML>\<open>Theory.axiom_space: theory -> Name_Space.T\<close>
|
||||||
\<^item> \<^ML>\<open>Theory.all_axioms_of: theory -> (string * term) list\<close>
|
\<^item> \<^ML>\<open>Theory.all_axioms_of: theory -> (string * term) list\<close>
|
||||||
\<^item> \<^ML>\<open>Theory.defs_of: theory -> Defs.T\<close>
|
\<^item> \<^ML>\<open>Theory.defs_of: theory -> Defs.T\<close>
|
||||||
\<^item> \<^ML>\<open>Theory.join_theory: theory list -> theory\<close>
|
|
||||||
\<^item> \<^ML>\<open>Theory.at_begin: (theory -> theory option) -> theory -> theory\<close>
|
\<^item> \<^ML>\<open>Theory.at_begin: (theory -> theory option) -> theory -> theory\<close>
|
||||||
\<^item> \<^ML>\<open>Theory.at_end: (theory -> theory option) -> theory -> theory\<close>
|
\<^item> \<^ML>\<open>Theory.at_end: (theory -> theory option) -> theory -> theory\<close>
|
||||||
\<^item> \<^ML>\<open>Theory.begin_theory: string * Position.T -> theory list -> theory\<close>
|
\<^item> \<^ML>\<open>Theory.begin_theory: string * Position.T -> theory list -> theory\<close>
|
||||||
|
|
|
@ -23,35 +23,35 @@
|
||||||
|
|
||||||
|
|
||||||
\newkeycommand*{\mathcc}[label=,type=%
|
\newkeycommand*{\mathcc}[label=,type=%
|
||||||
, scholarly_paper.math_content.short_name ={}%
|
, scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTshortUNDERSCOREname ={}%
|
||||||
, scholarly_paper.math_content.mcc = %
|
, scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTmcc = %
|
||||||
, Isa_COL.text_element.level =%
|
, IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTlevel =%
|
||||||
, Isa_COL.text_element.referentiable =%
|
, IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTreferentiable =%
|
||||||
, Isa_COL.text_element.variants =%
|
, IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTvariants =%
|
||||||
, scholarly_paper.text_section.main_author =%
|
, scholarlyUNDERSCOREpaperDOTtextUNDERSCOREsectionDOTmainUNDERSCOREauthor =%
|
||||||
, scholarly_paper.text_section.fixme_list =%
|
, scholarlyUNDERSCOREpaperDOTtextUNDERSCOREsectionDOTfixmeUNDERSCORElist =%
|
||||||
, Isa_COL.text_element.level =%
|
, IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTlevel =%
|
||||||
, scholarly_paper.technical.definition_list =%
|
, scholarlyUNDERSCOREpaperDOTtechnicalDOTdefinitionUNDERSCORElist =%
|
||||||
, scholarly_paper.technical.status =%
|
, scholarlyUNDERSCOREpaperDOTtechnicalDOTstatus =%
|
||||||
, CC_terminology.concept_definition.tag=%
|
, CCUNDERSCOREterminologyDOTconceptUNDERSCOREdefinitionDOTtag=%
|
||||||
, CC_terminology.concept_definition.short_tag=%
|
, CCUNDERSCOREterminologyDOTconceptUNDERSCOREdefinitionDOTshortUNDERSCOREtag=%
|
||||||
]
|
]
|
||||||
[1]
|
[1]
|
||||||
{%
|
{%
|
||||||
\begin{isamarkuptext}%
|
\begin{isamarkuptext}%
|
||||||
\ifthenelse{\equal{\commandkey{scholarly_paper.math_content.short_name}} {} }
|
\ifthenelse{\equal{\commandkey{scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTshortUNDERSCOREname}} {} }
|
||||||
{%
|
{%
|
||||||
\begin{\commandkey{scholarly_paper.math_content.mcc}}\label{\commandkey{label}}
|
\begin{\commandkey{scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTmcc}}\label{\commandkey{label}}
|
||||||
#1
|
#1
|
||||||
\end{\commandkey{scholarly_paper.math_content.mcc}}
|
\end{\commandkey{scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTmcc}}
|
||||||
}{%
|
}{%
|
||||||
\begin{\commandkey{scholarly_paper.math_content.mcc}}[\commandkey{scholarly_paper.math_content.short_name}]\label{\commandkey{label}}
|
\begin{\commandkey{scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTmcc}}[\commandkey{scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTshortUNDERSCOREname}]\label{\commandkey{label}}
|
||||||
#1
|
#1
|
||||||
\end{\commandkey{scholarly_paper.math_content.mcc}}
|
\end{\commandkey{scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTmcc}}
|
||||||
}
|
}
|
||||||
\end{isamarkuptext}%
|
\end{isamarkuptext}%
|
||||||
}
|
}
|
||||||
|
|
||||||
\expandafter\def\csname isaDof.text.scholarly_paper.math_content\endcsname{\mathcc}
|
\expandafter\def\csname isaDofDOTtextDOTscholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent\endcsname{\mathcc}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -60,26 +60,26 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
\newcommand{\SRACautorefname}{SRAC}
|
\newcommand{\SRACautorefname}{SRAC}
|
||||||
\newisadof{text.CENELEC_50128.SRAC}%
|
\newisadof{textDOTCENELECUNDERSCORE50128DOTSRAC}%
|
||||||
[label=,type=%
|
[label=,type=%
|
||||||
,Isa_COL.text_element.level=%
|
,IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTlevel=%
|
||||||
,Isa_COL.text_element.referentiable=%
|
,IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTreferentiable=%
|
||||||
,Isa_COL.text_element.variants=%
|
,IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTvariants=%
|
||||||
,CENELEC_50128.requirement.is_concerned=%
|
,CENELECUNDERSCORE50128DOTrequirementDOTisUNDERSCOREconcerned=%
|
||||||
,CENELEC_50128.requirement.long_name=%
|
,CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname=%
|
||||||
,CENELEC_50128.SRAC.formal_repr=%
|
,CENELECUNDERSCORE50128DOTSRACDOTformalUNDERSCORErepr=%
|
||||||
,CENELEC_50128.SRAC.assumption_kind=%
|
,CENELECUNDERSCORE50128DOTSRACDOTassumptionUNDERSCOREkind=%
|
||||||
,CENELEC_50128.EC.assumption_kind=%
|
,CENELECUNDERSCORE50128DOTECDOTassumptionUNDERSCOREkind=%
|
||||||
,CENELEC_50128.assumption.assumption_kind=%
|
,CENELECUNDERSCORE50128DOTassumptionDOTassumptionUNDERSCOREkind=%
|
||||||
][1]{%
|
][1]{%
|
||||||
\begin{isamarkuptext}%
|
\begin{isamarkuptext}%
|
||||||
\ifthenelse{\equal{\commandkey{CENELEC_50128.requirement.long_name}}{}}{%
|
\ifthenelse{\equal{\commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}}{}}{%
|
||||||
\begin{SRAC}%
|
\begin{SRAC}%
|
||||||
\addxcontentsline{tos}{chapter}[]{\autoref{\commandkey{label}}}%
|
\addxcontentsline{tos}{chapter}[]{\autoref{\commandkey{label}}}%
|
||||||
}{%
|
}{%
|
||||||
\begin{SRAC}[\commandkey{CENELEC_50128.requirement.long_name}]%
|
\begin{SRAC}[\commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}]%
|
||||||
\addxcontentsline{tos}{chapter}[]{\autoref{\commandkey{label}}: \commandkey{CENELEC_50128.requirement.long_name}}%
|
\addxcontentsline{tos}{chapter}[]{\autoref{\commandkey{label}}: \commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}}%
|
||||||
\DOFindex{SRAC}{\commandkey{CENELEC_50128.requirement.long_name}}%
|
\DOFindex{SRAC}{\commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}}%
|
||||||
}\label{\commandkey{label}}%
|
}\label{\commandkey{label}}%
|
||||||
#1%
|
#1%
|
||||||
\end{SRAC}
|
\end{SRAC}
|
||||||
|
@ -113,26 +113,26 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
\newcommand{\ECautorefname}{EC}
|
\newcommand{\ECautorefname}{EC}
|
||||||
\newisadof{text.CENELEC_50128.EC}%
|
\newisadof{textDOTCENELECUNDERSCORE50128DOTEC}%
|
||||||
[label=,type=%
|
[label=,type=%
|
||||||
,Isa_COL.text_element.level=%
|
,IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTlevel=%
|
||||||
,Isa_COL.text_element.referentiable=%
|
,IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTreferentiable=%
|
||||||
,Isa_COL.text_element.variants=%
|
,IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTvariants=%
|
||||||
,CENELEC_50128.requirement.is_concerned=%
|
,CENELECUNDERSCORE50128DOTrequirementDOTisUNDERSCOREconcerned=%
|
||||||
,CENELEC_50128.requirement.long_name=%
|
,CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname=%
|
||||||
,CENELEC_50128.SRAC.formal_repr=%
|
,CENELECUNDERSCORE50128DOTSRACDOTformalUNDERSCORErepr=%
|
||||||
,CENELEC_50128.SRAC.assumption_kind=%
|
,CENELECUNDERSCORE50128DOTSRACDOTassumptionUNDERSCOREkind=%
|
||||||
,CENELEC_50128.EC.assumption_kind=%
|
,CENELECUNDERSCORE50128DOTECDOTassumptionUNDERSCOREkind=%
|
||||||
,CENELEC_50128.assumption.assumption_kind=%
|
,CENELECUNDERSCORE50128DOTassumptionDOTassumptionUNDERSCOREkind=%
|
||||||
][1]{%
|
][1]{%
|
||||||
\begin{isamarkuptext}%
|
\begin{isamarkuptext}%
|
||||||
\ifthenelse{\equal{\commandkey{CENELEC_50128.requirement.long_name}}{}}{%
|
\ifthenelse{\equal{\commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}}{}}{%
|
||||||
\begin{EC}%
|
\begin{EC}%
|
||||||
\addxcontentsline{tos}{chapter}[]{\autoref{\commandkey{label}}}%
|
\addxcontentsline{tos}{chapter}[]{\autoref{\commandkey{label}}}%
|
||||||
}{%
|
}{%
|
||||||
\begin{EC}[\commandkey{CENELEC_50128.requirement.long_name}]%
|
\begin{EC}[\commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}]%
|
||||||
\addxcontentsline{toe}{chapter}[]{\autoref{\commandkey{label}}: \commandkey{CENELEC_50128.requirement.long_name}}%
|
\addxcontentsline{toe}{chapter}[]{\autoref{\commandkey{label}}: \commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}}%
|
||||||
\DOFindex{EC}{\commandkey{CENELEC_50128.requirement.long_name}}%
|
\DOFindex{EC}{\commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}}%
|
||||||
}\label{\commandkey{label}}%
|
}\label{\commandkey{label}}%
|
||||||
#1%
|
#1%
|
||||||
\end{EC}
|
\end{EC}
|
||||||
|
@ -155,23 +155,23 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
\newcommand{\assumptionautorefname}{assumption}
|
\newcommand{\assumptionautorefname}{assumption}
|
||||||
\newisadof{text.CENELEC_50128.assumption}%
|
\newisadof{textDOTCENELECUNDERSCORE50128DOTassumption}%
|
||||||
[label=,type=%
|
[label=,type=%
|
||||||
,Isa_COL.text_element.level=%
|
,IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTlevel=%
|
||||||
,Isa_COL.text_element.referentiable=%
|
,IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTreferentiable=%
|
||||||
,Isa_COL.text_element.variants=%
|
,IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTvariants=%
|
||||||
,CENELEC_50128.requirement.is_concerned=%
|
,CENELECUNDERSCORE50128DOTrequirementDOTisUNDERSCOREconcerned=%
|
||||||
,CENELEC_50128.requirement.long_name=%
|
,CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname=%
|
||||||
,CENELEC_50128.SRAC.formal_repr=%
|
,CENELECUNDERSCORE50128DOTSRACDOTformalUNDERSCORErepr=%
|
||||||
,CENELEC_50128.SRAC.assumption_kind=%
|
,CENELECUNDERSCORE50128DOTSRACDOTassumptionUNDERSCOREkind=%
|
||||||
,CENELEC_50128.assumption.assumption_kind=%
|
,CENELECUNDERSCORE50128DOTassumptionDOTassumptionUNDERSCOREkind=%
|
||||||
][1]{%
|
][1]{%
|
||||||
\begin{isamarkuptext}%
|
\begin{isamarkuptext}%
|
||||||
\ifthenelse{\equal{\commandkey{CENELEC_50128.requirement.long_name}}{}}{%
|
\ifthenelse{\equal{\commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}}{}}{%
|
||||||
\begin{assumption}%
|
\begin{assumption}%
|
||||||
}{%
|
}{%
|
||||||
\begin{assumption}[\commandkey{CENELEC_50128.requirement.long_name}]%
|
\begin{assumption}[\commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}]%
|
||||||
\DOFindex{assumption}{\commandkey{CENELEC_50128.requirement.long_name}}%
|
\DOFindex{assumption}{\commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}}%
|
||||||
}\label{\commandkey{label}}%
|
}\label{\commandkey{label}}%
|
||||||
#1%
|
#1%
|
||||||
\end{assumption}
|
\end{assumption}
|
||||||
|
@ -196,23 +196,23 @@
|
||||||
|
|
||||||
|
|
||||||
\newcommand{\hypothesisautorefname}{hypothesis}
|
\newcommand{\hypothesisautorefname}{hypothesis}
|
||||||
\newisadof{text.CENELEC_50128.hypothesis}%
|
\newisadof{textDOTCENELECUNDERSCORE50128DOThypothesis}%
|
||||||
[label=,type=%
|
[label=,type=%
|
||||||
,Isa_COL.text_element.level=%
|
,IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTlevel=%
|
||||||
,Isa_COL.text_element.referentiable=%
|
,IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTreferentiable=%
|
||||||
,Isa_COL.text_element.variants=%
|
,IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTvariants=%
|
||||||
,CENELEC_50128.requirement.is_concerned=%
|
,CENELECUNDERSCORE50128DOTrequirementDOTisUNDERSCOREconcerned=%
|
||||||
,CENELEC_50128.requirement.long_name=%
|
,CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname=%
|
||||||
,CENELEC_50128.SRAC.formal_repr=%
|
,CENELECUNDERSCORE50128DOTSRACDOTformalUNDERSCORErepr=%
|
||||||
,CENELEC_50128.SRAC.hypothesis_kind=%
|
,CENELECUNDERSCORE50128DOTSRACDOThypothesisUNDERSCOREkind=%
|
||||||
,CENELEC_50128.hypothesis.hyp_type=%
|
,CENELECUNDERSCORE50128DOThypothesisDOThypUNDERSCOREtype=%
|
||||||
][1]{%
|
][1]{%
|
||||||
\begin{isamarkuptext}%
|
\begin{isamarkuptext}%
|
||||||
\ifthenelse{\equal{\commandkey{CENELEC_50128.requirement.long_name}}{}}{%
|
\ifthenelse{\equal{\commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}}{}}{%
|
||||||
\begin{hypothesis}%
|
\begin{hypothesis}%
|
||||||
}{%
|
}{%
|
||||||
\begin{hypothesis}[\commandkey{CENELEC_50128.requirement.long_name}]%
|
\begin{hypothesis}[\commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}]%
|
||||||
\DOFindex{hypothesis}{\commandkey{CENELEC_50128.requirement.long_name}}%
|
\DOFindex{hypothesis}{\commandkey{CENELECUNDERSCORE50128DOTrequirementDOTlongUNDERSCOREname}}%
|
||||||
}\label{\commandkey{label}}%
|
}\label{\commandkey{label}}%
|
||||||
#1%
|
#1%
|
||||||
\end{hypothesis}
|
\end{hypothesis}
|
||||||
|
|
|
@ -180,7 +180,6 @@ text*[tu15::scholarly_paper.experiment ]\<open>Lectus accumsan velit ultrices, .
|
||||||
text*[tu16::scholarly_paper.hypothesis ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
text*[tu16::scholarly_paper.hypothesis ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
text*[tu17::scholarly_paper.math_proof ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
text*[tu17::scholarly_paper.math_proof ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
text*[tu18::scholarly_paper.consequence]\<open>Lectus accumsan velit ultrices, ...\<close>
|
text*[tu18::scholarly_paper.consequence]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
text*[tu26::scholarly_paper.math_explanation]\<open>Lectus accumsan velit ultrices, ...\<close>
|
|
||||||
text*[tu19::scholarly_paper.math_formal]\<open>Lectus accumsan velit ultrices, ...\<close>
|
text*[tu19::scholarly_paper.math_formal]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
text*[tu20::scholarly_paper.proposition]\<open>Lectus accumsan velit ultrices, ...\<close>
|
text*[tu20::scholarly_paper.proposition]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
text*[tu21::scholarly_paper.math_content ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
text*[tu21::scholarly_paper.math_content ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
@ -194,4 +193,44 @@ text*[tu8::scholarly_paper.tech_code] \<open>Lectus accumsan velit ultric
|
||||||
text*[tu27::scholarly_paper.engineering_content]\<open>Lectus accumsan velit ultrices, ...\<close>
|
text*[tu27::scholarly_paper.engineering_content]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
text*[tu14::scholarly_paper.evaluation ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
text*[tu14::scholarly_paper.evaluation ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
|
||||||
|
text\<open> @{axiom tu1} @{lemma tu2} @{example tu3} @{premise tu4} @{theorem tu5} @{assertion tu6}
|
||||||
|
@{technical tu9} @{assumption tu10 } @{definition tu13 }
|
||||||
|
@{experiment tu15 } @{hypothesis tu16 } @{math_proof tu17 }
|
||||||
|
@{consequence tu18 } @{math_formal tu19 } @{proposition tu20 }
|
||||||
|
@{math_content tu21 } @{math_example tu22 } @{conclusion_stmt tu23 }
|
||||||
|
@{math_motivation tu24 } @{tech_definition tu25 } @{eng_example tu28 }
|
||||||
|
@{tech_example tt10 } @{tech_code tu8 } @{engineering_content tu27 }
|
||||||
|
@{evaluation tu14 }
|
||||||
|
\<close>
|
||||||
|
|
||||||
|
subsection\<open>The Use in Macros\<close>
|
||||||
|
|
||||||
|
Lemma*[ttu2::scholarly_paper.lemma ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
Example*[ttu3::scholarly_paper.math_example ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
Premise*[ttu4::scholarly_paper.premise ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
Theorem*[ttu5::scholarly_paper.theorem ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
Assertion*[ttu6::scholarly_paper.assertion]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
Corollary*[ttu7::scholarly_paper.corollary]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
Assumption*[ttu10::scholarly_paper.assumption ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
Definition*[ttu13::scholarly_paper.definition ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
Hypothesis*[ttu16::scholarly_paper.hypothesis ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
Proof*[ttu17::scholarly_paper.math_proof ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
Consequence*[ttu18::scholarly_paper.consequence]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
Proposition*[ttu20::scholarly_paper.proposition]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
Conclusion*[ttu23::scholarly_paper.conclusion_stmt ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
(* Definition*[ttu25::scholarly_paper.tech_definition ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
interesting modeling bug.
|
||||||
|
*)
|
||||||
|
(*Example*[ttu28::scholarly_paper.eng_example ]\<open>Lectus accumsan velit ultrices, ...\<close>
|
||||||
|
interesting modeling bug.
|
||||||
|
*)
|
||||||
|
text\<open> @{lemma ttu2} @{math_example ttu3} @{premise ttu4} @{theorem ttu5} @{assertion ttu6}
|
||||||
|
@{assumption ttu10 } @{definition ttu13 }
|
||||||
|
@{hypothesis ttu16 } @{math_proof ttu17 }
|
||||||
|
@{consequence ttu18 } @{proposition ttu20 }
|
||||||
|
@{math_content tu21 } @{conclusion_stmt ttu23 }
|
||||||
|
@ \<open>{eng_example ttu28 }\<close>
|
||||||
|
@ \<open>{tech_example tt10 }\<close>
|
||||||
|
\<close>
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -46,11 +46,11 @@ session "Isabelle_DOF" (AFP) = "Functional-Automata" +
|
||||||
"figures/definition-use-CSP-pdf.png"
|
"figures/definition-use-CSP-pdf.png"
|
||||||
"figures/definition-use-CSP.png"
|
"figures/definition-use-CSP.png"
|
||||||
"figures/MyCommentedIsabelle.png"
|
"figures/MyCommentedIsabelle.png"
|
||||||
"figures/doc-mod-generic.png"
|
"figures/doc-mod-generic.pdf"
|
||||||
"figures/doc-mod-isar.png"
|
"figures/doc-mod-isar.pdf"
|
||||||
"figures/doc-mod-onto-docinst.png"
|
"figures/doc-mod-onto-docinst.pdf"
|
||||||
"figures/doc-mod-DOF.png"
|
"figures/doc-mod-DOF.pdf"
|
||||||
"figures/doc-mod-term-aq.png"
|
"figures/doc-mod-term-aq.pdf"
|
||||||
export_classpath
|
export_classpath
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -20,7 +20,7 @@
|
||||||
@Manual{ wenzel:isabelle-isar:2020,
|
@Manual{ wenzel:isabelle-isar:2020,
|
||||||
title = {The Isabelle/Isar Reference Manual},
|
title = {The Isabelle/Isar Reference Manual},
|
||||||
author = {Makarius Wenzel},
|
author = {Makarius Wenzel},
|
||||||
year = 2020,
|
year = 2022,
|
||||||
note = {Part of the Isabelle distribution.}
|
note = {Part of the Isabelle distribution.}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,23 +21,23 @@
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% begin: figure*
|
% begin: figure*
|
||||||
\NewEnviron{isamarkupfigure*}[1][]{\isaDof[env={figure},#1]{\BODY}}
|
\NewEnviron{isamarkupfigure*}[1][]{\isaDof[env={figure},#1]{\BODY}}
|
||||||
\newisadof{figure.Isa_COL.figure}%
|
\newisadof{figureDOTIsaUNDERSCORECOLDOTfigure}%
|
||||||
[label=,type=%
|
[label=,type=%
|
||||||
,Isa_COL.figure.relative_width=%
|
,IsaUNDERSCORECOLDOTfigureDOTrelativeUNDERSCOREwidth=%
|
||||||
,Isa_COL.figure.placement=%
|
,IsaUNDERSCORECOLDOTfigureDOTplacement=%
|
||||||
,Isa_COL.figure.src=%
|
,IsaUNDERSCORECOLDOTfigureDOTsrc=%
|
||||||
,Isa_COL.figure.spawn_columns=enum False True%
|
,IsaUNDERSCORECOLDOTfigureDOTspawnUNDERSCOREcolumns=enum False True%
|
||||||
][1]{%
|
][1]{%
|
||||||
\begin{figure}[]
|
\begin{figure}[]
|
||||||
\centering
|
\centering
|
||||||
\ifcommandkey{Isa_COL.figure.relative_width}
|
\ifcommandkey{IsaUNDERSCORECOLDOTfigureDOTrelativeUNDERSCOREwidth}
|
||||||
{%
|
{%
|
||||||
\gdef\dof@width{\commandkey{Isa_COL.figure.relative_width}}
|
\gdef\dof@width{\commandkey{IsaUNDERSCORECOLDOTfigureDOTrelativeUNDERSCOREwidth}}
|
||||||
\gdef\dof@src{\commandkey{Isa_COL.figure.src}}
|
\gdef\dof@src{\commandkey{IsaUNDERSCORECOLDOTfigureDOTsrc}}
|
||||||
\FPdiv\scale{\dof@width}{100}%
|
\FPdiv\scale{\dof@width}{100}%
|
||||||
\includegraphics[width=\scale\textwidth]{\dof@src}%
|
\includegraphics[width=\scale\textwidth]{\dof@src}%
|
||||||
}{%
|
}{%
|
||||||
\gdef\dof@src{\commandkey{Isa_COL.figure.src}}
|
\gdef\dof@src{\commandkey{IsaUNDERSCORECOLDOTfigureDOTsrc}}
|
||||||
\includegraphics[]{\dof@src}%
|
\includegraphics[]{\dof@src}%
|
||||||
}
|
}
|
||||||
\caption{#1}\label{\commandkey{label}}%
|
\caption{#1}\label{\commandkey{label}}%
|
||||||
|
@ -50,44 +50,44 @@
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% begin: side_by_side_figure*
|
% begin: side_by_side_figure*
|
||||||
\NewEnviron{isamarkupsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigure*}[1][]{\isaDof[env={side_by_side_figure},#1]{\BODY}}
|
\NewEnviron{isamarkupsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigure*}[1][]{\isaDof[env={sideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigure},#1]{\BODY}}
|
||||||
\newisadof{side_by_side_figure.Isa_COL.side_by_side_figure}%
|
\newisadof{sideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTIsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigure}%
|
||||||
[label=,type=%
|
[label=,type=%
|
||||||
,Isa_COL.figure.relative_width=%
|
,IsaUNDERSCORECOLDOTfigureDOTrelativeUNDERSCOREwidth=%
|
||||||
,Isa_COL.figure.placement=%
|
,IsaUNDERSCORECOLDOTfigureDOTplacement=%
|
||||||
,Isa_COL.figure.src=%
|
,IsaUNDERSCORECOLDOTfigureDOTsrc=%
|
||||||
,Isa_COL.side_by_side_figure.anchor=%
|
,IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTanchor=%
|
||||||
,Isa_COL.side_by_side_figure.caption=%
|
,IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTcaption=%
|
||||||
,Isa_COL.side_by_side_figure.relative_width2=%
|
,IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTrelativeUNDERSCOREwidthTWO=%
|
||||||
,Isa_COL.side_by_side_figure.src2=%
|
,IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTsrcTWO=%
|
||||||
,Isa_COL.side_by_side_figure.anchor2=%
|
,IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTanchorTWO=%
|
||||||
,Isa_COL.side_by_side_figure.caption2=%
|
,IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTcaptionTWO=%
|
||||||
,Isa_COL.side_by_side_figure.placement=%
|
,IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTplacement=%
|
||||||
,Isa_COL.figure.spawn_columns=enum False True%
|
,IsaUNDERSCORECOLDOTfigureDOTspawnUNDERSCOREcolumns=enum False True%
|
||||||
][1]{%
|
][1]{%
|
||||||
\begin{figure}[]
|
\begin{figure}[]
|
||||||
\subfloat[\label{\commandkey{Isa_COL.side_by_side_figure.anchor}}\commandkey{Isa_COL.side_by_side_figure.caption}]%
|
\subfloat[\label{\commandkey{IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTanchor}}\commandkey{IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTcaption}]%
|
||||||
{\ifcommandkey{Isa_COL.figure.relative_width}%
|
{\ifcommandkey{IsaUNDERSCORECOLDOTfigureDOTrelativeUNDERSCOREwidth}%
|
||||||
{%
|
{%
|
||||||
\gdef\dof@width{\commandkey{Isa_COL.figure.relative_width}}
|
\gdef\dof@width{\commandkey{IsaUNDERSCORECOLDOTfigureDOTrelativeUNDERSCOREwidth}}
|
||||||
\gdef\dof@src{\commandkey{Isa_COL.figure.src}}
|
\gdef\dof@src{\commandkey{IsaUNDERSCORECOLDOTfigureDOTsrc}}
|
||||||
\FPdiv\scale{\dof@width}{100}%
|
\FPdiv\scale{\dof@width}{100}%
|
||||||
\includegraphics[width=\scale\textwidth]{\dof@src}%
|
\includegraphics[width=\scale\textwidth]{\dof@src}%
|
||||||
}{%
|
}{%
|
||||||
\gdef\dof@src{\commandkey{Isa_COL.figure.src}}
|
\gdef\dof@src{\commandkey{IsaUNDERSCORECOLDOTfigureDOTsrc}}
|
||||||
\includegraphics[]{\dof@src}%
|
\includegraphics[]{\dof@src}%
|
||||||
}%
|
}%
|
||||||
}%
|
}%
|
||||||
\hfill%
|
\hfill%
|
||||||
\subfloat[\label{\commandkey{Isa_COL.side_by_side_figure.anchor2}}\commandkey{Isa_COL.side_by_side_figure.caption2}]%
|
\subfloat[\label{\commandkey{IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTanchorTWO}}\commandkey{IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTcaptionTWO}]%
|
||||||
{\ifcommandkey{Isa_COL.side_by_side_figure.relative_width2}%
|
{\ifcommandkey{IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTrelativeUNDERSCOREwidthTWO}%
|
||||||
{%
|
{%
|
||||||
\gdef\dof@width{\commandkey{Isa_COL.side_by_side_figure.relative_width2}}
|
\gdef\dof@width{\commandkey{IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTrelativeUNDERSCOREwidthTWO}}
|
||||||
\gdef\dof@src{\commandkey{Isa_COL.side_by_side_figure.src2}}
|
\gdef\dof@src{\commandkey{IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTsrcTWO}}
|
||||||
\FPdiv\scale{\dof@width}{100}%
|
\FPdiv\scale{\dof@width}{100}%
|
||||||
\includegraphics[width=\scale\textwidth]{\dof@src}%
|
\includegraphics[width=\scale\textwidth]{\dof@src}%
|
||||||
}{%
|
}{%
|
||||||
\gdef\dof@src{\commandkey{Isa_COL.side_by_side_figure.src2}}
|
\gdef\dof@src{\commandkey{IsaUNDERSCORECOLDOTsideUNDERSCOREbyUNDERSCOREsideUNDERSCOREfigureDOTsrcTWO}}
|
||||||
\includegraphics[]{\dof@src}%
|
\includegraphics[]{\dof@src}%
|
||||||
}%
|
}%
|
||||||
}%
|
}%
|
||||||
|
|
|
@ -53,27 +53,27 @@
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% begin: newcommand wrapper
|
% begin: newcommand wrapper
|
||||||
\newcommand\newisadof[1]{\expandafter\newkeycommand\csname isaDof.#1\endcsname}%
|
\newcommand\newisadof[1]{\expandafter\newkeycommand\csname isaDofDOT#1\endcsname}%
|
||||||
\newcommand\renewisadof[1]{\expandafter\renewkeycommand\csname isaDof.#1\endcsname}%
|
\newcommand\renewisadof[1]{\expandafter\renewkeycommand\csname isaDofDOT#1\endcsname}%
|
||||||
\newcommand\provideisadof[1]{\expandafter\providekeycommand\csname isaDof.#1\endcsname}%
|
\newcommand\provideisadof[1]{\expandafter\providekeycommand\csname isaDofDOT#1\endcsname}%
|
||||||
% end: newcommand wrapper
|
% end: newcommand wrapper
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% begin: generic dispatcher
|
% begin: generic dispatcher
|
||||||
\newkeycommand+[\|]\isaDof[env={UNKNOWN},label=,type={dummyT},args={}][1]{%
|
\newkeycommand+[\|]\isaDof[env={UNKNOWN},label=,type={dummyT},args={}][1]{%
|
||||||
\ifcsname isaDof.\commandkey{type}\endcsname%
|
\ifcsname isaDofDOT\commandkey{type}\endcsname%
|
||||||
\csname isaDof.\commandkey{type}\endcsname%
|
\csname isaDofDOT\commandkey{type}\endcsname%
|
||||||
[label=\commandkey{label},\commandkey{args}]{#1}%
|
[label=\commandkey{label},\commandkey{args}]{#1}%
|
||||||
\else%
|
\else%
|
||||||
\ifcsname isaDof.\commandkey{env}.\commandkey{type}\endcsname%
|
\ifcsname isaDofDOT\commandkey{env}DOT\commandkey{type}\endcsname%
|
||||||
\csname isaDof.\commandkey{env}.\commandkey{type}\endcsname%
|
\csname isaDofDOT\commandkey{env}DOT\commandkey{type}\endcsname%
|
||||||
[label=\commandkey{label},\commandkey{args}]{#1}%
|
[label=\commandkey{label},\commandkey{args}]{#1}%
|
||||||
\else%
|
\else%
|
||||||
\message{Isabelle/DOF: Using default LaTeX representation for concept %
|
\message{Isabelle/DOF: Using default LaTeX representation for concept %
|
||||||
"\commandkey{env}.\commandkey{type}".}%
|
"\commandkey{env}.\commandkey{type}".}%
|
||||||
\ifcsname isaDof.\commandkey{env}\endcsname%
|
\ifcsname isaDofDOT\commandkey{env}\endcsname%
|
||||||
\csname isaDof.\commandkey{env}\endcsname%
|
\csname isaDofDOT\commandkey{env}\endcsname%
|
||||||
[label=\commandkey{label}]{#1}%
|
[label=\commandkey{label}]{#1}%
|
||||||
\else%
|
\else%
|
||||||
\errmessage{Isabelle/DOF: No LaTeX representation for concept %
|
\errmessage{Isabelle/DOF: No LaTeX representation for concept %
|
||||||
|
|
|
@ -73,9 +73,9 @@
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% begin: title*
|
% begin: title*
|
||||||
\NewEnviron{isamarkuptitle*}[1][]{\isaDof[env={title},#1]{\BODY}}
|
\NewEnviron{isamarkuptitle*}[1][]{\isaDof[env={title},#1]{\BODY}}
|
||||||
\newisadof{title.scholarly_paper.title}%
|
\newisadof{titleDOTscholarlyUNDERSCOREpaperDOTtitle}%
|
||||||
[label=,type=%
|
[label=,type=%
|
||||||
,scholarly_paper.title.short_title=%
|
,scholarlyUNDERSCOREpaperDOTtitleDOTshortUNDERSCOREtitle=%
|
||||||
][1]{%
|
][1]{%
|
||||||
\immediate\write\@auxout{\noexpand\title{#1}}%
|
\immediate\write\@auxout{\noexpand\title{#1}}%
|
||||||
}
|
}
|
||||||
|
@ -85,9 +85,9 @@
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% begin: subtitle*
|
% begin: subtitle*
|
||||||
\NewEnviron{isamarkupsubtitle*}[1][]{\isaDof[env={subtitle},#1]{\BODY}}
|
\NewEnviron{isamarkupsubtitle*}[1][]{\isaDof[env={subtitle},#1]{\BODY}}
|
||||||
\newisadof{subtitle.scholarly_paper.subtitle}%
|
\newisadof{subtitleDOTscholarlyUNDERSCOREpaperDOTsubtitle}%
|
||||||
[label=,type=%
|
[label=,type=%
|
||||||
,scholarly_paper.subtitle.abbrev=%
|
,scholarlyUNDERSCOREpaperDOTsubtitleDOTabbrev=%
|
||||||
][1]{%
|
][1]{%
|
||||||
\immediate\write\@auxout{\noexpand\subtitle{#1}}%
|
\immediate\write\@auxout{\noexpand\subtitle{#1}}%
|
||||||
}
|
}
|
||||||
|
@ -128,21 +128,21 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
\NewEnviron{isamarkupauthor*}[1][]{\isaDof[env={text},#1]{\BODY}}
|
\NewEnviron{isamarkupauthor*}[1][]{\isaDof[env={text},#1]{\BODY}}
|
||||||
\provideisadof{text.scholarly_paper.author}%
|
\provideisadof{textDOTscholarlyUNDERSCOREpaperDOTauthor}%
|
||||||
[label=,type=%
|
[label=,type=%
|
||||||
,scholarly_paper.author.email=%
|
,scholarlyUNDERSCOREpaperDOTauthorDOTemail=%
|
||||||
,scholarly_paper.author.affiliation=%
|
,scholarlyUNDERSCOREpaperDOTauthorDOTaffiliation=%
|
||||||
,scholarly_paper.author.orcid=%
|
,scholarlyUNDERSCOREpaperDOTauthorDOTorcid=%
|
||||||
,scholarly_paper.author.http_site=%
|
,scholarlyUNDERSCOREpaperDOTauthorDOThttpUNDERSCOREsite=%
|
||||||
][1]{%
|
][1]{%
|
||||||
\stepcounter{dof@cnt@author}
|
\stepcounter{dof@cnt@author}
|
||||||
\def\dof@a{\commandkey{scholarly_paper.author.affiliation}}
|
\def\dof@a{\commandkey{scholarlyUNDERSCOREpaperDOTauthorDOTaffiliation}}
|
||||||
\ifthenelse{\equal{\commandkey{scholarly_paper.author.orcid}}{}}{%
|
\ifthenelse{\equal{\commandkey{scholarlyUNDERSCOREpaperDOTauthorDOTorcid}}{}}{%
|
||||||
\protected@write\@auxout{}{\string\addauthor{#1\string\inst{\thedof@cnt@author}}}%
|
\protected@write\@auxout{}{\string\addauthor{#1\string\inst{\thedof@cnt@author}}}%
|
||||||
}{%
|
}{%
|
||||||
\protected@write\@auxout{}{\string\addauthor{#1\string\inst{\thedof@cnt@author}\string\orcidID{\commandkey{scholarly_paper.author.orcid}}}}%
|
\protected@write\@auxout{}{\string\addauthor{#1\string\inst{\thedof@cnt@author}\string\orcidID{\commandkey{scholarlyUNDERSCOREpaperDOTauthorDOTorcid}}}}%
|
||||||
}
|
}
|
||||||
\protected@write\@auxout{}{\string\addaffiliation{\dof@a\\\string\email{\commandkey{scholarly_paper.author.email}}}}%
|
\protected@write\@auxout{}{\string\addaffiliation{\dof@a\\\string\email{\commandkey{scholarlyUNDERSCOREpaperDOTauthorDOTemail}}}}%
|
||||||
}
|
}
|
||||||
% end: scholarly_paper.author
|
% end: scholarly_paper.author
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
@ -151,15 +151,15 @@
|
||||||
% begin: scholarly_paper.abstract
|
% begin: scholarly_paper.abstract
|
||||||
\providecommand{\keywords}[1]{\mbox{}\\[2ex]\mbox{}\noindent{\textbf{Keywords:}} #1}
|
\providecommand{\keywords}[1]{\mbox{}\\[2ex]\mbox{}\noindent{\textbf{Keywords:}} #1}
|
||||||
\NewEnviron{isamarkupabstract*}[1][]{\isaDof[env={text},#1]{\BODY}}
|
\NewEnviron{isamarkupabstract*}[1][]{\isaDof[env={text},#1]{\BODY}}
|
||||||
\newisadof{text.scholarly_paper.abstract}%
|
\newisadof{textDOTscholarlyUNDERSCOREpaperDOTabstract}%
|
||||||
[label=,type=%
|
[label=,type=%
|
||||||
,scholarly_paper.abstract.keywordlist=%
|
,scholarlyUNDERSCOREpaperDOTabstractDOTkeywordlist=%
|
||||||
][1]{%
|
][1]{%
|
||||||
\begin{isamarkuptext}%
|
\begin{isamarkuptext}%
|
||||||
\begin{abstract}%
|
\begin{abstract}%
|
||||||
#1%
|
#1%
|
||||||
\ifthenelse{\equal{\commandkey{scholarly_paper.abstract.keywordlist}}{}}{}{%
|
\ifthenelse{\equal{\commandkey{scholarlyUNDERSCOREpaperDOTabstractDOTkeywordlist}}{}}{}{%
|
||||||
\keywords{\commandkey{scholarly_paper.abstract.keywordlist}}%
|
\keywords{\commandkey{scholarlyUNDERSCOREpaperDOTabstractDOTkeywordlist}}%
|
||||||
}%
|
}%
|
||||||
\end{abstract}%
|
\end{abstract}%
|
||||||
\end{isamarkuptext}%
|
\end{isamarkuptext}%
|
||||||
|
@ -172,84 +172,84 @@
|
||||||
%\newtheorem{theorem}{Theorem}
|
%\newtheorem{theorem}{Theorem}
|
||||||
\newtheorem{defn}{Definition}
|
\newtheorem{defn}{Definition}
|
||||||
\newcommand{\defnautorefname}{Definition}
|
\newcommand{\defnautorefname}{Definition}
|
||||||
\NewEnviron{isamarkupDefinition*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupDefinition*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{axm}{Axiom}
|
\newtheorem{axm}{Axiom}
|
||||||
\newcommand{\axmautorefname}{Axiom}
|
\newcommand{\axmautorefname}{Axiom}
|
||||||
\NewEnviron{isamarkupAxiom*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupAxiom*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{theom}{Theorem}
|
\newtheorem{theom}{Theorem}
|
||||||
\newcommand{\theomautorefname}{Theorem}
|
\newcommand{\theomautorefname}{Theorem}
|
||||||
\NewEnviron{isamarkupTheorem*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupTheorem*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{lemm}{Lemma}
|
\newtheorem{lemm}{Lemma}
|
||||||
\newcommand{\lemmautorefname}{Lemma}
|
\newcommand{\lemmautorefname}{Lemma}
|
||||||
\NewEnviron{isamarkupLemma*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupLemma*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{corr}{Corollary}
|
\newtheorem{corr}{Corollary}
|
||||||
\newcommand{\corrautorefname}{Corollary}
|
\newcommand{\corrautorefname}{Corollary}
|
||||||
\NewEnviron{isamarkupCorollary*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupCorollary*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{prpo}{Proposition}
|
\newtheorem{prpo}{Proposition}
|
||||||
\newcommand{\prpoautorefname}{Proposition}
|
\newcommand{\prpoautorefname}{Proposition}
|
||||||
\NewEnviron{isamarkupProposition*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupProposition*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{rulE}{Rule}
|
\newtheorem{rulE}{Rule}
|
||||||
\newcommand{\rulEautorefname}{Rule}
|
\newcommand{\rulEautorefname}{Rule}
|
||||||
\NewEnviron{isamarkupRule*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupRule*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{assn}{Assertion}
|
\newtheorem{assn}{Assertion}
|
||||||
\newcommand{\assnautorefname}{Assertion}
|
\newcommand{\assnautorefname}{Assertion}
|
||||||
\NewEnviron{isamarkupAssertion*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupAssertion*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{hypt}{Hypothesis}
|
\newtheorem{hypt}{Hypothesis}
|
||||||
\newcommand{\hyptautorefname}{Hypothesis}
|
\newcommand{\hyptautorefname}{Hypothesis}
|
||||||
\NewEnviron{isamarkupHypothesis*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupHypothesis*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{assm}{Assumption}
|
\newtheorem{assm}{Assumption}
|
||||||
\newcommand{\assmautorefname}{Assumption}
|
\newcommand{\assmautorefname}{Assumption}
|
||||||
\NewEnviron{isamarkupAssumption*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupAssumption*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{prms}{Premise}
|
\newtheorem{prms}{Premise}
|
||||||
\newcommand{\prmsautorefname}{Premise}
|
\newcommand{\prmsautorefname}{Premise}
|
||||||
\NewEnviron{isamarkupPremise*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupPremise*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{cons}{Consequence}
|
\newtheorem{cons}{Consequence}
|
||||||
\newcommand{\consautorefname}{Consequence}
|
\newcommand{\consautorefname}{Consequence}
|
||||||
\NewEnviron{isamarkupConsequence*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupConsequence*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{conc_stmt}{Conclusion}
|
\newtheorem{concUNDERSCOREstmt}{Conclusion}
|
||||||
\newcommand{\concstmtautorefname}{Conclusion}
|
\newcommand{\concUNDERSCOREstmtautorefname}{Conclusion}
|
||||||
\NewEnviron{isamarkupConclusion*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupConclusion*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{prf_stmt}{Proof}
|
\newtheorem{prfUNDERSCOREstmt}{Proof}
|
||||||
\newcommand{\prfstmtautorefname}{Proof}
|
\newcommand{\prfUNDERSCOREstmtautorefname}{Proof}
|
||||||
\NewEnviron{isamarkupProof*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupProof*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{expl_stmt}{Example}
|
\newtheorem{explUNDERSCOREstmt}{Example}
|
||||||
\newcommand{\explstmtautorefname}{Example}
|
\newcommand{\explUNDERSCOREstmtautorefname}{Example}
|
||||||
\NewEnviron{isamarkupExample*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupExample*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{rmrk}{Remark}
|
\newtheorem{rmrk}{Remark}
|
||||||
\newcommand{\rmrkautorefname}{Remark}
|
\newcommand{\rmrkautorefname}{Remark}
|
||||||
\NewEnviron{isamarkupRemark*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupRemark*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{notn}{Notation}
|
\newtheorem{notn}{Notation}
|
||||||
\newcommand{\notnautorefname}{Notation}
|
\newcommand{\notnautorefname}{Notation}
|
||||||
\NewEnviron{isamarkupNotation*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupNotation*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
\newtheorem{tmgy}{Terminology}
|
\newtheorem{tmgy}{Terminology}
|
||||||
\newcommand{\tmgyautorefname}{Terminology}
|
\newcommand{\tmgyautorefname}{Terminology}
|
||||||
\NewEnviron{isamarkupTerminology*}[1][]{\isaDof[env={text},#1,type={scholarly_paper.math_content}]{\BODY}}
|
\NewEnviron{isamarkupTerminology*}[1][]{\isaDof[env={text},#1,type={scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}]{\BODY}}
|
||||||
|
|
||||||
\newisadof{text.scholarly_paper.math_content}%
|
\newisadof{textDOTscholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontent}%
|
||||||
[label=,type=%
|
[label=,type=%
|
||||||
, scholarly_paper.math_content.short_name ={}%
|
, scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTshortUNDERSCOREname ={}%
|
||||||
, scholarly_paper.math_content.mcc = %
|
, scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTmcc = %
|
||||||
, Isa_COL.text_element.level =%
|
, IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTlevel =%
|
||||||
, Isa_COL.text_element.referentiable =%
|
, IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTreferentiable =%
|
||||||
, Isa_COL.text_element.variants =%
|
, IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTvariants =%
|
||||||
, scholarly_paper.text_section.main_author =%
|
, scholarlyUNDERSCOREpaperDOTtextUNDERSCOREsectionDOTmainUNDERSCOREauthor =%
|
||||||
, scholarly_paper.text_section.fixme_list =%
|
, scholarlyUNDERSCOREpaperDOTtextUNDERSCOREsectionDOTfixmeUNDERSCORElist =%
|
||||||
, Isa_COL.text_element.level =%
|
, IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTlevel =%
|
||||||
, scholarly_paper.technical.definition_list =%
|
, scholarlyUNDERSCOREpaperDOTtechnicalDOTdefinitionUNDERSCORElist =%
|
||||||
, scholarly_paper.technical.status =%
|
, scholarlyUNDERSCOREpaperDOTtechnicalDOTstatus =%
|
||||||
]
|
]
|
||||||
[1]
|
[1]
|
||||||
{%
|
{%
|
||||||
\begin{isamarkuptext}%
|
\begin{isamarkuptext}%
|
||||||
\ifthenelse{\equal{\commandkey{scholarly_paper.math_content.short_name}} {} }
|
\ifthenelse{\equal{\commandkey{scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTshortUNDERSCOREname}} {} }
|
||||||
{%
|
{%
|
||||||
\begin{\commandkey{scholarly_paper.math_content.mcc}}\label{\commandkey{label}}
|
\begin{\commandkey{scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTmcc}}\label{\commandkey{label}}
|
||||||
#1
|
#1
|
||||||
\end{\commandkey{scholarly_paper.math_content.mcc}}
|
\end{\commandkey{scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTmcc}}
|
||||||
}{%
|
}{%
|
||||||
\begin{\commandkey{scholarly_paper.math_content.mcc}}[\commandkey{scholarly_paper.math_content.short_name}]\label{\commandkey{label}}
|
\begin{\commandkey{scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTmcc}}[\commandkey{scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTshortUNDERSCOREname}]\label{\commandkey{label}}
|
||||||
#1
|
#1
|
||||||
\end{\commandkey{scholarly_paper.math_content.mcc}}
|
\end{\commandkey{scholarlyUNDERSCOREpaperDOTmathUNDERSCOREcontentDOTmcc}}
|
||||||
}
|
}
|
||||||
\end{isamarkuptext}%
|
\end{isamarkuptext}%
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,12 +53,12 @@ ML\<open>
|
||||||
val _ =
|
val _ =
|
||||||
Monitor_Command_Parser.document_command \<^command_keyword>\<open>abstract*\<close> "Textual Definition"
|
Monitor_Command_Parser.document_command \<^command_keyword>\<open>abstract*\<close> "Textual Definition"
|
||||||
{markdown = true, body = true}
|
{markdown = true, body = true}
|
||||||
(Onto_Macros.enriched_document_cmd_exp (SOME "abstract") []) (K(K I));
|
(Onto_Macros.enriched_document_cmd_exp (SOME "abstract") []) [] I;
|
||||||
|
|
||||||
val _ =
|
val _ =
|
||||||
Monitor_Command_Parser.document_command \<^command_keyword>\<open>author*\<close> "Textual Definition"
|
Monitor_Command_Parser.document_command \<^command_keyword>\<open>author*\<close> "Textual Definition"
|
||||||
{markdown = true, body = true}
|
{markdown = true, body = true}
|
||||||
(Onto_Macros.enriched_document_cmd_exp (SOME "author") []) (K(K I));
|
(Onto_Macros.enriched_document_cmd_exp (SOME "author") []) [] I;
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
text\<open>Scholarly Paper is oriented towards the classical domains in science:
|
text\<open>Scholarly Paper is oriented towards the classical domains in science:
|
||||||
|
@ -203,7 +203,6 @@ datatype math_content_class =
|
||||||
| "notn" \<comment>\<open>notation\<close>
|
| "notn" \<comment>\<open>notation\<close>
|
||||||
| "tmgy" \<comment>\<open>terminology\<close>
|
| "tmgy" \<comment>\<open>terminology\<close>
|
||||||
|
|
||||||
|
|
||||||
text\<open>Instances of the \<open>doc_class\<close> \<^verbatim>\<open>math_content\<close> are by definition @{term "semiformal"}; they may
|
text\<open>Instances of the \<open>doc_class\<close> \<^verbatim>\<open>math_content\<close> are by definition @{term "semiformal"}; they may
|
||||||
be non-referential, but in this case they will not have a @{term "short_name"}.\<close>
|
be non-referential, but in this case they will not have a @{term "short_name"}.\<close>
|
||||||
|
|
||||||
|
@ -444,49 +443,50 @@ fun doc_cmd kwd txt flag key =
|
||||||
in
|
in
|
||||||
Onto_Macros.enriched_formal_statement_command default [("mcc",key)] meta_args thy
|
Onto_Macros.enriched_formal_statement_command default [("mcc",key)] meta_args thy
|
||||||
end)
|
end)
|
||||||
(Onto_Macros.transform_attr [("mcc",key)])
|
[\<^const_name>\<open>mcc\<close>]
|
||||||
|
(Onto_Macros.transform_attr [(\<^const_name>\<open>mcc\<close>,key)])
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
val _ = doc_cmd \<^command_keyword>\<open>Definition*\<close> "Freeform Definition"
|
val _ = doc_cmd \<^command_keyword>\<open>Definition*\<close> "Freeform Definition"
|
||||||
Definition_default_class "defn";
|
Definition_default_class \<^const_name>\<open>defn\<close>;
|
||||||
|
|
||||||
val _ = doc_cmd \<^command_keyword>\<open>Lemma*\<close> "Freeform Lemma Description"
|
val _ = doc_cmd \<^command_keyword>\<open>Lemma*\<close> "Freeform Lemma Description"
|
||||||
Lemma_default_class "lemm";
|
Lemma_default_class \<^const_name>\<open>lemm\<close>;
|
||||||
|
|
||||||
val _ = doc_cmd \<^command_keyword>\<open>Theorem*\<close> "Freeform Theorem"
|
val _ = doc_cmd \<^command_keyword>\<open>Theorem*\<close> "Freeform Theorem"
|
||||||
Theorem_default_class "theom";
|
Theorem_default_class \<^const_name>\<open>theom\<close>;
|
||||||
|
|
||||||
(* cut and paste to make it runnable, but nonsensical so far: *)
|
(* cut and paste to make it runnable, but nonsensical so far: *)
|
||||||
val _ = doc_cmd \<^command_keyword>\<open>Proposition*\<close> "Freeform Proposition"
|
val _ = doc_cmd \<^command_keyword>\<open>Proposition*\<close> "Freeform Proposition"
|
||||||
Proposition_default_class "prpo";
|
Proposition_default_class \<^const_name>\<open>prpo\<close>;
|
||||||
|
|
||||||
val _ = doc_cmd \<^command_keyword>\<open>Premise*\<close> "Freeform Premise"
|
val _ = doc_cmd \<^command_keyword>\<open>Premise*\<close> "Freeform Premise"
|
||||||
Premise_default_class "prms";
|
Premise_default_class \<^const_name>\<open>prms\<close>;
|
||||||
|
|
||||||
val _ = doc_cmd \<^command_keyword>\<open>Corollary*\<close> "Freeform Corollary"
|
val _ = doc_cmd \<^command_keyword>\<open>Corollary*\<close> "Freeform Corollary"
|
||||||
Corollary_default_class "corr";
|
Corollary_default_class \<^const_name>\<open>corr\<close>;
|
||||||
|
|
||||||
val _ = doc_cmd \<^command_keyword>\<open>Consequence*\<close> "Freeform Consequence"
|
val _ = doc_cmd \<^command_keyword>\<open>Consequence*\<close> "Freeform Consequence"
|
||||||
Consequence_default_class "cons";
|
Consequence_default_class \<^const_name>\<open>cons\<close>;
|
||||||
|
|
||||||
val _ = doc_cmd \<^command_keyword>\<open>Conclusion*\<close> "Freeform Conclusion"
|
val _ = doc_cmd \<^command_keyword>\<open>Conclusion*\<close> "Freeform Conclusion"
|
||||||
Conclusion_default_class "conc_stmt";
|
Conclusion_default_class \<^const_name>\<open>conc_stmt\<close>;
|
||||||
|
|
||||||
val _ = doc_cmd \<^command_keyword>\<open>Assumption*\<close> "Freeform Assumption"
|
val _ = doc_cmd \<^command_keyword>\<open>Assumption*\<close> "Freeform Assumption"
|
||||||
Assumption_default_class "assm";
|
Assumption_default_class \<^const_name>\<open>assm\<close>;
|
||||||
|
|
||||||
val _ = doc_cmd \<^command_keyword>\<open>Hypothesis*\<close> "Freeform Hypothesis"
|
val _ = doc_cmd \<^command_keyword>\<open>Hypothesis*\<close> "Freeform Hypothesis"
|
||||||
Hypothesis_default_class "prpo";
|
Hypothesis_default_class \<^const_name>\<open>prpo\<close>;
|
||||||
|
|
||||||
val _ = doc_cmd \<^command_keyword>\<open>Assertion*\<close> "Freeform Assertion"
|
val _ = doc_cmd \<^command_keyword>\<open>Assertion*\<close> "Freeform Assertion"
|
||||||
Assertion_default_class "assn";
|
Assertion_default_class \<^const_name>\<open>assn\<close>;
|
||||||
|
|
||||||
val _ = doc_cmd \<^command_keyword>\<open>Proof*\<close> "Freeform Proof"
|
val _ = doc_cmd \<^command_keyword>\<open>Proof*\<close> "Freeform Proof"
|
||||||
Proof_default_class "prf_stmt";
|
Proof_default_class \<^const_name>\<open>prf_stmt\<close>;
|
||||||
|
|
||||||
val _ = doc_cmd \<^command_keyword>\<open>Example*\<close> "Freeform Example"
|
val _ = doc_cmd \<^command_keyword>\<open>Example*\<close> "Freeform Example"
|
||||||
Example_default_class "expl_stmt";
|
Example_default_class \<^const_name>\<open>expl_stmt\<close>;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
\<close>
|
\<close>
|
||||||
|
|
|
@ -34,16 +34,16 @@
|
||||||
|
|
||||||
\newisadof{text.technical_report.SML}%
|
\newisadof{text.technical_report.SML}%
|
||||||
[ label=,type=%
|
[ label=,type=%
|
||||||
, Isa_COL.text_element.level=%
|
, IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTlevel=%
|
||||||
, Isa_COL.text_element.referentiable=%
|
, IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTreferentiable=%
|
||||||
, Isa_COL.text_element.variants=%
|
, IsaUNDERSCORECOLDOTtextUNDERSCOREelementDOTvariants=%
|
||||||
, scholarly_paper.text_section.main_author=%
|
, scholarlyUNDERSCOREpaperDOTtextUNDERSCOREsectionDOTmainUNDERSCOREauthor=%
|
||||||
, scholarly_paper.text_section.fixme_list=%
|
, scholarlyUNDERSCOREpaperDOTtextUNDERSCOREsectionDOTfixmeUNDERSCORElist=%
|
||||||
, scholarly_paper.technical.definition_list=%
|
, scholarlyUNDERSCOREpaperDOTtechnicalDOTdefinitionUNDERSCORElist=%
|
||||||
, scholarly_paper.technical.status=%
|
, scholarlyUNDERSCOREpaperDOTtechnicalDOTstatus=%
|
||||||
, scholarly_paper.technical.formal_results=%
|
, scholarlyUNDERSCOREpaperDOTtechnicalDOTformalUNDERSCOREresults=%
|
||||||
, technical_report.code.checked=%
|
, technicalUNDERSCOREreportDOTcodeDOTchecked=%
|
||||||
, technical_report.code.caption=%
|
, technicalUNDERSCOREreportDOTcodeDOTcaption=%
|
||||||
]
|
]
|
||||||
[1]
|
[1]
|
||||||
{%
|
{%
|
||||||
|
|
|
@ -103,17 +103,11 @@ fun transform_cid thy NONE X = X
|
||||||
end
|
end
|
||||||
in
|
in
|
||||||
|
|
||||||
fun transform_attr S cid_long thy doc_attrs =
|
fun transform_attr S doc_attrs =
|
||||||
let
|
let
|
||||||
fun transform_attr' [] doc_attrs = doc_attrs
|
fun transform_attr' [] doc_attrs = doc_attrs
|
||||||
| transform_attr' (s::S) (doc_attrs) =
|
| transform_attr' (s::S) (doc_attrs) =
|
||||||
let fun markup2string s = s |> YXML.content_of
|
let val (name', value) = s
|
||||||
|> Symbol.explode
|
|
||||||
|> List.filter (fn c => c <> Symbol.DEL)
|
|
||||||
|> String.concat
|
|
||||||
fun toLong n = DOF_core.get_attribute_info cid_long (markup2string n) thy
|
|
||||||
|> the |> #long_name
|
|
||||||
val (name', value) = s |> (fn (n, v) => (toLong n, v))
|
|
||||||
val doc_attrs' = doc_attrs
|
val doc_attrs' = doc_attrs
|
||||||
|> map (fn (name, term) => if name = name'
|
|> map (fn (name, term) => if name = name'
|
||||||
then (name, value)
|
then (name, value)
|
||||||
|
@ -154,7 +148,7 @@ end (* local *)
|
||||||
|
|
||||||
fun heading_command (name, pos) descr level =
|
fun heading_command (name, pos) descr level =
|
||||||
Monitor_Command_Parser.document_command (name, pos) descr
|
Monitor_Command_Parser.document_command (name, pos) descr
|
||||||
{markdown = false, body = true} (enriched_text_element_cmd level) (K(K I));
|
{markdown = false, body = true} (enriched_text_element_cmd level) [] I;
|
||||||
|
|
||||||
val _ = heading_command \<^command_keyword>\<open>title*\<close> "section heading" NONE;
|
val _ = heading_command \<^command_keyword>\<open>title*\<close> "section heading" NONE;
|
||||||
val _ = heading_command \<^command_keyword>\<open>subtitle*\<close> "section heading" NONE;
|
val _ = heading_command \<^command_keyword>\<open>subtitle*\<close> "section heading" NONE;
|
||||||
|
|
|
@ -841,6 +841,10 @@ val check_opening_ml_invs = check_invs get_opening_ml_invariants
|
||||||
|
|
||||||
val check_closing_ml_invs = check_invs get_closing_ml_invariants
|
val check_closing_ml_invs = check_invs get_closing_ml_invariants
|
||||||
|
|
||||||
|
(* Output name for LaTeX macros.
|
||||||
|
Also rewrite "." to allow macros with objects long names *)
|
||||||
|
val output_name = Latex.output_name o translate_string (fn "." => "DOT" | s => s)
|
||||||
|
|
||||||
val ISA_prefix = "Isabelle_DOF_"
|
val ISA_prefix = "Isabelle_DOF_"
|
||||||
|
|
||||||
val doc_class_prefix = ISA_prefix ^ "doc_class_"
|
val doc_class_prefix = ISA_prefix ^ "doc_class_"
|
||||||
|
@ -2134,19 +2138,21 @@ fun close_monitor_command (args as (((oid, pos), cid_pos),
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
fun meta_args_2_latex thy transform_attr
|
fun meta_args_2_latex thy sem_attrs transform_attr
|
||||||
((((lab, pos), cid_opt), attr_list) : ODL_Meta_Args_Parser.meta_args_t) =
|
((((lab, pos), cid_opt), attr_list) : ODL_Meta_Args_Parser.meta_args_t) =
|
||||||
(* for the moment naive, i.e. without textual normalization of
|
(* for the moment naive, i.e. without textual normalization of
|
||||||
attribute names and adapted term printing *)
|
attribute names and adapted term printing *)
|
||||||
let val l = DOF_core.get_instance_name_global lab thy |> enclose "{" "}"
|
let val l = DOF_core.get_instance_name_global lab thy |> DOF_core.output_name
|
||||||
|
|> enclose "{" "}"
|
||||||
|> prefix "label = "
|
|> prefix "label = "
|
||||||
(* val _ = writeln("meta_args_2_string lab:"^ lab ^":"^ (@{make_string } cid_opt) ) *)
|
(* val _ = writeln("meta_args_2_string lab:"^ lab ^":"^ (@{make_string } cid_opt) ) *)
|
||||||
val cid_long = case cid_opt of
|
val cid_long = case cid_opt of
|
||||||
NONE => DOF_core.cid_of lab thy
|
NONE => DOF_core.cid_of lab thy
|
||||||
| SOME(cid,_) => DOF_core.get_onto_class_name_global' cid thy
|
| SOME(cid,_) => DOF_core.get_onto_class_name_global' cid thy
|
||||||
(* val _ = writeln("meta_args_2_string cid_long:"^ cid_long ) *)
|
(* val _ = writeln("meta_args_2_string cid_long:"^ cid_long ) *)
|
||||||
val cid_txt = "type = " ^ (enclose "{" "}" cid_long);
|
val cid_txt = cid_long |> DOF_core.output_name
|
||||||
|
|> enclose "{" "}"
|
||||||
|
|> prefix "type = "
|
||||||
fun ltx_of_term _ _ (c as \<^Const_>\<open>Cons \<^Type>\<open>char\<close> for _ _\<close>) = HOLogic.dest_string c
|
fun ltx_of_term _ _ (c as \<^Const_>\<open>Cons \<^Type>\<open>char\<close> for _ _\<close>) = HOLogic.dest_string c
|
||||||
| ltx_of_term _ _ \<^Const_>\<open>Nil _\<close> = ""
|
| ltx_of_term _ _ \<^Const_>\<open>Nil _\<close> = ""
|
||||||
| ltx_of_term _ _ \<^Const_>\<open>numeral _ for t\<close> = Int.toString(HOLogic.dest_numeral t)
|
| ltx_of_term _ _ \<^Const_>\<open>numeral _ for t\<close> = Int.toString(HOLogic.dest_numeral t)
|
||||||
|
@ -2191,8 +2197,24 @@ fun meta_args_2_latex thy transform_attr
|
||||||
val default_args_filtered = filter (fn (a,_) => not (exists (fn b => b = a)
|
val default_args_filtered = filter (fn (a,_) => not (exists (fn b => b = a)
|
||||||
(map (fn (c,_) => c) actual_args))) default_args
|
(map (fn (c,_) => c) actual_args))) default_args
|
||||||
val transformed_args = (actual_args@default_args_filtered)
|
val transformed_args = (actual_args@default_args_filtered)
|
||||||
|> transform_attr cid_long thy
|
|> transform_attr
|
||||||
val str_args = transformed_args
|
fun update_sem_std_attrs [] attrs = attrs
|
||||||
|
| update_sem_std_attrs (attr::attrs) attrs' =
|
||||||
|
let val attrs'' = attrs' |> map (fn (name, value) =>
|
||||||
|
let val value' = value |> Long_Name.base_name
|
||||||
|
in
|
||||||
|
if name = attr
|
||||||
|
then if value' (*|> Symbol_Pos.is_identifier*)
|
||||||
|
|> Symbol.is_ascii_identifier
|
||||||
|
then (name, DOF_core.output_name value')
|
||||||
|
else ISA_core.err ("Bad name of semantic attribute"
|
||||||
|
^ name ^ ": " ^ value
|
||||||
|
^ ". Name must be ASCII") pos
|
||||||
|
else (name, value') end)
|
||||||
|
in update_sem_std_attrs attrs attrs'' end
|
||||||
|
val updated_sem_std_attrs = update_sem_std_attrs sem_attrs transformed_args
|
||||||
|
val updated_sem_std_attrs' = updated_sem_std_attrs |> map (apfst DOF_core.output_name)
|
||||||
|
val str_args = updated_sem_std_attrs'
|
||||||
|> map (fn (lhs,rhs) => lhs^" = "^(enclose "{" "}" rhs))
|
|> map (fn (lhs,rhs) => lhs^" = "^(enclose "{" "}" rhs))
|
||||||
|
|
||||||
val label_and_type = String.concat [ l, ",", cid_txt]
|
val label_and_type = String.concat [ l, ",", cid_txt]
|
||||||
|
@ -2218,15 +2240,15 @@ fun gen_enriched_document_cmd' {inline} cid_transform attr_transform
|
||||||
(* {markdown = true} sets the parsing process such that in the text-core
|
(* {markdown = true} sets the parsing process such that in the text-core
|
||||||
markdown elements are accepted. *)
|
markdown elements are accepted. *)
|
||||||
|
|
||||||
fun document_output {markdown: bool, markup: Latex.text -> Latex.text} transform_attr meta_args text ctxt =
|
fun document_output {markdown: bool, markup: Latex.text -> Latex.text} sem_attrs transform_attr meta_args text ctxt =
|
||||||
let
|
let
|
||||||
val thy = Proof_Context.theory_of ctxt;
|
val thy = Proof_Context.theory_of ctxt;
|
||||||
val _ = Context_Position.reports ctxt (Document_Output.document_reports text);
|
val _ = Context_Position.reports ctxt (Document_Output.document_reports text);
|
||||||
val output_meta = meta_args_2_latex thy transform_attr meta_args;
|
val output_meta = meta_args_2_latex thy sem_attrs transform_attr meta_args;
|
||||||
val output_text = Document_Output.output_document ctxt {markdown = markdown} text;
|
val output_text = Document_Output.output_document ctxt {markdown = markdown} text;
|
||||||
in markup (output_meta @ output_text) end;
|
in markup (output_meta @ output_text) end;
|
||||||
|
|
||||||
fun document_output_reports name {markdown, body} transform_attr meta_args text ctxt =
|
fun document_output_reports name {markdown, body} sem_attrs transform_attr meta_args text ctxt =
|
||||||
let
|
let
|
||||||
(*val pos = Input.pos_of text;
|
(*val pos = Input.pos_of text;
|
||||||
val _ =
|
val _ =
|
||||||
|
@ -2236,16 +2258,16 @@ fun document_output_reports name {markdown, body} transform_attr meta_args text
|
||||||
fun markup xml =
|
fun markup xml =
|
||||||
let val m = if body then Markup.latex_body else Markup.latex_heading
|
let val m = if body then Markup.latex_body else Markup.latex_heading
|
||||||
in [XML.Elem (m (Latex.output_name name), xml)] end;
|
in [XML.Elem (m (Latex.output_name name), xml)] end;
|
||||||
in document_output {markdown = markdown, markup = markup} transform_attr meta_args text ctxt end;
|
in document_output {markdown = markdown, markup = markup} sem_attrs transform_attr meta_args text ctxt end;
|
||||||
|
|
||||||
|
|
||||||
(* document output commands *)
|
(* document output commands *)
|
||||||
|
|
||||||
fun document_command (name, pos) descr mark cmd transform_attr =
|
fun document_command (name, pos) descr mark cmd sem_attrs transform_attr =
|
||||||
Outer_Syntax.command (name, pos) descr
|
Outer_Syntax.command (name, pos) descr
|
||||||
(ODL_Meta_Args_Parser.attributes -- Parse.document_source >> (fn (meta_args, text) =>
|
(ODL_Meta_Args_Parser.attributes -- Parse.document_source >> (fn (meta_args, text) =>
|
||||||
Toplevel.theory' (fn _ => cmd meta_args)
|
Toplevel.theory' (fn _ => cmd meta_args)
|
||||||
(SOME (Toplevel.presentation_context #> document_output_reports name mark transform_attr meta_args text))));
|
(SOME (Toplevel.presentation_context #> document_output_reports name mark sem_attrs transform_attr meta_args text))));
|
||||||
|
|
||||||
|
|
||||||
(* Core Command Definitions *)
|
(* Core Command Definitions *)
|
||||||
|
@ -2271,14 +2293,14 @@ val _ =
|
||||||
|
|
||||||
val _ =
|
val _ =
|
||||||
document_command \<^command_keyword>\<open>text*\<close> "formal comment (primary style)"
|
document_command \<^command_keyword>\<open>text*\<close> "formal comment (primary style)"
|
||||||
{markdown = true, body = true} (gen_enriched_document_cmd {inline=true} I I) (K(K I));
|
{markdown = true, body = true} (gen_enriched_document_cmd {inline=true} I I) [] I;
|
||||||
|
|
||||||
|
|
||||||
(* This is just a stub at present *)
|
(* This is just a stub at present *)
|
||||||
val _ =
|
val _ =
|
||||||
document_command \<^command_keyword>\<open>text-macro*\<close> "formal comment macro"
|
document_command \<^command_keyword>\<open>text-macro*\<close> "formal comment macro"
|
||||||
{markdown = true, body = true}
|
{markdown = true, body = true}
|
||||||
(gen_enriched_document_cmd {inline=false} (* declare as macro *) I I) (K(K I));
|
(gen_enriched_document_cmd {inline=false} (* declare as macro *) I I) [] I;
|
||||||
|
|
||||||
|
|
||||||
val (declare_reference_default_class, declare_reference_default_class_setup)
|
val (declare_reference_default_class, declare_reference_default_class_setup)
|
||||||
|
@ -2553,6 +2575,9 @@ ML\<open>
|
||||||
|
|
||||||
local
|
local
|
||||||
|
|
||||||
|
fun elaborate stmt ctxt = stmt |> map (apsnd (map (apfst (DOF_core.elaborate_term ctxt)
|
||||||
|
#> apsnd (map (DOF_core.elaborate_term ctxt)))))
|
||||||
|
|
||||||
fun prep_statement prep_att prep_stmt raw_elems raw_stmt ctxt =
|
fun prep_statement prep_att prep_stmt raw_elems raw_stmt ctxt =
|
||||||
let
|
let
|
||||||
val (stmt, elems_ctxt) = prep_stmt raw_elems raw_stmt ctxt;
|
val (stmt, elems_ctxt) = prep_stmt raw_elems raw_stmt ctxt;
|
||||||
|
@ -2562,11 +2587,7 @@ fun prep_statement prep_att prep_stmt raw_elems raw_stmt ctxt =
|
||||||
(case raw_stmt of
|
(case raw_stmt of
|
||||||
Element.Shows _ =>
|
Element.Shows _ =>
|
||||||
let val stmt' = Attrib.map_specs (map prep_att) stmt
|
let val stmt' = Attrib.map_specs (map prep_att) stmt
|
||||||
val stmt'' = stmt' |> map (fn (b, ts) =>
|
val stmt'' = elaborate stmt' ctxt
|
||||||
(b, ts |> map (fn (t', t's) =>
|
|
||||||
(DOF_core.elaborate_term ctxt t',
|
|
||||||
t's |> map (fn t'' =>
|
|
||||||
DOF_core.elaborate_term ctxt t'')))))
|
|
||||||
in (([], prems, stmt'', NONE), stmt_ctxt) end
|
in (([], prems, stmt'', NONE), stmt_ctxt) end
|
||||||
| Element.Obtains raw_obtains =>
|
| Element.Obtains raw_obtains =>
|
||||||
let
|
let
|
||||||
|
@ -2581,11 +2602,7 @@ fun prep_statement prep_att prep_stmt raw_elems raw_stmt ctxt =
|
||||||
||> Proof_Context.restore_stmt asms_ctxt;
|
||> Proof_Context.restore_stmt asms_ctxt;
|
||||||
|
|
||||||
val stmt' = [(Binding.empty_atts, [(#2 (#1 (Obtain.obtain_thesis ctxt)), [])])];
|
val stmt' = [(Binding.empty_atts, [(#2 (#1 (Obtain.obtain_thesis ctxt)), [])])];
|
||||||
val stmt'' = stmt' |> map (fn (b, ts) =>
|
val stmt'' = elaborate stmt' ctxt
|
||||||
(b, ts |> map (fn (t', t's) =>
|
|
||||||
(DOF_core.elaborate_term ctxt t',
|
|
||||||
t's |> map (fn t'' =>
|
|
||||||
DOF_core.elaborate_term ctxt t'')))))
|
|
||||||
in ((Obtain.obtains_attribs raw_obtains, prems, stmt'', SOME that'), that_ctxt) end)
|
in ((Obtain.obtains_attribs raw_obtains, prems, stmt'', SOME that'), that_ctxt) end)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -2826,7 +2843,7 @@ fun pretty_docitem_antiquotation_generic cid_decl ctxt ({unchecked, define}, src
|
||||||
|(true,true) => XML.enclose("{\\isaDofmacroDef[type={"^cid_decl^"}]{")"}}"
|
|(true,true) => XML.enclose("{\\isaDofmacroDef[type={"^cid_decl^"}]{")"}}"
|
||||||
|(false,true) => XML.enclose("{\\isaDofmacroExp[type={"^cid_decl^"}]{")"}}"
|
|(false,true) => XML.enclose("{\\isaDofmacroExp[type={"^cid_decl^"}]{")"}}"
|
||||||
)
|
)
|
||||||
(Latex.text (str, pos))
|
(Latex.text (DOF_core.output_name str, pos))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -36,8 +36,11 @@ define_shortcut* TeXLive \<rightleftharpoons> \<open>\TeXLive\<close>
|
||||||
text\<open>Note that these setups assume that the associated \<^LaTeX> macros
|
text\<open>Note that these setups assume that the associated \<^LaTeX> macros
|
||||||
are defined, \<^eg>, in the document prelude. \<close>
|
are defined, \<^eg>, in the document prelude. \<close>
|
||||||
|
|
||||||
define_macro* index \<rightleftharpoons> \<open>\index{\<close> _ \<open>}\<close>
|
define_macro* index \<rightleftharpoons> \<open>\index{\<close> _ \<open>}\<close>
|
||||||
define_macro* bindex \<rightleftharpoons> \<open>\bindex{\<close> _ \<open>}\<close>
|
define_macro* bindex \<rightleftharpoons> \<open>\bindex{\<close> _ \<open>}\<close>
|
||||||
|
define_macro* nolinkurl \<rightleftharpoons> \<open>\nolinkurl{\<close> _ \<open>}\<close>
|
||||||
|
define_macro* center \<rightleftharpoons> \<open>\center{\<close> _ \<open>}\<close>
|
||||||
|
define_macro* ltxinline \<rightleftharpoons> \<open>\inlineltx|\<close> _ \<open>|\<close>
|
||||||
|
|
||||||
|
|
||||||
ML\<open>
|
ML\<open>
|
||||||
|
|
|
@ -106,9 +106,9 @@ text\<open>
|
||||||
|
|
||||||
side_by_side_figure*[docModGenConcr::side_by_side_figure,anchor="''docModGen''",
|
side_by_side_figure*[docModGenConcr::side_by_side_figure,anchor="''docModGen''",
|
||||||
caption="''Schematic Representation.''",relative_width="45",
|
caption="''Schematic Representation.''",relative_width="45",
|
||||||
src="''figures/doc-mod-generic.png''",anchor2="''docModIsar''",
|
src="''figures/doc-mod-generic.pdf''",anchor2="''docModIsar''",
|
||||||
caption2="''The Isar Instance.''",relative_width2="45",
|
caption2="''The Isar Instance.''",relative_width2="45",
|
||||||
src2="''figures/doc-mod-isar.png''"]\<open>A Representation of a Document Model.\<close>
|
src2="''figures/doc-mod-isar.pdf''"]\<open>A Representation of a Document Model.\<close>
|
||||||
|
|
||||||
text\<open>The body of a theory file consists of a sequence of \<^emph>\<open>commands\<close> that must be introduced
|
text\<open>The body of a theory file consists of a sequence of \<^emph>\<open>commands\<close> that must be introduced
|
||||||
by a command keyword such as \<^boxed_theory_text>\<open>requirement\<close> above. Command keywords may mark
|
by a command keyword such as \<^boxed_theory_text>\<open>requirement\<close> above. Command keywords may mark
|
||||||
|
@ -184,13 +184,13 @@ text\<open>Antiquotations seen as semantic macros are partial functions of type
|
||||||
|
|
||||||
side_by_side_figure*[docModOnto::side_by_side_figure,anchor="''docModGen''",
|
side_by_side_figure*[docModOnto::side_by_side_figure,anchor="''docModGen''",
|
||||||
caption="''A Document with Ontological Annotations.''",relative_width="47",
|
caption="''A Document with Ontological Annotations.''",relative_width="47",
|
||||||
src="''figures/doc-mod-DOF.png''",anchor2="''docModDOF''",
|
src="''figures/doc-mod-DOF.pdf''",anchor2="''docModDOF''",
|
||||||
caption2="''Ontological References.''",relative_width2="47",
|
caption2="''Ontological References.''",relative_width2="47",
|
||||||
src2="''figures/doc-mod-onto-docinst.png''"]\<open>Documents conform to Ontologies.\<close>
|
src2="''figures/doc-mod-onto-docinst.pdf''"]\<open>Documents conform to Ontologies.\<close>
|
||||||
|
|
||||||
text\<open>Since Isabelle's commands are freely programmable, it is possible to implement \<^dof> as an
|
text\<open>Since Isabelle's commands are freely programmable, it is possible to implement \<^dof> as an
|
||||||
extension of the system. In particular, the ontology language of \<^dof> provides an ontology
|
extension of the system. In particular, the ontology language of \<^dof> provides an ontology
|
||||||
definition language ODL that \<^emph>\<open>generates\<close> anti-quotations and the infrastructure to check and evaluate
|
definition language ODL\<^bindex>\<open>ODL\<close> that \<^emph>\<open>generates\<close> anti-quotations and the infrastructure to check and evaluate
|
||||||
them. This allows for checking an annotated document with respect to a given ontology, which may be
|
them. This allows for checking an annotated document with respect to a given ontology, which may be
|
||||||
specific for a given domain-specific universe of discourse (see @{figure "docModOnto"}). ODL will
|
specific for a given domain-specific universe of discourse (see @{figure "docModOnto"}). ODL will
|
||||||
be described in @{text_section (unchecked) "isadof_tour"} in more detail.\<close>
|
be described in @{text_section (unchecked) "isadof_tour"} in more detail.\<close>
|
||||||
|
|
|
@ -23,7 +23,7 @@ chapter*[isadof_tour::text_section]\<open>\<^isadof>: A Guided Tour\<close>
|
||||||
|
|
||||||
text\<open>
|
text\<open>
|
||||||
In this chapter, we will give an introduction into using \<^isadof> for users that want to create and
|
In this chapter, we will give an introduction into using \<^isadof> for users that want to create and
|
||||||
maintain documents following an existing document ontology.
|
maintain documents following an existing document ontology\<^bindex>\<open>ontology\<close> in ODL\<^bindex>\<open>ODL\<close>.
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
section*[getting_started::technical]\<open>Getting Started\<close>
|
section*[getting_started::technical]\<open>Getting Started\<close>
|
||||||
|
@ -34,7 +34,7 @@ text\<open>
|
||||||
\<^LaTeX>. We assume a basic familiarity with a Linux/Unix-like command line (i.e., a shell).
|
\<^LaTeX>. We assume a basic familiarity with a Linux/Unix-like command line (i.e., a shell).
|
||||||
Furthermore, we focus on the installation of the latest official release of \<^isadof> as
|
Furthermore, we focus on the installation of the latest official release of \<^isadof> as
|
||||||
available in the Archive of Formal Proofs (AFP).\<^footnote>\<open>If you want to work with the development version
|
available in the Archive of Formal Proofs (AFP).\<^footnote>\<open>If you want to work with the development version
|
||||||
of Isabelle/DOF, please obtain its source code from the Isabelle/DOF Git repostitory
|
of \<^isadof>, please obtain its source code from the \<^isadof> Git repostitory
|
||||||
(\<^url>\<open>https://git.logicalhacking.com/Isabelle_DOF/Isabelle_DOF\<close> and follow the instructions
|
(\<^url>\<open>https://git.logicalhacking.com/Isabelle_DOF/Isabelle_DOF\<close> and follow the instructions
|
||||||
in provided \<^verbatim>\<open>README.MD\<close> file.\<close>
|
in provided \<^verbatim>\<open>README.MD\<close> file.\<close>
|
||||||
|
|
||||||
|
@ -72,11 +72,12 @@ text\<open>
|
||||||
By installing the AFP in the previous steps, you already installed \<^isadof>. In fact, \<^isadof>
|
By installing the AFP in the previous steps, you already installed \<^isadof>. In fact, \<^isadof>
|
||||||
is currently consisting out of two AFP entries:
|
is currently consisting out of two AFP entries:
|
||||||
|
|
||||||
\<^item> Isabelle\_DOF: This entry
|
\<^item> \<^verbatim>\<open>Isabelle_DOF\<close>: This entry
|
||||||
contains the Isabelle/DOF system itself, including the Isabelle/DOF manual.
|
contains the \<^isadof> system itself, including the \<^isadof> manual.
|
||||||
\<^item> Isabelle\_DOF-Example-I: This entry contains an example of
|
\<^item> \<^verbatim>\<open>Isabelle_DOF-Example-I\<close>: This entry contains an example of
|
||||||
an academic paper written using the Isabelle/DOF system oriented towards
|
an academic paper written using the \<^isadof> system oriented towards an
|
||||||
\<^item> Isabelle\_DOF-Example-II: This entry contains another example of
|
introductory paper.
|
||||||
|
\<^item> \<^verbatim>\<open>Isabelle_DOF-Example-II\<close>: This entry contains another example of
|
||||||
a mathematics-oriented academic paper.
|
a mathematics-oriented academic paper.
|
||||||
|
|
||||||
It is recommended to follow structure one of these papers.\<close>
|
It is recommended to follow structure one of these papers.\<close>
|
||||||
|
@ -143,10 +144,10 @@ want to use. Otherwise, they will not be available.
|
||||||
|
|
||||||
paragraph\<open>Warning.\<close>
|
paragraph\<open>Warning.\<close>
|
||||||
text\<open>
|
text\<open>
|
||||||
Note that the session @{session "Isabelle_DOF"} needs to be part of the ``main'' session
|
Note that the session \<^session>\<open>Isabelle_DOF\<close> needs to be part of the ``main'' session
|
||||||
hierarchy. Loading the Isabelle/DOF theories as part of a session section, e.g.,
|
hierarchy. Loading the \<^isadof> theories as part of a session section, e.g.,
|
||||||
\<close>
|
\<close>
|
||||||
text\<open>
|
text\<open>\<^latex>\<open>
|
||||||
\begin{config}{ROOT}
|
\begin{config}{ROOT}
|
||||||
session example = HOL +
|
session example = HOL +
|
||||||
options [document = pdf, document_output = "output", document_build = dof]
|
options [document = pdf, document_output = "output", document_build = dof]
|
||||||
|
@ -156,7 +157,7 @@ session example = HOL +
|
||||||
theories
|
theories
|
||||||
C
|
C
|
||||||
\end{config}
|
\end{config}
|
||||||
\<close>
|
\<close>\<close>
|
||||||
text\<open>
|
text\<open>
|
||||||
will not work. Trying to build a document using such a setup will result in the
|
will not work. Trying to build a document using such a setup will result in the
|
||||||
following error message:
|
following error message:
|
||||||
|
@ -214,35 +215,31 @@ text\<open>At times, this causes idiosyncrasies like the ones cited in the follo
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
section*[scholar_onto::example]\<open>Writing Academic Publications in \<^boxed_theory_text>\<open>scholarly_paper\<close>\<close>
|
section*[scholar_onto::example]\<open>Writing Academic Publications in \<^boxed_theory_text>\<open>scholarly_paper\<close>\<close>
|
||||||
subsection\<open>Writing Academic Papers\<close>
|
subsection\<open>A Selection of major Examples\<close>
|
||||||
text\<open>
|
text\<open>
|
||||||
The ontology \<^verbatim>\<open>scholarly_paper\<close>
|
The ontology \<^verbatim>\<open>scholarly_paper\<close> \<^index>\<open>ontology!scholarly\_paper\<close> is an ontology modeling
|
||||||
\<^index>\<open>ontology!scholarly\_paper\<close> is an ontology modeling
|
academic/scientific papers, with a slight bias towards texts in the domain of mathematics and
|
||||||
academic/scientific papers, with a slight bias towards texts in the domain of mathematics and engineering.
|
engineering. We explain first the principles of its underlying ontology, and then we present two
|
||||||
We explain first the principles of its underlying ontology, and then we present two ``real''
|
``real'' examples from our own publication practice.
|
||||||
examples from our own publication practice.
|
\<^enum> The iFM 2020 paper~@{cite "taha.ea:philosophers:2020"} is a typical mathematical text,
|
||||||
\<close>
|
heavy in definitions with complex mathematical notation and a lot of non-trivial cross-referencing
|
||||||
text\<open>
|
between statements, definitions and proofs which are ontologically tracked. However, wrt.
|
||||||
\<^enum> The iFM 2020 paper~@{cite "taha.ea:philosophers:2020"} is a typical mathematical text,
|
the possible linking between the underlying formal theory and this mathematical presentation, it follows a pragmatic path without any ``deep'' linking to types, terms and theorems,
|
||||||
heavy in definitions with complex mathematical notation and a lot of non-trivial cross-referencing
|
deliberately not exploiting \<^isadof> 's full potential with this regard.
|
||||||
between statements, definitions and proofs which are ontologically tracked. However, wrt.
|
\<^enum> In the CICM 2018 paper~@{cite "brucker.ea:isabelle-ontologies:2018"}, we deliberately
|
||||||
the possible linking between the underlying formal theory and this mathematical presentation,
|
refrain from integrating references to formal content in order to demonstrate that \<^isadof> is not
|
||||||
it follows a pragmatic path without any ``deep'' linking to types, terms and theorems,
|
a framework from Isabelle users to Isabelle users only, but people just avoiding as much as
|
||||||
deliberately not exploiting \<^isadof> 's full potential with this regard.
|
possible \<^LaTeX> notation.
|
||||||
\<^enum> In the CICM 2018 paper~@{cite "brucker.ea:isabelle-ontologies:2018"}, we deliberately
|
|
||||||
refrain from integrating references to formal content in order to demonstrate that \<^isadof> is not
|
|
||||||
a framework from Isabelle users to Isabelle users only, but people just avoiding as much as
|
|
||||||
possible \<^LaTeX> notation.
|
|
||||||
|
|
||||||
The \<^isadof> distribution contains both examples using the ontology \<^verbatim>\<open>scholarly_paper\<close> in
|
The \<^isadof> distribution contains both examples using the ontology \<^verbatim>\<open>scholarly_paper\<close> in
|
||||||
the directory \nolinkurl{examples/scholarly_paper/2018-cicm-isabelle_dof-applications/} or
|
the directory \<^nolinkurl>\<open>examples/scholarly_paper/2018-cicm-isabelle_dof-applications/\<close> or
|
||||||
\nolinkurl{examples/scholarly_paper/2020-iFM-CSP}.
|
\<^nolinkurl>\<open>examples/scholarly_paper/2020-iFM-CSP\<close>.
|
||||||
|
|
||||||
You can inspect/edit the example in Isabelle's IDE, by either
|
You can inspect/edit the example in Isabelle's IDE, by either
|
||||||
\<^item> starting Isabelle/jEdit using your graphical user interface (\<^eg>, by clicking on the
|
\<^item> starting Isabelle/jEdit using your graphical user interface (\<^eg>, by clicking on the
|
||||||
Isabelle-Icon provided by the Isabelle installation) and loading the file
|
Isabelle-Icon provided by the Isabelle installation) and loading the file
|
||||||
\nolinkurl{examples/scholarly_paper/2018-cicm-isabelle_dof-applications/IsaDofApplications.thy},
|
\<^nolinkurl>\<open>examples/scholarly_paper/2018-cicm-isabelle_dof-applications/IsaDofApplications.thy"\<close>
|
||||||
\<^item> starting Isabelle/jEdit from the command line by, \<^eg>, calling:
|
\<^item> starting Isabelle/jEdit from the command line by, \<^eg>, calling:
|
||||||
|
|
||||||
@{boxed_bash [display]\<open>ë\prompt{\isadofdirn}ë
|
@{boxed_bash [display]\<open>ë\prompt{\isadofdirn}ë
|
||||||
isabelle jedit -d . examples/scholarly_paper/2020-iFM-CSP/paper.thy \<close>}
|
isabelle jedit -d . examples/scholarly_paper/2020-iFM-CSP/paper.thy \<close>}
|
||||||
|
@ -312,7 +309,7 @@ as follows:
|
||||||
Additional means assure that the following invariant is maintained in a document
|
Additional means assure that the following invariant is maintained in a document
|
||||||
conforming to \<^verbatim>\<open>scholarly_paper\<close>:
|
conforming to \<^verbatim>\<open>scholarly_paper\<close>:
|
||||||
|
|
||||||
\center {\<open>level > 0\<close>}
|
\<^center>\<open>\<open>level > 0\<close>\<close>
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
text\<open>\<^vs>\<open>1.0cm\<close>\<close>
|
text\<open>\<^vs>\<open>1.0cm\<close>\<close>
|
||||||
|
@ -464,10 +461,6 @@ in which the text-elements instances are expected to appear in the textual order
|
||||||
defined by \<^typ>\<open>article\<close>.
|
defined by \<^typ>\<open>article\<close>.
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
|
|
||||||
figure*[doc_termAq::figure,relative_width="80",src="''figures/doc-mod-term-aq.png''"]
|
|
||||||
\<open>Term-Antiquotations Referencing to Annotated Elements\<close>
|
|
||||||
|
|
||||||
side_by_side_figure*[exploring::side_by_side_figure,anchor="''fig-Dogfood-II-bgnd1''",
|
side_by_side_figure*[exploring::side_by_side_figure,anchor="''fig-Dogfood-II-bgnd1''",
|
||||||
caption="''Exploring a reference of a text-element.''",relative_width="48",
|
caption="''Exploring a reference of a text-element.''",relative_width="48",
|
||||||
src="''figures/Dogfood-II-bgnd1''",anchor2="''fig-bgnd-text_section''",
|
src="''figures/Dogfood-II-bgnd1''",anchor2="''fig-bgnd-text_section''",
|
||||||
|
@ -485,12 +478,21 @@ side_by_side_figure*["hyperlinks"::side_by_side_figure,anchor="''fig:Dogfood-IV-
|
||||||
|
|
||||||
text\<open>
|
text\<open>
|
||||||
From these class definitions, \<^isadof> also automatically generated editing
|
From these class definitions, \<^isadof> also automatically generated editing
|
||||||
support for Isabelle/jEdit. In \autoref{fig-Dogfood-II-bgnd1} and
|
support for Isabelle/jEdit. In
|
||||||
\autoref{fig-bgnd-text_section} we show how hovering over links permits to explore its
|
@{figure "exploring"}(left)
|
||||||
|
% \autoref{fig-Dogfood-II-bgnd1}
|
||||||
|
and
|
||||||
|
@{figure "exploring"}(right)
|
||||||
|
% \autoref{fig-bgnd-text_section}
|
||||||
|
we show how hovering over links permits to explore its
|
||||||
meta-information. Clicking on a document class identifier permits to hyperlink into the
|
meta-information. Clicking on a document class identifier permits to hyperlink into the
|
||||||
corresponding class definition (\autoref{fig:Dogfood-IV-jumpInDocCLass}); hovering over an
|
corresponding class definition (
|
||||||
attribute-definition (which is qualified in order to disambiguate;
|
@{figure "hyperlinks"}(left)
|
||||||
\autoref{fig:Dogfood-V-attribute}) shows its type.
|
%\autoref{fig:Dogfood-IV-jumpInDocCLass})
|
||||||
|
; hovering over an attribute-definition (which is qualified in order to disambiguate; cf.
|
||||||
|
@{figure "hyperlinks"}(right)
|
||||||
|
%\autoref{fig:Dogfood-V-attribute}
|
||||||
|
) shows its type.
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
figure*[figDogfoodVIlinkappl::figure,relative_width="80",src="''figures/Dogfood-VI-linkappl.png''"]
|
figure*[figDogfoodVIlinkappl::figure,relative_width="80",src="''figures/Dogfood-VI-linkappl.png''"]
|
||||||
|
@ -499,17 +501,68 @@ figure*[figDogfoodVIlinkappl::figure,relative_width="80",src="''figures/Dogfood-
|
||||||
text\<open>
|
text\<open>
|
||||||
An ontological reference application in @{figure "figDogfoodVIlinkappl"}: the
|
An ontological reference application in @{figure "figDogfoodVIlinkappl"}: the
|
||||||
ontology-dependant antiquotation \<^boxed_theory_text>\<open>@{example \<open>ex1\<close>}\<close> refers to the corresponding
|
ontology-dependant antiquotation \<^boxed_theory_text>\<open>@{example \<open>ex1\<close>}\<close> refers to the corresponding
|
||||||
text-element \<^boxed_theory_text>\<open>ex1\<close>.
|
text-element \<^boxed_theory_text>\<open>ex1\<close>. Hovering allows for inspection, clicking for jumping to the
|
||||||
Hovering allows for inspection, clicking for jumping to the definition.
|
definition. If the link does not exist or has a non-compatible type, the text is not validated,
|
||||||
If the link does not exist or has a non-compatible type, the text is not validated, \<^ie>,
|
\<^ie>, Isabelle/jEdit will respond with an error.\<close>
|
||||||
Isabelle/jEdit will respond with an error.\<close>
|
|
||||||
|
|
||||||
text\<open>We advise users to experiment with different notation variants.
|
text\<open>We advise users to experiment with different notation variants.
|
||||||
Note, further, that the Isabelle \<^latex>\<open>@\{cite ...\}\<close>-text-anti-quotation makes its checking
|
Note, further, that the Isabelle \<^latex>\<open>@\{cite ...\}\<close>-text-anti-quotation makes its checking
|
||||||
on the level of generated \<^verbatim>\<open>.aux\<close>-files, which are not necessarily up-to-date. Ignoring the PIDE
|
on the level of generated \<^verbatim>\<open>.aux\<close>-files, which are not necessarily up-to-date. Ignoring the PIDE
|
||||||
error-message and compiling a with a consistent bibtex usually makes disappear this behavior.
|
error-message and compiling it with a consistent bibtex usually makes disappear this behavior.
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
|
subsection*["using-term-aq"::technical, main_author = "Some @{author ''bu''}"]
|
||||||
|
\<open>Using Term-Antiquotations\<close>
|
||||||
|
|
||||||
|
text\<open>The present version of \<^isadof> is the first version that supports the novel feature of
|
||||||
|
\<^dof>-generated term-antiquotations\<^bindex>\<open>term-antiquotations\<close>, \<^ie>, antiquotations embedded
|
||||||
|
in HOL-\<open>\<lambda>\<close>-terms possessing arguments that were validated in the ontological context.
|
||||||
|
These \<open>\<lambda>\<close>-terms may occur in definitions, lemmas, or in values to define attributes
|
||||||
|
in class instances. They have the format:\<close>
|
||||||
|
|
||||||
|
text\<open>\<^center>\<open>\<open>@{name arg\<^sub>1 ... arg\<^sub>n\<^sub>-\<^sub>1} arg\<^sub>n\<close>\<close>\<close>
|
||||||
|
|
||||||
|
text\<open>Logically, they are defined as an identity in the last argument \<open>arg\<^sub>n\<close>; thus,
|
||||||
|
ontologically checked prior arguments \<open>arg\<^sub>1 ... arg\<^sub>n\<^sub>-\<^sub>1\<close> can be ignored during a proof
|
||||||
|
process; ontologically, they can be used to assure the traceability of, \<^eg>, semi-formal
|
||||||
|
assumptions throughout their way to formalisation and use in lemmas and proofs. \<close>
|
||||||
|
|
||||||
|
figure*[doc_termAq::figure,relative_width="50",src="''figures/doc-mod-term-aq.pdf''"]
|
||||||
|
\<open>Term-Antiquotations Referencing to Annotated Elements\<close>
|
||||||
|
text\<open>As shown in @{figure \<open>doc_termAq\<close>}, this feature of \<^isadof> substantially increases
|
||||||
|
the expressibility of links between the formal and the informal in \<^dof> documents.\<close>
|
||||||
|
|
||||||
|
text\<open> In the following, we describe a common scenario linking semi-formal assumptions and
|
||||||
|
formal ones:
|
||||||
|
|
||||||
|
@{boxed_theory_text [display]
|
||||||
|
\<open>
|
||||||
|
declare_reference*[e2::"definition"]
|
||||||
|
|
||||||
|
Assumption*[a1::"assumption", short_name="\<open>safe environment.\<close>"]
|
||||||
|
\<open>The system shall only be used in the temperature range from 0 to 60 degrees Celsius.
|
||||||
|
Formally, this is stated as follows in @{definition (unchecked) \<open>e2\<close>}.\<close>
|
||||||
|
|
||||||
|
definition*[e2, status=formal] safe_env :: "state \<Rightarrow> bool"
|
||||||
|
where "safe_env \<sigma> \<equiv> (temp \<sigma> \<in> {0 .. 60})"
|
||||||
|
|
||||||
|
theorem*[e3::"theorem"] safety_preservation::" @{assumption \<open>a1\<close>} (safe_env \<sigma>) \<Longrightarrow> ... "
|
||||||
|
\<close>}
|
||||||
|
\<close>
|
||||||
|
text\<open>Note that Isabelle procedes in a strict ``declaration-before-use''-manner, \<^ie> assumes
|
||||||
|
linear visibility on all references. This also holds for the declaration of ontological
|
||||||
|
references. In order to represent cyclic dependencies, it is therefore necessary to
|
||||||
|
start with the forward declaration \<^theory_text>\<open>declare_reference*\<close>. From there on, this reference
|
||||||
|
can be used in text, term, and code-contexts, albeit its definition appears textually later.
|
||||||
|
The corresponding freeform-formulation of this assumption can be explicitly referred in the
|
||||||
|
assumption of a theorem establishing the link. The \<^theory_text>\<open>theorem*\<close>-variant of the common
|
||||||
|
Isabelle/Isar \<^theory_text>\<open>theorem\<close>-command will in contrast to the latter not ignore \<open>\<open>a1\<close>\<close>,
|
||||||
|
\<^ie> parse just as string, but also validate it in the previous context.
|
||||||
|
|
||||||
|
Note that the \<^theory_text>\<open>declare_reference*\<close> command will appear in the \<^LaTeX> generated from this
|
||||||
|
document fragment. In order to avoid this, one has to enclose this command into the
|
||||||
|
document comments :\<close>
|
||||||
|
text\<open>\<^center>\<open>\<open>(*<*) ... (*>*)\<close>\<close>\<close>
|
||||||
|
|
||||||
|
|
||||||
section*[tech_onto::example]\<open>Writing Technical Reports in \<^boxed_theory_text>\<open>technical_report\<close>\<close>
|
section*[tech_onto::example]\<open>Writing Technical Reports in \<^boxed_theory_text>\<open>technical_report\<close>\<close>
|
||||||
|
@ -595,7 +648,7 @@ In the \<^pdf> output, these text-fragments were displayed verbatim.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
section\<open>Style Guide\<close>
|
section\<open>Some Recommendations: A little Style Guide\<close>
|
||||||
text\<open>
|
text\<open>
|
||||||
The document generation of \<^isadof> is based on Isabelle's document generation framework,
|
The document generation of \<^isadof> is based on Isabelle's document generation framework,
|
||||||
using \<^LaTeX>{} as the underlying back-end. As Isabelle's document generation framework, it is
|
using \<^LaTeX>{} as the underlying back-end. As Isabelle's document generation framework, it is
|
||||||
|
@ -613,11 +666,18 @@ text\<open> This is \emph{emphasized} and this is a
|
||||||
text\<open> This is *\<open>emphasized\<close> and this is a
|
text\<open> This is *\<open>emphasized\<close> and this is a
|
||||||
citation @{cite "brucker.ea:isabelle-ontologies:2018"}.\<close>
|
citation @{cite "brucker.ea:isabelle-ontologies:2018"}.\<close>
|
||||||
\<close>}
|
\<close>}
|
||||||
|
The list of standard Isabelle document antiquotations, as well as their options and styles,
|
||||||
|
can be found in the Isabelle reference manual @{cite "wenzel:isabelle-isar:2020"}, also be found
|
||||||
|
under \<^url>\<open>https://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle2022/doc/isar-ref.pdf\<close>,
|
||||||
|
section 4.2.
|
||||||
|
|
||||||
Clearly, this is not always possible and, in fact, often \<^isadof> documents will contain
|
In practice, \<^isadof> documents with ambitious layout will contain a certain number of
|
||||||
\<^LaTeX>-commands, but this should be restricted to layout improvements that otherwise are (currently)
|
\<^LaTeX>-commands, but this should be restricted to layout improvements that otherwise are (currently)
|
||||||
not possible. As far as possible, the use of \<^LaTeX>-commands should be restricted to the definition
|
not possible. As far as possible, raw \<^LaTeX> should be restricted to the definition
|
||||||
of ontologies and document templates (see @{docitem (unchecked) \<open>isadof_ontologies\<close>}).
|
of ontologies and macros (see @{docitem (unchecked) \<open>isadof_ontologies\<close>}). If raw
|
||||||
|
\<^LaTeX> commands can not be avoided, it is recommended to use the Isabelle document comment
|
||||||
|
\<^latex>\<open>\verb+\+\verb+<^latex>+\<close>\<open>\<open>argument\<close>\<close> to isolate these parts
|
||||||
|
(cf. \<^url>\<open>https://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle2022/doc/isar-ref.pdf\<close>).
|
||||||
|
|
||||||
Restricting the use of \<^LaTeX> has two advantages: first, \<^LaTeX> commands can circumvent the
|
Restricting the use of \<^LaTeX> has two advantages: first, \<^LaTeX> commands can circumvent the
|
||||||
consistency checks of \<^isadof> and, hence, only if no \<^LaTeX> commands are used, \<^isadof> can
|
consistency checks of \<^isadof> and, hence, only if no \<^LaTeX> commands are used, \<^isadof> can
|
||||||
|
|
|
@ -43,7 +43,7 @@ text\<open>
|
||||||
\<^boxed_theory_text>\<open>text*\<close>, \<^boxed_theory_text>\<open>declare_reference*\<close>, \<^etc>.;
|
\<^boxed_theory_text>\<open>text*\<close>, \<^boxed_theory_text>\<open>declare_reference*\<close>, \<^etc>.;
|
||||||
They allow for the annotation of text-elements with meta-information defined in ODL,
|
They allow for the annotation of text-elements with meta-information defined in ODL,
|
||||||
\<^item> the \<^isadof> library \<^theory>\<open>Isabelle_DOF.Isa_COL\<close> providing
|
\<^item> the \<^isadof> library \<^theory>\<open>Isabelle_DOF.Isa_COL\<close> providing
|
||||||
ontological basic (documents) concepts as well as supporting infrastructure,
|
ontological basic (documents) concepts \<^bindex>\<open>ontology\<close> as well as supporting infrastructure,
|
||||||
\<^item> an infrastructure for ontology-specific \<^emph>\<open>layout definitions\<close>, exploiting this meta-information,
|
\<^item> an infrastructure for ontology-specific \<^emph>\<open>layout definitions\<close>, exploiting this meta-information,
|
||||||
and
|
and
|
||||||
\<^item> an infrastructure for generic \<^emph>\<open>layout definitions\<close> for documents following, \<^eg>, the format
|
\<^item> an infrastructure for generic \<^emph>\<open>layout definitions\<close> for documents following, \<^eg>, the format
|
||||||
|
@ -51,27 +51,29 @@ text\<open>
|
||||||
\<close>
|
\<close>
|
||||||
text\<open>
|
text\<open>
|
||||||
Similarly to Isabelle, which is based on a core logic \<^theory>\<open>Pure\<close> and then extended by libraries
|
Similarly to Isabelle, which is based on a core logic \<^theory>\<open>Pure\<close> and then extended by libraries
|
||||||
to major systems like \<^verbatim>\<open>HOL\<close>, \<^isadof> has a generic core infrastructure \<^dof> and then
|
to major systems like \<^verbatim>\<open>HOL\<close>, \<^isadof> has a generic core infrastructure \<^dof> and then presents
|
||||||
presents itself to users via major library extensions, which add domain-specific
|
itself to users via major library extensions, which add domain-specific system-extensions.
|
||||||
system-extensions. Ontologies in \<^isadof> are not just a sequence of descriptions in
|
Ontologies\<^bindex>\<open>ontology\<close> in \<^isadof> are not just a sequence of descriptions in \<^isadof>'s Ontology
|
||||||
\<^isadof>'s Ontology Definition Language (ODL). Rather, they are themselves presented as integrated
|
Definition Language (ODL)\<^bindex>\<open>ODL\<close>. Rather, they are themselves presented as integrated
|
||||||
sources that provide textual descriptions, abbreviations, macro-support and even ML-code.
|
sources that provide textual descriptions, abbreviations, macro-support and even ML-code.
|
||||||
Conceptually, the library of \<^isadof> is currently organized as follows\<^footnote>\<open>The \<^emph>\<open>technical\<close>
|
Conceptually, the library of \<^isadof> is currently organized as follows\<^footnote>\<open>The \<^emph>\<open>technical\<close>
|
||||||
organization is slightly different and shown in
|
organization is slightly different and shown in
|
||||||
@{technical (unchecked) \<open>infrastructure\<close>}.\<close>:
|
@{technical (unchecked) \<open>infrastructure\<close>}.\<close>
|
||||||
|
\<^bindex>\<open>COL\<close>\<^bindex>\<open>scholarly\_paper\<close>\<^bindex>\<open>technical\_report\<close> \<^bindex>\<open>CENELEC\<close>:
|
||||||
%
|
%
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{minipage}{.9\textwidth}\footnotesize
|
\begin{minipage}{.9\textwidth}\footnotesize
|
||||||
\dirtree{%
|
\dirtree{%
|
||||||
.1 COL\DTcomment{The Common Ontology Library}.
|
.1 COL\DTcomment{The Common Ontology Library}.
|
||||||
.2 scholarly\_paper\DTcomment{Scientific Papers}.
|
.2 scholarly\_paper\DTcomment{Scientific Papers}.
|
||||||
.3 technical\_report\DTcomment{Extended Papers}.
|
.3 technical\_report\DTcomment{Extended Papers, Technical Reports}.
|
||||||
.4 CENELEC\_50128\DTcomment{Papers according to CENELEC\_50128}.
|
.4 CENELEC\_50128\DTcomment{Papers according to CENELEC\_50128}.
|
||||||
.4 CC\_v3\_1\_R5\DTcomment{Papers according to Common Criteria}.
|
.4 CC\_v3\_1\_R5\DTcomment{Papers according to Common Criteria}.
|
||||||
.4 \ldots.
|
.4 \ldots.
|
||||||
}
|
}
|
||||||
\end{minipage}
|
\end{minipage}
|
||||||
\end{center}
|
\end{center}\<close>
|
||||||
|
|
||||||
These libraries not only provide ontological concepts, but also syntactic sugar in Isabelle's
|
These libraries not only provide ontological concepts, but also syntactic sugar in Isabelle's
|
||||||
command language Isar that is of major importance for users (and may be felt as \<^isadof> key
|
command language Isar that is of major importance for users (and may be felt as \<^isadof> key
|
||||||
|
@ -95,27 +97,25 @@ text\<open>
|
||||||
|
|
||||||
section\<open>The Ontology Definition Language (ODL)\<close>
|
section\<open>The Ontology Definition Language (ODL)\<close>
|
||||||
text\<open>
|
text\<open>
|
||||||
ODL shares some similarities with meta-modeling languages such as UML class
|
ODL shares some similarities with meta-modeling languages such as UML class
|
||||||
models: It builds upon concepts like class, inheritance, class-instances, attributes, references
|
models: It builds upon concepts like class, inheritance, class-instances, attributes, references
|
||||||
to instances, and class-invariants. Some concepts like advanced type-checking, referencing to
|
to instances, and class-invariants. Some concepts like advanced type-checking, referencing to
|
||||||
formal entities of Isabelle, and monitors are due to its specific application in the
|
formal entities of Isabelle, and monitors are due to its specific application in the
|
||||||
Isabelle context. Conceptually, ontologies specified in ODL consist of:
|
Isabelle context. Conceptually, ontologies specified in ODL consist of:
|
||||||
\<^item> \<^emph>\<open>document classes\<close> (\<^boxed_theory_text>\<open>doc_class\<close>) \<^index>\<open>doc\_class\<close> that describe concepts,
|
\<^item> \<^emph>\<open>document classes\<close> (\<^boxed_theory_text>\<open>doc_class\<close>) \<^index>\<open>doc\_class\<close> that describe concepts,
|
||||||
the keyword (\<^boxed_theory_text>\<open>onto_class\<close>) \<^index>\<open>onto\_class\<close> is accepted equally,
|
the keyword (\<^boxed_theory_text>\<open>onto_class\<close>) \<^index>\<open>onto\_class\<close> is accepted equally,
|
||||||
\<^item> an optional document base class expressing single inheritance
|
\<^item> an optional document base class expressing single inheritance class extensions,
|
||||||
class extensions,
|
\<^item> \<^emph>\<open>attributes\<close> specific to document classes, where
|
||||||
\<^item> \<^emph>\<open>attributes\<close> specific to document classes, where
|
\<^item> attributes are HOL-typed,
|
||||||
\<^item> attributes are HOL-typed,
|
\<^item> attributes of instances of document elements are mutable,
|
||||||
\<^item> attributes of instances of document elements are mutable,
|
\<^item> attributes can refer to other document classes, thus, document
|
||||||
\<^item> attributes can refer to other document classes, thus, document
|
classes must also be HOL-types (such attributes are called \<^emph>\<open>links\<close>),
|
||||||
classes must also be HOL-types (such attributes are called
|
\<^item> attribute values were denoted by HOL-terms,
|
||||||
\<^emph>\<open>links\<close>),
|
\<^item> a special link, the reference to a super-class, establishes an
|
||||||
\<^item> attribute values were denoted by HOL-terms,
|
\<^emph>\<open>is-a\<close> relation between classes,
|
||||||
\<^item> a special link, the reference to a super-class, establishes an
|
\<^item> classes may refer to other classes via a regular expression in an
|
||||||
\<^emph>\<open>is-a\<close> relation between classes,
|
\<^emph>\<open>accepts\<close> clause, or via a list in a \<^emph>\<open>rejects\<close> clause,
|
||||||
\<^item> classes may refer to other classes via a regular expression in an
|
\<^item> attributes may have default values in order to facilitate notation.
|
||||||
\<^emph>\<open>accepts\<close> clause, or via a list in a \<^emph>\<open>rejects\<close> clause,
|
|
||||||
\<^item> attributes may have default values in order to facilitate notation.
|
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
text\<open>
|
text\<open>
|
||||||
|
@ -262,13 +262,14 @@ A document class\<^bindex>\<open>document class\<close> can be defined using the
|
||||||
text\<open>
|
text\<open>
|
||||||
\<^isadof> provides a default document representation (\<^ie>, content and layout of the generated
|
\<^isadof> provides a default document representation (\<^ie>, content and layout of the generated
|
||||||
\<^pdf>) that only prints the main text, omitting all attributes. \<^isadof> provides the
|
\<^pdf>) that only prints the main text, omitting all attributes. \<^isadof> provides the
|
||||||
\inlineltx|\newisadof[]{}|\<^index>\<open>newisadof@\<^boxed_latex>\<open>\newisadof\<close>\<close>\<^index>\<open>document class!PDF\<close>
|
\<^ltxinline>\<open>\newisadof[]{}\<close>\<^index>\<open>newisadof@\<^boxed_latex>\<open>\newisadof\<close>\<close>\<^index>\<open>document class!PDF\<close>
|
||||||
command for defining a dedicated layout for a document class in \<^LaTeX>. Such a document
|
command for defining a dedicated layout for a document class in \<^LaTeX>. Such a document
|
||||||
class-specific \<^LaTeX>-definition can not only provide a specific layout (\<^eg>, a specific
|
class-specific \<^LaTeX>-definition can not only provide a specific layout (\<^eg>, a specific
|
||||||
highlighting, printing of certain attributes), it can also generate entries in the table of
|
highlighting, printing of certain attributes), it can also generate entries in the table of
|
||||||
contents or an index. Overall, the \inlineltx|\newisadof[]{}| command follows the structure
|
contents or an index. Overall, the \<^ltxinline>\<open>\newisadof[]{}\<close> command follows the structure
|
||||||
of the \<^boxed_theory_text>\<open>doc_class\<close>-command:
|
of the \<^boxed_theory_text>\<open>doc_class\<close>-command:
|
||||||
|
|
||||||
|
% bu: not embeddable macro: too many guillemots ...
|
||||||
\begin{ltx}[escapechar=ë]
|
\begin{ltx}[escapechar=ë]
|
||||||
\newisadof{ë\<open>class_id\<close>ë}[label=,type=, ë\<open>attribute_decl\<close>ë][1]{%
|
\newisadof{ë\<open>class_id\<close>ë}[label=,type=, ë\<open>attribute_decl\<close>ë][1]{%
|
||||||
% ë\LaTeXë-definition of the document class representation
|
% ë\LaTeXë-definition of the document class representation
|
||||||
|
@ -282,17 +283,17 @@ text\<open>
|
||||||
needs to declare all attributes of the document class. Within the \<^LaTeX>-definition of the document
|
needs to declare all attributes of the document class. Within the \<^LaTeX>-definition of the document
|
||||||
class representation, the identifier \<^boxed_latex>\<open>#1\<close> refers to the content of the main text of the
|
class representation, the identifier \<^boxed_latex>\<open>#1\<close> refers to the content of the main text of the
|
||||||
document class (written in \<^boxed_theory_text>\<open>\<open> ... \<close>\<close>) and the attributes can be referenced
|
document class (written in \<^boxed_theory_text>\<open>\<open> ... \<close>\<close>) and the attributes can be referenced
|
||||||
by their name using the \inlineltx|\commandkey{...}|-command (see the documentation of the
|
by their name using the \<^ltxinline>\<open>\commandkey{...}\<close>-command (see the documentation of the
|
||||||
\<^LaTeX>-package ``keycommand''~@{cite "chervet:keycommand:2010"} for details). Usually, the
|
\<^LaTeX>-package ``keycommand''~@{cite "chervet:keycommand:2010"} for details). Usually, the
|
||||||
representations definition needs to be wrapped in a
|
representations definition needs to be wrapped in a
|
||||||
\inlineltx|\begin{isarmarkup}...\end{isamarkup}|-environment, to ensure the correct context
|
\<^ltxinline>\<open>\begin{isarmarkup}...\end{isamarkup}\<close>-environment, to ensure the correct context
|
||||||
within Isabelle's \<^LaTeX>-setup.
|
within Isabelle's \<^LaTeX>-setup.
|
||||||
% TODO:
|
% TODO:
|
||||||
% Clarify \newisadof signature: \newisadof[]{} vs \newisadof{}[]{}.
|
% Clarify \newisadof signature: \newisadof[]{} vs \newisadof{}[]{}.
|
||||||
Moreover, \<^isadof> also provides the following two variants of \inlineltx|\newisadof{}[]{}|:
|
Moreover, \<^isadof> also provides the following two variants of \inlineltx|\newisadof{}[]{}|:
|
||||||
\<^item> \inlineltx|\renewisadof{}[]{}|\<^index>\<open>renewisadof@\<^boxed_latex>\<open>\renewisadof\<close>\<close> for re-defining
|
\<^item> \<^ltxinline>\<open>\renewisadof{}[]{}\<close>\<^index>\<open>renewisadof@\<^boxed_latex>\<open>\renewisadof\<close>\<close> for re-defining
|
||||||
(over-writing) an already defined command, and
|
(over-writing) an already defined command, and
|
||||||
\<^item> \inlineltx|\provideisadof{}[]{}|\<^index>\<open>provideisadof@\<^boxed_latex>\<open>\provideisadof\<close>\<close> for providing
|
\<^item> \<^ltxinline>\<open>\provideisadof{}[]{}\<close>\<^index>\<open>provideisadof@\<^boxed_latex>\<open>\provideisadof\<close>\<close> for providing
|
||||||
a definition if it is not yet defined.
|
a definition if it is not yet defined.
|
||||||
\<close>
|
\<close>
|
||||||
text\<open>
|
text\<open>
|
||||||
|
@ -451,9 +452,7 @@ term*\<open>@{B--test- \<open>b\<close>}\<close>
|
||||||
|
|
||||||
declare_reference*["text-elements-expls"::technical]
|
declare_reference*["text-elements-expls"::technical]
|
||||||
(*>*)
|
(*>*)
|
||||||
ML\<open>
|
|
||||||
|
|
||||||
\<close>
|
|
||||||
subsection*["subsec:onto-term-ctxt"::technical]\<open>Ontological Term-Contexts and their Management\<close>
|
subsection*["subsec:onto-term-ctxt"::technical]\<open>Ontological Term-Contexts and their Management\<close>
|
||||||
text\<open>
|
text\<open>
|
||||||
\<^item> \<open>annotated_term_element\<close>
|
\<^item> \<open>annotated_term_element\<close>
|
||||||
|
@ -634,6 +633,7 @@ text\<open>
|
||||||
\<^bindex>\<open>COL\<close> \<^footnote>\<open>contained in \<^theory>\<open>Isabelle_DOF.Isa_COL\<close>\<close>
|
\<^bindex>\<open>COL\<close> \<^footnote>\<open>contained in \<^theory>\<open>Isabelle_DOF.Isa_COL\<close>\<close>
|
||||||
that introduces several ontology concepts; its overall class-tree it provides looks as follows:
|
that introduces several ontology concepts; its overall class-tree it provides looks as follows:
|
||||||
%
|
%
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{minipage}{.9\textwidth}\footnotesize
|
\begin{minipage}{.9\textwidth}\footnotesize
|
||||||
\dirtree{%
|
\dirtree{%
|
||||||
|
@ -649,7 +649,7 @@ text\<open>
|
||||||
.1 \ldots.
|
.1 \ldots.
|
||||||
}
|
}
|
||||||
\end{minipage}
|
\end{minipage}
|
||||||
\end{center}\<close>
|
\end{center}\<close>\<close>
|
||||||
|
|
||||||
text\<open>
|
text\<open>
|
||||||
In particular it defines the super-class \<^typ>\<open>text_element\<close>: the root of all
|
In particular it defines the super-class \<^typ>\<open>text_element\<close>: the root of all
|
||||||
|
@ -709,6 +709,7 @@ text\<open> The \<^verbatim>\<open>scholarly_paper\<close> ontology is oriented
|
||||||
mathematics, informatics, natural sciences, technology, or engineering.
|
mathematics, informatics, natural sciences, technology, or engineering.
|
||||||
|
|
||||||
It extends \<^verbatim>\<open>COL\<close> by the following concepts:
|
It extends \<^verbatim>\<open>COL\<close> by the following concepts:
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{minipage}{.9\textwidth}\footnotesize
|
\begin{minipage}{.9\textwidth}\footnotesize
|
||||||
\dirtree{%
|
\dirtree{%
|
||||||
|
@ -733,7 +734,7 @@ It extends \<^verbatim>\<open>COL\<close> by the following concepts:
|
||||||
.5 scholarly\_paper.corollary\DTcomment{Freeform}.
|
.5 scholarly\_paper.corollary\DTcomment{Freeform}.
|
||||||
.5 scholarly\_paper.math\_example\DTcomment{Freeform}.
|
.5 scholarly\_paper.math\_example\DTcomment{Freeform}.
|
||||||
.5 scholarly\_paper.math\_semiformal\DTcomment{Freeform}.
|
.5 scholarly\_paper.math\_semiformal\DTcomment{Freeform}.
|
||||||
.5 scholarly\_paper.math\_formal\DTcomment{Formal(=Checked) Content}.
|
.5 scholarly\_paper.math\_formal\DTcomment{Formal Content}.
|
||||||
.6 scholarly\_paper.assertion\DTcomment{Assertions}.
|
.6 scholarly\_paper.assertion\DTcomment{Assertions}.
|
||||||
.4 scholarly\_paper.tech\_example\DTcomment{...}.
|
.4 scholarly\_paper.tech\_example\DTcomment{...}.
|
||||||
.4 scholarly\_paper.math\_motivation\DTcomment{...}.
|
.4 scholarly\_paper.math\_motivation\DTcomment{...}.
|
||||||
|
@ -749,10 +750,10 @@ It extends \<^verbatim>\<open>COL\<close> by the following concepts:
|
||||||
}
|
}
|
||||||
\end{minipage}
|
\end{minipage}
|
||||||
\end{center}
|
\end{center}
|
||||||
\<close>
|
\<close>\<close>
|
||||||
(*
|
|
||||||
TODO: There are some slight problems in the hierarchy ...
|
|
||||||
*)
|
text\<open>Recall that \<^emph>\<open>Formal Content\<close> means \<^emph>\<open>machine-checked, validated content\<close>.\<close>
|
||||||
|
|
||||||
text\<open>A pivotal abstract class in the hierarchy is:
|
text\<open>A pivotal abstract class in the hierarchy is:
|
||||||
@{boxed_theory_text [display]
|
@{boxed_theory_text [display]
|
||||||
|
@ -789,9 +790,12 @@ of the \<^isadof> language:
|
||||||
|
|
||||||
\<^item> \<open>derived_text_elements \<close> :
|
\<^item> \<open>derived_text_elements \<close> :
|
||||||
\<^rail>\<open>
|
\<^rail>\<open>
|
||||||
( ( @@{command "author*"}
|
( ( @@{command "author*"} | @@{command "abstract*"}
|
||||||
| @@{command "abstract*"}
|
| @@{command "Definition*"} | @@{command "Lemma*"} | @@{command "Theorem*"}
|
||||||
| @@{command "Definition*"} | @@{command "Lemma*"} | @@{command "Theorem*"}
|
| @@{command "Proposition*"}| @@{command "Proof*"} | @@{command "Example*"}
|
||||||
|
| @@{command "Premise*"} | @@{command "Assumption*"} | @@{command "Hypothesis*"}
|
||||||
|
| @@{command "Corollary*"} | @@{command "Consequence*"}| @@{command "Assertion*"}
|
||||||
|
| @@{command "Conclusion*"}
|
||||||
)
|
)
|
||||||
\<newline>
|
\<newline>
|
||||||
'[' meta_args ']' '\<open>' text '\<close>'
|
'[' meta_args ']' '\<open>' text '\<close>'
|
||||||
|
@ -800,6 +804,9 @@ of the \<^isadof> language:
|
||||||
\<close>
|
\<close>
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
text\<open>Usually, command macros for text elements will assign the generated instance
|
text\<open>Usually, command macros for text elements will assign the generated instance
|
||||||
to the default class corresponding for this class.
|
to the default class corresponding for this class.
|
||||||
For pragmatic reasons, \<^theory_text>\<open>Definition*\<close>, \<^theory_text>\<open>Lemma*\<close> and \<^theory_text>\<open>Theorem*\<close> represent an exception
|
For pragmatic reasons, \<^theory_text>\<open>Definition*\<close>, \<^theory_text>\<open>Lemma*\<close> and \<^theory_text>\<open>Theorem*\<close> represent an exception
|
||||||
|
@ -876,12 +883,14 @@ ML\<open>writeln (DOF_core.print_doc_class_tree
|
||||||
orelse String.isPrefix "Isa_COL" l *))
|
orelse String.isPrefix "Isa_COL" l *))
|
||||||
toLaTeX)\<close>
|
toLaTeX)\<close>
|
||||||
(*>*)
|
(*>*)
|
||||||
text\<open> The \<^verbatim>\<open>technical_report\<close> ontology in \<^theory>\<open>Isabelle_DOF.technical_report\<close> extends
|
text\<open> The \<^verbatim>\<open>technical_report\<close> \<^bindex>\<open>technical\_report\<close> ontology in
|
||||||
\<^verbatim>\<open>scholarly_paper\<close> by concepts needed
|
\<^theory>\<open>Isabelle_DOF.technical_report\<close> extends
|
||||||
|
\<^verbatim>\<open>scholarly_paper\<close> \<^bindex>\<open>scholarly\_paper\<close> \<^bindex>\<open>ontology\<close> by concepts needed
|
||||||
for larger reports in the domain of mathematics and engineering. The concepts are fairly
|
for larger reports in the domain of mathematics and engineering. The concepts are fairly
|
||||||
high-level arranged at root-class level,
|
high-level arranged at root-class level,
|
||||||
|
|
||||||
%
|
%
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{minipage}{.9\textwidth}\footnotesize
|
\begin{minipage}{.9\textwidth}\footnotesize
|
||||||
\dirtree{%
|
\dirtree{%
|
||||||
|
@ -900,7 +909,7 @@ high-level arranged at root-class level,
|
||||||
}
|
}
|
||||||
\end{minipage}
|
\end{minipage}
|
||||||
\end{center}
|
\end{center}
|
||||||
\<close>
|
\<close>\<close>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -931,21 +940,21 @@ end
|
||||||
|
|
||||||
Second, given an implementation of the functionality of the new keyword (implemented in SML),
|
Second, given an implementation of the functionality of the new keyword (implemented in SML),
|
||||||
the new keyword needs to be registered, together with its parser, as outer syntax:
|
the new keyword needs to be registered, together with its parser, as outer syntax:
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{sml}
|
\begin{sml}
|
||||||
val _ =
|
val _ =
|
||||||
Outer_Syntax.command ("section*", <@>{here}) "section heading"
|
Outer_Syntax.command ("section*", <@>{here}) "section heading"
|
||||||
(attributes -- Parse.opt_target -- Parse.document_source --| semi
|
(attributes -- Parse.opt_target -- Parse.document_source --| semi
|
||||||
>> (Toplevel.theory o (enriched_document_command (SOME(SOME 1))
|
>> (Toplevel.theory o (enriched_document_command (SOME(SOME 1))
|
||||||
{markdown = false} )));
|
{markdown = false} )));
|
||||||
\end{sml}
|
\end{sml}\<close>
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
text\<open>
|
text\<open>
|
||||||
Finally, for the document generation, a new dispatcher has to be defined in \<^LaTeX>---this is
|
Finally, for the document generation, a new dispatcher has to be defined in \<^LaTeX>---this is
|
||||||
mandatory, otherwise the document generation will break. These dispatchers always follow the same
|
mandatory, otherwise the document generation will break. These dispatchers always follow the same
|
||||||
schemata:
|
schemata:
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{ltx}
|
\begin{ltx}
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% begin: section*-dispatcher
|
% begin: section*-dispatcher
|
||||||
|
@ -953,17 +962,17 @@ schemata:
|
||||||
% end: section*-dispatcher
|
% end: section*-dispatcher
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\end{ltx}
|
\end{ltx}
|
||||||
|
\<close>
|
||||||
After the definition of the dispatcher, one can, optionally, define a custom representation
|
After the definition of the dispatcher, one can, optionally, define a custom representation
|
||||||
using the \<^boxed_latex>\<open>\newisadof\<close>-command, as introduced in the previous section:
|
using the \<^boxed_latex>\<open>\newisadof\<close>-command, as introduced in the previous section:
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{ltx}
|
\begin{ltx}
|
||||||
\newisadof{section}[label=,type=][1]{%
|
\newisadof{section}[label=,type=][1]{%
|
||||||
\isamarkupfalse%
|
\isamarkupfalse%
|
||||||
\isamarkupsection{#1}\label{\commandkey{label}}%
|
\isamarkupsection{#1}\label{\commandkey{label}}%
|
||||||
\isamarkuptrue%
|
\isamarkuptrue%
|
||||||
}
|
}
|
||||||
\end{ltx}
|
\end{ltx}\<close>
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
|
|
||||||
|
@ -1300,6 +1309,7 @@ text\<open>
|
||||||
Technically, ontologies\<^index>\<open>ontology!directory structure\<close> are stored in a directory
|
Technically, ontologies\<^index>\<open>ontology!directory structure\<close> are stored in a directory
|
||||||
\<^boxed_bash>\<open>ontologies\<close> and consist of an Isabelle theory file and a \<^LaTeX>-style file:
|
\<^boxed_bash>\<open>ontologies\<close> and consist of an Isabelle theory file and a \<^LaTeX>-style file:
|
||||||
%
|
%
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{minipage}{.9\textwidth}\footnotesize
|
\begin{minipage}{.9\textwidth}\footnotesize
|
||||||
\dirtree{%
|
\dirtree{%
|
||||||
|
@ -1314,7 +1324,7 @@ text\<open>
|
||||||
.4 DOF-technical\_report.sty.
|
.4 DOF-technical\_report.sty.
|
||||||
}
|
}
|
||||||
\end{minipage}
|
\end{minipage}
|
||||||
\end{center}
|
\end{center}\<close>
|
||||||
\<close>
|
\<close>
|
||||||
text\<open>
|
text\<open>
|
||||||
Developing a new ontology ``\<^boxed_bash>\<open>foo\<close>'' requires the
|
Developing a new ontology ``\<^boxed_bash>\<open>foo\<close>'' requires the
|
||||||
|
@ -1334,6 +1344,7 @@ text\<open>
|
||||||
etc.) of the generated documents. Document-templates
|
etc.) of the generated documents. Document-templates
|
||||||
are stored in a directory
|
are stored in a directory
|
||||||
\<^path>\<open>src/document-templates\<close>:\<^index>\<open>document template!directory structure\<close>
|
\<^path>\<open>src/document-templates\<close>:\<^index>\<open>document template!directory structure\<close>
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{minipage}{.9\textwidth}\footnotesize
|
\begin{minipage}{.9\textwidth}\footnotesize
|
||||||
\dirtree{%
|
\dirtree{%
|
||||||
|
@ -1345,7 +1356,7 @@ text\<open>
|
||||||
.3 root-scrreprt.tex.
|
.3 root-scrreprt.tex.
|
||||||
}
|
}
|
||||||
\end{minipage}
|
\end{minipage}
|
||||||
\end{center}
|
\end{center}\<close>
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
text\<open>
|
text\<open>
|
||||||
|
@ -1380,6 +1391,7 @@ text\<open>
|
||||||
adding a new template, call the \<^boxed_bash>\<open>install\<close> script (see \<^technical>\<open>infrastructure\<close>).
|
adding a new template, call the \<^boxed_bash>\<open>install\<close> script (see \<^technical>\<open>infrastructure\<close>).
|
||||||
The common structure of an \<^isadof> document template looks as follows:
|
The common structure of an \<^isadof> document template looks as follows:
|
||||||
|
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{ltx}[escapechar=ë, numbers=left,numberstyle=\tiny,xleftmargin=5mm]
|
\begin{ltx}[escapechar=ë, numbers=left,numberstyle=\tiny,xleftmargin=5mm]
|
||||||
\documentclass{article} % The LaTeX-class of your template ë\label{lst:dc}ë
|
\documentclass{article} % The LaTeX-class of your template ë\label{lst:dc}ë
|
||||||
%% The following part is (mostly) required by Isabelle/DOF, do not modify
|
%% The following part is (mostly) required by Isabelle/DOF, do not modify
|
||||||
|
@ -1404,7 +1416,7 @@ text\<open>
|
||||||
\maketitle\input{session}
|
\maketitle\input{session}
|
||||||
\IfFileExists{root.bib}{\bibliography{root}}{}
|
\IfFileExists{root.bib}{\bibliography{root}}{}
|
||||||
\end{document}
|
\end{document}
|
||||||
\end{ltx}
|
\end{ltx}\<close>
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
subsection\<open>Tips, Tricks, and Known Limitations\<close>
|
subsection\<open>Tips, Tricks, and Known Limitations\<close>
|
||||||
|
@ -1470,7 +1482,7 @@ text\<open>
|
||||||
information into an \<^boxed_latex>\<open>\author\<close> and a \<^boxed_latex>\<open>\institution\<close> statement, each of
|
information into an \<^boxed_latex>\<open>\author\<close> and a \<^boxed_latex>\<open>\institution\<close> statement, each of
|
||||||
which containing the information for all authors. The collection of the author information
|
which containing the information for all authors. The collection of the author information
|
||||||
is provided by the following \<^LaTeX>-code:
|
is provided by the following \<^LaTeX>-code:
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{ltx}
|
\begin{ltx}
|
||||||
\def\dof@author{}%
|
\def\dof@author{}%
|
||||||
\newcommand{\DOFauthor}{\author{\dof@author}}
|
\newcommand{\DOFauthor}{\author{\dof@author}}
|
||||||
|
@ -1485,7 +1497,7 @@ text\<open>
|
||||||
\leftadd\dof@author{\protect\and #1}%
|
\leftadd\dof@author{\protect\and #1}%
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
\end{ltx}
|
\end{ltx}\<close>
|
||||||
|
|
||||||
The new command \<^boxed_latex>\<open>\addauthor\<close> and a similarly defined command \<^boxed_latex>\<open>\addaffiliation\<close>
|
The new command \<^boxed_latex>\<open>\addauthor\<close> and a similarly defined command \<^boxed_latex>\<open>\addaffiliation\<close>
|
||||||
can now be used in the definition of the representation of the concept
|
can now be used in the definition of the representation of the concept
|
||||||
|
@ -1494,6 +1506,7 @@ job's aux-file. The intermediate step of writing this information into the job's
|
||||||
as the author and affiliation information is required right at the beginning of the document
|
as the author and affiliation information is required right at the beginning of the document
|
||||||
while \<^isadof> allows defining authors at any place within a document:
|
while \<^isadof> allows defining authors at any place within a document:
|
||||||
|
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{ltx}
|
\begin{ltx}
|
||||||
\provideisadof{text.scholarly_paper.author}%
|
\provideisadof{text.scholarly_paper.author}%
|
||||||
[label=,type=%
|
[label=,type=%
|
||||||
|
@ -1517,19 +1530,18 @@ while \<^isadof> allows defining authors at any place within a document:
|
||||||
\string\addaffiliation{\dof@a\\\string\email{%
|
\string\addaffiliation{\dof@a\\\string\email{%
|
||||||
\commandkey{scholarly_paper.author.email}}}}%
|
\commandkey{scholarly_paper.author.email}}}}%
|
||||||
}
|
}
|
||||||
\end{ltx}
|
\end{ltx}\<close>
|
||||||
|
|
||||||
Finally, the collected information is used in the \<^boxed_latex>\<open>\author\<close> command using the
|
Finally, the collected information is used in the \<^boxed_latex>\<open>\author\<close> command using the
|
||||||
\<^boxed_latex>\<open>AtBeginDocument\<close>-hook:
|
\<^boxed_latex>\<open>AtBeginDocument\<close>-hook:
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{ltx}
|
\begin{ltx}
|
||||||
\newcommand{\DOFauthor}{\author{\dof@author}}
|
\newcommand{\DOFauthor}{\author{\dof@author}}
|
||||||
\AtBeginDocument{%
|
\AtBeginDocument{%
|
||||||
\DOFauthor
|
\DOFauthor
|
||||||
}
|
}
|
||||||
|
|
||||||
\end{ltx}
|
\end{ltx}\<close>
|
||||||
|
|
||||||
|
|
||||||
\<close>
|
\<close>
|
||||||
|
|
||||||
|
@ -1538,15 +1550,15 @@ subsubsection\<open>Restricting the Use of Ontologies to Specific Templates\<clo
|
||||||
text\<open>
|
text\<open>
|
||||||
As ontology representations might rely on features only provided by certain templates
|
As ontology representations might rely on features only provided by certain templates
|
||||||
(\<^LaTeX>-classes), authors of ontology representations might restrict their use to
|
(\<^LaTeX>-classes), authors of ontology representations might restrict their use to
|
||||||
specific classes. This can, \<^eg>, be done using the \inlineltx|\@ifclassloaded{}| command:
|
specific classes. This can, \<^eg>, be done using the \<^ltxinline>\<open>\@ifclassloaded{}\<close> command:
|
||||||
|
\<^latex>\<open>
|
||||||
\begin{ltx}
|
\begin{ltx}
|
||||||
\@ifclassloaded{llncs}{}%
|
\@ifclassloaded{llncs}{}%
|
||||||
{% LLNCS class not loaded
|
{% LLNCS class not loaded
|
||||||
\PackageError{DOF-scholarly_paper}
|
\PackageError{DOF-scholarly_paper}
|
||||||
{Scholarly Paper only supports LNCS as document class.}{}\stop%
|
{Scholarly Paper only supports LNCS as document class.}{}\stop%
|
||||||
}
|
}
|
||||||
\end{ltx}
|
\end{ltx}\<close>
|
||||||
|
|
||||||
For a real-world example testing for multiple classes, see
|
For a real-world example testing for multiple classes, see
|
||||||
\<^file>\<open>../../ontologies/scholarly_paper/DOF-scholarly_paper.sty\<close>:
|
\<^file>\<open>../../ontologies/scholarly_paper/DOF-scholarly_paper.sty\<close>:
|
||||||
|
|
Loading…
Reference in New Issue