词条 | Metamath |
释义 |
|name = Metamath |logo= |developer = Norman Megill |programming language = ANSI C |operating_system = Linux, Windows, macOS |genre = Computer-assisted proof checking |license = GNU General Public License (Creative Commons Public Domain Dedication for databases) |website = http://metamath.org }}Metamath is a language for developing strictly formalized mathematical definitions and proofs[1] accompanied by a proof checker for this language and a growing database of thousands of proved theorems covering conventional results in logic, set theory, number theory, group theory, algebra, analysis, and topology, as well as topics in Hilbert spaces and quantum logic.[2] The Metamath languageWhile the large database of proved theorems follows conventional ZFC set theory, the Metamath language is a metalanguage, suitable for developing a wide variety of formal systems. The set of symbols that can be used for constructing formulas is declared using and $( Declare the constant symbols we will use $) $c 0 + = -> ( ) term wff |- $.$( Declare the metavariables we will use $) $v t r s P Q $. The grammar for formulas is specified using a combination of and $( Specify properties of the metavariables $) tt $f term t $. tr $f term r $. ts $f term s $. wp $f wff P $. wq $f wff Q $.$( Define "wff" (part 1) $) weq $a wff t = r $.$( Define "wff" (part 2) $) wim $a wff ( P -> Q ) $. Axioms and rules of inference are specified with along with $( State axiom a1 $) a1 $a |- ( t = r -> ( t = s -> r = s ) ) $.$( State axiom a2 $) a2 $a |- ( t + 0 ) = t $. ${ min $e |- P $. maj $e |- ( P -> Q ) $.$( Define the modus ponens inference rule $) mp $a |- Q $. $} The metamath program can convert statements to more conventional TeX notation; for example, the modus ponens axiom from set.mm: Using one construct, Theorems (and derived rules of inference) are written with for example: $( Prove a theorem $) th1 $p |- t = t $= $( Here is its proof: $) tt tze tpl tt weq tt tt weq tt a2 tt tze tpl tt weq tt tze tpl tt weq tt tt weq wim tt a2 tt tze tpl tt tt a1 mp mp $. Note the inclusion of the proof in the the following detailed proof: The "essential" form of the proof elides syntactic details, leaving a more conventional presentation: A generic proof checker{{refimprove section|date=April 2018}}Metamath has no specific logic embedded and can simply be regarded as a device to apply inference rules to formulas. Simplicity is the master concept in the design of Metamath: the language of Metamath, employed to state the definitions, axioms, inference rules and theorems is only composed of a handful of keywords, and all the proofs are checked using one simple algorithm based on the substitution of variables (with optional provisos for what variables must remain distinct after a substitution is made).[3] This "substitution" is just the simple replacement of a variable with an expression and not the proper substitution described in works on predicate calculus. Even if Metamath is used for mathematical proof checking, its algorithm is so general we can extend the field of its usage. In fact Metamath could be used with every sort of formal system: the checking of a computer program could be considered (even if Metamath's low level would make it difficult); it could possibly even be a syntactic checker for a natural language (same remark). Because Metamath has a very generic concept of what a proof is (namely a tree of formulas connected by inference rules) and no specific logic is embedded in the software, Metamath can be used with species of logic as different as Hilbert-style logics or sequents-based logics or even with lambda calculus. In contrast, it is largely incompatible with logical systems which use other things rather than formulas and inference rules. The original natural deduction system (due to Gerhard Gentzen), which uses an extra stack, is an example of a system that cannot be implemented with Metamath. In the case of natural deduction however it is possible to append the stack to the formulas (transforming the natural deduction formulas into a sort of sequent) so that Metamath's requirements are met. What makes Metamath so generic is its substitution algorithm. This algorithm makes no assumption about the used logic and only checks the substitutions of variables are correctly done. So here is a detailed example of how this algorithm works. Steps 1 and 2 of the theorem There is however some complications that are not shown on the picture. When Metamath unifies {{math|1=( 2 + 2 )}} with {{magenta|{{mvar|B}}}} it has to check that the syntactical rules are respected. In fact {{magenta|{{mvar|B}}}} has the type The above explanation may let suppose that formulas are stored by Metamath. In fact nothing of that sort exists. Metamath only stores the conclusion and the premises of the proven theorem and the list of the names of the theorems used by the proof and nothing more. But since it is possible, with the substitution algorithm, to generate the conclusion from the premises nothing more is required. DatabasesMetamath comes along with two main databases set.mm and ql.mm. set.mm stores theorems concerning ZFC theory and ql.mm develops a set of quantum logic theorems. Three internet interfaces (the Metamath Proof Explorer, the Hilbert Space Explorer and the Quantum Logic Explorer) are provided to explore these two databases in a human friendly way. set.mm is by far the biggest database written for Metamath, but there is also a formalization (by Robert Solovay) of Peano arithmetic called peano.mm (included in metamath.zip) and a formalization of natural deduction called nat.mm.[4] There is a database based on the formal system MIU presented in Gödel, Escher, Bach. Raph Levien has also designed several databases for his Ghilbert program. Metamath Proof Explorer{{Infobox Website| name = Metamath Proof Explorer |screenshot = |caption = A proof of the Metamath Proof Explorer | url = us.metamath.org/mpegif/mmset.html | alexa = {{Gain}} 797,698 ({{as of|2019|2|2|alt=February 2019}})[5] | commercial = No | location = USA | type = Internet encyclopedia project | registration = No | author = Norman Megill | owner = Norman Megill }} Metamath has been used to develop set.mm, a human-readable database containing over 30,000 ({{as of|March 2017}}) fully formal proofs of mathematical theorems built upon ZFC set theory. Those proofs may be browsed on the internet using an interface called Metamath Proof Explorer. New theorems are added to set.mm daily; a table of the most recent proofs is maintained.[2] One of the seminal ideas that lead Megill to design Metamath was the desire to precisely determine the correctness of some proofs ("I enjoy abstract mathematics, but I sometimes get lost in a barrage of definitions and start to lose confidence that my proofs are correct."[6]), we can also think that the spirit of the Encyclopedia animates the growing up of Metamath and its most important database (called set.mm). Reading set.mm we may have sometimes the impression that the ambition of its author is essentially to add all the mathematics one theorem after the other. set.mm has been maintained for twenty years now (the first proofs in set.mm are dated August 1993). It is mainly a work by Norman Megill but there are also proofs made by other participants. Technically speaking set.mm develops—in the Hilbert style—ZFC set theory with the addition of the Grothendieck-Tarski axiom (to manage categories). The underlying logic is classical propositional calculus and classical predicate calculus with equality. set.mm is a valuable tool to understand how well-known set theory concepts such as classes, power sets, union, relations, functions, equivalence classes and so on are derived from the axioms. However set.mm doesn't stop at these basic notions but explores more elaborated theories. Cantor concepts such as ordinal and cardinal numbers, equinumerosity or aleph function are defined. Integers and natural numbers are constructed along with traditional arithmetic tools such as operations, recursion or induction. The real and complex numbers are constructed from Dedekind cuts, and the concepts of sequence, limit of a sequence, sum of a series and so on are developed for them. The concept of integral is still missing. Square root, exponentiation, exponential and trigonometric functions are implemented. General topology is currently developed: topological spaces, closed and open sets, neighborhood, limit point, continuous function, Hausdorff spaces, metric spaces, Cauchy sequences have been defined. One can also find some theorems of algebra concerning groups, rings, vector spaces, and Hilbert spaces. Hilbert Space ExplorerThe Hilbert Space Explorer presents more than 1,000 theorems pertaining to the Hilbert space theory. Those theorems are included in set.mm. They are not shown in the Metamath Proof Explorer because they have been developed by adding extra axioms to the standard axioms of set.mm. ZFC is weakened by this adding which explains why the resulting proofs are shown in a separate Explorer. This adding (justified by historical opportunity reasons) is theoretically useless since the concept of Hilbert space can be designed with the standard ZFC axioms. Quantum Logic ExplorerQuantum logic theorems can be found in the database ql.mm. The Quantum Logic Explorer is an internet interface to this database.[7]PedagogyThe method of proof used by Metamath is far different from what is used in a school context. In schools what is required is the literate, synthetic method of proof developed by mathematicians since Euclid's time.[8][9] In Metamath, the method of proof is the symbolic, analytical method of proof invented by Aristotle, Leibniz, Peano, and Frege. Thus, Metamath is unsuitable for school exercises. To speak simply, the proofs in Metamath are much too detailed to be used with ease in school. However, set.mm can be used in a school context as an example of a symbolic system that is big enough to be interesting. set.mm can also be useful because its detailed, symbolic, unambiguous definitions can resolve confusion with textbook definitions. Students may also appreciate the rigor of the Metamath Proof Explorer; no steps are skipped, no assumption left unstated, and no proofs are left "to the reader". The Proof Explorer references many text books that can be used in conjunction with Metamath.[10] Thus, people interested in studying mathematics can use Metamath in connection with these books. Other works connected to MetamathProof checkersUsing the design ideas implemented in Metamath, Raph Levien has implemented very small proof checker, mmverify.py, at only 500 lines of Python code. Ghilbert is a similar though more elaborate language based on mmverify.py.[11] Levien would like to implement a system where several people could collaborate and his work is emphasizing modularity and connection between small theories. Using Levien seminal works, many other implementations of the Metamath design principles have been implemented for a broad variety of languages. Juha Arpiainen has implemented his own proof checker in Common Lisp called Bourbaki[12] and Marnix Klooster has coded a proof checker in Haskell called Hmm.[13] Although they all use the overall Metamath approach to formal system checker coding, they also implement new concepts of their own. EditorsMel O'Cat designed a system called Mmj2, which provides a graphic user interface for proof entry.[14] The initial aim of Mel O'Cat was to allow the user to enter the proofs by simply typing the formulas and letting Mmj2 find the appropriate inference rules to connect them. In Metamath on the contrary you may only enter the theorems names. You may not enter the formulas directly. Mmj2 has also the possibility to enter the proof forward or backward (Metamath only allows to enter proof backward). Moreover Mmj2 has a real grammar parser (unlike Metamath). This technical difference brings more comfort to the user. In particular Metamath sometimes hesitates between several formulas analyzes (most of them being meaningless) and asks the user to choose. In Mmj2 this limitation no longer exists. There is also a project by William Hale to add a graphical user interface to Metamath called Mmide.[15] Paul Chapman in its turn is working on a new proof browser, which has highlighting that allows you to see the referenced theorem before and after the substitution was made. See also
References1. ^{{cite web | author=Megill, Norman | title=What is Metamath? | work=Metamath Home Page | url=http://us.metamath.org/#faq}} 2. ^1 {{ cite web | title=Most recent proofs | author=Megill, Norman | work=Metamath Proof Explorer | url=http://us2.metamath.org:8888/mpegif/mmrecent.html }} 3. ^{{cite web | author=Megill,Norman | title=How Proofs Work | work=Metamath Proof Explorer Home Page | url=http://us.metamath.org/mpegif/mmset.html#proofs}} 4. ^{{cite web | author=Liné, Frédéric | title=Natural deduction based Metamath system | url=http://wiki.planetmath.org/cgi-bin/wiki.pl/Natural_deduction_based_metamath_system | deadurl=yes | archiveurl=https://archive.is/20121228041230/http://wiki.planetmath.org/cgi-bin/wiki.pl/Natural_deduction_based_metamath_system | archivedate=2012-12-28 | df= }} 5. ^{{cite web|url= http://www.alexa.com/siteinfo/metamath.org |title= Metamath.org Site Info | publisher= Alexa Internet |accessdate= 2019-02-02 }} 6. ^{{cite web | url=http://us.metamath.org/downloads/metamath.pdf | title=Metamath: A Computer Language for Pure Mathematics | last=Megill | format=PDF | ISBN=978-1-4116-3724-5 | publisher=Lulu Press, Morrisville, North Carolina}} p. xi 7. ^{{cite web | url=http://us2.metamath.org:8888/qlegif/mmql.html | title=Quantum Logic Explorer Home Page | work=Quantum Logic Explorer | author=Norman Megill and Mladen Pavičić}} 8. ^{{cite web | author=Megill, Norman | title=Mathematical vernacular | url=http://wiki.planetmath.org/cgi-bin/wiki.pl/Mathematical_Vernacular | deadurl=yes | archiveurl=https://archive.is/20121228085557/http://wiki.planetmath.org/cgi-bin/wiki.pl/Mathematical_Vernacular | archivedate=2012-12-28 | df= }} 9. ^{{cite web | author=Wiedijk, Freek | title=The mathematical vernacular | url=http://www.cs.ru.nl/~freek/notes/mv.pdf | format=PDF}} 10. ^{{cite web | author=Megill, Norman | title=Reading suggestions | work=Metamath |url=http://us2.metamath.org:8888/mpegif/mmset.html#read}} 11. ^{{cite web | author=Levien,Raph | title=Ghilbert | url=https://ghilbert-app.appspot.com}} 12. ^{{cite web | author=Arpiainen, Juha | title=Presentation of Bourbaki | url=http://wiki.planetmath.org/cgi-bin/wiki.pl/Bourbaki_proof_checker | deadurl=yes | archiveurl=https://archive.is/20121228115800/http://wiki.planetmath.org/cgi-bin/wiki.pl/Bourbaki_proof_checker | archivedate=2012-12-28 | df= }} 13. ^{{cite web | author=Klooster,Marnix | title=Presentation of Hmm | url=http://wiki.planetmath.org/cgi-bin/wiki.pl/Hmm | deadurl=yes | archiveurl=https://web.archive.org/web/20120402081636/http://wiki.planetmath.org/cgi-bin/wiki.pl/Hmm | archivedate=2012-04-02 | df= }} 14. ^{{cite web|author=O'Cat,Mel |title=Presentation of mmj2 |url=http://wiki.planetmath.org/cgi-bin/wiki.pl/mmj2 |deadurl=yes |archiveurl=https://web.archive.org/web/20131219001737/http://wiki.planetmath.org/cgi-bin/wiki.pl/mmj2 |archivedate=December 19, 2013 }} 15. ^{{cite web | author=Hale, William | title=Presentation of mmide | url=http://wiki.planetmath.org/cgi-bin/wiki.pl/mmide | deadurl=yes | archiveurl=https://archive.is/20121228044320/http://wiki.planetmath.org/cgi-bin/wiki.pl/mmide | archivedate=2012-12-28 | df= }} External links
4 : Proof assistants|Large-scale mathematical formalization projects|Educational math software|Free mathematics software |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。