Nominal/activities/tphols09/IDW/MW-ex.scala
changeset 415 f1be8028a4a9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Nominal/activities/tphols09/IDW/MW-ex.scala	Wed Mar 30 17:27:34 2016 +0100
@@ -0,0 +1,98 @@
+/** Isabelle System **/
+
+val sys = new isabelle.IsabelleSystem
+
+
+/* Isabelle settings environment */
+
+sys.getenv("ISABELLE_HOME")
+sys.getenv("ISABELLE_PATH")
+
+
+/* Isabelle tools */
+
+sys.isabelle_tool()
+sys.isabelle_tool("doc")
+sys.isabelle_tool("doc", "system")
+
+
+sys.find_logics
+
+
+/* Isabelle symbols */
+
+val symbols = sys.symbols
+val s1 = symbols.decode("""\<forall>x. x \<in> A --> x \<in> B""")
+val s2 = symbols.encode(s1)
+
+
+
+/** Isabelle Process **/
+
+/* demo command loop */
+
+val p = new isabelle.IsabelleProcess
+
+p.command("theory A imports Main begin")
+p.command(""" lemma "A --> A" """)
+p.command("..")
+p.command("end")
+
+p.close
+
+
+val p = new isabelle.IsabelleProcess
+
+p.ML("fun f 0 = 1 | f n = n * f (n - 1)")
+p.ML("f 1000")
+
+p.ML("OS.Process.sleep (Time.fromSeconds 10)");
+p.interrupt
+
+
+/* receiving messages */
+
+import isabelle._
+import scala.actors._
+
+def self_receiver(): EventBus[IsabelleProcess.Result] = {
+  val self = Actor.self
+  new EventBus[IsabelleProcess.Result] + (result => self ! result)
+}
+
+def receive(): Option[IsabelleProcess.Result] = {
+  Actor.self.receiveWithin(100) {
+    case TIMEOUT => None
+    case result: IsabelleProcess.Result => Some(result)
+  }
+}
+
+val p = new IsabelleProcess(new IsabelleSystem, self_receiver())
+
+p.command("theory A imports Main begin")
+p.command(""" term "x + y" """)
+p.ML(""" tracing (Syntax.string_of_term @{context} @{term "x + y"}) """)
+
+
+
+/** basic document model **/
+
+import isabelle._
+
+val p = new IsabelleProcess with IsarDocument
+
+p.define_command("1", "theory A imports Main begin")
+p.define_command("2", "lemma \"A --> A\"")
+p.define_command("3", "..")
+p.define_command("4", "end")
+
+p.begin_document("doc1", "A.thy")
+p.edit_document("doc1", "doc2",
+  List(("doc1", Some("1")), ("1", Some("2")), ("2", Some("3")), ("3", Some("4"))))
+
+p.edit_document("doc2", "doc3", List(("2", None)))
+p.edit_document("doc3", "doc4", List(("1", None)))
+p.edit_document("doc4", "doc5", List(("1", Some("2")), ("2", Some("3"))))
+
+p.end_document("doc5")
+