pirapira/reasonable-manifesto
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
Reasonable Engineering Manifesto 1. I understand, improve and occasionally build reasonable systems. 1.1. Reasonable systems can be reasoned about. 1.1.1. Reasoning in this manifesto means deductive reasoning. 1.1.1.1. Deductive reasoning is opposed to inductive reasoning. 1.1.1.1.1. Theorem proving toolmakers use the word induction for mathematical induction, which is a form of deductive reasoning. 1.1.2. Reasonable systems require simple and accurate specification. 1.1.2.1. If the specification of a system doesn't fit in my mind, the system is not reasonable for me. 1.1.2.1.1. Because the specification is an approximation of my wants in my mind. 1.1.2.1.2. Since a specification approximates my wants in my mind, it can be made to fit in my mind. 1.1.2.2. The standard for a reasonable specification is personal. 1.1.2.2.1. Therefore, I do not use the word we in this manifesto. I don't know how to tell whether a specification fits in our minds. I might be able to tell whether a specification fits in my mind. 1.1.3. Reasonable systems require transparent implementation. 1.1.3.1. Reasonable systems are implemented with languages and tools that have reasonable specifications. 1.1.4. The implementation of reasonable systems can be too big to fit in my mind. 1.1.4.1. Because the implementation 1.1.4.1.1. is not an approximation, and 1.1.4.1.2. does not belong in my mind either. 1.1.4.2. When the implementation is too big to fit in my mind, some bookkeeping mechanism is needed to keep track of the gab between the implementation and the specification. 1.2. I understand reasonable systems. 1.2.1. For me to understand a reasonable system, I need to have a specification of the system in my mind, an implementation of the system, and an explanation why the implementation satisfies the specification of the system. 1.2.1.1. The specification of the system in my mind can differ depending on what aspects of the system I am interested in at the moment. 1.2.1.1.1. The specification of the systems is not unique and is not limited to the one(s) that come from the authors of the system. 1.3. I improve reasonable systems. 1.4. I occasionally build reasonable systems. 2. Reasoning tools have enabled us to engineer reasonable systems that are practically useful. 2.1. Reasoning tools have enabled us to work on big implementations, as long as their behavior is defined for the reasoning tools. 2.2. Reasoning tools do not replace my understanding. 3. Part of mathematics is reasonable. 3.1. The standard of reasonable systems can be applied to mathematical theorems. 3.1.1. The specification of a mathematical theorem is its statement. 3.1.2. The implementation of a mathematical theorem is its proof. 3.2. Mathematical theorems, whose statements I understand, are reasonable. 3.3. Mathematical theorems, whose proofs I don't understand, can be reasonable. 3.3.1. Therefore I don't behave like some mathematicians, who are only willing to work with theorems whose proofs they understand. 4. Criticism 4.1. Is this manifesto reasonable? 4.2. Should building be placed before understanding and improving? Reasonable Engineering Manifesto © 2025, 2026 by Yoichi Hirai (https://yoichihirai.com) available at https://github.com/pirapira/reasonable-manifesto licensed under CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/).