User Tools

Site Tools


start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
start [2012/04/18 14:38]
131.246.92.39 [General Emacs]
start [2014/04/30 15:28] (current)
peter jedit symbols
Line 1: Line 1:
 ====== Isabelle/​HOL and Proof General Reference ====== ====== Isabelle/​HOL and Proof General Reference ======
  
-This site is intended to help getting started with using Isabelle/​HOL and the Proof General.+This site is intended to help getting started with using Isabelle/​HOL and the Isabelle jEdit editor.
 This page in particular is the quick //cheat sheet// and can be used as a reference. This page in particular is the quick //cheat sheet// and can be used as a reference.
  
Line 14: Line 14:
  
 Help us to improve the Wiki by checking and complementing existing content, as well as creating [[wanted pages]]! Help us to improve the Wiki by checking and complementing existing content, as well as creating [[wanted pages]]!
-===== Shortcuts ===== 
  
-We denote ''​CTRL + $key''​ by ''​C-$key''​ and ''​ALT + $key''​ by ''​M-$key''​. 
-==== General Emacs ==== 
  
-  * ''​C-x C-f''​ -- open a file +===== Getting Started =====
-  * ''​C-x C-s''​ -- save the current file +
-  * ''​C-k''​ -- delete the rest of the line +
-  * ''​C-a''​ -- jump to the beginning of the current line +
-  * ''​C-e''​ -- jump to the end of the current line+
  
