<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Formalized Mathematics</title>
	<atom:link href="http://slawekk.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://slawekk.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Sun, 12 May 2013 16:56:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='slawekk.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Formalized Mathematics</title>
		<link>http://slawekk.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://slawekk.wordpress.com/osd.xml" title="Formalized Mathematics" />
	<atom:link rel='hub' href='http://slawekk.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Gowers and Ganesalingam</title>
		<link>http://slawekk.wordpress.com/2013/05/12/gowers-and-ganesalingam/</link>
		<comments>http://slawekk.wordpress.com/2013/05/12/gowers-and-ganesalingam/#comments</comments>
		<pubDate>Sun, 12 May 2013 13:25:01 +0000</pubDate>
		<dc:creator>slawekk</dc:creator>
				<category><![CDATA[mathematics]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[mathematical software]]></category>

		<guid isPermaLink="false">http://slawekk.wordpress.com/?p=793</guid>
		<description><![CDATA[There is a series of posts at the Timothy Gowers&#8217;s blog about software that can &#8220;solve mathematical problems&#8221; which he has been working on with Mohan Ganesalingam for the last three years. The word &#8220;problems&#8221; is used here in the way a mathematician would use it &#8211; it&#8217;s really about software that can support a [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=793&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>There is a series of posts at the <a title="Gowers's blog" href="http://gowers.wordpress.com/">Timothy Gowers&#8217;s blog</a> about software that can &#8220;solve mathematical problems&#8221; which he has been working on with Mohan Ganesalingam for the last three years. The word &#8220;problems&#8221; is used here in the way a mathematician would use it &#8211; it&#8217;s really about software that can support a mathematician trying to write a proof of a theorem. The goal is for the program to write proofs that look like ones produced by a human. The experiment Gowers sets up on his blog presents several theorems with proofs written by two humans (an undergraduate and a graduate student) and one created by the program and asks the readers to guess which proofs are written  by whom. The results are truly remarkable &#8211; while I, and most of the audience, could have a good guess which proof is written by the software, I believe I could guess it only because I had known one of the three proofs was such. If a student submitted such proof as homework to me, I would have no suspicion at all.</p>
<p><span id="more-793"></span>There is not much information on how the software works (it&#8217;s written in Haskell btw.), but one stands out for me:</p>
<blockquote><p>One thing that humans do <em>not</em> do is rewrite all their statements in low-level language and work directly from the axioms of set theory. So our program doesn’t do that either.</p></blockquote>
<p>So this is not a tool for formalized mathematics. I have always considered such attempts of doing mathematics on a computer that try to emulate the way humans think and are not based on solid formal foundations as a dead end. However after some thinking I do see that the software may have useful applications the same way Computer Algebra Systems have.  In its ultimate form the program would be equipped with a large data base of mathematical facts (the <a title="CYC" href="http://www.cise.ufl.edu/~ddd/cap6635/Fall-97/Short-papers/36.htm" target="_blank">CYC</a> style) and perhaps a modular library of tactics (for the lack of better word) that emulate various approaches humans apply to solving problems. Using that, the program  will be able to rapidly search for proofs that may or may not be entirely correct, but still very convincing for humans. There will be two sources of correctness errors. First of all without formal foundation the meaning of the facts in the database will be fuzzy. Second, if the facts in the database are input by humans they may be syntactically OK (that can be checked by the machine), but semantically wrong. People just make mistakes and the number of such mistakes can be reduced only by a an extensive human review process which would be very costly to set up on a larger scale. Most of the errors will be easy to spot, because the program can write proofs in a clear style that is easier for a reviewer to check. However, some errors can be very difficult to notice since generally the proofs will sound convincing (a design goal) and almost all of them will be correct.</p>
<p>Of course the hope is that the program can be used not only by undergraduate math majors cheating with their homework, but also by serious researches trying to come up with new theorems. I still think that the chances for that are rather small.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/slawekk.wordpress.com/793/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/slawekk.wordpress.com/793/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=793&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://slawekk.wordpress.com/2013/05/12/gowers-and-ganesalingam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f0b149bf16959cf73a06bf8dae8298a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slawekk</media:title>
		</media:content>
	</item>
		<item>
		<title>IsarMathLib 1.8.0 released</title>
		<link>http://slawekk.wordpress.com/2013/02/25/isarmathlib-1-8-0-released/</link>
		<comments>http://slawekk.wordpress.com/2013/02/25/isarmathlib-1-8-0-released/#comments</comments>
		<pubDate>Mon, 25 Feb 2013 13:34:53 +0000</pubDate>
		<dc:creator>slawekk</dc:creator>
				<category><![CDATA[announcements]]></category>
		<category><![CDATA[IsarMathLib releases]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://slawekk.wordpress.com/?p=785</guid>
		<description><![CDATA[I have released the 1.8.0 version of IsarMathLib. This version works with the new Isabelle2013 (released about two weeks ago). The new material in this release mostly comes from contributions by Daniel de la Concepción Sáez, who added 5 theory files with about a hundred theorems about general topology. The subjects range from convergence of [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=785&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I have released the <a title="isarmathlib-1.8.0.tar.gz" href="http://download.savannah.gnu.org/releases/isarmathlib/isarmathlib-1.8.0.tar.gz">1.8.0</a> version of <a href="http://www.nongnu.org/isarmathlib/">IsarMathLib</a>. This version works with the new <a title="Isabelle2013" href="http://www.cl.cam.ac.uk/research/hvg/Isabelle/">Isabelle2013</a> (released about two weeks ago). The new material in this release mostly comes from contributions by Daniel de la Concepción Sáez, who added 5 theory files with about a hundred theorems about general topology. The subjects range from convergence of nets and filters and related continuity properties of functions, through some generalized notions of compactness and connectedness, to rather abstract (like, category theory abstract) subjects of heredity and spectra of topological properties. Unfortunately, it will take some time before those theories will be presented on the <a title="IsarMathLib.org" href="http://isarmathlib.org">FormalMath.org</a> site, as my parser is not good enough to parse Daniel&#8217;s advanced Isar style.  I will work on this though and in the meantime an interested reader can have a look at the Isabelle generated full <a title="IsarMathLib Proof Document" href="http://www.nongnu.org/isarmathlib/IsarMathLib/document.pdf">proof document</a> or the <a title="IsarMathLib Outline" href="http://www.nongnu.org/isarmathlib/IsarMathLib/outline.pdf">outline</a>.</p>
<p>As for myself, I have finished the proof that the function <img src='http://s0.wp.com/latex.php?latex=%28x_0%2C+x_1%2C...%2Cx_%7Bn-1%7D%29%5Cmapsto+%5Csum_%7Bi%3D0%7D%5E%7Bn-1%7Dx_i&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='(x_0, x_1,...,x_{n-1})&#92;mapsto &#92;sum_{i=0}^{n-1}x_i' title='(x_0, x_1,...,x_{n-1})&#92;mapsto &#92;sum_{i=0}^{n-1}x_i' class='latex' /> is continuous in the natural topology on the space of <img src='http://s0.wp.com/latex.php?latex=n&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='n' title='n' class='latex' />-element sequences of a topological group.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/slawekk.wordpress.com/785/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/slawekk.wordpress.com/785/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=785&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://slawekk.wordpress.com/2013/02/25/isarmathlib-1-8-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f0b149bf16959cf73a06bf8dae8298a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slawekk</media:title>
		</media:content>
	</item>
		<item>
		<title>Scala</title>
		<link>http://slawekk.wordpress.com/2012/10/26/scala/</link>
		<comments>http://slawekk.wordpress.com/2012/10/26/scala/#comments</comments>
		<pubDate>Fri, 26 Oct 2012 13:37:15 +0000</pubDate>
		<dc:creator>slawekk</dc:creator>
				<category><![CDATA[Haskell]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://slawekk.wordpress.com/?p=764</guid>
		<description><![CDATA[One thing that I like working for my company is that it tries to evaluate new technologies from time to time. About a year ago I got a task to learn Scala by writing a small internally used tool in it and share my impressions. The main question I was supposed to answer was: &#8220;Should [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=764&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>One thing that I like working for my company is that it tries to evaluate new technologies from time to time. About a year ago I got a task to learn Scala by writing a small internally used tool in it and share my impressions. The main question I was supposed to answer was: &#8220;Should we use Scala (instead of Java) to implement the next iteration of one of our products?&#8221;.  I had a feeling that my boss would have liked me to answer enthusiastically &#8220;yes!&#8221; to that question. And I really liked the language. However, my answer was &#8220;probably not&#8221;.</p>
<p><span id="more-764"></span></p>
<h4>What I liked about Scala</h4>
<p>I don&#8217;t want to write about all the advantages of Scala. After a small project I don&#8217;t think I have anything meaningful to add to the things other people have written. It&#8217;s a functional language. It feels like Haskell &#8211; if it compiles, it most likely runs OK.  I was amazed by the type system &#8211; supporting both  Java classes and functional programming in a Haskell-like statically typed language and not running into some fundamental show-stoppers is quite incredible. I used IntelliJ IDE to write the code and after overcoming the initial Maven integration problems it worked fine. It&#8217;s the first time I worked with Java style IDE and I liked all the help it gives. The compilation times were long, but IDE checks syntax on the fly, so there is no need to build something just to see if it builds.</p>
<h4>What I didn&#8217;t like about Scala</h4>
<p>Nothing specifically about Scala. It was my first encounter with programming in the Java world. I got a general sense of bloat and fragility. More than half of the time I was struggling with configurations and set ups &#8211; IntelliJ, Maven, Jenkins, Artifactory and interactions between all that. Some of the problems could have been the result of my lack of experience, some was due to Scala being somewhat nonstandard for those tools, so it was more difficult to find solutions on the web. Another problem I had was a different idea on the tradeoff between writing your own code and using an external library to do things.</p>
<h4>So why &#8220;probably not&#8221;?</h4>
<p>In my evaluation I looked both at success and failure stories (which not surprisingly were more difficult to find). I think evaluating possibility of switching the development to Scala management may make two mistakes. One is thinking that this is a technical problem &#8211; they try to identify problem domains where &#8220;Scala is best&#8221; and since what the company makes fits the advertised Scala strengths (large scale, concurrent, Java legacy code etc) they hope that Scala will bring gains in productivity. I think the main criterion for taking the risk of switching to Scala should not be the kind of software you write but the kind of developers team you have. The second mistake is made by people who understand that this is a people problem, but think that since they have very talented and experienced Java developers (or are planning to hire such), they should be OK. Here is the heart of the problem:</p>
<h4>Scala is not a better Java, it&#8217;s an ML for JVM</h4>
<p>If you don&#8217;t know what I mean here, that&#8217;s probably what I mean.</p>
<p>The problem is a bit wider than Java vs. Scala. It&#8217;s more like imperative vs. functional programming. I believe OO and imperative programming is fundamentally closer to the natural way human brains are wired. To feel comfortable with functional programming one has to either have a (rare) natural talent for this particular abstraction or have a brain warped by years of training (in mathematics for example like myself). This is one of those barriers that are invisible for people who are on the other side of them. This is the main reason why functional programming languages are so dominated by imperative ones in all popularity statistics.</p>
<p>An alternative view is that the only reason most people find it easier to formulate algorithms in the imperative way is that this is what they first encountered in their education. If their first programming language was functional, then we would see the opposite result. I admit that this imprinting effect may exist to some degree, but I don&#8217;t think it is important. I would have to see a well designed experiment to change my opinion.</p>
<p>I have seen opinions that the difficulty of switching to the functional style is something that happens to &#8220;average&#8221; programmers. For good, smart and eager to learn ones functional programming is natural. I think this is an illusion. In fact, very experienced and productive Java programmers have even more reasons to resist the switch, especially if it is unilaterally imposed by the management.</p>
<p>So what kind of a team will benefit from switching to Scala and when this will most likely lead to failure? There is one good proxy criterion: if the team wants Scala, they will like it and there is a good chance for success. If the switch is something that they have to do because of a management decision, there is a high probability of failure.</p>
<p>So, may recommendation was &#8220;Scala? Probably not, at least not now&#8221;. I have a little bit of hope that it will be ignored and I will get to have fun with Scala some day again.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/slawekk.wordpress.com/764/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/slawekk.wordpress.com/764/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=764&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://slawekk.wordpress.com/2012/10/26/scala/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f0b149bf16959cf73a06bf8dae8298a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slawekk</media:title>
		</media:content>
	</item>
		<item>
		<title>IsarMathLib 1.7.5</title>
		<link>http://slawekk.wordpress.com/2012/10/09/isarmathlib-1-7-5/</link>
		<comments>http://slawekk.wordpress.com/2012/10/09/isarmathlib-1-7-5/#comments</comments>
		<pubDate>Tue, 09 Oct 2012 07:36:50 +0000</pubDate>
		<dc:creator>slawekk</dc:creator>
				<category><![CDATA[announcements]]></category>
		<category><![CDATA[IsarMathLib releases]]></category>
		<category><![CDATA[formalized mathematics]]></category>

		<guid isPermaLink="false">http://slawekk.wordpress.com/?p=761</guid>
		<description><![CDATA[The 1.7.5 version of IsarMathLib has been released. The new formal math there consists of two theory files contributed by Daniel de la Concepción Sáez with over 70 theorems about various examples of topological spaces.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=761&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The 1.7.5 version of <a title="IsarMathLib" href="http://www.nongnu.org/isarmathlib/">IsarMathLib</a> has been released. The new formal math there consists of <a title="Topology_ZF_examples" href="http://www.nongnu.org/isarmathlib/IsarMathLib/Topology_ZF_examples.html">two</a> <a title="Topology_ZF_examples_1" href="http://www.nongnu.org/isarmathlib/IsarMathLib/Topology_ZF_examples_1.html">theory</a> files contributed by Daniel de la Concepción Sáez with over 70 theorems about various examples of topological spaces.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/slawekk.wordpress.com/761/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/slawekk.wordpress.com/761/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=761&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://slawekk.wordpress.com/2012/10/09/isarmathlib-1-7-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f0b149bf16959cf73a06bf8dae8298a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slawekk</media:title>
		</media:content>
	</item>
		<item>
		<title>Installing Isabelle</title>
		<link>http://slawekk.wordpress.com/2012/09/17/installing-isabelle/</link>
		<comments>http://slawekk.wordpress.com/2012/09/17/installing-isabelle/#comments</comments>
		<pubDate>Mon, 17 Sep 2012 18:50:08 +0000</pubDate>
		<dc:creator>slawekk</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Isabelle]]></category>

		<guid isPermaLink="false">http://slawekk.wordpress.com/?p=737</guid>
		<description><![CDATA[I am recovering from a hardware failure that resulted in the loss of my encrypted home partition, so I had to install Isabelle. Here are quick notes on what is needed on Ubuntu 12.04. 1. Download Isabelle. The installation is just unpacking to the directory of your choice, I unpacked it to ~/bin. That created [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=737&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I am recovering from a hardware failure that resulted in the <a title="Ubuntu forum post" href="http://ubuntuforums.org/showthread.php?t=2057333">loss</a> of my encrypted home partition, so I had to install Isabelle. Here are quick notes on what is needed on Ubuntu 12.04.</p>
<p>1. <a title="Isabelle" href="http://www.cl.cam.ac.uk/research/hvg/isabelle/">Download</a> Isabelle. The installation is just unpacking to the directory of your choice, I unpacked it to ~/bin. That created a directory ~/bin/Isabelle2012.</p>
<p>2. Edit ~/bin/Isabelle2012/etc/settings file to change the default logic to ISABELLE_LOGIC=ZF.</p>
<p>3. Run &#8220;build ZF&#8221; in the ~/bin/Isabelle2012 directory. This builds the ZF heap image. Isabelle ships with only HOL image precompiled.</p>
<p>4. Install openjdk-6-jre, texlive-latex-base and texlive-latex-extra packages. It&#8217;s the first time I am using openjdk instead of Sun Java, but so far I haven&#8217;t noticed any issues. The texlive-latex-extra package is for comment.sty file that is needed for LaTeX processing of proof documents.</p>
<p>5. Start Isabelle jEdit interface with  ~/bin/Isabelle2012/bin/isabelle jedit and correct the font size in Utilities/Global Options/jEdit/Text Area/Text font. Isabelle ships with the font size 18.</p>
<p>That&#8217;s pretty much all that is needed to have Isabelle ready for IsarMathLib contributions.</p>
<p>Update Aug 10th 2012: Turns out installing Java is <a title="Isabelle2012 and Java" href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/2012-October/msg00010.html">not necessary</a> as the bundle already contains a suitable JDK.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/slawekk.wordpress.com/737/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/slawekk.wordpress.com/737/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=737&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://slawekk.wordpress.com/2012/09/17/installing-isabelle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f0b149bf16959cf73a06bf8dae8298a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slawekk</media:title>
		</media:content>
	</item>
		<item>
		<title>The Russell proof language</title>
		<link>http://slawekk.wordpress.com/2012/08/19/the-russell-proof-language/</link>
		<comments>http://slawekk.wordpress.com/2012/08/19/the-russell-proof-language/#comments</comments>
		<pubDate>Sun, 19 Aug 2012 11:07:40 +0000</pubDate>
		<dc:creator>slawekk</dc:creator>
				<category><![CDATA[reviews]]></category>
		<category><![CDATA[formalized mathematics]]></category>
		<category><![CDATA[Metamath]]></category>
		<category><![CDATA[proof language]]></category>
		<category><![CDATA[Russell]]></category>

		<guid isPermaLink="false">http://slawekk.wordpress.com/?p=725</guid>
		<description><![CDATA[I have thought for a long time that it would be nice to have a high-level proof language with a prover that would compile that to an easy to verify and still readable low level language. A good candidate for the low-level part would be Metamath. I have recently found out about Russel &#8211; a [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=725&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I have thought for a <a title="PlanetMath" href="http://wiki.planetmath.org/cgi-bin/wiki.pl/Ghilbert_and_HDM">long time</a> that it would be nice to have a high-level proof language with a prover that would compile that to an easy to verify and still readable low level language. A good candidate for the low-level part would be Metamath. I have recently found out about <a title="Russell" href="http://russellmath.org/">Russel</a> &#8211; a high-level proof language created by Dmitri Yurievich Vlasov that compiles to (a simplified version of) Metamath. The Russell project on <a title="Math Development Language" href="http://sourceforge.net/projects/mathdevlanguage/">Sourceforge</a> was last updated in February 2011, so it seems to be unused and abandoned. There is a <a title="Russell paper" href="http://www.zentralblatt-math.org/zmath/en/search/?q=an:06055320&amp;type=pdf&amp;format=complete">paper</a> (in Russion) that describes Russell. Unfortunately I don&#8217;t have access to the journal where it was published.</p>
<p><span id="more-725"></span><br />
I downloaded the tar file and played a bit with the contents. The amount of work that went to the Russell project is staggering: almost 60000 lines of GPL licensed C++ code (very nicely written, btw) and 3800 lines of shell scripts. The scripts mostly do tests described on the Russell page. The compression test in particular is very interesting &#8211; it decompiles Metamath proofs to Russel and then tries to reduce them to the minimal number of steps from which the full Metamath proof can be restored with the prover. I run the compression test on the full Metamath database (included in the Russel&#8217;s distribution) with the recommended parameter N=300 (meaning that one in 300 proofs will be compressed). The results were not that amazing &#8211; out of 40 proofs for which the compression was attempted, only in two cases the prover managed to reduce the number of steps. In one case the length of the proof was reduced from 8 to 7 steps and in the other case from 12 to 4.<br />
For the second case the original decompiled theorem looks like this:</p>
<pre class="brush: plain; title: ; notranslate">
theorem eqfnfvf2 (var x : set , var y : set , var A : class , var F : class , var G : class )
{
hyp 1 : wff = |- ( ( y ∈ F ) → ∀ x ( y ∈ F ) ) ;
hyp 2 : wff = |- ( ( y ∈ G ) → ∀ x ( y ∈ G ) ) ;
-----------------
prop : wff = |- ( ( ( F 𝐅𝐧 A ) ∧ ( G 𝐅𝐧 A ) ) → ( ( F = G ) ↔ ∀ x ∈ A ( ( F ` x ) = ( G ` x ) ) ) ) ;
}
proof /*  [22-Mar-2009]  */ /*  [29-Jan-2004]  */ {
var z : set ;
step 1 : wff = theorem eqfnfv2 () |- ( ( ( F 𝐅𝐧 A ) ∧ ( G 𝐅𝐧 A ) ) → ( ( F = G ) ↔ ∀ z ∈ A ( ( F ` z ) = ( G ` z ) ) ) ) ;
step 2 : wff = axiom ax-17 () |- ( ( y ∈ z ) → ∀ x ( y ∈ z ) ) ;
step 3 : wff = theorem hbfv (hyp 1, step 2) |- ( ( y ∈ ( F ` z ) ) → ∀ x ( y ∈ ( F ` z ) ) ) ;
step 4 : wff = axiom ax-17 () |- ( ( y ∈ z ) → ∀ x ( y ∈ z ) ) ;
step 5 : wff = theorem hbfv (hyp 2, step 4) |- ( ( y ∈ ( G ` z ) ) → ∀ x ( y ∈ ( G ` z ) ) ) ;
step 6 : wff = theorem hbeq (step 3, step 5) |- ( ( ( F ` z ) = ( G ` z ) ) → ∀ x ( ( F ` z ) = ( G ` z ) ) ) ;
step 7 : wff = axiom ax-17 () |- ( ( ( F ` x ) = ( G ` x ) ) → ∀ z ( ( F ` x ) = ( G ` x ) ) ) ;
step 8 : wff = theorem fveq2 () |- ( ( z = x ) → ( ( F ` z ) = ( F ` x ) ) ) ;
step 9 : wff = theorem fveq2 () |- ( ( z = x ) → ( ( G ` z ) = ( G ` x ) ) ) ;
step 10 : wff = theorem eqeq12d (step 8, step 9) |- ( ( z = x ) → ( ( ( F ` z ) = ( G ` z ) ) ↔ ( ( F ` x ) = ( G ` x ) ) ) ) ;
step 11 : wff = theorem cbvral (step 6, step 7, step 10) |- ( ∀ z ∈ A ( ( F ` z ) = ( G ` z ) ) ↔ ∀ x ∈ A ( ( F ` x ) = ( G ` x ) ) ) ;
step 12 : wff = theorem syl6bb (step 1, step 11) |- ( ( ( F 𝐅𝐧 A ) ∧ ( G 𝐅𝐧 A ) ) → ( ( F = G ) ↔ ∀ x ∈ A ( ( F ` x ) = ( G ` x ) ) ) ) ;
qed prop = step 12 ;
}
</pre>
<p>This gives some idea on the syntax of the Russell language. I would say it is very readable, although it is funny how it resembles C++. Unfortunately the distribution does not provide any sample of human-written Russel code or tutorial on the syntax of the language. The original proof syntax is somewhat similar to what one gets from the SHOW STATEMENT and SHOW PROOF command in Metamath.</p>
<pre class="brush: plain; title: ; notranslate">
MM&gt; SHOW STATEMENT eqfnfvf2
$d x A $.  $d y F $.  $d y G $.  $d x y $.
13784 eqfnfvf2.1 $e |- ( y e. F -&gt; A. x y e. F ) $.
13785 eqfnfvf2.2 $e |- ( y e. G -&gt; A. x y e. G ) $.
13786 eqfnfvf2 $p |- ( ( F Fn A /\ G Fn A ) -&gt; ( F = G &lt;-&gt; A. x e. A ( F ` x )
= ( G ` x ) ) ) $= ... $.

MM&gt; SHOW PROOF eqfnfvf2
39   syl6bb.1=eqfnfv2  $p |- ( ( F Fn A /\ G Fn A ) -&gt; ( F = G &lt;-&gt; A. z e. A (
F ` z ) = ( G ` z ) ) )
77         hbfv.1=eqfnfvf2.1 $e |- ( y e. F -&gt; A. x y e. F )
84         hbfv.2=ax-17      $a |- ( y e. z -&gt; A. x y e. z )
85       hbeq.1=hbfv       $p |- ( y e. ( F ` z ) -&gt; A. x y e. ( F ` z ) )
91         hbfv.1=eqfnfvf2.2 $e |- ( y e. G -&gt; A. x y e. G )
98         hbfv.2=ax-17      $a |- ( y e. z -&gt; A. x y e. z )
99       hbeq.2=hbfv       $p |- ( y e. ( G ` z ) -&gt; A. x y e. ( G ` z ) )
100     cbvral.1=hbeq     $p |- ( ( F ` z ) = ( G ` z ) -&gt; A. x ( F ` z ) = ( G
` z ) )
111     cbvral.2=ax-17    $a |- ( ( F ` x ) = ( G ` x ) -&gt; A. z ( F ` x ) = ( G
` x ) )
138       eqeq12d.1=fveq2   $p |- ( z = x -&gt; ( F ` z ) = ( F ` x ) )
144       eqeq12d.2=fveq2   $p |- ( z = x -&gt; ( G ` z ) = ( G ` x ) )
145     cbvral.3=eqeq12d  $p |- ( z = x -&gt; ( ( F ` z ) = ( G ` z ) &lt;-&gt; ( F ` x
) = ( G ` x ) ) )
146   syl6bb.2=cbvral   $p |- ( A. z e. A ( F ` z ) = ( G ` z ) &lt;-&gt; A. x e. A (
F ` x ) = ( G ` x ) )
147 eqfnfvf2=syl6bb   $p |- ( ( F Fn A /\ G Fn A ) -&gt; ( F = G &lt;-&gt; A. x e. A ( F
` x ) = ( G ` x ) )

</pre>
<p>After the compression the proof is as follows:</p>
<pre class="brush: plain; title: ; notranslate">
problem eqfnfvf2 (var x : set, var y : set, var A : class, var F : class, var G : class)
{
hyp 1 : wff = |- ( ( y ∈ F ) → ∀ x ( y ∈ F ) ) ;
hyp 2 : wff = |- ( ( y ∈ G ) → ∀ x ( y ∈ G ) ) ;
-----------------
prop : wff = |- ( ( ( F 𝐅𝐧 A ) ∧ ( G 𝐅𝐧 A ) ) → ( ( F = G ) ↔ ∀ x ∈ A ( ( F ` x ) = ( G ` x ) ) ) ) ;
}
proof /*  [22-Mar-2009]  */ /*  [29-Jan-2004]  */ {
var z : set;
step 1 : wff = ? |- ( ( z = x ) → ( ( F ` z ) = ( F ` x ) ) )  ;
step 2 : wff = ? |- ( ( z = x ) → ( ( G ` z ) = ( G ` x ) ) )  ;
step 3 : wff = ? |- ( ( z = x ) → ( ( ( F ` z ) = ( G ` z ) ) ↔ ( ( F ` x ) = ( G ` x ) ) ) )  ;
step 4 : wff = ? |- ( ( ( F 𝐅𝐧 A ) ∧ ( G 𝐅𝐧 A ) ) → ( ( F = G ) ↔ ∀ x ∈ A ( ( F ` x ) = ( G ` x ) ) ) )  ;
qed prop 1 = step 4 ;
}
</pre>
<p>One can see two differences &#8211; the keyword &#8220;problem&#8221; is used instead of &#8220;theorem&#8221; and the lack of theorem references in the proof steps. My understanding is that the prover can find the correct references and reconstruct the complete 12 steps Metamath proof from just this sequence of four assertions. That&#8217;s very good, but in practice such approach seldom works well as evidenced by the compression statistics. In Isar this works (from the user perspective, I have no idea what happens internally) somewhat differently: there is a certain subset of theorems that are &#8220;added to the simplifier&#8221; and may be considered by user as common knowledge. To justify a step in a proof the user must reference only the theorems that are needed but are not in the simplifier. So for every step there is a different set of assertions that are used when searching for the proof. This set consists of the theorems in the simplifier, additional references provided by the proof author for this step and the hypotheses of the proof step, that must be either previously proven steps or come from the hypotheses of the theorem. Maybe defining such dynamic proof search space for each proof step is possible in Russell, I dont&#8217; know.<br />
Another feature that in my opinion is important for a formal proof language but seems to be missing in Russell is the structuring of proof. The structure of the Russel proof is linear without the possiblility of creating subproofs for intermediate results. Such feature is a good way to cope with overwhelming amount of detail that is typical for formal proofs and allows a reader to set the amount of detail she wants to be shown by the presentation layer. Again, maybe this is possible in Russel, but there is no example of such syntax in the automatically generated Russell code I looked at.<br />
Judging from hits in search engines the Russell project is abandoned and unused. I think it deserves at least that more people know about it and maybe someone will base his idea or code on Russell.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/slawekk.wordpress.com/725/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/slawekk.wordpress.com/725/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=725&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://slawekk.wordpress.com/2012/08/19/the-russell-proof-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f0b149bf16959cf73a06bf8dae8298a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slawekk</media:title>
		</media:content>
	</item>
		<item>
		<title>IsarMathLib 1.7.4</title>
		<link>http://slawekk.wordpress.com/2012/06/30/isarmathlib-1-7-4/</link>
		<comments>http://slawekk.wordpress.com/2012/06/30/isarmathlib-1-7-4/#comments</comments>
		<pubDate>Sat, 30 Jun 2012 12:44:05 +0000</pubDate>
		<dc:creator>slawekk</dc:creator>
				<category><![CDATA[announcements]]></category>
		<category><![CDATA[IsarMathLib releases]]></category>
		<category><![CDATA[formalized mathematics]]></category>
		<category><![CDATA[weirdmath]]></category>

		<guid isPermaLink="false">http://slawekk.wordpress.com/?p=677</guid>
		<description><![CDATA[I have released version 1.7.4 of IsarMathLib. The new formal math there is a mostly in the Topology_ZF_3 theory about  topologies on function spaces. This is needed to show that the function is continuous on where is a topological group. This will be my goal for the next release. I am happy to report that [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=677&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I have released version 1.7.4 of<a title="IsarMathLib" href="http://www.nongnu.org/isarmathlib/"> IsarMathLib</a>. The new formal math there is a mostly in the <a title="Topology" href="http://isarmathlib.org/Topology_ZF_3.html">Topology_ZF_</a><a title="Topology_ZF_3" href="http://isarmathlib.org/Topology_ZF_3.html">3</a> theory about  topologies on function spaces. This is needed to show that the function <img src='http://s0.wp.com/latex.php?latex=%28x_0%2C+x_1%2C+...%2C+x_%7Bn-1%7D%29+%5Cmapsto+%5Csum_%7Bi%3D0%7D%5E%7Bn-1%7Dx_i&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='(x_0, x_1, ..., x_{n-1}) &#92;mapsto &#92;sum_{i=0}^{n-1}x_i' title='(x_0, x_1, ..., x_{n-1}) &#92;mapsto &#92;sum_{i=0}^{n-1}x_i' class='latex' /> is continuous on <img src='http://s0.wp.com/latex.php?latex=G%5En&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='G^n' title='G^n' class='latex' /> where <img src='http://s0.wp.com/latex.php?latex=%28G%2C%2B%29&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='(G,+)' title='(G,+)' class='latex' /> is a topological group. This will be my goal for the next release.<span id="more-677"></span></p>
<p>I am happy to report that I use Isabelle2012 Makarius Wenzel&#8217;s  <a title="Isabelle/jEdit | a Prover IDE" href="http://www4.in.tum.de/~wenzelm/papers/isabelle-jedit-2011-1.pdf">Prover IDE</a> for writing formal math and it works very well for me. A screenshot follows.</p>
<p><a href="http://slawekk.files.wordpress.com/2012/06/isabelle2012_pide.png"><img class="aligncenter size-medium wp-image-713" title="Isabelle2012_pide" alt="" src="http://slawekk.files.wordpress.com/2012/06/isabelle2012_pide.png?w=300&#038;h=228" width="300" height="228" /></a></p>
<p>An amusing fact that I encountered while proving one of the lemmas was that <img src='http://s0.wp.com/latex.php?latex=%28%5Cemptyset%5Crightarrow+X%29+%3D+%5C%7B%5Cemptyset%5C%7D&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='(&#92;emptyset&#92;rightarrow X) = &#92;{&#92;emptyset&#92;}' title='(&#92;emptyset&#92;rightarrow X) = &#92;{&#92;emptyset&#92;}' class='latex' />. Let me explain what this notation means. The <img src='http://s0.wp.com/latex.php?latex=A%5Crightarrow+B&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='A&#92;rightarrow B' title='A&#92;rightarrow B' class='latex' /> expression is the set of functions whose domain is <img src='http://s0.wp.com/latex.php?latex=A&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='A' title='A' class='latex' /> and values belong to <img src='http://s0.wp.com/latex.php?latex=B&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='B' title='B' class='latex' />. When we write <img src='http://s0.wp.com/latex.php?latex=f%3AA%5Crightarrow+B&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='f:A&#92;rightarrow B' title='f:A&#92;rightarrow B' class='latex' /> we are using the semicolon instead of the usual <img src='http://s0.wp.com/latex.php?latex=%5Cin&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;in' title='&#92;in' class='latex' /> symbol to express the fact that the function <img src='http://s0.wp.com/latex.php?latex=f&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='f' title='f' class='latex' /> belongs to that set of functions. In particular  <img src='http://s0.wp.com/latex.php?latex=%5Cemptyset%5Crightarrow+X&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;emptyset&#92;rightarrow X' title='&#92;emptyset&#92;rightarrow X' class='latex' /> is the set of <img src='http://s0.wp.com/latex.php?latex=X&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='X' title='X' class='latex' />-valued functions whose domain is the empty set. Well, are there any such functions? In other words is  it true that <img src='http://s0.wp.com/latex.php?latex=%28%5Cemptyset%5Crightarrow+X%29+%3D%5Cemptyset+&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='(&#92;emptyset&#92;rightarrow X) =&#92;emptyset ' title='(&#92;emptyset&#92;rightarrow X) =&#92;emptyset ' class='latex' /> ? Turns out that the empty set itself satisfies  the definition of what it means to be a function (in ZF) and of course the domain of that function is empty. And who can deny that for all <img src='http://s0.wp.com/latex.php?latex=x%5Cin+%5Cemptyset&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='x&#92;in &#92;emptyset' title='x&#92;in &#92;emptyset' class='latex' /> the value of that function on <img src='http://s0.wp.com/latex.php?latex=x&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='x' title='x' class='latex' /> is in whatever? So, really <img src='http://s0.wp.com/latex.php?latex=%5Cemptyset+%3A%5Cemptyset+%5Crightarrow+X&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;emptyset :&#92;emptyset &#92;rightarrow X' title='&#92;emptyset :&#92;emptyset &#92;rightarrow X' class='latex' />. Since the empty set is the only function whose domain is empty, we get <img src='http://s0.wp.com/latex.php?latex=%28%5Cemptyset%5Crightarrow+X%29+%3D+1&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='(&#92;emptyset&#92;rightarrow X) = 1' title='(&#92;emptyset&#92;rightarrow X) = 1' class='latex' />.  And it&#8217;s not a typo, because in ZF <img src='http://s0.wp.com/latex.php?latex=%5C%7B%5Cemptyset%5C%7D&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;{&#92;emptyset&#92;}' title='&#92;{&#92;emptyset&#92;}' class='latex' /> is the same as the natural number 1.</p>
<p>Usually such facts are only a source of fun and games, but this one actually did get used in a proof of one of the theorems in the theory added in this release. Here is how it came about.</p>
<p>I needed to have the product topology defined on <img src='http://s0.wp.com/latex.php?latex=X%5En&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='X^n' title='X^n' class='latex' /> where <img src='http://s0.wp.com/latex.php?latex=X&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='X' title='X' class='latex' /> is (the carrier of) a topological space with topology <img src='http://s0.wp.com/latex.php?latex=%5Ctau&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;tau' title='&#92;tau' class='latex' />. Dealing with cartesian products of <img src='http://s0.wp.com/latex.php?latex=n&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='n' title='n' class='latex' /> sets is somewhat inconvenient in Isabelle/ZF, so I decided to use the space of sequences <img src='http://s0.wp.com/latex.php?latex=n%5Crightarrow+X&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='n&#92;rightarrow X' title='n&#92;rightarrow X' class='latex' /> as a proxy for the cartesian product <img src='http://s0.wp.com/latex.php?latex=X%5Ctimes+X%5Ctimes+...%5Ctimes+X&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='X&#92;times X&#92;times ...&#92;times X' title='X&#92;times X&#92;times ...&#92;times X' class='latex' /> (recall that in ZF if <img src='http://s0.wp.com/latex.php?latex=n&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='n' title='n' class='latex' /> is a natural number, then <img src='http://s0.wp.com/latex.php?latex=n+%3D+%5C%7B+0%2C+1%2C...%2Cn-1%5C%7D&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='n = &#92;{ 0, 1,...,n-1&#92;}' title='n = &#92;{ 0, 1,...,n-1&#92;}' class='latex' />). Once we talk about topologies on function spaces, why not just define a topology on <img src='http://s0.wp.com/latex.php?latex=I%5Crightarrow+X&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='I&#92;rightarrow X' title='I&#92;rightarrow X' class='latex' /> where <img src='http://s0.wp.com/latex.php?latex=I&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='I' title='I' class='latex' /> is an arbitrary index set? So this is what I did.</p>
<p>To do that I needed to define a base of that topology on <img src='http://s0.wp.com/latex.php?latex=I%5Crightarrow+X&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='I&#92;rightarrow X' title='I&#92;rightarrow X' class='latex' />. The standard approach to define a base for a product topology is by taking all finite products of open sets. In the function space approach this corresponds to taking a finite subset <img src='http://s0.wp.com/latex.php?latex=N%5Csubseteq+I&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='N&#92;subseteq I' title='N&#92;subseteq I' class='latex' /> and a function <img src='http://s0.wp.com/latex.php?latex=W%3AN%5Crightarrow+%5Ctau&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='W:N&#92;rightarrow &#92;tau' title='W:N&#92;rightarrow &#92;tau' class='latex' /> whose values are open sets. Then we can define a set in the base as</p>
<p style="text-align:center;"><img src='http://s0.wp.com/latex.php?latex=B%28N%2CW%29+%3D+%5C%7B+f%3AI%5Crightarrow+X+%7C+%5Cforall_%7Bi%5Cin+N%7D+f%28i%29+%5Cin+W%28i%29%5C%7D&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='B(N,W) = &#92;{ f:I&#92;rightarrow X | &#92;forall_{i&#92;in N} f(i) &#92;in W(i)&#92;}' title='B(N,W) = &#92;{ f:I&#92;rightarrow X | &#92;forall_{i&#92;in N} f(i) &#92;in W(i)&#92;}' class='latex' />.</p>
<p>The base is then the collection of all such sets <img src='http://s0.wp.com/latex.php?latex=B%28N%2CW%29&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='B(N,W)' title='B(N,W)' class='latex' />.</p>
<p>Now we want to show that the whole function space <img src='http://s0.wp.com/latex.php?latex=I%5Crightarrow+X&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='I&#92;rightarrow X' title='I&#92;rightarrow X' class='latex' /> is one of the base sets. This corresponds to placing no restrictions on the functions, i.e. we want to have <img src='http://s0.wp.com/latex.php?latex=N%3D%5Cemptyset&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='N=&#92;emptyset' title='N=&#92;emptyset' class='latex' />. This way we start thinking what <img src='http://s0.wp.com/latex.php?latex=%5Cemptyset+%5Crightarrow+%5Ctau&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;emptyset &#92;rightarrow &#92;tau' title='&#92;emptyset &#92;rightarrow &#92;tau' class='latex' /> may be.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/slawekk.wordpress.com/677/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/slawekk.wordpress.com/677/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=677&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://slawekk.wordpress.com/2012/06/30/isarmathlib-1-7-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f0b149bf16959cf73a06bf8dae8298a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slawekk</media:title>
		</media:content>

		<media:content url="http://slawekk.files.wordpress.com/2012/06/isabelle2012_pide.png?w=300" medium="image">
			<media:title type="html">Isabelle2012_pide</media:title>
		</media:content>
	</item>
		<item>
		<title>Recently read</title>
		<link>http://slawekk.wordpress.com/2012/01/26/recently-read/</link>
		<comments>http://slawekk.wordpress.com/2012/01/26/recently-read/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 13:09:55 +0000</pubDate>
		<dc:creator>slawekk</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[formalized mathematics]]></category>

		<guid isPermaLink="false">http://slawekk.wordpress.com/?p=655</guid>
		<description><![CDATA[I haven&#8217;t updated this blog for a while, so I decided to try to break the writer&#8217;s block by posting a couple of quotes from the formalized mathematics stuff I read recently. There was a discussion initiated by James Frank in November last year on the Isabelle mailing list about problems with making mathematics formalized [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=655&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I haven&#8217;t updated this blog for a while, so I decided to try to break the writer&#8217;s block by posting a couple of quotes from the formalized mathematics stuff I read recently.<span id="more-655"></span></p>
<p>There was a discussion initiated by James Frank in November last year on the Isabelle mailing list about problems with making mathematics formalized in HOL similar in notation and terminology to the standard (informal) mathematics. The main difficulty here is that standard mathematics uses set theory notation, so obviously something based on type theory has to look different. This lead to a discussion what might be the reasons of doing formalized mathematics in simply typed HOL rather than set theory. Josef Urban <a title="Josef Urban in Isabelle mailing list" href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/2011-November/msg00016.html">expressed</a> the following opinion:</p>
<blockquote><p>I do not think that there are good pragmatic automation-related reasons for persuading mathematicians to work in HOL instead of ZF. Given the very low penetration that formal mathematics has so far among mathematicians, I think it would not hurt the formal systems to go where the mathematicians are.</p></blockquote>
<p>with which I fully agree.</p>
<p>In the same thread Steven Obua <a title="ProofPeer announcement" href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/2011-November/msg00013.html">announced</a> the <a title="ProofPeer" href="http://proofpeer.appspot.com/">ProofPeer</a> project &#8211; a cloud-based social network interactive theorem proving system. (That is probably the the highest concentration of buzzwords in one sentence that I ever wrote.) The alpha launch is planned for summer 2012. He recently published a <a title="ProofPeer - A Cloud-based Interactive Theorem Proving System" href="http://arxiv.org/abs/1201.0540">paper</a> with more details about ProofPeer.</p>
<p>On the subject of types vs. sets as a foundation I recall a funny <a title="ZFC vs type theory" href="http://shemesh.larc.nasa.gov/images/humor-zfc.jpg">cartoon</a> that I found on a <a title="Types vs sets on LtU" href="//lambda-the-ultimate.org/node/1264">LtU thread</a> related to this.</p>
<p>Back in 2008 Freek Wiedijk wrote a nice <a href="http://www.ams.org/notices/200811/tx081101408p.pdf">article</a> on &#8220;Formal Proof—Getting Started&#8221;. Here is my favorite part of it:</p>
<blockquote><p>In mathematics there have been three main revolutions:</p>
<ul>
<li>The introduction of proof by the Greeks in the fourth century BC, culminating in Euclid’s Elements.</li>
<li>The introduction of rigor in mathematics in the nineteenth century. During this time the nonrigorous calculus was made rigorous by Cauchy and others. This time also saw the development of mathematical logic by Frege and the development of set theory by Cantor.</li>
<li>The introduction of formal mathematics in the late twentieth and early twenty-first centuries.</li>
</ul>
</blockquote>
<p>Frank Quinne&#8217;s article &#8220;<a title="A revolution in mathematics" href="http://www.ams.org/notices/201201/rtx120100031p.pdf">A Revolution in Mathematics? What Really Happened a Century Ago and Why It Matters Today</a>&#8221; in  the January issue of Notices of the AMS is devoted to the second revolution. Here is a quote:</p>
<blockquote><p>As the transition progressed, the arguments became more heated but more confined. At the beginning traditionalists were deeply offended but not threatened. But because modern methods lack external checks, they depend heavily on fully reliable inputs. Older material was filtered to support this, and as the transition gained momentum some old theorems were reclassified as “unproved”, some methods became unacceptable for publication, and quite a few ways of looking at things were rejected as dangerously imprecise. Understandably, many eminent late nineteenth-century mathematicians were outraged by these reassessments.<br />
Meanwhile, very high reliability has been achieved in mathematics without drawing attention or having significance attached to it. The axiomatic-definition approach also made mathematics more accessible. A century ago original research was possible only for the elite. Today it is accessible enough that publication is required for promotion at even modest institutions, and an original contribution can be required for a Ph.D.</p></blockquote>
<p>It is striking for me how well this describes the situation with the third revolution. The analogy extends also to the sort of democratization of mathematics that machine verification makes possible.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/slawekk.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/slawekk.wordpress.com/655/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=655&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://slawekk.wordpress.com/2012/01/26/recently-read/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f0b149bf16959cf73a06bf8dae8298a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slawekk</media:title>
		</media:content>
	</item>
		<item>
		<title>IsarMathLib 1.7.2</title>
		<link>http://slawekk.wordpress.com/2011/07/20/isarmathlib-1-7-2/</link>
		<comments>http://slawekk.wordpress.com/2011/07/20/isarmathlib-1-7-2/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 18:11:16 +0000</pubDate>
		<dc:creator>slawekk</dc:creator>
				<category><![CDATA[Haskell]]></category>
		<category><![CDATA[IsarMathLib releases]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[IsarMathLib]]></category>
		<category><![CDATA[topology]]></category>

		<guid isPermaLink="false">http://slawekk.wordpress.com/?p=642</guid>
		<description><![CDATA[I have released a new version of IsarMathLib. It adds about 50 new lemmas, mostly in group theory and topology, leading to the following characterization of closure in topological groups: Here, is the collection of neighborhoods of zero (sets whose interior contains the neutral element of the group), and for two sets we define as [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=642&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I have released a new version of <a title="IsarMathLib" href="http://www.nongnu.org/isarmathlib/">IsarMathLib</a>. It adds about 50 new lemmas, mostly in group theory and topology, leading to the following <a title="cl_topgroup" href="http://isarmathlib.org/TopologicalGroup_ZF.html#cl_topgroup">characterization</a> of closure in topological groups:</p>
<p style="text-align:center;"><img src='http://s0.wp.com/latex.php?latex=%5Coverline%7BA%7D+%3D+%5Cbigcap_%7BH%5Cin+%5Cmathcal%7BN%7D_0%7D+A%2BH&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;overline{A} = &#92;bigcap_{H&#92;in &#92;mathcal{N}_0} A+H' title='&#92;overline{A} = &#92;bigcap_{H&#92;in &#92;mathcal{N}_0} A+H' class='latex' /></p>
<p style="text-align:left;">Here, <img src='http://s0.wp.com/latex.php?latex=%5Cmathcal%7BN%7D_0&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;mathcal{N}_0' title='&#92;mathcal{N}_0' class='latex' /> is the collection of neighborhoods of zero (sets whose interior contains the neutral element of the group), and for two sets <img src='http://s0.wp.com/latex.php?latex=A%2CB%5Csubseteq+G&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='A,B&#92;subseteq G' title='A,B&#92;subseteq G' class='latex' /> we define <img src='http://s0.wp.com/latex.php?latex=A%2BB&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='A+B' title='A+B' class='latex' /> as <img src='http://s0.wp.com/latex.php?latex=A%2BB%3D%5C%7Ba%2Bb+%7C+a%5Cin+A%2C+b%5Cin+B%5C%7D&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='A+B=&#92;{a+b | a&#92;in A, b&#92;in B&#92;}' title='A+B=&#92;{a+b | a&#92;in A, b&#92;in B&#92;}' class='latex' />.</p>
<p style="text-align:left;"><span id="more-642"></span>Also, I replaced jsMath with <a title="MathJax" href="http://www.mathjax.org/">MathJax</a> as the LaTeX rendering engine on the <a title="formalmath.org" href="http://isarmathlib.org">isarmathlib.org</a> site. The results are very good, the math renders faster and it looks better. It forced me to do some Haskell programming again to modify the tool that parses Isar and generates HTML with LaTeX markup. I haven&#8217;t seen that code or programmed in Haskell for about two years, but with <a title="Leksah" href="http://leksah.org/">Leksah</a> now in Ubuntu repositories it was rather easy: just modify the code in one place and keep fixing it until it builds. Once it built, it worked.</p>
<p style="text-align:left;">The tool will probably become obsolete after the next Isabelle release. There is a Google Summer of Code <a title="GSOC project on Isabelle document generation" href="http://www.google-melange.com/gsoc/project/google/gsoc2011/aifargonos/13001">project </a>that will allow generating nice HTML presentations of Isar theories from within Isabelle.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/slawekk.wordpress.com/642/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/slawekk.wordpress.com/642/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=642&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://slawekk.wordpress.com/2011/07/20/isarmathlib-1-7-2/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f0b149bf16959cf73a06bf8dae8298a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slawekk</media:title>
		</media:content>
	</item>
		<item>
		<title>IsarMathLib 1.7.1</title>
		<link>http://slawekk.wordpress.com/2011/05/13/isarmathlib-1-7-1/</link>
		<comments>http://slawekk.wordpress.com/2011/05/13/isarmathlib-1-7-1/#comments</comments>
		<pubDate>Fri, 13 May 2011 09:32:46 +0000</pubDate>
		<dc:creator>slawekk</dc:creator>
				<category><![CDATA[announcements]]></category>
		<category><![CDATA[IsarMathLib releases]]></category>
		<category><![CDATA[weirdmath]]></category>

		<guid isPermaLink="false">http://slawekk.wordpress.com/?p=617</guid>
		<description><![CDATA[I have released version 1.7.1 of IsarMathLib. There are two small topics I added, both in the &#8220;weird math&#8221; category. The first is related to the &#8220;1/0=0&#8243; story that I talk about in another post. Proving the theorem that states that was a little bit more involved that I had thought. I had to define [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=617&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I have released version <a title="IsarMathLib distribution" href="http://download.savannah.gnu.org/releases/isarmathlib/isarmathlib-1.7.1.tar.gz">1.7.1</a> of <a title="IsarMathLib home page" href="http://www.nongnu.org/isarmathlib/">IsarMathLib</a>. There are two small topics I added, both in the &#8220;weird math&#8221; category.<br />
The first is related to the &#8220;1/0=0&#8243; story that I talk about in another <a title="1/0=0" href="http://slawekk.wordpress.com/2008/10/14/10-0-really/">post</a>. Proving the theorem that states that was a little bit more involved that I had thought. I had to define the notion of division in fields as a function on <img src='http://s0.wp.com/latex.php?latex=K%5Ctimes+K%5Csetminus+%5C%7B0%5C%7D&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='K&#92;times K&#92;setminus &#92;{0&#92;}' title='K&#92;times K&#92;setminus &#92;{0&#92;}' class='latex' />, then notation for it. I don&#8217;t think I cheated here but the truth is I did make an effort to make the theorem <em>look</em> like the one I wanted to prove. This brings up the question: what if I made a little more effort and manipulate notation so that a theorem appears to mean something different that it really does? For example it is quite easy in Isabelle to change the notation to print &#8220;True&#8221; as &#8220;False&#8221; and prove a theorem that appears to show inconsistency in ZF.<br />
Freek Wiedijk&#8217;s <a title="Pollack-inconsistency" href="http://www.cs.ru.nl/~freek/pubs/rap.pdf">paper </a>formalizes this question. Back in January there was also a long <a title="Lexical matters" href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/2011-January/msg00067.html">thread</a> on the Isabelle mailing list where people expressed varying opinions on how serious the problem is.</p>
<p>Another small piece of formal math that I added in this release is a chapter in the <a title="Topology_ZF_2" href="http://isarmathlib.org/Topology_ZF_2.html"><em>Topology_ZF_2</em></a> theory on the <a title="Pasting Lemma" href="http://en.wikipedia.org/wiki/Pasting_lemma">pasting lemma</a>. The classical pasting lemma states that if we have two topological spaces, say <img src='http://s0.wp.com/latex.php?latex=%28X_1%2C%5Ctau_1%29&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='(X_1,&#92;tau_1)' title='(X_1,&#92;tau_1)' class='latex' /> and <img src='http://s0.wp.com/latex.php?latex=%28X_2%2C%5Ctau_2%29&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='(X_2,&#92;tau_2)' title='(X_2,&#92;tau_2)' class='latex' /> and we partition <img src='http://s0.wp.com/latex.php?latex=X_1&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='X_1' title='X_1' class='latex' /> into two sets <img src='http://s0.wp.com/latex.php?latex=U%2CV%5Csubseteq+X_1%2C+%5C+U%5Ccup+V%3DX_1&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='U,V&#92;subseteq X_1, &#92; U&#92;cup V=X_1' title='U,V&#92;subseteq X_1, &#92; U&#92;cup V=X_1' class='latex' />, both open (or both closed), and a function <img src='http://s0.wp.com/latex.php?latex=f%3AX_1%5Crightarrow+X_2&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='f:X_1&#92;rightarrow X_2' title='f:X_1&#92;rightarrow X_2' class='latex' /> is continuous on both <img src='http://s0.wp.com/latex.php?latex=U&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='U' title='U' class='latex' /> and <img src='http://s0.wp.com/latex.php?latex=V&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='V' title='V' class='latex' />, then <img src='http://s0.wp.com/latex.php?latex=f&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='f' title='f' class='latex' /> is continuous. The <a title="Pasting theorem" href="http://isarmathlib.org/Topology_ZF_2.html#pasting_theorem">version</a> in IsarMathLib is bit different, stating that the collection of open sets <img src='http://s0.wp.com/latex.php?latex=%5C%7BU+%5Cin+%5Ctau_1+%3A+f%7C_U+%5Ctext%7Bis+continuous%7D%5C%7D&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;{U &#92;in &#92;tau_1 : f|_U &#92;text{is continuous}&#92;}' title='&#92;{U &#92;in &#92;tau_1 : f|_U &#92;text{is continuous}&#92;}' class='latex' /> forms a topology.<br />
Surprisingly from this we can conclude that the empty set (which in ZF is the same as zero of natural numbers) is continuous. Here is how it happens: since the collection <img src='http://s0.wp.com/latex.php?latex=%5C%7BU+%5Cin+%5Ctau_1+%3A+f%7C_U+%5Ctext%7Bis+continuous%7D%5C%7D&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;{U &#92;in &#92;tau_1 : f|_U &#92;text{is continuous}&#92;}' title='&#92;{U &#92;in &#92;tau_1 : f|_U &#92;text{is continuous}&#92;}' class='latex' /> forms a topology, <img src='http://s0.wp.com/latex.php?latex=%5Cemptyset&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;emptyset' title='&#92;emptyset' class='latex' /> belongs to it, i.e. <img src='http://s0.wp.com/latex.php?latex=f%7C_%5Cemptyset&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='f|_&#92;emptyset' title='f|_&#92;emptyset' class='latex' /> is continuous. But <img src='http://s0.wp.com/latex.php?latex=f%7C_%5Cemptyset&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='f|_&#92;emptyset' title='f|_&#92;emptyset' class='latex' /> is in fact <img src='http://s0.wp.com/latex.php?latex=%5Cemptyset&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;emptyset' title='&#92;emptyset' class='latex' /> and we get that <a title="Zero is continuous lemma" href="http://isarmathlib.org/Topology_ZF_2.html#zero_continuous">zero is continuous</a>. Ha Ha.<br />
I would like to emphasize that I do <em>not</em> consider facts like this as demonstrating that ZF set theory is not a suitable foundation for formalizing mathematics (as some people <a title="FMathL" href="http://www.mat.univie.ac.at/~neum/FMathL/quotes.html">interpret</a>). It is just fun and games that formal math allows and I am sure other foundations also have their unintuitive corner cases.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/slawekk.wordpress.com/617/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/slawekk.wordpress.com/617/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=slawekk.wordpress.com&#038;blog=1771533&#038;post=617&#038;subd=slawekk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://slawekk.wordpress.com/2011/05/13/isarmathlib-1-7-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f0b149bf16959cf73a06bf8dae8298a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slawekk</media:title>
		</media:content>
	</item>
	</channel>
</rss>
