Mathematical Proof Writing
by Siddhant Arora under the Mathematical Foundations KA.The primary goal of Mathematical Proof Writing is to show how to prove mathematical statements. This consists of two parts: Reasoning to determine why a statement is true, and then explaining this reasoning to others.
Classification of the Skill
Since proof writing is a part of technical writing it is a hard skill.
Pre-requisites of the Skill
For mathematical proof writing certain conventions need to be followed. Unlike informal communication which can rely on broken sentences or use of abbreviations formal proof writing have much stricter guidelines. Along with the help of Mathematical knowledge of the proof the writer needs to take care of using English language effectively. This is required in order to properly elaborate on explanations and expositions of proofs.
Related Software Engineering Areas
Proof writing is a part of software documentation.
Specifically it is part of the System documentation since it describes the system and it's parts. Other related documents include-
- Requirements documentation
- Design decision
- Program source code
Rationale for Skill
Mathematical proof is often considered to be one of the cornerstones of mathematics. Professional mathematicians spend a lot of time developing conjectures and then working on whether they hold true for all cases, for some or for none. Proofs and justifications have to be rigorous and based on known mathematical facts and properties. Understanding and knowledge of mathematics is examined and extended in this process of proving, and connections across mathematical ideas and concepts are made.
Roles for skill
Mathematical proof writing is not necessarily required directly as an essential part of the software engineering process. Mathematical proofs however can help ensure that the solutions devised by developers do indeed work. Being able to write these proofs effectively can help other future developers working on a project understand the reasoning of why certain steps were taken by previous developers. So, the roles can be-
- Current and future developers
- Testers
- Project manager
Task for skill
A non-exhaustive set of things that we generally prove are as follows-
- X = Y
- X ==> Y
- X <==> Y
- X is purple (or some other relevant property)
- ∀X p(x) is true i.e “all elements of X type behave a certain way p(X)”
- ∃X s.t. p(X) is true i.e “there exist elements in X that behave a certain p(X) way”
Challenges for skill
One of the hard things about writing a proof is that the order in which we write it isn't always the order we thought it up in. In reality, we frequently think of the proof backwards. We might reach a conclusion by moving from opposite ends and meet in the middle but in order to logically explain we need to transition from one end to the other.
For example, we might think of building a bridge by starting construction on both ends and meet in the middle. We might even fill up the gaps in the middle by adding some preliminary steps. But when we actually go across a bridge, we start from one end and finish at the other.
So, for even simplest of proofs we cannot necessarily jot down the proof statements in the order we thought of them in. We need to plan out in advance before writing one down, akin to building a bridge.
Work Related to Skill
A proof is a series of statements which follow logically from what went on before them. It begins with a set of assumptions that we hold true and building on those set of assumptions we reach an end with what we’re trying to prove. A mathematical proof can be divided into 3 parts[1]-
- Beginning – these include definitions of the things we’re trying to elaborate on. This part also includes the assumptions that we hold true for the purpose of a proof.
- Middle – these are the statements that follow logically from statements before it.
- End – the thing we’re trying to prove.
Real-World Example/Scenario of Skill
Mathematical proofs and math in general have a significant role in software development.
- Technologies like Data science, machine learning etc.
- Data structure and algorithms
- Math libraries in different programming languages
- Graph plotting
- Binary math
- Set theory
Efficient use of resources is a something which all companies target towards. This is accomplished by the study of mathematics and algorithms. For example if a search algorithm like Bubble sort provides a complexity of O(n2) and Merge sort provides a complexity of O(n logn) companies would prefer utilizing Merge sort. This comparison however was made possible by mathematical proofs.
Being able to use mathematics, proving usefulness and comparison of algorithms is all done with the help of proof writing. If there is no standard set for proves to be compared, we would not be able to create and compare various technologies.
Role of Academia or Industry in Cultivating the Skill
Academia has played an important part in developing a structure to prove mathematical equations and theorems. There are some implied signs that are accepted to have an understood meaning. A non exhaustive list of such symbols is as follows-
- ⇔: A ⇔ B means A is true if B is true and A is false if B is false.
- ∃: ∃ x: P(x) means there is at least one x such that P(x) is true.
- ∈: a ∈ S means a is an element of the set S; a ∉ S means a is not an element of S.
- ∅: ∅ means the set with no elements.
Tools Supporting the Skill
Mathematical proofs require formalization of ideas. It requires jotting down formulas that can be explained clearly and written in an understandable way. Latex is a standard tool for mathematical proofs and software documentation in general. Apart from that following tools can be used-
- MS Word
- Libre Office
Skill Self-Assessment
Score: 6
Reason for the score:
- I have worked previously utilizing this skill in Algorithms and Data Structures course where we were required to write proofs of various algorithms. However my memory for signs required to writing in Latex is not the best at the moment.