35 "http://isabelle.in.tum.de/dist/library/">theory library</a>.</dd> |
35 "http://isabelle.in.tum.de/dist/library/">theory library</a>.</dd> |
36 |
36 |
37 <dt>Is it available for download?</dt> |
37 <dt>Is it available for download?</dt> |
38 |
38 |
39 <dd>Yes, it is available from several mirror sites, e. g. from |
39 <dd>Yes, it is available from several mirror sites, e. g. from |
40 <a href="http://isabelle.in.tum.de">Munich</a>. It should run |
40 <a href="http://isabelle.in.tum.de">Munich</a>. It runs on common |
41 on most recent Unix systems (Solaris, Linux, MacOS X, etc.).</dd> |
41 Unix systems (Linux, MacOS X, Solaris, etc.).</dd> |
42 |
42 |
43 </dl> |
43 </dl> |
44 <h2>Syntax</h2> |
44 <h2>Syntax</h2> |
45 |
45 |
46 <dl class="faq"> |
46 <dl class="faq"> |
47 |
47 |
48 <dt>There are lots of arrows in Isabelle. What's the difference between |
48 <dt>There are lots of arrows in Isabelle/HOL. What's the difference between |
49 <tt>-></tt>, <tt>=></tt>, <tt>--></tt>, and <tt>==></tt> |
49 <tt>-></tt>, <tt>=></tt>, <tt>--></tt>, and <tt>==></tt> |
50 ?</dt> |
50 ?</dt> |
51 |
51 |
52 <dd>Isabelle uses the <tt>=></tt> arrow for the function type |
52 <dd>Isabelle uses the <tt>=></tt> arrow for the function type |
53 (contrary to most functional languages which use <tt>-></tt>). So |
53 (contrary to most functional languages which use <tt>-></tt>). So |
79 <dd>You get this message if you use a case construct on a datatype and |
79 <dd>You get this message if you use a case construct on a datatype and |
80 have a typo in the names of the constructor patterns or if the order of |
80 have a typo in the names of the constructor patterns or if the order of |
81 the constructors in the case pattern is different from the order in which |
81 the constructors in the case pattern is different from the order in which |
82 they where defined (in the datatype definition).</dd> |
82 they where defined (in the datatype definition).</dd> |
83 |
83 |
84 <dt>Why doesn't Isabelle understand my equation?</dt> |
84 <dt>Why doesn't Isabelle/HOL understand my equation?</dt> |
85 |
85 |
86 <dd>Isabelle's equality <tt>=</tt> binds relatively strongly, so an |
86 <dd>Isabelle's equality <tt>=</tt> binds relatively strongly, so an |
87 equation like <tt>a = b & c</tt> might not be what you intend. |
87 equation like <tt>a = b & c</tt> might not be what you intend. |
88 Isabelle parses it as <tt>(a = b) & c</tt>. If you want it the other |
88 Isabelle parses it as <tt>(a = b) & c</tt>. If you want it the other |
89 way around, you must set explicit parentheses as in <tt>a = (b & |
89 way around, you must set explicit parentheses as in <tt>a = (b & |
92 |
92 |
93 <dt>What does it mean "not a proper equation"?</dt> |
93 <dt>What does it mean "not a proper equation"?</dt> |
94 |
94 |
95 <dd>Most commonly this is an instance of the question above. The |
95 <dd>Most commonly this is an instance of the question above. The |
96 <tt>primrec</tt> command (and others) expect equations as input, and |
96 <tt>primrec</tt> command (and others) expect equations as input, and |
97 since equality binds strongly in Isabelle, something like <tt>f x = b |
97 since equality binds strongly in Isabelle/HOL, something like <tt>f x = b |
98 & c</tt> is not what you might expect it to be: Isabelle parses it as |
98 & c</tt> is not what you might expect it to be: Isabelle parses it as |
99 <tt>(f x = b) & c</tt> (which is indeed not a proper equation). To |
99 <tt>(f x = b) & c</tt> (which is indeed not a proper equation). To |
100 turn it into an equation you must set explicit parentheses: <tt>f x = (b |
100 turn it into an equation you must set explicit parentheses: <tt>f x = (b |
101 & c)</tt>.</dd> |
101 & c)</tt>.</dd> |
102 |
102 |
139 the proof that lost important information. It is of course also possible |
139 the proof that lost important information. It is of course also possible |
140 that the goal was never provable in the first place.</dd> |
140 that the goal was never provable in the first place.</dd> |
141 |
141 |
142 <dt>Why does <tt>lemma "1+1=2"</tt> fail?</dt> |
142 <dt>Why does <tt>lemma "1+1=2"</tt> fail?</dt> |
143 |
143 |
144 <dd>Because it is not necessarily true. Isabelle does not assume that 1 |
144 <dd>Because it is not necessarily true. Isabelle/HOL does not assume that 1 |
145 and 2 are natural numbers. Try <tt>"(1::nat)+1=2"</tt> instead.</dd> |
145 and 2 are natural numbers. Try <tt>"(1::nat)+1=2"</tt> instead.</dd> |
146 |
146 |
147 <dt>Can Isabelle find counterexamples?</dt> |
147 <dt>Can Isabelle/HOL find counterexamples?</dt> |
148 |
148 |
149 <dd> |
149 <dd> |
150 <p>For arithmetic goals, <code>arith</code> finds counterexamples. For |
150 <p>For arithmetic goals, <code>arith</code> finds counterexamples. For |
151 executable goals, <code>quickcheck</code> tries to find a |
151 executable goals, <code>quickcheck</code> tries to find a |
152 counterexample. For goals of a more logical nature (including |
152 counterexample. For goals of a more logical nature (including |
166 </dl> |
166 </dl> |
167 <h2>Interface</h2> |
167 <h2>Interface</h2> |
168 |
168 |
169 <dl class="faq"> |
169 <dl class="faq"> |
170 |
170 |
171 <dt>ProofGeneral appears to hang when Isabelle is started.</dt> |
|
172 <dd><p>This may be because of UTF-8 issues e.g. in Red Hat 8.0/9.0, Suse |
|
173 9.0/9.1</p> |
|
174 <p>RedHat 8 and later has glibc 2.2 and UTF8 encoded output may be turned on |
|
175 in default locale. Unfortunately Proof General relies on 8-bit characters |
|
176 which are UTF8 prefixes in the output of proof assistants (inc Coq, |
|
177 Isabelle). These prefix characters are not flushed to stdout individually. As |
|
178 a workaround we must find a way to disable interpretation of UTF8 in the C |
|
179 libraries that Coq and friends use.</p> |
|
180 |
|
181 <p>Doing this inside PG/Emacs seems tricky; locale settings are set/inherited |
|
182 in strange ways. One solution is to run the Emacs process itself with an |
|
183 altered locale setting, for example, starting XEmacs by typing:</p> |
|
184 |
|
185 <ul class="shellcmd"> |
|
186 <li>LC_CTYPE=en_GB Isabelle &</li> |
|
187 </ul> |
|
188 |
|
189 <p>The supplied proofgeneral script makes this setting if it sees the string |
|
190 UTF in the current value of <tt class="shellcmd">LC_CTYPE</tt>. |
|
191 Depending on your distribution, this |
|
192 variable might also be called <tt class="shellcmd">LANG</tt>.</p> |
|
193 |
|
194 <p>Alternatively you can set <tt class="shellcmd">LC_CTYPE</tt> or |
|
195 <tt class="shellcmd">LANG</tt> inside a file <tt class="shellcmd">~/.i18n</tt>, which |
|
196 will be read by the shell. This will affect all applications, though.</p> |
|
197 |
|
198 <p>Suggestions for a better workaround inside Emacs would be welcomed;</p> |
|
199 |
|
200 <p>A related issue is warnings from x-symbol: "Emacs language environment |
|
201 and system locale specify different encoding, I'll assume `iso-8859-1'". This |
|
202 warning appears to be mainly harmless. Notice that the variable |
|
203 `buffer-file-coding-system' may determine the format that files are saved |
|
204 in.</p></dd> |
|
205 |
|
206 <dt>X-Symbol doesn't seem to work. What can I do?</dt> |
171 <dt>X-Symbol doesn't seem to work. What can I do?</dt> |
207 |
172 |
208 <dd>The most common reason why X-Symbol doesn't work is: it's not |
173 <dd>The most common reason why X-Symbol doesn't work is: it's not |
209 switched on yet. Assuming you are using ProofGeneral and have installed |
174 switched on yet. Assuming you are using ProofGeneral and have installed |
210 the X-Symbol package, you still need to turn X-Symbol on in ProofGeneral: |
175 the X-Symbol package, you still need to turn X-Symbol on in ProofGeneral: |
211 select the menu items <tt>Proof-General -> Options -> X-Symbol</tt> |
176 select the menu items <tt>Proof-General -> Options -> X-Symbol</tt> |
212 and (if you want to save the setting for future sessions) select |
177 and (if you want to save the setting for future sessions) select |
213 <tt>Options -> Save Options</tt> in XEmacs.</dd> |
178 <tt>Options -> Save Options</tt> in XEmacs.</dd> |
214 |
179 |
215 <dt>How do I input those X-Symbols anyway?</dt> |
180 <dt>How do I input those X-Symbols anyway?</dt> |
216 |
181 |
217 <dd>There are lots of ways to input x-symbols. The one that always works |
182 <dd>There are lots of ways to input x-symbols. The one that always works |
218 is writing it out in plain text (e.g. for the 'and' symbol type |
183 is writing it out in plain text (e.g. for the 'and' symbol type |
219 <tt>\<and></tt>). For common symbols you can try to "paint them in |
184 <tt>\<and></tt>). For common symbols you can try to "paint them in |
256 with a <tt class="shellcmd">ROOT.ML</tt> file (as for generating a document) and use the |
221 with a <tt class="shellcmd">ROOT.ML</tt> file (as for generating a document) and use the |
257 command <tt class="shellcmd">isatool usedir -b HOL MyImage</tt> in that directory to |
222 command <tt class="shellcmd">isatool usedir -b HOL MyImage</tt> in that directory to |
258 create an image <tt class="shellcmd">MyImage</tt> using the parent logic <tt class="shellcmd">HOL</tt>. You |
223 create an image <tt class="shellcmd">MyImage</tt> using the parent logic <tt class="shellcmd">HOL</tt>. You |
259 should then be able to invoke Isabelle with <tt class="shellcmd">Isabelle -l MyImage</tt> |
224 should then be able to invoke Isabelle with <tt class="shellcmd">Isabelle -l MyImage</tt> |
260 and have everything that is loaded in ROOT.ML instantly available.</dd> |
225 and have everything that is loaded in ROOT.ML instantly available.</dd> |
|
226 |
|
227 <dt>Can I run Isabelle on Windows?</dt> |
|
228 |
|
229 <dd>Not really. The Cygwin environment provides a Unixoid |
|
230 look-and-feel that is sufficient for very basic Isabelle |
|
231 functionality. See also <a |
|
232 href="installation_notes_cygwin.html">Installation notes for |
|
233 Cygwin/Windows.</a> |
|
234 |
|
235 To try out Isabelle it might be much easier to use a Linux boot |
|
236 CD, such as <a href="http://www.knoppix.org/">Knoppix</a>.</dd> |
261 |
237 |
262 </dl> |
238 </dl> |
263 |
239 |
264 </div> |
240 </div> |
265 <div class="hr"><hr/></div> |
241 <div class="hr"><hr/></div> |