-==== Proof General ==== +You can download and install Isabelle from [[http://​isabelle.in.tum.de/​]]. 
-Press ''​C-c C-☐''​ to control the proof buffer (i.e. processing the theory), with ''​☐''​ one of: +To run Isabelle you can run `isabelle jedit -m brackets`
-  * ''​b''​ -- process as far as possible + 
-  * ''​c''​ -- cancel: interrupt a running calculation +Isabelle ​is already installed on the SCI machines tux1tux2, tux3 and tux9.  
-  * ''​f''​ -- [[reference:theorem search|search]] in the available theorems (e.g''​name:​ mp''​) +On those machines you can start it by simply typing `isabelle` into terminal.
-  * ''​n''​ -- next: process the next line in Isabelle +
-  * ''​p''​ -- show the current state of a proof (for instancein place of an error message currently being shown) +
-  * ''​r''​ -- retract: go back to the beginning +
-  * ''​u'' ​ -- undo: push back the processed part of the text by one line +
-  * ''​v''​ -- enter command whose result is send to the response panel (see [[start#​Assorted gimmicks|below]] for some examples) +
-  * ''​RETURN''​ -- go here: evaluate up to where the cursor is+
  
-==== Advanced Tools ==== 
-  * ''​C-c C-a C-q''​ -- ''​quickcheck''​ (see below) 
-  * ''​C-c C-a r''​ -- ''​refute''​ (see below) 
-  * ''​C-c C-a C-n''​ -- ''​nitpick''​ (see below) 
-  * ''​C-c C-a C-s''​ -- ''​sledgehammer''​ (see below) 
  
-==== Menu Magic ==== 
-  * [Options -> C-x/C-c/C-v Cut and Paste (CUA)] -- enable standard hotkeys for copy and paste 
-  * [Isabelle -> Show Me -> Methods] -- Prints a list of all available methods 
-  * [Isabelle -> Settings -> Display] -- show hidden symbols such as types or parentheses for debugging. (in theory mode) 
-  * [Isabelle -> Help -> Isabelle Documentation] -- documentation 
-  * [Proof-General -> Quick Options -> Display -> Use Three Panes] -- check to have a more comfortable setup (in theory mode) 
-  * [Proof-General -> Advanced -> Customize -> Faces -> Proof Locked Face] -- change the color of the "​locked"​ region of proofs (e.g. Khaki: #F0E68C) 
 ===== Syntax ===== ===== Syntax =====
  
Line 55: Line 30:
  
 <​code>​ <​code>​
-theory ​Name imports Main+theory ​MyTheory ​imports Main
 begin begin
- 
-  ... 
-  ​ 
-$definitions 
  
   ...   ...
Line 67: Line 38:
 </​code>​ </​code>​
  
-==== Formulae ​==== +It is important that the name of the theory is equal to the name of the file. 
-Basic logical formula ​are written ​in the usual way. See below for the ASCII encodings of common symbols:+ 
 +==== Special symbols ​==== 
 +Isabelle uses many symbols which are not available on a normal keyboard. 
 +You can either use the "​Symbols"​ tab in jedit or type the following shortcuts and use autocomplete with "​TAB"​ to get the correct symbol.
  
 ^ Logics | $\land$ ​ | $\lor$ ​ | $\neg$ | $\longrightarrow$ ​ | $\leftrightarrow$ | $\forall$ ​  | $\exists$ ​ | ^ Logics | $\land$ ​ | $\lor$ ​ | $\neg$ | $\longrightarrow$ ​ | $\leftrightarrow$ | $\forall$ ​  | $\exists$ ​ |
-ASCII  | ''/​\''​ | ''​\/''​ | ''​\not''​ | ''<​nowiki>​--></​nowiki>''​ | ''<​nowiki><​-></​nowiki>''​ or ''​=''​ | ''​ALL'' ​''​EX''​ |+type  | ''/​\''​ or ''&​''​ | ''​\/​''​ or ''​|''​ | ''​\not''​ or ''​~''​ | ''<​nowiki>​--></​nowiki>''​ | ''<​nowiki><​-></​nowiki>​''​ | ''​\forall''​ or ''​!''​ | ''​\exists'' ​or ''​?''​ |
  
 ^ Meta  | $\bigwedge$ | $\Longrightarrow$ | $\equiv$ | $[|$ | $|]$ | ^ Meta  | $\bigwedge$ | $\Longrightarrow$ | $\equiv$ | $[|$ | $|]$ |
-ASCII | ''​!!''​ | ''<​nowiki>​==></​nowiki>''​ | ''​==''​ | ''​[|''​ | ''​|]''​ |+type | ''​!!''​ | ''<​nowiki>​==></​nowiki>''​ | ''​==''​ | ''​[|''​ | ''​|]''​ |
  
 ^ Math  | $=$ | $\neq$ ​ | $<$ | $>$ | $\leq$ | $\geq$ | ^ Math  | $=$ | $\neq$ ​ | $<$ | $>$ | $\leq$ | $\geq$ |
-ASCII | ''​=''​ | ''​~=''​ | ''<''​ | ''>''​ | ''​\le''​ | ''​\ge''​ |+type | ''​=''​ | ''​~=''​ | ''<''​ | ''>''​ | ''​<=''​ | ''​>=''​ |
  
 ^ Sets  | $\in$   | $\notin$ | $\subset$ | $\subseteq$ | $\cap$ | $\cup$ | ^ Sets  | $\in$   | $\notin$ | $\subset$ | $\subseteq$ | $\cap$ | $\cup$ |
-ASCII | ''​\in''​ | ''​\notin''​ | ''​\subset''​ | ''​\subseteq''​ | ''​\inter''​ | ''​\union''​ |+type | ''​\in''​ or '':​''​ | ''​\notin''​ or ''​~:​''​ | ''​\subset''​ | ''​\subseteq''​ | ''​\inter''​ | ''​\union''​ |
  
-Find more symbols via [Tokens → List Shortcuts]. ​If you know LaTeX, try using commands you know from there.+If you know LaTeX, try using commands you know from there.
  
 ==== Functions ==== ==== Functions ====
Line 117: Line 91:
 === Basic Methods === === Basic Methods ===
  
-^ Name ^ Parameters ^ All goals ^ Safe ^ New Goals ^ Variants ^+^ Name                                      ^ Parameters ​   ^ All goals ^ Safe ^ New Goals ^ Variants ^
 | ''​[[reference:​assumption|assumption]]'' ​  | ---                 ​| ​    ​| ​ x  |     | |  | ''​[[reference:​assumption|assumption]]'' ​  | ---                 ​| ​    ​| ​ x  |     | | 
 | ''​[[reference:​cases|cases]]'' ​            | an expression ​      ​| ​    ​| ​ x  |  x  | ''​case_tac''​ | | ''​[[reference:​cases|cases]]'' ​            | an expression ​      ​| ​    ​| ​ x  |  x  | ''​case_tac''​ |
 | ''​[[reference:​drule|drule]]'' ​            | a rule              |     ​| ​    ​| ​ x  | ''​drule(k)'',​ ''​drule_tac''​ | | ''​[[reference:​drule|drule]]'' ​            | a rule              |     ​| ​    ​| ​ x  | ''​drule(k)'',​ ''​drule_tac''​ |
 | ''​[[reference:​erule|erule]]'' ​            | a rule              |     ​| ​    ​| ​ x  | ''​erule(k)'',​ ''​erule_tac''​ | | ''​[[reference:​erule|erule]]'' ​            | a rule              |     ​| ​    ​| ​ x  | ''​erule(k)'',​ ''​erule_tac''​ |
-| ''​[[reference:​fold|fold]]'' ​              ​| ​?                   |  x  |  x  |  ?  ​| |+| ''​[[reference:​fold|fold]]'' ​              ​| ​a definition (or equation) ​|  x  |  x  |     ​| |
 | ''​[[reference:​frule|frule]]'' ​            | a rule              |     ​| ​ x  |  x  | ''​frule(k)'',​ ''​frule_tac''​ | | ''​[[reference:​frule|frule]]'' ​            | a rule              |     ​| ​ x  |  x  | ''​frule(k)'',​ ''​frule_tac''​ |
 | ''​[[reference:​induct|induct]]'' ​          | a variable ​         |     ​| ​    ​| ​ x  | ''​induct_tac''​ | | ''​[[reference:​induct|induct]]'' ​          | a variable ​         |     ​| ​    ​| ​ x  | ''​induct_tac''​ |
Line 128: Line 102:
 | ''​[[reference:​rename_tac|rename_tac]]'' ​  | list of identifiers |     ​| ​    ​| ​    | | | ''​[[reference:​rename_tac|rename_tac]]'' ​  | list of identifiers |     ​| ​    ​| ​    | |
 | ''​[[reference:​rotate_tac|rotate_tac]]'' ​  | an integer ​         |     ​| ​ x  |     | | | ''​[[reference:​rotate_tac|rotate_tac]]'' ​  | an integer ​         |     ​| ​ x  |     | |
-| ''​[[reference:​rule (method)|rule]]''​ | a rule              |     ​| ​    ​| ​ x  | ''​rule(k)'',​ ''​rule_tac''​ |+| ''​[[reference:​rule (method)|rule]]'' ​     | a rule              |     ​| ​    ​| ​ x  | ''​rule(k)'',​ ''​rule_tac''​ |
 | ''​[[reference:​split|split]]'' ​            | a splitting rule    |     ​| ​ ?  |  x  | | | ''​[[reference:​split|split]]'' ​            | a splitting rule    |     ​| ​ ?  |  x  | |
 | ''​[[reference:​subgoal_tac|subgoal_tac]]''​ | a formula ​          ​| ​    ​| ​    ​| ​ x  | | | ''​[[reference:​subgoal_tac|subgoal_tac]]''​ | a formula ​          ​| ​    ​| ​    ​| ​ x  | |
-| ''​[[reference:​subst|subst]]'' ​            ​| ​?                   |     ​| ​ x  |  x  | ''​subst (asm)''​ |+| ''​[[reference:​subst|subst]]'' ​            ​| ​a definition (or equation) ​|     ​| ​ x  |  x  | ''​subst (asm)''​ |
 | ''​[[reference:​thin_tac|thin_tac]]'' ​      | a formula ​          ​| ​    ​| ​    ​| ​    | | | ''​[[reference:​thin_tac|thin_tac]]'' ​      | a formula ​          ​| ​    ​| ​    ​| ​    | |
-| ''​[[reference:​unfold|unfold]]'' ​          | a definition ​       |  x  |  x  |  ?  | |+| ''​[[reference:​unfold|unfold]]'' ​          | a definition ​(or equation) ​|  x  |  x  |  ?  | |
  
 === Automated Methods === === Automated Methods ===
Line 217: Line 191:
   * ''​f(x := y)''​ -- the //function update//: the result of this expression is the function ''​f''​ updated such that it now returns ''​y''​ for parameter ''​x'';​ the other values do not change.   * ''​f(x := y)''​ -- the //function update//: the result of this expression is the function ''​f''​ updated such that it now returns ''​y''​ for parameter ''​x'';​ the other values do not change.
   * ''​{x. P x}''​ -- the set of values fulfilling predicate ''​P''​. For instance, ''​{x::​nat. x dvd 125}''​ is the set of (natural) divisors of $125$.   * ''​{x. P x}''​ -- the set of values fulfilling predicate ''​P''​. For instance, ''​{x::​nat. x dvd 125}''​ is the set of (natural) divisors of $125$.
 +  * ''​{E x | x. P x}''​ -- the set of values created by expression ''​E'',​ for all values fulfilling predicate ''​P'',​ ''​{x + y | x y. x < 10 /\ y < 10}''​ is the set of sums of all pairs of natural numbers with a single digit.
start.1334752684.txt.gz · Last modified: 2012/04/18 14:38 by 131.246.92.39