Using the Proof-Checking Word Processor Lurch to Teach Proof

Using the Proof-Checking Word Processor Lurch to Teach
Proof-Writing
Nathan C. Carter1 and Kenneth G. Monks2
1
1
Mathematical Sciences Department, Bentley University, Waltham, MA
2
Mathematics Department, University of Scranton, Scranton, PA
Background
Lurch is a free word processor that can check the mathematical reasoning in a document.1 Although it would
be easy to make a word processor that could check simple arithmetic, or even algebra, Lurch aims to do much
more than that. It can check the steps of a mathematical proof, even a proof not written in a formal style.
The current version works best for introduction-to-proof courses, covering topics such as logic, introductory
set theory, algebra, and number theory. As we add features it becomes more able to handle a wider variety
of mathematics courses.
Lurch has been tested at the authors’ two institutions. Bentley University (where the first author teaches)
is a selective business university of about 4,000 undergraduates and 1,500 graduate students in the greater
Boston area, with a liberal arts focus. The University of Scranton (where the second author teaches) is a
Jesuit university in Scranton, PA, of similar size to Bentley and also with a liberal arts focus. While Bentley
has very few theoretical mathematics courses (focusing instead on the mathematics of finance and actuarial
sciences), Scranton has majors in mathematics and various types of mathematics education (secondary,
middle-school) and thus has several upper-division, proof-based mathematics courses.
2
Description and implementation of the method
2.1
Long-term goals
The Lurch project has a two-part mission statement; we state and explain each part here.
Mission Statement - Part 1 Lurch should be as indistinguishable from the ordinary activities of mathematics as possible, except for the additional services it provides. That is, it should only add to your math
experience, not change your math experience.
This is our user interface guideline. Users should be able to write math in whatever style or notation
they prefer, with exposition inserted where they feel it’s helpful. They can already do so on a chalkboard,
on paper, or in LATEX, and especially in a pedagogical context it is important for the software to match the
textbook and lecture notes, because differences would be an obstacle for the student. So mathematics in
Lurch must be as similar as possible to mathematics in the other media just mentioned. Except, of course,
that pencil and paper won’t tell the user whether his or her proof is correct, but Lurch will, in addition to the
other benefits that any word processor provides, such as cut and paste.
1
Lurch was supported from 2008-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.
1
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
2
Mission Statement - Part 2 Lurch should provide the software infrastructure the mathematical community
needs for validating rigorous mathematics. That is, it should validate mathematical content created by
you—a “spell-checker” for mathematical rigor.
Of course, there are several impressive pieces of software in existence (e.g., Mizar [13] or Coq [14]) for
validating rigorous mathematics, and Lurch is not claiming that it will supercede these offerings. Our goals
are very different from those of proof checkers like Mizar and Coq, and thus Lurch is not trying to compete
with those packages. We list here the important differences between our goals and theirs.
1. More flexibility
Most existing proof checkers require the user to learn a specific language and rules, while Lurch lets
the user (or his or her instructor) define the rules from scratch. Future versions will also allow the user
to define the mathematical language (i.e., notation, syntax) as well.
2. No help with proofs
Proof checkers automate some proof steps, and an ongoing field of research furthers the frontiers of
this capability. Lurch has no such capabilities, nor should it, because if it did proofs for the student,
that would defeat the purpose of teaching the student how to do them. In Lurch, the student types his
or her work while Lurch grades, encourages, and coaches.
3. Familiar user interface
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. We want typical
mathematics students to encounter no learning curve, except what is presented by the mathematics
itself, not Lurch.
We’re targeting students in their first proof-based courses, giving frequent, immediate, clear feedback
on the steps in their work. That’s the part of the mathematical community we’re excited about reaching.
Existing research on educational technology suggests that our goals make sense and are achievable.
Investigations into the effects of automated assessment systems (AiM [10] and MyMathLab [17]) show the
value of computers in giving high-frequency, individualized, and immediate feedback ([15, 19, 18, 20]). The
value of such feedback is well documented in educational research (reviewed in [9]). This research matches
our common sense that more feedback, delivered in immediate response to each of the student’s actions, is
better for learning.
This feedback is also noteworthy in another respect. When we think of students’ experiencing mathematical objects on a computer, we tend to think of interactive graphs with sliders, rotating three-dimensional
surfaces, or other flashy graphics. In Lurch, students experience a far more abstract mathematical object – a
proof. The positive and negative feedback they get while working within a logical system is their experience
of that system, including its rules, axioms, and theorems. In Section 3, quotes from student surveys support
this assertion.
Finally, because Lurch documents are word-processed, they are more legible than typical written assignments. Students who used Lurch were enthusiastic about the fact that it is a free math word processor that
works on any platform and has a significantly lower learing curve than LATEX for typing mathematics. Neat,
organized homework has also been shown to be easier to grade [12]. We have found this to be even more
true of work done in Lurch, because the validity of each individual step in many cases has been verified.
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
2.2
3
Current status
The previous section listed our long-term goals for Lurch. But how far we have come (as of this writing, in
July 2013) towards achieving those goals? This section answers that question, and explains briefly our plans
for the future.
A word processor with semantics
First, we have built a word processor that supports mathematical expressions with actual mathematical semantics. Consider the screenshot of our application in Figure 1. The red, yellow, and green icons interspersed
throughout the user’s document are giving the user feedback on the correctness of each step of his or her
work. (This feedback can be disabled to obtain a clean view or printout.) Green thumbs-up icons follow a
correct step of work that is correctly justified or a valid declaration, red thumbs-down icons follow a step
of work 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 (i.e., the
hypotheses in a proof). In order to provide this kind of feedback, Lurch needs to know the meaning of the
mathematical expressions in the document, and from the fact that the feedback in Figure 1 is correct, you
can see that it does. We discuss below how we accomplish this.
Figure 1: A Lurch screenshot explained in Section 2.2. Although this screenshot was captured on a Mac,
Lurch is free and open-source for Windows and Unix as well. By default, Lurch uses colored traffic light
icons rather than the thumbs shown here; the thumbs are an option useful for colorblind users and in blackand-white printing.
Notice the important difference here between what Lurch does and what most other mathematical word
processors do. For example, if you type a mathematics paper in Microsoft Word and type your mathematical
expressions in Equation Editor, it will typeset them attractively, but it has no idea what the expressions mean.
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
4
Even a simple expression such as a + b can be quite deceptive; does it mean addition of real numbers, or
of elements in a group, or perhaps a vector space? Word cannot know, because it treats each expression
independently, ignoring context.
This same limitation holds for typesetting systems that follow the WYSIWYM paradigm (What You
See Is What You Mean). In LyX or LATEX, for example, you provide information about the structure of your
document, so that the system can typeset of your document structure in any of several visual ways. However,
the meaning in that case is the meaning of your document structure, not the meaning of your mathematical
expressions. Just as Word does not know exactly what a + b means, neither does LATEX; it only knows how
to make it look good on the page.
Lurch does know the meanings of your mathematical expressions, in the sense that the rules defined
elsewhere in the same document (or documents on which your document depends) provide the meanings
for each symbol in your expressions, and Lurch is aware of those rules. It allows you to use those rules to
draw new conclusions from existing mathematical expressions, and it verifies that the steps you take to do
so are in line with the rules you have defined. Those rules can be anything from low-level rules of logic
(permitting you to define new logical systems from scratch in Lurch) up to high-level mathematical axioms
(such as definitions of algebraic structures).
The bubble interface
The second major component of what we have built so far is the user interface through which users tell
Lurch the meaning of the mathematics in their documents. This interface must be as simple as possible so
that the user is not distracted from the mathematics. To this end, we employ a user interface paradigm we
call bubbles.
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) shown in Figure 2. 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 3.
Common formatting tools
Marks expressions meaningful
Figure 2: One of the Lurch toolbars, shown here on Mac OS X. Some of the buttons are the typical formatting
buttons one expect to see in any word processor, such as bold, italic, and underline. The most important new
one to note here is the red button for marking text as meaningful.
Lurch draws a bubble around a mathematical expression if and only if the user’s cursor is inside it; see
the screenshots in Figure 4. This paradigm has the advantage that when your cursor is not in a mathematical
expression, no extra visual clutter asserts itself. But when your cursor is in one, the software makes this fact
clear in the interface, and clicking a bubble’s tag exposes a menu of actions relevant to the mathematical
expression in the bubble. Both LyX and Word have somewhat similar interfaces for editing mathematics.
The user will create bubbles often, and thus doing so must be intuitive and take near-zero time. As Figure
2 suggests, it is just as easy to mark text as meaningful as it is to make it bold or italic; a single click or
keystroke does it.
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
5
After selecting the meaningful section of text,
click the toolbar button
to make it meaningful.
Figure 3: How a sentence within a Lurch document changes when a user applies the button shown in Figure
2 to a section of text. In the top of the figure, the user has selected a section of text. After telling Lurch to
mark it as meaningful, the red bubble shown on the bottom of the figure appears, indicating that Lurch has
read the expression, and knows that it is a universal quantification.
Expression with the cursor inside it, and
thus the bubble shown:
The same expression with the cursor
outside it, and thus the bubble hidden:
Figure 4: 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.
This interface enables Lurch to identify which portions of the user’s document he or she considers
meaningful mathematics. Therefore, in line with our goals from Section 2.1, 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.
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
that this is perhaps the clearest lesson students learn from Lurch, compared to our experience in courses
without Lurch. Students come away from a Lurch-integrated course knowing very solidly how a proof is
structured, because they had to point out this structure before it would check their work (not just which
portions of text are meaningful mathematics, but also which cite reasons and premises). In fact, it was not
until after this learning had fully sunk in that students perceived the bubbling process as a burden.
Flexible, powerful logic engine
The reasoning engine underlying Lurch is powerful enough to handle a wide variety of mathematical systems, from simple ones such as propositional logic through complex ones such as introductory set theory,
number theory, and abstract algebra.
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
6
One of the most unique aspects of Lurch’s reasoning engine is that it does not come with any built-in
rules of logic; the user is entirely free to specify, from the ground up, the logical system in which they wish to
work. Of course, to prevent users from needing to do this tedious task themselves, Lurch ships with classical
propositional and predicate logic documents that are part of the default set of rules initially available to the
user, but the user is free to edit or replace that logical system by writing a Lurch document that defines their
own.
Given this high level of customizability, it may surprise the reader to know that Lurch comes with a
theorem that proves the correctness of its logic engine. If no particular logic system is required, what can
the theorem be about? The answer is that the theorem is not a soundness theorem about a logical system,
but rather a proof that the algorithms Lurch uses to interpret the given set of rules correctly realize the intent
of those rules, as expressed by the Lurch specification, which in turn is intended to be in line with the user’s
expectations. We state that theorem as follows.
Theorem. Given an abstract Lurch document as defined in [7] (containing no inferred contexts), validating
(as defined in [7]) each meaningful expression in the order they appear in the document will result in a
correctly validated document.
The definition given in [7] of an abstract Lurch document and what it means to validate a meaningful
expression is and is quite detailed. The proof of this theorem is a case analysis that shows that, for every
type of expression that needs validation, the results of that validation will never need to change as a result of
validating an expression later in the document. This proof would be trivial if validating an expression never
had any effect on any aspect of the document preceding it, but that is not the case. We refer the reader to [7]
for details. (See, specifically, the creation of inferred contexts.)
One important fact to note about this theorem is that it is also notation-independent. Although the current
version of Lurch has a particular mathematical notation built into it, which is not customizable by the end
user, we intend future versions to allow users to completely customize the mathematical notation just as they
can currently completely customize the rules of logic (and of various branches of mathematics). Therefore
it is important for no part of Lurch’s implementation to assume or depend upon a specific notation, but to
work in terms of abstract expressions instead.
For this reason, Lurch is built upon an international standard of data structures for mathematical semantics, OpenMath [2]. In that standard, all expressions are stored as trees, with each subtree having an unambiguous mathematical meaning, as specified in published online “content dictionaries.” Although Lurch
does not conform to every aspect of the standard, it uses its data structures and XML file format [1].
What this means from the perspective of an advanced user is that a mathematical expression in Lurch is,
from the software’s point of view, a tree. Lurch provides a way for advanced users to request that individual mathematical expressions be displayed in a notation similar to the S-expressions used in programming
languages like LISP; see Figures 5 and 6.
This form is fully editable and understandable by Lurch, and users can even write whole documents in
it, though that is not desirable from the user’s point of view. The are are two reasons Lurch supports this
LISP-like form of expressions.
1. It is sometimes desirable to be able to ensure that Lurch is interpreting an expression the way the
user expects, and the user can ask Lurch to expand any expression into this form to see its meaning
unambiguously.
2. This form provides a visual representation of the internal structure of the expression, and therefore
can be used when analyzing Lurch’s internal algorithms, such as in a proof of the theorem above.
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
7
Figure 5: Three views of the expression ∀x, x + 5 ≥ 5 in Lurch. On top, the way the expression is almost
always written, in Lurch and elsewhere, using ordinary mathematical notation. In the middle, the expanded
view of the expression; this LISP-like notation is rarely used, but gives an unambiguous indication of expression structure. On the bottom, the user has asked Lurch to decorate the expanded view with indications
of how Lurch understands each level of the expression’s hierarchy.
Figure 6: This figure is analogous to Figure 5, but for the expression A ⊆ {1, 2, k}, instead of ∀x, x+5 ≥ x.
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
8
Planned improvements
Despite all that has been built so far, there are many plans for enhancing Lurch in the future. The most visible
planned improvement is the introduction of typeset mathematics (fractions, square roots, large operators, and
so on) for both input and output of mathematical expressions. Another, as mentioned earlier, is that users
should be able to define new notation just as easily as they can now define new axioms and rules of logic.
Finally, there are many bells and whistles we wish to add that we will not cover here, and some major
improvements to the application’s efficiency. Our project always welcomes additional developers who wish
to help with these tasks, including undergraduate and graduate students as well as faculty.
2.3
Classroom integration
Lurch has been tested in two semester-long courses, one taught by each of the authors. The first author tested
an early version of the software in a formal logic course at Bentley University in fall 2008, and the second
author tested recent version in an introduction to proofs course at the University of Scranton in spring 2013.
In this section, we will concentrate more on the latter of these two tests, because it is closer to the main
target audience of the software, and because it used the latest version, which is much closer to our goal than
a version from five years earlier.
Since Lurch design is informed by the method of teaching proofs discussed below, it is particularly well
suited for this approach. Indeed the libraries of built-in axioms and rules that currently ship with Lurch reflect this and are effectively just the definitions and notation from the second author’s lecture notes from the
introduction to proof course. But as indicated in our Mission Statement, Lurch is also designed to accommodate almost any choice of rules and definitions, and almost any style of proof that an instructor may want
to use in his or her course. In particular, an instructor can completely ignore the built-in libraries that ship
with Lurch and simply type his or her lecture notes into Lurch and provide them to the students for their use
in the course. Thus the approach to teaching proofs we now present is just one possible method for teaching
proofs that can benefit from Lurch but many other approaches are possible.
What follows refers to the introduction to proof course taught at the University of Scranton by the second
author during the Spring 2013 course using the versions of Lurch that were available at that time (versions
0.76 through 0.7992).
What is a proof?
Any introduction to proof course faces this obvious question. It must be answered both initially in a succinct
way to foreshadow what is to come, and subsequently in a detailed manner as the course unfolds. The
succinct and simple initial answer given in the this class is as follows.
Definition. A proof is an explanation of why a particular mathematical claim must be correct.
Perhaps more important from the students’ perspective at the beginning of the course is to explain what
goals we are trying to accomplish with our proofs, in order to motivate why we want to write proofs in the
first place. In this course we focused on two main goals of a mathematical proof, corresponding to each of
the two bold phrases in the definition above.
Objectivity: We would like our proofs to provide us with objective verification that a given claim
must be correct. For example, a proof that can be verified by a purely mechanical algorithm
would meet this criterion. (This corresponds to the idea that a proof shows that a claim must
be correct.)
Exposition: We would like our proofs to communicate clearly to a human reader the insights,
intuition, and understanding why a given claim must be correct. (A proof must also be an
explanation.)
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
9
Naturally these two goals are not always easy to achieve simultaneously. Formal proofs that include
every detail are easy to verify mechanically, analogous to the way computations in arithmetic, algebra, and
calculus can be verified by calculator or computer. Such proofs usually have a very rigid and technical
syntax that makes them verifiable (in principle) by readers with little mathematical sophistication. But they
are almost always too lengthy, detailed, and technical to communicate the main ideas and intuitions involved
in the proof to a human reader.
Expository prose proofs typically found in books and journals are usually far more effective at imparting
an understanding to the reader. Such proofs are usually tailored to a particular target audience, since the
target audience affects things like the choice of natural language used (English vs. Italian, say) and the level
of detail that is provided, skipping details that a reader in the target audience would already know or believe,
and thus better emphasizing the main ideas. But for a student in an introduction to proof course, omitting any
details whatsoever can leave them feeling that the validity of a proof is more an art of getting the instructor
to agree with them than something they can know for themselves is objectively valid.
As at many schools, the introduction to proof course at the University of Scranton is often referred to
as a “bridge” course. In most cases this term refers to a course that provides a topical bridge for students to
cross in order to make the transition from introductory (computation-oriented) mathematics courses such as
calculus to advanced (proof-oriented) courses such as abstract algebra or topology. But in the context of this
particular class the term “bridge” takes on a alternate meaning, namely that it provides a bridge from the
certainty of formal, rigorous proofs, to the more traditional, expository proofs found in books and articles.
Once that bridge is sound, we can meet the goals of objectivity and exposition simultaneously. To make
a objectively verifyable formal proof more expository we can use shortcuts and add explanations to write
the same proof in traditional expository style. More importantly, a student who is writing a more traditional
expository style mathematical proof can try to write the same proof as a formal or semiformal proof (and
actually did do this voluntarily in some cases in the course) in order to know that their proof is objectively
correct.
The students’ journey: from calculations to toy proofs
The students in the Spring 2013 class at Scranton consisted of mostly sophomore math, math education, and
science majors who had completed the first two courses in the calculus sequence but did not have any proofbased courses beyond high school geometry. Their background in mathematics at the start of the course
consisted mainly of computations.
Thus we could begin to build the bridge from what students know coming into the course (calculations)
to proofs by illustrating that a calculation satisfies our criteria for a proof if we can justify each step of
the work with a reason that explains why the step is correct, as in Figure 7. We might call such a justified
calculation a formal calculation as a harbinger of the formal proofs to come.
Ordinary Calculation
Formal Calculation
a·b+a=a·b+a·1
a · b + a = a · b + a · 1 by multiplicative identity
= a · (b + 1)
= a · (b + 1)
by distributivity
Figure 7: On the left, a typical calculation a calculus or algebra student might do as part of a larger problem.
On the right, the same computation as a formal calculation, the difference being a justification for each step.
While this illustrates to the students how something they already know relates to what is to come,
there isn’t much that can be done with formal calculations until they have been told what constitutes a valid
justification or reason that can be used to justify a step of their work. (For example, Figure 7 assumes they’ve
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
10
at least heard of things like the multiplicative identity and distributive laws.) Because rules of inference and
syntax can be quite complicated, the course introduces students to some of the basic features of a formal
mathematical reasoning system through some fun, non-mathematical systems before it introduces an actual
mathematical system.
The Toy Proofs software system is developed and maintained as part of the Lurch project. It implements
these fun, formal systems and is available online [8]. It does what we call implicit validation, in which
the software only provides the user with actions that perform valid steps of a proof, and thus validates the
students’ work implicitly by preventing them from making mistakes. (It does not tell them how to create a
correct proof, but it prevents them from making mistakes while trying to do so.)
The Toy Proofs systems introduce several foundational concepts, but in game-like settings: a language
of “statements,” a collection of “rules of inference” by which new statements can be justified, and a “proof,”
consisting of a sequence of statements in the system, each of which is either given or derived from earlier
ones with the rules of inference. The students are introduced to progressively more complicated rule sytems
as they progress through the three systems. The first system is colorful and very game-like, but the final one
is more syntactic and mathematical.
All three Toy Proofs systems emphasize one main concept, that the purely mechanical nature of the
systems provides the objectivity we want in proofs. This point is made clear by the fact that the “statements”
in the Toy Proofs games (e.g., sequences of colors in one game) have no obvious meaning, yet the computer
can verify the “proofs” anyway.
From toy proofs to formal proof
After a few assignments on the Toy Proofs systems the students were then presented with a formal system
for propositional logic. Simultaneously, they graduated from the implicit validation in Toy Proofs to the style
used in Lurch, which we call explicit validation. Since Lurch is a word processor, a student can type anything
he or she likes in a document, including incorrect statements, unjustified statements, and incorrectly justified
statements. Lurch merely informs the user which statements are correctly justified and which are not; it does
not prevent the user from making errors.
The syntax for mathematical statements in Lurch is currently built into the program, but one of the high
priorities for future development is to allow the user to customize the notation and syntax of statements and
expressions. Lurch also comes with a set of rules, which any instructor or student can choose to use, or they
can replace them with rules of their design. Each rule in Lurch can be labeled, and students cite rules by
those labels when specifying reasons for their steps of work.
The style of formal proof used in the beginning of the Scranton bridge course is a variation of Gentzen’s
natural deduction. A formal proof in this system consists of a list of lines containing (a) a line number used
as the label for the line, (b) a statement (at a given level of indentation), (c) a reason justifying that statement
when necessary, and (d) the line numbers of any premises needed for the particular rule specified as the
reason. An example of such a proof is shown in Figure 8.
From formal proof to semiformal proof
After mastering propositional logic, the students in the course are then taught predicate logic with equality,
using the same formal proof style. At this point, having practiced and mastered the concepts of statement,
reason, and premise extensively, the overwhelming level of detail and specificity required in a formal proof
starts to become tedious, and the students are ready to advance to the next level of sophistication.
This general theme permeates the course. Once the students have been exposed to and master a given
concept to the point where it becomes tedious or repetitive, the tedious or repetitive parts are eliminated in
favor of a more advanced proof style. Such parts are eliminated by two mechanisms (both in Lurch and on
the chalkboard) that we call shortcuts and smart rules.
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
11
Figure 8: An example of a formal proof in propositional logic validated by Lurch. This uses the particular
style of formal proof used in the second author’s introduction to proof course.
Shortcuts are well defined mechanisms by which portions of a proof may be omitted without losing the
objectivity and certainty of the correctness of the proof. A large and detailed list of these is presented to the
students throughout the semester as they become appropriate.
For example, it is nearly always the case that the statement at line n in a proof is used as a premise on
line n + 1, so one shortcut is to agree that premises don’t have to be cited if they immediately precede the
line being justified. Another shortcut is that most lines in a proof do not need to be numbered or labeled,
excepting those that need to be referred to frequently in the rest of the proof.
A smart rule is a high-level rule of inference that can be used to justify a statement using a more sophisticated algorithm than simple pattern-matching. For example, the only statements that can be proved
in formal propositional logic are tautologies. Thus, once students have mastered propositional logic and
move on to other mathematical topics like set theory or number theory, they can then use a smart rule
simply called “logic” to justify any step of work that could be justified by a proof in propositional logic.
In Lurch, this smart rule simply checks, for premises P1 , P2 , . . . , Pk and conclusion C, if the statement
“P1 and P2 and . . . and Pk ⇒ Q” is a tautology.
Another example is a smart rule for basic algebra that can verify statements like (x + 1)3 = x3 + 3x2 +
3x + 1 using an internal computer algebra system. This rule would be an appropriate smart rule to use, for
example, after students have mastered the properties of basic algebra such as associativity, commutativity,
distributive laws, etc. It is also useful when teaching formal calculations like computing derivatives in calculus, where the focus may be on justifying the steps of differentiation, but not the steps of algebra. The
first of these two example smart rules exists in the current version of Lurch, while the second is queued for
future development.
As shortcuts and smart rules are presented in the course, the style of proof slowly transitions from the
fully formal proofs that provide objectivity and rigor to expository proofs common in mathematics, that
communicate ideas more clearly. This transition passes through an intermediate style of proof that we call
semiformal proof, illustrated in Figure 9.
In a semiformal proof, line numbers and the referencing of most premises are optional, and the spacing,
punctuation and wording of the individual lines in the proof are unrestricted and thus free to be close to what
it might be in an expository proof. The main restrictions that define a semiformal proof in the course are that
every statement must be on a separate line and subproofs must be indented. It should be easy to convert a
semiformal proof into a formal one, while on the other hand, if you combine the individual lines into a few
paragraphs, a semiformal proof becomes very like a traditional proof. Thus, semiformal proofs serve as an
intermediate style of proof that bridges the gap between formal style proof and traditional expository style
proofs.
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
12
Figure 9: An example of a semiformal proof in elementary set theory validated by Lurch. A semiformal
proof still uses only one statement per line, but permits omitting line numbers, not specifying immediately
preceding premises, and more natural spacing and punctuation. These features make semiformal proofs a
natural waypoint on the road from formal proofs to expository proofs.
The fact that Lurch can validate all three styles of proof (and others) makes it possible for students to
answer what is arguably the most commonly asked question about their proofs: “How do I know if I’m
right?”.
Using previously-proven theorems
One other way to reduce tediousness and repetitiveness in mathematical proofs is to use previously-proven
theorems as new rules of inference to justify lines in a proof. After logic, the Spring 2013 bridge course
students learned elementary set theory, functions, relations, elementary algebra, and number theory, each
topic presented in a similar way.
First, the instructor presented formal definitions for a topic. Then he introduced theorems that depend
only on one definition (and anything it, in turn, depends on), which we term basics. a shorthand for “immediate consequences of the definition.” For example, the formal definition of subset might be as follows.
Definition. A ⊆ B ⇔ ∀x, x ∈ A ⇒ x ∈ B
So a student could be asked to prove the following “basic” as an immediate consequence of the definition.
Theorem. If A ⊆ B and x ∈ A then x ∈ B.
Thus the typical workflow in this part of the course for students consisted of first learning new definitions, investigating them enough to prove theorems about the basic consequences of each, and then combining more than one definition to prove deeper theorems. This progression is illustrated in Figure 10.
The rules, definitions, and theorems in Lurch are organized in this same sequence, so that students are
asked to prove theorems in one assignment, and then in the next assignment, those theorems are available
to use as reasons in other proofs. The instructor has complete control over which rules, definitions, and
theorems are available for the students to use on a given assignment.
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
13
Other Theorems
Proven from multiple definitions,
the “real” business of mathematics
Mathematics
“Basic” Theorems
Proven from a single definition,
often as an exercise in understanding it
Definitions
The bridge between
logic and mathematics
Predicate Logic
Logic
Propositional Logic
Figure 10: After learning the foundation of logic, students are presented with definitions, prove immediate
consequences of the definitions, and then more important theorems that combine more than one definition.
From semiformal proof to expository proof
The final transition to traditional expository style proofs begins with a review of some of the common
typesetting and writing conventions in mathematical writing. A portion of an expository proof (with an
exmaple error) verified by Lurch was shown in Figure 1.
But some of the shortcuts that students need to learn in this final stage of the Lurch does are not support.
In addition, Lurch is designed to be a word processor that can validate proofs, not the best mathematical
typesetting system available. Thus when the students transition to traditional, fully informal proofs, the
instructor switched the software for writing their assignments from Lurch to LATEX. This transition was
facilitated by providing them with a custom LATEX style file which they used with the website writeLATEX
[11].
This produced high-quality typesetting for the students, but LATEX cannot validate their proofs for them.
Thus we were unexpectedly pleased to notice that some students, on their own initiative, wrote semiformal
proofs in Lurch prior to writing an informal version in LATEX for submission. This was excellent confirmation
that students valued Lurch for exactly the purpose we intended.
The journey’s end: combinatorial proofs
The last two weeks of the course covered one last style of proof that is notoriously difficult to formalize,
combinatorial proofs.
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
14
Here, a combinatorial proof is one that is based on a counting argument, such as counting the same
collection in two different ways to prove an identity. For example, one might prove that for any natural
number n,
n
n
n
n
+
+
+ ··· +
= 2n
0
1
2
n
using the algebraic formula for binomial coefficients and induction on n, but that would not be a combinatorial proof. A combinatorial proof would argue that the number of subsets of a set with n elements can be
counted first by adding up the number of subsets of each size from zero through n to get the left hand side
of the equation, and then count the same collection again by noting that every subset is determined uniquely
by deciding whether each element is in it or not, so that the number of distinct subsets is 2n .
In the course we restricted the study of combinatorial proofs to proving combinatorial identities such
as the example above (i.e., theorems of the form A = B where A and B are expressions that have a
combinatorial interpretation). The student assignments were done in LATEX, but could not be verified by
Lurch. This was a painful reminder of how valuable it is to the students to have a resource like Lurch available
to check their work. Without it, the only way for the students to get feedback on their combinatorial proofs
was to ask the instructor as they would in any course without Lurch. The students were much less confident
that their submitted proofs were correct, and there was a decrease in the number of questions that they asked
the instructor prior to handing in the assignments as there was no software to tell them that a step of their
work was incorrect (which they were then motivated to resolve before proceding).
2.4
Customizing Lurch for other approaches and courses
What we have discussed above was just one particular method and style of teaching students about mathematical proof. Lurch is designed to be customized beyond just the rules and definitions that ship with the
program to match the lecture notes or textbook used in a particular course.
Figure 11: In this sample Lurch document, an instructor specifies a new definition and illustrates in a proof
snippet how that definition can be used to justify a step of work. Lurch validates that the symbol increasing
is not already defined as something else, certifies that it understands the instructor’s new rule, and validates
the statement g(1) < g(2) (which has been justified by citing the name of the new definition as a reason and
providing the two premises required by the rule). The instructor specifies the rule by bubbling it as shown
in Figure 12.
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 such
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
15
documents, copy them, and alter them to suit their own style, or write new ones from scratch. A document
containing rule definitions can be included in another document as a dependency, making the rules in the
former available in the latter.
Figure 12: To define a new rule or definition the instructor only has mark the rule, its label, (optional)
premises and conclusions. Here we see the semantic structure of the rule defined in Figure 11.
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 11 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 (for example, in another context he might want to specify
that s, t are in the domain of f as another premise). This is bubbled by the instructor as indicated in Figure
12.
Finally, when a student uses the rule to justify a statement, he does so by supplying the two required
premises, and justifies the expression g(s) < g(t) by citing as a reason the name of the rule (“increasing” in
this case). This is illustrated in Figure 13. 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.
Figure 13: To use the new rule defined in Figure 11 the user cites the reason with the same name to justify
the meaningful expression that matches the conclusion. In this example the user has also cited another rule
called “arithmetic” to justify the claim that 1 < 2.
The current version of Lurch does not fully support custom notation or render complicated math formulas
involving fractions, large operators, and so forth. But the authors intend that future versions of Lurch will
allow both of these things.
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
3
16
Outcomes of using the method
3.1
Early testing, Fall 2008
The first testing of Lurch was in an introduction to logic course at Bentley University in Fall 2008. That
course was not discussed above, because Lurch has changed significantly for the better since 2008. For this
reason (and those mentioned in Section 2.3), this section is brief, in favor of giving more focus to discussion
of results from Spring 2013, the more recent testing. But some of the restuls of that semester of testing are
still noteworthy and relevant.
One of the goals of creating a digital environment embodying the rules of a formal system is that students
will, through that environment, bump up against those rules in much more concrete ways than they would in
paper-and-pencil homework. (That this has value is well-documented, as covered in Section 2.1.) But does it
actually happen when students use Lurch? The following quotes from the student survey from that semester
suggest that it does.
“It helped me learn how to do proofs through trial and error”
“It told me if I was right or wrong”
“...I liked using Lurch because I was able to see what was needed for rules to work.”
Furthermore, the following Likert-scale questions (1 = strongly disagree, 3 = neutral, 5 = strongly agree)
and their average response values suggest the same.
4.6
4.2
I used Lurch for experimentation; I tinkered to learn the results of various actions.
The constant feedback Lurch provides about my work is valuable.
Finally, even the very primitive version tested in 2008 was, according to the students, beneficial.
This early version of Lurch is not yet beneficial to students.
Learning to use Lurch took a lot of time that I could have spent learning logic instead.
2
2.2
Anecdotally, the instructor observed that students who did not choose to use Lurch for their homework
(which was optional) fell into two categories. Either they were doing very well in the class and did not need
any extra help, or they didn’t like being told that they were wrong, and thus avoided the software. This latter
group was small, and quickly began using the software when their first few homeworks received bad grades.
One student reported that receiving back the first homework grade finally explained why she couldn’t get
Lurch to accept her proofs—because they were incorrect!
3.2
3.2.1
Recent testing, Spring 2013
Student survey results
At the conclusion of the Spring 2013 Introduction to Mathematical Proof course at the University of Scranton, the students in the course were surveyed to see how they perceived the use of Lurch in the course,
and in particular, to see if they felt that the goals we have set for the software were being met. The survey
was anonymous and not given to the instructor until after the course grades were already submitted and the
course was over.
The following Likert-scale questions (1 = strongly disagree, 3 = neutral, 5 = strongly agree) and
their average response values suggest that even our current version, which is missing some major planned
features, is meeting those goals from the students’ point of view.
I would recommend that future students (in this course) use Lurch.
Lurch saying my work was right mattered to me.
I spent a lot more time on homework because Lurch showed me my mistakes
The constant feedback Lurch provides about my work is valuable.
Lurch contributed to how much I learned in this course.
4.9
4.7
4.4
4.3
4.1
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
17
Even the current incomplete version was, according to the students, not an extra burden to master.
This early version of Lurch is not yet beneficial to students.
Doing homework in Lurch is more difficult than doing it on paper.
Learning to use Lurch took a lot of time that I could have spent learning proofs instead.
1.6
2.0
2.5
One natural worry, given the evidence of student appreciation above, is that perhaps repeated guesswork
alone could create a proof in Lurch. That is, with enough feedback, students lose the need to be creative
and clever, and can just persistently experiment until a proof is done, and have learned nothing. Thus our
surveys also asked for agreement or disagreement with the sentence “It is possible to do a proof in Lurch
by experimental clicking and typing, without thinking.” In the early version of Lurch (which used implicit
validation, and was not at all a word processor) the average response was neutral, 3.2. This latest version of
Lurch, however, has significantly improved this score to a 1.6, between disagree and strongly disagree.
Student comments on the same survey indicated that at some of our goals for the software are being met.
“I liked that we could check our work as we are doing it – it makes the learning
more immediate by providing constant feedback even outside of class.”
“I was intimidated by proofs before taking this class, but Lurch helped boost my
confidence. Using Lurch for formal proofs helped me learn all the pieces you need
for a correct proof and how to go about solving a proof. Also, I am very bad with
computers so I was very nervous about using this program, but it was pretty user
friendly.”
“I like how it broke down proofs into a step by step format. Once I learned how
to use Lurch it made doing proofs easier and clear. It made it easier to identify
statements, reasons, and premises.”
“Lurch told me if my work was correct. If it wasn’t I worked until it was correct.
Doing this also helped me learn definitions and rules more easily. (Plus, I knew I
was right.)”
“It allowed me to guarantee when I got something right, which was helpful early
on when I was unsure about what a proof was.”
“I can’t imagine learning proofs without it!”
3.2.2
In-class exams using Lurch
The first exam in the course was given in class entirely on Lurch. The students brought their personal laptops
to class and were given a Lurch file containing the exam to fill out. They were required to type their proofs
in Lurch, but using Lurch to validate their proofs was optional. The reason for making it optional is that,
in order for Lurch to validate a proof, the student must place bubbles around all mathematical expressions,
as well as citations of statements and reasons, as overviewed in Section 2.2. We call this work “bubbling a
proof,” and we did not want to force this upon them in case they considered it unworthwhile to do so. But
all students chose to bubble their proofs and have Lurch check their work.
One question on the exam consisted of a 17-line formal proof of a DeMorgan’s Law for quantifiers
which the students were asked to provide justification for by providing reasons for each of the 17 statements.
This question was designed to test whether the students understood the concept of a proof without testing
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
18
whether or not they can overcome the obvious additional difficulties of crafting one from scratch. If the
correct reasons and premises were cited for each line, the students could ask Lurch to validate their proof.
Incredibly, every student in the class answered this question correctly.
This important understanding about the nature of a proof, even for students who struggle with constructing their own proofs from scratch, seems to have been completely impressed on the students through the use
of Lurch in the initial assignments leading up to the exam. While no data is available for comparison with
previous classes where Lurch was not used, the instructor’s observation is that this was a vast improvement
in student understanding compared with two previous classes who took the course in 2010 and 2011 without
the use of Lurch.
The final exam in the course was given in two parts. The first part was a take-home portion where
the students were asked to write several advanced proofs in expository style using LATEX. While portions
of those proofs could be validated by Lurch, some steps and certain aspects of the notation were beyond
Lurch’s current ability. While it was completely optional, several students did try to work out semiformal
drafts of their proofs before writing them up in expository form in LATEX. We hope that as Lurch becomes
more sophisticated and easier to use, this voluntary use of Lurch to check the validity of a proof will increase.
The second portion of the final exam was again taken in class and consisted of proofs that had to be
done in Lurch on their personal laptops, but whether or not the students wanted to have Lurch validate the
proofs was again left completely up to them. Every student but one chose to bubble their proofs and have
Lurch validate their proofs before handing them in. The one student who chose not to was an A student who
felt confident enough in his proof ability that the extra effort of bubbling wasn’t warrented. As it turned out,
that assumption was incorrect, as that student had the lowest score in the class on that portion of the final
exam. Thus the extra effort and time required for a student to bubble and validate their proofs was not a
hindrance to them scoring well, even on a timed, in-class portion of the final exam. In fact, the evidence
seems to indicate that even the students who did not ultimately receive an A grade in the course were able
to outscore an A student (that student earned an A in the course despite the poor performance on the Lurch
portion of the final exam) who chose not to use Lurch for validation.
3.2.3 Lurch homework assigments
Most of the proofs assigned for homework in the first half of the course were required to be written up
in Lurch. In the second half of the course they switched to LATEX as they made the transition from formal
and semiformal proofs (at which Lurch currently excels) to more notationally sophisticated and abbreviated
expository proofs (with which it is still limited). As with the rest of the course, bubbling their proofs on the
Lurch assigments in order to recieve validation feedback was completely optional, but most students did.
One interesting aspect of doing their assignments in Lurch came about as a result of combining it with
cloud-based folder sharing. The instructor had a shared folder on his computer with each of the students,
and the students would write up their assignments in their shared folder using Lurch. This allowed the
instructor to “look over their shoulder” when they needed help on their assignments, and to easily answer
their questions (typically “Why does Lurch say my proof is wrong at line n?”) even before the assignment
was handed in. To facilitate this, the authors added a “red comment pen” formatting style to Lurch, so that
the instructor could easily annotate a student’s homework document, even while it was still in progress. This
opened up a much more frequent and agile line of communication between the instructor and student than
the typical handing in and grading of an assignment on paper.
3.3
Successes and challenges
Even this early version of Lurch, when combined with the method of instruction explained in Section 2.3
has been quite successful. Student surveys indicate that the students found the software to be both valuable
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
19
and unobtrusive in the course. Observations by the instructor on voluntary student use of Lurch to check
their work provides further evidence in support of the project goals.
But there are still hurdles left for our project to overcome in the future. In particular, there are several features that would significantly improve the user experience, which the development team (and any
who wish to join them) need to work on in the near future. These include improving the efficiency and
responsiveness of the application, adding support for typeset mathematical expressions, making typeset expressions editable, and allowing instructors to customize the notation for mathematical expressions to what
their course or textbook prefers. Other enhancements we anticipate are listed in Section 4.1, below.
4
Extending the method
The main challenge with using a new piece of software is getting both the instructor and students over the
initial learning curve in the shortest amount of time. This is so that learning Lurch itself requires the smallest
percentage of the course, leaving nearly 100% to spend on the mathematical course content. We attack this
problem head-on in two important ways, discussed in the following sections.
4.1
Minimal user interface
Each new command a piece of software provides and each new control it presents on screen contributes to the
software’s learning curve. With respect to minimizing the initial learning curve, the fewer such commands
and controls there are (and the simpler each one is) the better. Section 2.2 makese the case that our current
user interface is very good by this metric, but there remain planned advances not yet implemented. We
discuss two here.
First, although the bubble interface described in Section 2.2 seems minimal, it could actually get simpler!
As shown in Figure 3 on page 5, the user must first highlight the section of text they wish to mark as
meaningful before clicking the toolbar button or pressing the keyboard shortcut. To make this even simpler,
the software could be enhanced so that if no text were selected when that same command were invoked,
that Lurch would automatically apply the command to the largest section of text surrounding the cursor
that forms a valid mathematical expression. If such a command were given a shortcut such as Alt-click, the
user could bubble all meaningful expressions in document very quickly, by holding down the Alt key and
clicking on meaningful expressions.
Second, citing a premise used in a step of reasoning is currently a two-part process. Any premises that
immediately precede the conclusion Lurch does not require the user to cite; they are automatically detected
and used. But premises further away must be cited explicitly. Currently, this can be done in any of several
ways, none of which are very difficult, but none of which are trivially easy, either.
We plan to make this simpler in two ways. First, when the user’s cursor is inside a mathematical expression, so that a bubble appears around it, visible arrows should connect that bubble to every other meaningful
expression it uses as a premise, so that users can immediately see the premise-conclusion relationships they
have set up. Second, to add or remove an arrow should require but a single mouse action, such as Controlclick. If your cursor is in a conclusion, Control-click another expression to add or remove it as a premise,
and the arrow to that expression appears or disappears, respectively.
These are but two examples of how we will continue to pursue making the user interface even simpler,
thereby reducing the overhead necessary to using Lurch in a mathematics course.
4.2
Textbooks to ease integration
With the goal of making Lurch easy to integrate into courses at more institutions, one final effort is worth
mentioning. During the summer of 2013, each of the two authors of this article is writing a free, online
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
20
textbook that integrates Lurch.
The first author will be taking the open-source textbook forallx written by P.D. Magnus [16] and creating
a version that integrates Lurch throughout. Some topics in the text will also be reordered according to how
the first author has had success using the text in an introductory logic course in the past. That text will be
available by Fall 2013 online [3].
The second author will be writing up a more formal version of the course notes he uses in the bridge
course he created at the University of Scranton. Lurch files will also continue to be updated and revised to
take into account what was learned in teaching the course during the Spring 2013 semester. This should
make the course more accessible and available to instructors who might want to use similar methods in
whole or in part.
5
For more information
The Lurch project welcomes all interested developers, testers, and users. Mathematics faculty with no computer programming capabilities who wish to create new mathematical topics and exercises in the software
are particularly encouraged to download a version, try it out, and share your joys or get answers to your
questions on the mailing list. Faculty and students with development expertise are encouraged to contact us
if you’d like to give time to this young-but-growing open-source software project.
Interested readers are encouraged to visit the Lurch website [4], where you can download the free software, look for the two textbooks mentioned in Section 4.2, as well as introductory videos, future development plans, the project’s email list, and more.
References
[1] Olivier Arsmac and Stephane Dalmas. OpenMath INRIA C/C++ Libraries. Downloaded May 18, 2008.
URL http://www.openmath.org/software/index.html.
[2] S. Buswell, O. Caprotti, D.P. Carlisle, M.C. Dewar, M. Gaëtano, and M. Kohlhase, editors. The OpenMath Standard, version 2.0. The OpenMath Society, June 2004. URL http://www.openmath.
org/standard/.
[3] Nathan Carter and P.D. Magnus. forallx in Lurch. A free and open-source textbook introducing formal logic and integrating Lurch, 2013. Available online. URL http://web.bentley.edu/empl/
c/ncarter/faxil.
[4] Nathan Carter and Kenneth G. Monks. Lurch: A word processor that can check your math. A free
and open-source software project hosted on SourceForge.net, access on April 23, 2013. URL http:
//lurch.sf.net.
[5] Nathan Carter and Kenneth G. Monks. Lurch: A word processor that can grade students’ proofs. In
Joint Proceedings of the 25th OpenMath Workshop, the 8th Workshop on Mathematical User Interfaces
(MathUI), and the Work In Progress Section of the Conference on Intelligent Computer Mathematics,
James Davenport, Johan Jeuring, Christoph Lange, and Paul Libbrecht, editors. CEUR Workshop Proceedings #TBD, Aachen, Bremen, Germany, 2013. ISSN 1613-0073, URL http://ceur-ws.org/
Vol-\#TBD/.
[6] Nathan Carter and Kenneth G. Monks. Lurch: A word processor built on OpenMath that can check
mathematical reasoning. In Joint Proceedings of the 25th OpenMath Workshop, the 8th Workshop on
Using the Proof-Checking Word Processor Lurch to Teach Proof-Writing
21
Mathematical User Interfaces (MathUI), and the Work In Progress Section of the Conference on Intelligent Computer Mathematics, James Davenport, Johan Jeuring, Christoph Lange, and Paul Libbrecht,
editors. CEUR Workshop Proceedings #TBD, Aachen, Bremen, Germany, 2013. ISSN 1613-0073, URL
http://ceur-ws.org/Vol-\#TBD/.
[7] Nathan Carter and Kenneth G. Monks. Introduction to Lurch: Advanced Users Guide URL http:
//lurch.sourceforge.net/AUG-v1.html.
[8] Nathan Carter and Kenneth G. Monks. Toy Proofs. Online web activities for introducing concepts of
formal systems. URL http://lurchmath.org/toyproofs.
[9] A.W. Chickering and Z.F. Gamson. Seven principles for good practice in undergraduate education. American Association for Higher Education Bulletin, pages 3–7, 1987. URL http://
aahebulletin.com/public/archive/sevenprinciples1987.asp.
[10] Gustav Delius and Neil Strickland. AiM—Assessment in Mathematics. A free and open-source software
project hosted on SourceForge.net, accessed on April 22, 2013. URL http://sourceforge.net/
projects/aimmath/.
[11] John Lees-Miller and John Hammersley. WriteLATEX. Online collaborative LaTeX editor with integrated
rapid preview. URL http://www.writelatex.com.
[12] Lisette de Pillis and Michael E. Orrison. Teaching time savers: Is homework grading on your nerves?
FOCUS, 27(1):14–15, January 2007.
[13] Adam Grabowski, Artur Korniłowicz, and Adam Naumowicz. Mizar in a Nutshell. Journal of Formalized Reasoning, 2010. URL http://jfr.unibo.it/article/view/1980/1356.
[14] Yves Bertot and Pierre Castéran. Coq’Art: The Calculus of Inductive Constructions Springer. 2004,
XXV, 472 p. ISBN 978-3-540-20854-9. URL http://coq.inria.fr/
[15] Saliha Klai, Theodore Kolokolnikov, and Norbert Van den Bergh. Using Maple and the Web to grade
mathematics tests. In IWALT 2000 Conference Proceedings, 2000. URL http://allserv.rug.
ac.be/˜nvdbergh/aimrug/docs/iwalt.ps.
[16] P.D. Magnus. forallx. An Introduction to Formal Logic. Published on the World Wide Web under
the Creative Commons Attribution-ShareAlike 3.0 license. URL http://www.fecundity.com/
logic.
[17] Pearson Education. MyMathLab. A series of mathematics courses on the World Wide Web. URL
http://www.mymathlab.com/.
[18] Chris J. Sangwin. Assessing mathematics automatically using computer algebra and the internet.
Teaching Mathematics and its Applications, 23(1):1–14, 2004. URL http://web.mat.bham.ac.
uk/C.J.Sangwin/Publications/tma03.pdf.
[19] Chris J. Sangwin. Assessing higher mathematical skills using computer algebra marking through
AIM. In Proceedings of the Engineering Mathematics and Applications Conference (EMAC03, Sydney, Australia), pages 229–234, 2003. URL http://web.mat.bham.ac.uk/C.J.Sangwin/
Publications/Emac03.pdf.
[20] Michelle D. Speckler. Making the grade: A report on the success of MyMathLab in higher education
math instruction. Pearson Education, Boston, MA, Fall 2005. URL http://www.mymathlab.com.