| author | wenzelm | 
| Sat, 30 Oct 2021 12:03:43 +0200 | |
| changeset 74635 | b179891dd357 | 
| parent 74253 | 45dc9de1bd33 | 
| child 75393 | 87ebf5a50283 | 
| permissions | -rw-r--r-- | 
| 54730 | 1  | 
/* Title: Pure/Tools/simplifier_trace.scala  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
2  | 
Author: Lars Hupel  | 
| 54730 | 3  | 
|
4  | 
Interactive Simplifier trace.  | 
|
5  | 
*/  | 
|
6  | 
||
7  | 
package isabelle  | 
|
8  | 
||
| 
55553
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
9  | 
|
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
10  | 
import scala.annotation.tailrec  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
11  | 
import scala.collection.immutable.SortedMap  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
12  | 
|
| 54730 | 13  | 
|
14  | 
object Simplifier_Trace  | 
|
15  | 
{
 | 
|
| 
55553
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
16  | 
/* trace items from the prover */  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
17  | 
|
| 
55553
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
18  | 
val TEXT = "text"  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
19  | 
val Text = new Properties.String(TEXT)  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
20  | 
|
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
21  | 
val PARENT = "parent"  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
22  | 
val Parent = new Properties.Long(PARENT)  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
23  | 
|
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
24  | 
val SUCCESS = "success"  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
25  | 
val Success = new Properties.Boolean(SUCCESS)  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
26  | 
|
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
27  | 
val MEMORY = "memory"  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
28  | 
val Memory = new Properties.Boolean(MEMORY)  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
29  | 
|
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
30  | 
object Item  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
31  | 
  {
 | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
32  | 
case class Data(  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
33  | 
serial: Long, markup: String, text: String,  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
34  | 
parent: Long, props: Properties.T, content: XML.Body)  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
35  | 
    {
 | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
36  | 
def memory: Boolean = Memory.unapply(props) getOrElse true  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
37  | 
}  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
38  | 
|
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
39  | 
def unapply(tree: XML.Tree): Option[(String, Data)] =  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
40  | 
      tree match {
 | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
41  | 
case XML.Elem(Markup(Markup.RESULT, Markup.Serial(serial)),  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
42  | 
List(XML.Elem(Markup(markup, props), content)))  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
43  | 
        if markup.startsWith("simp_trace_") =>  // FIXME proper comparison of string constants
 | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
44  | 
          (props, props) match {
 | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
45  | 
case (Text(text), Parent(parent)) =>  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
46  | 
Some((markup, Data(serial, markup, text, parent, props, content)))  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
47  | 
case _ => None  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
48  | 
}  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
49  | 
case _ => None  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
50  | 
}  | 
| 
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
51  | 
}  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
52  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
53  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
54  | 
/* replies to the prover */  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
55  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
56  | 
case class Answer private[Simplifier_Trace](val name: String, val string: String)  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
57  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
58  | 
object Answer  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
59  | 
  {
 | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
60  | 
object step  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
61  | 
    {
 | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
62  | 
      val skip = Answer("skip", "Skip")
 | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
63  | 
      val continue = Answer("continue", "Continue")
 | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
64  | 
      val continue_trace = Answer("continue_trace", "Continue (with full trace)")
 | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
65  | 
      val continue_passive = Answer("continue_passive", "Continue (without asking)")
 | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
66  | 
      val continue_disable = Answer("continue_disable", "Continue (without any trace)")
 | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
67  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
68  | 
val all = List(continue, continue_trace, continue_passive, continue_disable, skip)  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
69  | 
}  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
70  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
71  | 
object hint_fail  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
72  | 
    {
 | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
73  | 
      val exit = Answer("exit", "Exit")
 | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
74  | 
      val redo = Answer("redo", "Redo")
 | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
75  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
76  | 
val all = List(redo, exit)  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
77  | 
}  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
78  | 
}  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
79  | 
|
| 55555 | 80  | 
val all_answers: List[Answer] = Answer.step.all ::: Answer.hint_fail.all  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
81  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
82  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
83  | 
/* GUI interaction */  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
84  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
85  | 
case object Event  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
86  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
87  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
88  | 
/* manager thread */  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
89  | 
|
| 56717 | 90  | 
private case class Handle_Results(  | 
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
91  | 
session: Session, id: Document_ID.Command, results: Command.Results, slot: Promise[Context])  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
92  | 
private case class Generate_Trace(results: Command.Results, slot: Promise[Trace])  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
93  | 
private case class Cancel(serial: Long)  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
94  | 
private object Clear_Memory  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
95  | 
case class Reply(session: Session, serial: Long, answer: Answer)  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
96  | 
|
| 
57593
 
2f7d91242b99
proper Swing buttons instead of active areas within text (by Lars Hupel);
 
wenzelm 
parents: 
56782 
diff
changeset
 | 
97  | 
case class Question(data: Item.Data, answers: List[Answer])  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
98  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
99  | 
case class Context(  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
100  | 
last_serial: Long = 0L,  | 
| 56717 | 101  | 
questions: SortedMap[Long, Question] = SortedMap.empty)  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
102  | 
  {
 | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
103  | 
def +(q: Question): Context =  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
104  | 
copy(questions = questions + ((q.data.serial, q)))  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
105  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
106  | 
def -(s: Long): Context =  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
107  | 
copy(questions = questions - s)  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
108  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
109  | 
def with_serial(s: Long): Context =  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
110  | 
copy(last_serial = Math.max(last_serial, s))  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
111  | 
}  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
112  | 
|
| 
55553
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
113  | 
case class Trace(entries: List[Item.Data])  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
114  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
115  | 
case class Index(text: String, content: XML.Body)  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
116  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
117  | 
object Index  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
118  | 
  {
 | 
| 
55553
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
119  | 
def of_data(data: Item.Data): Index =  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
120  | 
Index(data.text, data.content)  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
121  | 
}  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
122  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
123  | 
def handle_results(session: Session, id: Document_ID.Command, results: Command.Results): Context =  | 
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
124  | 
  {
 | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
125  | 
val slot = Future.promise[Context]  | 
| 
71650
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
126  | 
the_manager(session).send(Handle_Results(session, id, results, slot))  | 
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
127  | 
slot.join  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
128  | 
}  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
129  | 
|
| 
71650
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
130  | 
def generate_trace(session: Session, results: Command.Results): Trace =  | 
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
131  | 
  {
 | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
132  | 
val slot = Future.promise[Trace]  | 
| 
71650
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
133  | 
the_manager(session).send(Generate_Trace(results, slot))  | 
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
134  | 
slot.join  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
135  | 
}  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
136  | 
|
| 
71650
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
137  | 
def clear_memory(session: Session): Unit =  | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
138  | 
the_manager(session).send(Clear_Memory)  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
139  | 
|
| 
71650
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
140  | 
def send_reply(session: Session, serial: Long, answer: Answer): Unit =  | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
141  | 
the_manager(session).send(Reply(session, serial, answer))  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
142  | 
|
| 
66461
 
0b55fbc51f76
reinit the manager thread, e.g. after restart of the Isabelle/jEdit plugin;
 
wenzelm 
parents: 
65220 
diff
changeset
 | 
143  | 
def make_manager: Consumer_Thread[Any] =  | 
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
144  | 
  {
 | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
145  | 
var contexts = Map.empty[Document_ID.Command, Context]  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
146  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
147  | 
var memory_children = Map.empty[Long, Set[Long]]  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
148  | 
var memory = Map.empty[Index, Answer]  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
149  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
150  | 
def find_question(serial: Long): Option[(Document_ID.Command, Question)] =  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
151  | 
      contexts collectFirst {
 | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
152  | 
case (id, context) if context.questions contains serial =>  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
153  | 
(id, context.questions(serial))  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
154  | 
}  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
155  | 
|
| 73340 | 156  | 
def do_cancel(serial: Long, id: Document_ID.Command): Unit =  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
157  | 
    {
 | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
158  | 
// To save memory, we could try to remove empty contexts at this point.  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
159  | 
// However, if a new serial gets attached to the same command_id after we deleted  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
160  | 
// its context, its last_serial counter will start at 0 again, and we'll think the  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
161  | 
// old serials are actually new  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
162  | 
contexts += (id -> (contexts(id) - serial))  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
163  | 
}  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
164  | 
|
| 73340 | 165  | 
def do_reply(session: Session, serial: Long, answer: Answer): Unit =  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
166  | 
    {
 | 
| 56717 | 167  | 
session.protocol_command(  | 
| 63805 | 168  | 
"Simplifier_Trace.reply", Value.Long(serial), answer.name)  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
169  | 
}  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
170  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
171  | 
    Consumer_Thread.fork[Any]("Simplifier_Trace.manager", daemon = true)(
 | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
172  | 
consume = (arg: Any) =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
173  | 
      {
 | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
174  | 
        arg match {
 | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
175  | 
case Handle_Results(session, id, results, slot) =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
176  | 
var new_context = contexts.getOrElse(id, Context())  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
177  | 
var new_serial = new_context.last_serial  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
178  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
179  | 
for ((serial, result) <- results.iterator if serial > new_context.last_serial)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
180  | 
            {
 | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
181  | 
              result match {
 | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
182  | 
case Item(markup, data) =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
183  | 
memory_children +=  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
184  | 
(data.parent -> (memory_children.getOrElse(data.parent, Set.empty) + serial))  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
185  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
186  | 
                  markup match {
 | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
187  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
188  | 
case Markup.SIMP_TRACE_STEP =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
189  | 
val index = Index.of_data(data)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
190  | 
                      memory.get(index) match {
 | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
191  | 
case Some(answer) if data.memory =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
192  | 
do_reply(session, serial, answer)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
193  | 
case _ =>  | 
| 
57593
 
2f7d91242b99
proper Swing buttons instead of active areas within text (by Lars Hupel);
 
wenzelm 
parents: 
56782 
diff
changeset
 | 
194  | 
new_context += Question(data, Answer.step.all)  | 
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
195  | 
}  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
196  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
197  | 
case Markup.SIMP_TRACE_HINT =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
198  | 
                      data.props match {
 | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
199  | 
case Success(false) =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
200  | 
                          results.get(data.parent) match {
 | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
201  | 
case Some(Item(Markup.SIMP_TRACE_STEP, _)) =>  | 
| 
57593
 
2f7d91242b99
proper Swing buttons instead of active areas within text (by Lars Hupel);
 
wenzelm 
parents: 
56782 
diff
changeset
 | 
202  | 
new_context += Question(data, Answer.hint_fail.all)  | 
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
203  | 
case _ =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
204  | 
// unknown, better send a default reply  | 
| 
57593
 
2f7d91242b99
proper Swing buttons instead of active areas within text (by Lars Hupel);
 
wenzelm 
parents: 
56782 
diff
changeset
 | 
205  | 
do_reply(session, data.serial, Answer.hint_fail.exit)  | 
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
206  | 
}  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
207  | 
case _ =>  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
208  | 
}  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
209  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
210  | 
case Markup.SIMP_TRACE_IGNORE =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
211  | 
// At this point, we know that the parent of this 'IGNORE' entry is a 'STEP'  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
212  | 
// entry, and that that 'STEP' entry is about to be replayed. Hence, we need  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
213  | 
// to selectively purge the replies which have been memorized, going down from  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
214  | 
// the parent to all leaves.  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
215  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
216  | 
@tailrec  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
217  | 
def purge(queue: Vector[Long]): Unit =  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
218  | 
                        queue match {
 | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
219  | 
case s +: rest =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
220  | 
for (Item(Markup.SIMP_TRACE_STEP, data) <- results.get(s))  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
221  | 
memory -= Index.of_data(data)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
222  | 
val children = memory_children.getOrElse(s, Set.empty)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
223  | 
memory_children -= s  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
224  | 
purge(rest ++ children.toVector)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
225  | 
case _ =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
226  | 
}  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
227  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
228  | 
purge(Vector(data.parent))  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
229  | 
|
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
230  | 
case _ =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
231  | 
}  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
232  | 
|
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
233  | 
case _ =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
234  | 
}  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
235  | 
|
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
236  | 
new_serial = serial  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
237  | 
}  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
238  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
239  | 
new_context = new_context.with_serial(new_serial)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
240  | 
contexts += (id -> new_context)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
241  | 
slot.fulfill(new_context)  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
242  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
243  | 
case Generate_Trace(results, slot) =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
244  | 
// Since there are potentially lots of trace messages, we do not cache them here again.  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
245  | 
// Instead, everytime the trace is being requested, we re-assemble it based on the  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
246  | 
// current results.  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
247  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
248  | 
val items =  | 
| 
57593
 
2f7d91242b99
proper Swing buttons instead of active areas within text (by Lars Hupel);
 
wenzelm 
parents: 
56782 
diff
changeset
 | 
249  | 
              results.iterator.collect { case (_, Item(_, data)) => data }.toList
 | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
250  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
251  | 
slot.fulfill(Trace(items))  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
252  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
253  | 
case Cancel(serial) =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
254  | 
            find_question(serial) match {
 | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
255  | 
case Some((id, _)) =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
256  | 
do_cancel(serial, id)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
257  | 
case None =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
258  | 
}  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
259  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
260  | 
case Clear_Memory =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
261  | 
memory_children = Map.empty  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
262  | 
memory = Map.empty  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
263  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
264  | 
case Reply(session, serial, answer) =>  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
265  | 
            find_question(serial) match {
 | 
| 
57593
 
2f7d91242b99
proper Swing buttons instead of active areas within text (by Lars Hupel);
 
wenzelm 
parents: 
56782 
diff
changeset
 | 
266  | 
case Some((id, Question(data, _))) =>  | 
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
267  | 
if (data.markup == Markup.SIMP_TRACE_STEP && data.memory)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
268  | 
                {
 | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
269  | 
val index = Index.of_data(data)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
270  | 
memory += (index -> answer)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
271  | 
}  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
272  | 
do_cancel(serial, id)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
273  | 
case None =>  | 
| 
56782
 
433cf57550fa
more systematic Isabelle output, like in classic Isabelle/ML (without markup);
 
wenzelm 
parents: 
56718 
diff
changeset
 | 
274  | 
                Output.warning("send_reply: unknown serial " + serial)
 | 
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
275  | 
}  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
276  | 
|
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
277  | 
do_reply(session, serial, answer)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
278  | 
session.trace_events.post(Event)  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
279  | 
}  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
280  | 
true  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
281  | 
},  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
282  | 
finish = () => contexts = Map.empty  | 
| 
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
283  | 
)  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
284  | 
}  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
285  | 
|
| 
71650
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
286  | 
private val managers = Synchronized(Map.empty[Session, Consumer_Thread[Any]])  | 
| 
66461
 
0b55fbc51f76
reinit the manager thread, e.g. after restart of the Isabelle/jEdit plugin;
 
wenzelm 
parents: 
65220 
diff
changeset
 | 
287  | 
|
| 
71650
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
288  | 
def the_manager(session: Session): Consumer_Thread[Any] =  | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
289  | 
    managers.value.get(session) match {
 | 
| 74253 | 290  | 
case Some(thread) if thread.is_active() => thread  | 
| 
66461
 
0b55fbc51f76
reinit the manager thread, e.g. after restart of the Isabelle/jEdit plugin;
 
wenzelm 
parents: 
65220 
diff
changeset
 | 
291  | 
      case _ => error("Bad Simplifier_Trace.manager thread")
 | 
| 
 
0b55fbc51f76
reinit the manager thread, e.g. after restart of the Isabelle/jEdit plugin;
 
wenzelm 
parents: 
65220 
diff
changeset
 | 
292  | 
}  | 
| 
 
0b55fbc51f76
reinit the manager thread, e.g. after restart of the Isabelle/jEdit plugin;
 
wenzelm 
parents: 
65220 
diff
changeset
 | 
293  | 
|
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
294  | 
|
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
295  | 
/* protocol handler */  | 
| 54730 | 296  | 
|
297  | 
class Handler extends Session.Protocol_Handler  | 
|
298  | 
  {
 | 
|
| 
71650
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
299  | 
private var the_session: Session = null  | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
300  | 
|
| 73340 | 301  | 
override def init(session: Session): Unit =  | 
| 
71650
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
302  | 
    {
 | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
303  | 
      try { the_manager(session) }
 | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
304  | 
      catch { case ERROR(_) => managers.change(map => map + (session -> make_manager)) }
 | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
305  | 
the_session = session  | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
306  | 
}  | 
| 
56718
 
096139bcfadd
replaced manager Actor by Consumer_Thread, which is lazy to defer its start to actual Handler init time;
 
wenzelm 
parents: 
56717 
diff
changeset
 | 
307  | 
|
| 73340 | 308  | 
override def exit(): Unit =  | 
| 65220 | 309  | 
    {
 | 
| 
71650
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
310  | 
val session = the_session  | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
311  | 
      if (session != null) {
 | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
312  | 
val manager = the_manager(session)  | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
313  | 
manager.send(Clear_Memory)  | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
314  | 
manager.shutdown()  | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
315  | 
managers.change(map => map - session)  | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
316  | 
the_session = null  | 
| 
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
317  | 
}  | 
| 65220 | 318  | 
}  | 
319  | 
||
| 65219 | 320  | 
private def cancel(msg: Prover.Protocol_Output): Boolean =  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
321  | 
      msg.properties match {
 | 
| 
55553
 
99409ccbe04a
more standard names for protocol and markup elements;
 
wenzelm 
parents: 
55390 
diff
changeset
 | 
322  | 
case Markup.Simp_Trace_Cancel(serial) =>  | 
| 
71650
 
95ab607398bd
support multiple sessions, notably for "isabelle build -P -j2";
 
wenzelm 
parents: 
71610 
diff
changeset
 | 
323  | 
the_manager(the_session).send(Cancel(serial))  | 
| 
55316
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
324  | 
true  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
325  | 
case _ =>  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
326  | 
false  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
327  | 
}  | 
| 
 
885500f4aa6a
interactive simplifier trace: new panel in Isabelle/jEdit to inspect and modify simplification state
 
Lars Hupel <lars.hupel@mytum.de> 
parents: 
54730 
diff
changeset
 | 
328  | 
|
| 72212 | 329  | 
override val functions = List(Markup.SIMP_TRACE_CANCEL -> cancel)  | 
| 54730 | 330  | 
}  | 
331  | 
}  |