<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Lurch: A Word Processor Built on OpenMath that Can Check Mathematical Reasoning</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Nathan</forename><forename type="middle">C</forename><surname>Carter</surname></persName>
							<email>ncarter@bentley.edu</email>
							<affiliation key="aff0">
								<orgName type="institution">Bentley University</orgName>
								<address>
									<settlement>Waltham</settlement>
									<region>MA</region>
									<country key="US">USA</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Kenneth</forename><forename type="middle">G</forename><surname>Monks</surname></persName>
							<email>monks@scranton.edu</email>
							<affiliation key="aff1">
								<orgName type="institution">University of Scranton</orgName>
								<address>
									<settlement>Scranton</settlement>
									<region>PA</region>
									<country key="US">USA</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Lurch: A Word Processor Built on OpenMath that Can Check Mathematical Reasoning</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">8020D915F786E38009131F55C2C28E4E</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T09:49+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Lurch [5] is a free word processor that can check the mathematical reasoning in a document, including the steps of a mathematical proof, even one not written in a formal style. This paper covers our goals, implementation in terms of OpenMath, and a brief overview of the underlying validation engine. 1</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction 1.Background</head><p>Lurch is a free word processor that can check the steps of a mathematical proof, and we have focused the current version on the needs of introduction-to-proof courses, covering topics such as logic, introductory set theory, and number theory. Lurch is built on OpenMath <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b2">3]</ref> (as well as several other technologies, including Qt <ref type="bibr" target="#b15">[16]</ref>) and is a free and open-source desktop application for Windows, Mac, and Linux. Its implementation is discussed in Sections 2 and 3.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.2">Goals</head><p>Our user interface guideline is that users should be able to write math in whatever style or notation they prefer, with exposition inserted where they feel it's helpful. Especially in a pedagogical context it is important for the notation and style used in the software to match that of the textbook and lecture notes, so as not to be an obstacle for the student. Of course, pencil and paper won't tell you whether your proof is correct, but Lurch will, in addition to providing the other benefits that any word processor does, such as cut and paste.</p><p>Lurch is for student use. We're targeting students in their first proof-based courses, where Lurch can give frequent, immediate, clear feedback on the validity of the steps in their proofs. That's the part of the mathematical community we're excited about reaching.</p><p>Therefore Lurch is an entirely different kind of product than existing proof checkers (e.g., Mizar <ref type="bibr" target="#b8">[9]</ref> or Coq <ref type="bibr" target="#b1">[2]</ref>) in several ways. First, we do not require the user to learn a specific language or rules; in Lurch, the user (or his or her instructor) defines the rules from scratch. Second, Lurch does not automate any proof steps on the user's behalf, nor should it; the student types his or her work in Lurch, and Lurch grades, encourages, and coaches. Finally, proof checkers often have interfaces suitable for advanced users, sometimes requiring familiarity with the command line or shell scripts. Lurch is for the typical student, and its user interface is therefore a familiar one: It is a word processor that gives feedback visually in the document.</p><p>We want the only learning curve students encounter to come from the mathematics itself, not Lurch.</p><p>Existing research on educational technology suggests that our goals make sense and are achievable. Investigations into the effects of automated assessment systems (AiM <ref type="bibr" target="#b7">[8]</ref> and My-MathLab <ref type="bibr" target="#b11">[12]</ref>) show the value of computers in giving high-frequency, individualized, and immediate feedback <ref type="bibr" target="#b9">[10,</ref><ref type="bibr" target="#b13">14,</ref><ref type="bibr" target="#b12">13,</ref><ref type="bibr" target="#b14">15]</ref>. The value of such feedback is well documented in educational research (reviewed in <ref type="bibr" target="#b6">[7]</ref>). This research matches our common sense that more feedback, delivered in immediate response to each of the student's actions, is better for learning.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Current Implementation</head><p>This section explains how far we have come towards achieving the goals in Section 1.2. <ref type="foot" target="#foot_2">2</ref> For more details than what this section provides, see <ref type="bibr" target="#b3">[4]</ref> in this same volume. Sections 3 and 4 discuss details of implementation under the hood.</p><p>Consider the screenshot of the Mac version of our application in Figure <ref type="figure" target="#fig_0">1</ref>. The red and green thumbs and yellow lights interspersed throughout the document are Lurch's feedback on the correctness of each step of the user's work. (This feedback can be hidden to obtain a clean view for printing.) A green thumbs-up icon follows a correct step of work that is correctly justified, a red thumbs-down icon follows a step that contains an error or is supported by the wrong reason, and yellow lights follow mathematical expressions that are used as premises to justify later steps of work, but are not themselves justified (e.g., the hypotheses in a proof).</p><p>Students can hover their mouse over any of these colored icons for a brief explanation of its meaning, or double-click it for a detailed report. In order to provide this kind of feedback, Lurch needs to know the meaning of the mathematical expressions in the document.</p><p>In order for a section of text to be treated as a mathematical expression, the user must mark it as such with a single click of a toolbar button (or the corresponding keyboard shortcut). The user selects a portion of text that he or she wishes Lurch to treat as meaningful mathematics, and then clicks the "Meaningful expression" button on the toolbar. Lurch then wraps the text in a bubble and reports the understood meaning in a tag atop the bubble, as in Figure <ref type="figure">2</ref>. Lurch draws a bubble around a mathematical expression if and only if the user's cursor is inside it. Both LyX and Word have somewhat similar interfaces for editing mathematics.</p><p>The user will create bubbles often, and thus doing so must be intuitive and take nearzero time. The "Meaningful expression" button appears on the Lurch toolbar near formatting options such as bold and italic. It is just as easy to mark text as meaningful as it is to use one of those common formatting commands; a single click or keystroke does it.</p><p>This interface enables Lurch to know which portions of the user's document he or she considers meaningful mathematics. Also, in line with our goals from Section 1.2, the user is stylistically free to structure their document their own way. Because meaning is determined by what sections of text have been bubbled, the user can alternate whenever they like between expository text in any natural language and meaningful mathematics, and arrange their work as informal sentences, formal proof structures, or varying levels in between.</p><p>This interface also brings a pedagogical benefit. Student users, just learning what a proof is, are forced to indicate what parts of their own proofs are meaningful and which are not. Experience from testing shows us that students come away from a Lurch-integrated course knowing very solidly how a proof is structured, because they had to point out this structure to Lurch before it would check their work. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Lurch</head><p>is not yet at version 1.0, and changes to the current design and interface will come as we evolve our ideas, especially in response to testing. There are many advanced interface features we'd already like to add, including automatic bubbling of statements and reasons, and a visualization of the inference and property graphs. Such features will be able to be enabled or disabled as the user's skills and needs require.</p><p>3 OpenMath in Lurch</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Types of meaning and document structure</head><p>All Lurch documents are stored as OpenMath data structures, from the document level (using application of symbols for concepts like "paragraph") down to the atomic level (using OpenMath integers, strings, variables, and so on). <ref type="foot" target="#foot_3">3</ref> In order to see how these structures are formed, we Figure <ref type="figure">2</ref>: In Lurch, bubbles around meaningful expressions appear if and only if the user's cursor is inside the expression. In this example, the bubble tag "+ expression" indicates that the expression is a sum. must first cover a bit more about meaning in Lurch documents.</p><p>Lurch makes the following three major categories of bubbles available to users, and provides toolbar buttons for creating each. The full set of rules stipulating which bubble types can contain others is given in <ref type="bibr" target="#b5">[6]</ref>, but no bubble can contain any other bubble only partially.</p><p>Meaningful Expressions (hereafter, MEs): Shown using red bubbles, MEs represent mathematical objects like numbers, polynomials, and statements (as in the previous section).</p><p>Properties: Shown using blue bubbles, Properties specify attributes of MEs but are not MEs themselves.</p><p>Contexts: Shown using green bubbles, Contexts delimit the scope of declared variables and indicate subproof blocks constructed in the course of writing some kinds of proofs.</p><p>Properties can be used to modify neighboring MEs, for the purpose of attaching to them labels (like \label in L A T E X), reasons (citations of existing rules), and premises (references to earlier statements in the same proof). Although no bubbles are visible in Figure <ref type="figure" target="#fig_0">1</ref> because the cursor is at the end of the document, it contains many invisible ones. For example, on the third line of the proof, the expression ∀x, (g</p><formula xml:id="formula_0">• f )(x) = g(f (x)</formula><p>) is an ME and the word "composition" on the next line is a reason property that applies to it and the preceding ME. Properties can apply to any number of adjacent, successive MEs, either to the left or right of the property itself. They do not alter the intrinsic meaning of MEs, but only tell Lurch how to work with those MEs (by adding labels, reasons, and so on). It is possible to see the locations of all bubbles in a document; when a user enables that option, Lurch shows bubble boundaries as in Figure <ref type="figure" target="#fig_1">3</ref>. For even more information, a user can direct Lurch to include the contents of each bubble's tag after its latter boundary. This results in a very cluttered view, but it is one way to see full information quickly.</p><p>An ME which is not contained inside any other ME is called a top-level ME. A Lurch document can be thought of as a sequence of top-level MEs M 1 , . . . , M n . Although there is normally text between the M i , Lurch ignores it for the purposes of validation and giving the user feedback. Properties assign attributes to these MEs and Contexts group together collections of MEs that have a common purpose or relevance.</p><p>Lurch documents also depend on other Lurch documents in the same way that one chapter of a math book might depend on a previous chapter. The rules cited in Figures <ref type="figure" target="#fig_1">1 and 3</ref> are available because their definitions appear in a document on which that one depends. In Lurch, an imported document acts as if it appears, invisibly and in a read-only state, in its entirety, at the top of the document that imports it.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Creating OpenMath objects from MEs</head><p>Every ME is either a simple ME (containing no other MEs), of type integer, real, variable, constant, string, operator, or quantifier; or a compound ME (containing other MEs), of type function application or quantification. These correspond roughly to the major types of simple and compound expressions in OpenMath <ref type="bibr" target="#b2">[3]</ref>, and most are stored in exactly the expected way (e.g., an integer as an OpenMath integer). Every ME bubble lists its content type on its bubble tag.</p><p>Lurch infers the meaning of a simple ME from the text in its bubble. Thus a simple ME might contain the text 42, and be interpreted as an integer, or contain 3.14159 and be interpreted as real. Similarly, x would be a variable, "Life, the Universe and Everything" hierarchies. a string, + an operator, and ∀ a quantifier. If Lurch cannot guess the meaning of the contents of a simple ME bubble, such as +++++, it will classify it as a string, as if it were "+++++" (quotes added).</p><p>A compound ME can be obtained by nesting simple MEs in a LISP-like way, [M 1 . . . M n ], with each M i a simple or compound ME. If the head of the list is a quantifier (or other binding symbol) then the list is interpreted as a quantification; otherwise, it is interpreted as function application. It is possible (though obviously rarely desirable!) to enter mathematics into Lurch in this prefix-only notation. For example, 3•f (x+1) could be entered as the following expression, with square brackets representing ME boundaries, as in Figure <ref type="figure" target="#fig_1">3</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>[ [•] [3] [ [f] [ [+] [x] [1] ] ] ]</head><p>Because most users would rather type the expression in a more standard notation, Lurch tests the contents of every simple ME bubble to see if those contents can be understood by a built-in parser. If so, then that ME bubble is treated as the (possibly compound) ME determined by the parsing, while still appearing as a single bubble in the document. This allows a compound ME to be entered with the same ease as a simple ME and usually produces more legible results. For example, 3 • f (x + 1) can be entered in the typical calculator notation 3*f(x+1), or 3•f(x+1). Such MEs have the same meaning as the fully "expanded" version shown above.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Lurch</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Carter and Monks</head><p>Users can expand and collapse MEs between these two forms by using the context menu on the ME bubble itself. The parser is a convenience feature that allows users to enter compound MEs in a natural notation, but in every case the actual meaning of an ME is its expanded form, which is indicative of how it is stored as underlying OpenMath data.</p><p>Eventually the language that Lurch parses will be customizable, but the current version just uses a standard mathematical syntax. Here are some example expressions the parser currently understands.</p><p>x^2-1=(x-1)•(x+1) 3^2&gt;2^3</p><p>∀x, x∈A∩B ⇔ x∈A and x∈B</p><formula xml:id="formula_1">{ x : x / ∈x }</formula><p>Lurch has a symbol toolbar so that users can click to enter symbols like ∀ and / ∈; this is the bottom toolbar in Figure <ref type="figure" target="#fig_0">1</ref>, with each symbol a button that opens a palette of related symbols. The software also automatically replaces common L A T E X codes for such symbols with the symbols themselves, so users who prefer keyboard shortcuts can learn those codes.</p><p>Although the internal storage for these well-known symbols uses standard OpenMath symbols such as subset from content dictionary set1, that may need to change because the meaning of the symbol in Lurch is whatever the user gives it by means of defined rules, which may or may not match the meaning in the content dictionary.</p><p>The current version of Lurch does not have mathematical typesetting capabilities, but later versions will include them. In particular, superscripts, subscripts, and fractions must be input using calculator-like shortcuts, such as x^2. But our current focus is on introduction to proof courses, and so Lurch comes with topics such as logic, set theory, and number theory, which don't really need much more than this plain notation (with a healthy supply of mathematical symbols).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Fundamental Theorem of Lurch</head><p>The raison d'être of Lurch is validation of student work. For each step of student work, Lurch should give feedback about the correctness of that step. In most cases, an ME is a step of work if and only if it is a top-level ME and the user has attached a reason to it; details can be found in the Lurch Advanced Users' Guide <ref type="bibr" target="#b5">[6]</ref>. That document specifies, for each type of top-level ME, whether it should be validated, and if so, how. Here is one example, the case for MEs representing variable or constant declarations (based on ideas in <ref type="bibr" target="#b16">[17]</ref>). <ref type="foot" target="#foot_4">4</ref>A constant declaration or variable declaration will get a green validation icon if the following conditions are met. 1. It is not already declared, i.e., it is not in the scope of the declaration of the same identifier either as a variable or a constant.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">It does not have a reason assigned to it.</head><p>If either of these conditions are not satisfied, the validation icon for the rule will be red and double clicking or hovering over it with the mouse will give a message indicating which of the conditions was not met, and how you might go about fixing it.</p><p>Figure <ref type="figure">4</ref>: In this sample Lurch document, an instructor specifies a new definition and illustrates how it can be used. Lurch validates that the term "increasing" is not already defined as something else, certifies that it understands the instructor's new rule, and validates the statement g(1) &lt; g(2), justified by citing the name of the new definition as a reason and providing the two required premises. The instructor specifies the rule by bubbling it as shown in Figure <ref type="figure" target="#fig_2">5</ref>. Such a specification exists for each type of ME in Lurch, but the nontrivial ones are too complex to list here. Instead we illustrate the algorithm with an example.</p><p>All of the rules and definitions that are available to students when doing their assignments in Lurch are written in Lurch documents directly. Users who want to customize the mathematics in Lurch can inspect those built-in, foundational documents, copy them, and alter them to suit their own style, or write new ones from scratch. As mentioned above, a document containing rule definitions can be included in another document as a dependency, making the rules in the former available in the latter.</p><p>The libraries that ship with Lurch define rules that are based on the natural deduction style of proof used in the second author's introduction to proof course. However there is no need to use these rules at all. An instructor can type his or her definitions, rules, and theorems directly into Lurch to make new dependency documents that the students can then use when working on their assignments. For example, Figure <ref type="figure">4</ref> shows a snippet of lecture notes that an instructor might type into a Lurch document to define a new rule. He first declares a new term (increasing, bubbled as a constant declaration) which Lurch verifies is not already defined. He then specifies his proposed definition in the form and with the level of detail and specificity that he desired. The more advanced bubble structure that the instructor must use to alert Lurch to this rule's structure appears in Figure <ref type="figure" target="#fig_2">5</ref>, using visible bubble boundaries as introduced in Figure <ref type="figure" target="#fig_1">3</ref>.</p><p>Finally, when a student uses the rule to justify a statement, he or she does so by supplying the two required premises, and justifies the expression g(s) &lt; g(t) by citing as a reason the name of the rule ("increasing" in this case), as in Figure <ref type="figure" target="#fig_3">6</ref>. Lurch checks that for the appropriate values of f , s, and t in the rule definition, the required premises are available to justify the desired conclusion.</p><p>In addition to the syntactically defined rules Lurch currently supports, we would also like to add rules validated by a built-in computer algebra system. Doing so would enable us to support typical algebra or calculus topics as naturally as we currently support proof-related ones.</p><p>This paper does not include all the details of the validation algorithm, but interested readers can inspect <ref type="bibr" target="#b5">[6]</ref>. With such a specification in hand, we can state and prove the following theorem.</p><p>Theorem (One-pass Validation). Validating each top-level meaningful expression in a Lurch document, according to the requirements in <ref type="bibr" target="#b5">[6]</ref>, in the order they appear in the document, will result in a correctly validated document.</p><p>In other words, the results of validation at point P never change the results of validation at some earlier point Q, and therefore Lurch can validate a document quickly, not having to read it more than once. Although mathematicians sometimes write documents for which this strict ordering of ideas and reasons fails to hold, Velleman <ref type="bibr" target="#b16">[17]</ref> makes an excellent case that professors usually do not permit students who are still learning proof writing to structure their arguments like that. Therefore in a learning tool like Lurch, such a restriction is acceptable, or even desirable.</p><p>The proof of such a theorem involves showing that the specification for each type of meaningful expression depends in no way on the results of validation of meaningful expressions later in the document. The efficiency benefits of this theorem have not yet been integrated into Lurch, because both the design and implementation are still maturing.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Conclusion</head><p>Lurch was tested throughout an introduction to formal logic class the first author taught at Bentley University in the fall of 2008, and an introduction to proofs course for mathematics and mathematics education majors the second author taught at the University of Scranton in the spring of 2013. In both cases, student response was very positive, the details of which appear in <ref type="bibr" target="#b3">[4]</ref>.</p><p>Lurch has many opportunities for improvement, including testing in courses not taught by the developers and new features (typeset mathematics, more efficient validation algorithms, more attractive visual representations of premise relationships, and an even less obtrusive bubbling interface). But the current version, despite its opportunities to improve in many ways, shows all the signs of having been very beneficial in the courses in which it has been used.</p><p>The Lurch team invites additional collaborators for writing new mathematical topics in Lurch, doing further classroom testing, and software development.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: A Lurch screenshot explained in Section 2. Although this screenshot was captured on a Mac, Lurch is free and open-source for all three major platforms, Mac, Windows, and Linux.</figDesc><graphic coords="3,126.00,106.42,359.99,222.88" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: Lurch with the option enabled to show all bubble boundaries. While this adds clutter, users can verify at a glance that bubbles are arranged as intended. ME boundaries are red square brackets. Property boundaries are blue (...&gt; or &lt;...) pairs that indicate whether they modify MEs to the left or right, with numbers to indicate how many sequential MEs they modify. No context bubbles appear in this example.</figDesc><graphic coords="5,126.00,106.41,359.99,254.36" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 5 :</head><label>5</label><figDesc>Figure 5: To alert Lurch to a new rule the instructor only has to mark the rule, its label, and any premises and conclusions. Here we see the semantic structure of the rule defined in Figure 4.</figDesc><graphic coords="7,198.54,362.97,214.92,93.96" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 6 :</head><label>6</label><figDesc>Figure 6: To use the new rule defined in Figure 4 the user cites it by name, "increasing." In this example the user has also cited another rule called "arithmetic" to justify the claim that 1 &lt; 2.</figDesc><graphic coords="8,129.17,109.80,353.66,95.04" type="bitmap" /></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">Lurch was supported from</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2008" xml:id="foot_1">-2012 in part by the National Science Foundation's Division of Undergraduate Education, in the Course, Curriculum, and Laboratory Improvement program (grant #0736644). Views expressed in this document are not necessarily those of the National Science Foundation.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_2">At the time of this writing, the current version of Lurch is 0.7992, released on May 9, 2013.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_3">Although OMDoc<ref type="bibr" target="#b10">[11]</ref> may be a better choice for storing documents, the current choice was one of expediency. The word processing technology we're leveraging stores documents as hierarchical data structures, so using OpenMath objects as generic hierarchical containers was an easy way to save, load, and manipulate such</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_4">The Advanced Users' Guide is a specification of a system, with no attention given to the motivations behind the design. Lurch is not yet at version 1.0, so the design is not set in stone, and thus a motivating document is not yet written.</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">OpenMath INRIA C/C++ libraries</title>
		<author>
			<persName><forename type="first">Olivier</forename><surname>Arsmac</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Stephane</forename><surname>Dalmas</surname></persName>
		</author>
		<ptr target="http://www.openmath.org/software/index.html" />
		<imprint>
			<date type="published" when="2008-05-18">May 18, 2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Coq&apos;Art: the calculus of inductive constructions</title>
		<author>
			<persName><forename type="first">Yves</forename><surname>Bertot</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Pierre</forename><surname>Castéran</surname></persName>
		</author>
		<ptr target="http://www.labri.fr/perso/casteran/CoqArt/index.html" />
	</analytic>
	<monogr>
		<title level="j">Springer</title>
		<imprint>
			<biblScope unit="volume">XXV</biblScope>
			<biblScope unit="page">472</biblScope>
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<author>
			<persName><forename type="first">S</forename><surname>Buswell</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Caprotti</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">P</forename><surname>Carlisle</surname></persName>
		</author>
		<ptr target="http://www.openmath.org/standard/" />
		<title level="m">The OpenMath standard, version 2.0. The OpenMath Society</title>
				<editor>
			<persName><forename type="first">M</forename><forename type="middle">C</forename><surname>Dewar</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Gaëtano</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Kohlhase</surname></persName>
		</editor>
		<imprint>
			<date type="published" when="2004-06">June 2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Lurch: A word processor that can grade students&apos; proofs</title>
		<author>
			<persName><forename type="first">Nathan</forename><surname>Carter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Kenneth</forename><forename type="middle">G</forename><surname>Monks</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Workshops and Work in Progress at the Conference on Intelligent Computer Mathematics</title>
		<title level="s">CEUR Workshop Proceedings</title>
		<editor>
			<persName><forename type="first">David</forename><surname>Aspinall</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Jacques</forename><surname>Carette</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">James</forename><surname>Davenport</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Andrea</forename><surname>Kohlhase</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Michael</forename><surname>Kohlhase</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Christoph</forename><surname>Lange</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Paul</forename><surname>Libbrecht</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Pedro</forename><surname>Quaresma</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Florian</forename><surname>Rabe</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Petr</forename><surname>Sojka</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Iain</forename><surname>Whiteside</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Wolfgang</forename><surname>Windsteiger</surname></persName>
		</editor>
		<meeting>the Workshops and Work in Progress at the Conference on Intelligent Computer Mathematics<address><addrLine>Aachen</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1010">1010. 2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Lurch: a word processor that can check your math</title>
		<author>
			<persName><forename type="first">Nathan</forename><forename type="middle">C</forename><surname>Carter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Kenneth</forename><forename type="middle">G</forename><surname>Monks</surname></persName>
		</author>
		<ptr target="http://lurch.sf.net" />
	</analytic>
	<monogr>
		<title level="m">A free and open-source software project hosted on SourceForge</title>
				<imprint>
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m" type="main">Introduction to Lurch: advanced users guide</title>
		<author>
			<persName><forename type="first">Nathan</forename><forename type="middle">C</forename><surname>Carter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Kenneth</forename><forename type="middle">G</forename><surname>Monks</surname></persName>
		</author>
		<ptr target="http://lurch.sourceforge.net/AUG-v1.html" />
		<imprint>
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
	<note>version 1.0</note>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Seven principles for good practice in undergraduate education</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">W</forename><surname>Chickering</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><forename type="middle">F</forename><surname>Gamson</surname></persName>
		</author>
		<ptr target="http://aahebulletin.com/public/archive/sevenprinciples1987.asp" />
	</analytic>
	<monogr>
		<title level="j">American Association for Higher Education Bulletin</title>
		<imprint>
			<biblScope unit="page" from="3" to="7" />
			<date type="published" when="1987">1987</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<author>
			<persName><forename type="first">Gustav</forename><surname>Delius</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Neil</forename><surname>Strickland</surname></persName>
		</author>
		<ptr target="http://sourceforge.net/projects/aimmath/" />
		<title level="m">AiM-assessment in mathematics</title>
				<imprint>
			<date type="published" when="2013-04-22">Accessed on April 22, 2013</date>
		</imprint>
	</monogr>
	<note>A free and open-source software project hosted on SourceForge</note>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Mizar in a nutshell</title>
		<author>
			<persName><forename type="first">Adam</forename><surname>Grabowski</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Artur</forename><surname>Korni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Adam</forename><surname>Naumowicz</surname></persName>
		</author>
		<ptr target="http://jfr.unibo.it/article/view/1980/1356" />
	</analytic>
	<monogr>
		<title level="j">Journal of Formalized Reasoning</title>
		<imprint>
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Using Maple and the web to grade mathematics tests</title>
		<author>
			<persName><forename type="first">Saliha</forename><surname>Klai</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Theodore</forename><surname>Kolokolnikov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Norbert</forename><surname>Van Den</surname></persName>
		</author>
		<author>
			<persName><surname>Bergh</surname></persName>
		</author>
		<ptr target="http://rc.fmf.uni-lj.si/matija/ACDCA2000/Kolokolnikov-Klai-Bergh-pdf.pdf" />
	</analytic>
	<monogr>
		<title level="m">IWALT 2000 Conference Proceedings</title>
				<imprint>
			<date type="published" when="2000">2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<title level="m" type="main">An open markup format for mathematical documents</title>
		<author>
			<persName><forename type="first">Michael</forename><surname>Kohlhase</surname></persName>
		</author>
		<ptr target="http://omdoc.org/pubs/omdoc1.2.pdf" />
		<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
	<note>OMDoc 1.2</note>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<ptr target="http://www.mymathlab.com/" />
		<title level="m">A series of mathematics courses on the World Wide Web</title>
				<imprint/>
	</monogr>
	<note>MyMathLab</note>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Assessing higher mathematical skills using computer algebra marking through AiM</title>
		<author>
			<persName><forename type="first">Chris</forename><forename type="middle">J</forename><surname>Sangwin</surname></persName>
		</author>
		<ptr target="http://web.mat.bham.ac.uk/C.J.Sangwin/Publications/Emac03.pdf" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Engineering Mathematics and Applications Conference (EMAC03</title>
				<meeting>the Engineering Mathematics and Applications Conference (EMAC03<address><addrLine>Sydney, Australia</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2003">2003</date>
			<biblScope unit="page" from="229" to="234" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Assessing mathematics automatically using computer algebra and the internet</title>
		<author>
			<persName><forename type="first">Chris</forename><forename type="middle">J</forename><surname>Sangwin</surname></persName>
		</author>
		<ptr target="http://web.mat.bham.ac.uk/C.J.Sangwin/Publications/tma03.pdf" />
	</analytic>
	<monogr>
		<title level="j">Teaching Mathematics and its Applications</title>
		<imprint>
			<biblScope unit="volume">23</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="1" to="14" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<monogr>
		<title level="m" type="main">Making the grade: A report on the success of MyMathLab in higher education math instruction</title>
		<author>
			<persName><forename type="first">Michelle</forename><forename type="middle">D</forename><surname>Speckler</surname></persName>
		</author>
		<ptr target="http://www.mymathlab.com" />
		<imprint>
			<date type="published" when="2005">2005</date>
			<publisher>Pearson Education</publisher>
			<pubPlace>Boston, MA</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<monogr>
		<ptr target="http://qt-project.org/" />
		<title level="m">GNU General Public License (and the lesser) version 3.0, 2012. A crossplatform application and UI framework for developers using C++, QML, CSS, and JavaScript</title>
				<imprint/>
	</monogr>
	<note>The Qt Project</note>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Variable declarations in natural deduction</title>
		<author>
			<persName><forename type="first">J</forename><surname>Daniel</surname></persName>
		</author>
		<author>
			<persName><surname>Velleman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Annals of Pure and Applied Logic</title>
		<imprint>
			<biblScope unit="volume">144</biblScope>
			<biblScope unit="page" from="133" to="146" />
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
