KTH Demo: Proof GenerationThis is the step that generates the policy adherence proof for the class files.
Tool output:
READING CLASS AND POLICY FILES
==============================
Class file: wizard_workdir/preverifiedclasses/s3mstest/wormgame/WormScore.class
Policy file: /home/landreas/work/kth/s3ms/wormtest/policy.txt
Identified ghost state variable: haveRead
Identified actual state variable: sf_{35}
GENERATING ASSERTIONS
=====================
*** Processing method: ***
Initial annotations generated.
Step 1, Updating instruction: invokespecial 9
Step 2, Updating instruction: aload_0
Algorithm stabilized after 2 steps
Saving annotations to file.
*** Processing method: openHighScoreStore ***
Found invoke. Method: java/io/PrintStream.println
No relevant event clauses found.
Found invoke. Method: javax/microedition/rms/RecordStore.openRecordStore
Relevant event clause found, annotating...done
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.toString
No relevant event clauses found.
Found invoke. Method: java/io/PrintStream.println
No relevant event clauses found.
Initial annotations generated.
Step 1, Updating instruction: aload_0
Step 2, Updating instruction: goto 57
Step 3, Updating instruction: invokevirtual 27
Step 4, Updating instruction: astore_0
Step 5, Updating instruction: invokevirtual 68
Step 6, Updating instruction: invokestatic 52
Step 7, Updating instruction: invokevirtual 64
Step 8, Updating instruction: haveRead = true>
Step 9, Updating instruction: aload_1
Step 10, Updating instruction: iload_3
Step 11, Updating instruction: invokevirtual 61
Step 12, Updating instruction: aload_2
Step 13, Updating instruction: ldc 57
Step 14, Updating instruction: goto 22
Step 15, Updating instruction: invokespecial 55
Step 16, Updating instruction: putstatic 35
Step 17, Updating instruction: dup
Step 18, Updating instruction: iconst_1
Step 19, Updating instruction: new 54
Step 20, Updating instruction: getstatic 19
Step 21, Updating instruction: astore_1
Algorithm stabilized after 21 steps
Saving annotations to file.
*** Processing method: getHighScoreName ***
Found invoke. Method: s3mstest/wormgame/WormScore.openHighScoreStore
No relevant event clauses found.
Found invoke. Method: javax/microedition/rms/RecordStore.getNumRecords
No relevant event clauses found.
Found invoke. Method: javax/microedition/rms/RecordStore.getRecord
No relevant event clauses found.
Found invoke. Method: java/io/DataInputStream.readShort
No relevant event clauses found.
Found invoke. Method: java/io/DataInputStream.readUTF
No relevant event clauses found.
Found invoke. Method: java/io/DataInputStream.close
No relevant event clauses found.
Found invoke. Method: javax/microedition/rms/RecordStore.closeRecordStore
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.toString
No relevant event clauses found.
Found invoke. Method: java/io/PrintStream.println
No relevant event clauses found.
Initial annotations generated.
Step 1, Updating instruction: aload_1
Step 2, Updating instruction: goto 92
Step 3, Updating instruction: invokevirtual 27
Step 4, Updating instruction: invokevirtual 105
Step 5, Updating instruction: invokevirtual 68
Step 6, Updating instruction: aload_2
Step 7, Updating instruction: invokevirtual 64
Step 8, Updating instruction: ifle 59
Step 9, Updating instruction: ifnull 59
Step 10, Updating instruction: invokevirtual 102
Step 11, Updating instruction: aload_2
Step 12, Updating instruction: invokevirtual 78
Step 13, Updating instruction: aload_3
Step 14, Updating instruction: aload 4
Step 15, Updating instruction: invokevirtual 61
Step 16, Updating instruction: aload_2
Step 17, Updating instruction: astore_3
Step 18, Updating instruction: astore_1
Step 19, Updating instruction: ldc 107
Step 20, Updating instruction: astore_2
Step 21, Updating instruction: invokevirtual 82
Step 22, Updating instruction: invokevirtual 99
Step 23, Updating instruction: invokespecial 55
Step 24, Updating instruction: invokestatic 74
Step 25, Updating instruction: iload_0
Step 26, Updating instruction: aload 4
Step 27, Updating instruction: dup
Step 28, Updating instruction: astore_1
Step 29, Updating instruction: aload_2
Step 30, Updating instruction: istore 5
Step 31, Updating instruction: new 54
Step 32, Updating instruction: ldc 72
Step 33, Updating instruction: ifle 59
Step 34, Updating instruction: invokevirtual 96
Step 35, Updating instruction: getstatic 19
Step 36, Updating instruction: invokevirtual 78
Step 37, Updating instruction: aload 4
Step 38, Updating instruction: astore_2
Step 39, Updating instruction: aload_2
Step 40, Updating instruction: astore 4
Step 41, Updating instruction: invokespecial 92
Step 42, Updating instruction: invokespecial 89
Step 43, Updating instruction: aload_3
Step 44, Updating instruction: dup
Step 45, Updating instruction: new 86
Step 46, Updating instruction: dup
Step 47, Updating instruction: new 84
Step 48, Updating instruction: ifnull 59
Step 49, Updating instruction: aload_3
Algorithm stabilized after 49 steps
Saving annotations to file.
*** Processing method: getHighScore ***
Found invoke. Method: s3mstest/wormgame/WormScore.openHighScoreStore
No relevant event clauses found.
Found invoke. Method: javax/microedition/rms/RecordStore.getNumRecords
No relevant event clauses found.
Found invoke. Method: javax/microedition/rms/RecordStore.getRecord
No relevant event clauses found.
Found invoke. Method: java/io/DataInputStream.readShort
No relevant event clauses found.
Found invoke. Method: java/io/DataInputStream.close
No relevant event clauses found.
Found invoke. Method: javax/microedition/rms/RecordStore.closeRecordStore
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.toString
No relevant event clauses found.
Found invoke. Method: java/io/PrintStream.println
No relevant event clauses found.
Initial annotations generated.
Step 1, Updating instruction: iload_1
Step 2, Updating instruction: goto 84
Step 3, Updating instruction: invokevirtual 27
Step 4, Updating instruction: invokevirtual 105
Step 5, Updating instruction: invokevirtual 68
Step 6, Updating instruction: aload_2
Step 7, Updating instruction: invokevirtual 64
Step 8, Updating instruction: ifle 51
Step 9, Updating instruction: ifnull 51
Step 10, Updating instruction: invokevirtual 102
Step 11, Updating instruction: aload_2
Step 12, Updating instruction: invokevirtual 78
Step 13, Updating instruction: aload_3
Step 14, Updating instruction: aload 4
Step 15, Updating instruction: invokevirtual 61
Step 16, Updating instruction: aload_2
Step 17, Updating instruction: astore_3
Step 18, Updating instruction: istore_1
Step 19, Updating instruction: ldc 107
Step 20, Updating instruction: astore_2
Step 21, Updating instruction: invokevirtual 82
Step 22, Updating instruction: invokevirtual 96
Step 23, Updating instruction: invokespecial 55
Step 24, Updating instruction: invokestatic 74
Step 25, Updating instruction: iload_0
Step 26, Updating instruction: aload 4
Step 27, Updating instruction: dup
Step 28, Updating instruction: istore_1
Step 29, Updating instruction: aload_2
Step 30, Updating instruction: astore 4
Step 31, Updating instruction: new 54
Step 32, Updating instruction: iconst_0
Step 33, Updating instruction: ifle 51
Step 34, Updating instruction: invokespecial 92
Step 35, Updating instruction: getstatic 19
Step 36, Updating instruction: invokevirtual 78
Step 37, Updating instruction: invokespecial 89
Step 38, Updating instruction: astore_2
Step 39, Updating instruction: aload_2
Step 40, Updating instruction: aload_3
Step 41, Updating instruction: dup
Step 42, Updating instruction: new 86
Step 43, Updating instruction: dup
Step 44, Updating instruction: new 84
Step 45, Updating instruction: ifnull 51
Step 46, Updating instruction: aload_3
Algorithm stabilized after 46 steps
Saving annotations to file.
*** Processing method: setHighScore ***
Found invoke. Method: java/io/DataOutputStream.writeShort
No relevant event clauses found.
Found invoke. Method: java/io/DataOutputStream.writeUTF
No relevant event clauses found.
Found invoke. Method: java/io/ByteArrayOutputStream.toByteArray
No relevant event clauses found.
Found invoke. Method: java/io/DataOutputStream.close
No relevant event clauses found.
Found invoke. Method: s3mstest/wormgame/WormScore.openHighScoreStore
No relevant event clauses found.
Found invoke. Method: javax/microedition/rms/RecordStore.setRecord
No relevant event clauses found.
Found invoke. Method: javax/microedition/rms/RecordStore.closeRecordStore
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.toString
No relevant event clauses found.
Found invoke. Method: java/io/PrintStream.println
No relevant event clauses found.
Initial annotations generated.
Step 1, Updating instruction: goto 95
Step 2, Updating instruction: invokevirtual 27
Step 3, Updating instruction: invokevirtual 105
Step 4, Updating instruction: invokevirtual 68
Step 5, Updating instruction: aload 6
Step 6, Updating instruction: invokevirtual 64
Step 7, Updating instruction: invokevirtual 134
Step 8, Updating instruction: aload 6
Step 9, Updating instruction: arraylength
Step 10, Updating instruction: invokevirtual 61
Step 11, Updating instruction: aload 5
Step 12, Updating instruction: ldc 136
Step 13, Updating instruction: iconst_0
Step 14, Updating instruction: invokespecial 55
Step 15, Updating instruction: aload 5
Step 16, Updating instruction: dup
Step 17, Updating instruction: iload_0
Step 18, Updating instruction: new 54
Step 19, Updating instruction: aload 6
Step 20, Updating instruction: getstatic 19
Step 21, Updating instruction: astore 6
Step 22, Updating instruction: astore 6
Step 23, Updating instruction: invokestatic 74
Step 24, Updating instruction: invokevirtual 130
Step 25, Updating instruction: aload 4
Step 26, Updating instruction: astore 5
Step 27, Updating instruction: invokevirtual 129
Step 28, Updating instruction: aload_3
Step 29, Updating instruction: invokevirtual 125
Step 30, Updating instruction: aload_2
Step 31, Updating instruction: aload 4
Step 32, Updating instruction: invokevirtual 122
Step 33, Updating instruction: i2s
Step 34, Updating instruction: iload_1
Step 35, Updating instruction: aload 4
Step 36, Updating instruction: astore 4
Step 37, Updating instruction: invokespecial 119
Step 38, Updating instruction: aload_3
Step 39, Updating instruction: dup
Step 40, Updating instruction: new 116
Step 41, Updating instruction: astore_3
Step 42, Updating instruction: invokespecial 114
Step 43, Updating instruction: dup
Step 44, Updating instruction: new 113
Algorithm stabilized after 44 steps
Saving annotations to file.
Final annotations saved in WormScore_annotations.txt
Course of actions logged in annotation_output/log.tex
latex \\nonstopmode\\input annotation_output.tex && xdvi annotation_output.dvi
READING CLASS AND POLICY FILES
==============================
Class file: wizard_workdir/preverifiedclasses/s3mstest/wormgame/ScoreSender.class
Policy file: /home/landreas/work/kth/s3ms/wormtest/policy.txt
Identified ghost state variable: haveRead
Identified actual state variable: sf_{61}
GENERATING ASSERTIONS
=====================
*** Processing method: ***
Initial annotations generated.
Step 1, Updating instruction: putfield 18
Step 2, Updating instruction: iload_2
Step 3, Updating instruction: aload_0
Step 4, Updating instruction: putfield 16
Step 5, Updating instruction: aload_1
Step 6, Updating instruction: aload_0
Step 7, Updating instruction: invokespecial 14
Step 8, Updating instruction: aload_0
Algorithm stabilized after 8 steps
Saving annotations to file.
*** Processing method: run ***
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.toString
No relevant event clauses found.
Found invoke. Method: java/io/PrintStream.println
No relevant event clauses found.
Found invoke. Method: java/io/PrintStream.println
No relevant event clauses found.
Found invoke. Method: java/io/PrintStream.println
No relevant event clauses found.
Found invoke. Method: java/lang/System.exit
No relevant event clauses found.
Found invoke. Method: javax/microedition/io/Connector.openDataOutputStream
Relevant event clause found, annotating...done
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.toString
No relevant event clauses found.
Found invoke. Method: java/lang/String.getBytes
No relevant event clauses found.
Found invoke. Method: java/io/DataOutputStream.write
No relevant event clauses found.
Found invoke. Method: java/io/DataOutputStream.write
No relevant event clauses found.
Found invoke. Method: java/io/PrintStream.println
No relevant event clauses found.
Found invoke. Method: java/io/PrintStream.println
No relevant event clauses found.
Found invoke. Method: javax/microedition/midlet/MIDlet.notifyDestroyed
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.append
No relevant event clauses found.
Found invoke. Method: java/lang/StringBuffer.toString
No relevant event clauses found.
Found invoke. Method: java/io/PrintStream.println
No relevant event clauses found.
Initial annotations generated.
Step 1, Updating instruction: goto 169
Step 2, Updating instruction: goto 169
Step 3, Updating instruction: invokevirtual 55
Step 4, Updating instruction: invokevirtual 94
Step 5, Updating instruction: invokevirtual 104
Step 6, Updating instruction: invokevirtual 49
Step 7, Updating instruction: bipush 10
Step 8, Updating instruction: getfield 16
Step 9, Updating instruction: invokevirtual 109
Step 10, Updating instruction: aload_2
Step 11, Updating instruction: aload_0
Step 12, Updating instruction: aload_1
Step 13, Updating instruction: invokevirtual 92
Step 14, Updating instruction: invokevirtual 55
Step 15, Updating instruction: invokevirtual 40
Step 16, Updating instruction: invokevirtual 86
Step 17, Updating instruction: ldc 99
Step 18, Updating instruction: ldc 106
Step 19, Updating instruction: invokevirtual 49
Step 20, Updating instruction: getstatic 31
Step 21, Updating instruction: invokespecial 34
Step 22, Updating instruction: invokevirtual 43
Step 23, Updating instruction: invokevirtual 97
Step 24, Updating instruction: dup
Step 25, Updating instruction: getfield 18
Step 26, Updating instruction: aload_1
Step 27, Updating instruction: new 33
Step 28, Updating instruction: aload_0
Step 29, Updating instruction: getstatic 31
Step 30, Updating instruction: getstatic 31
Step 31, Updating instruction: invokevirtual 40
Step 32, Updating instruction: astore_1
Step 33, Updating instruction: astore_1
Step 34, Updating instruction: ldc 80
Step 35, Updating instruction: invokespecial 34
Step 36, Updating instruction: dup
Step 37, Updating instruction: new 33
Step 38, Updating instruction: aload_2
Step 39, Updating instruction: astore_2
Step 40, Updating instruction: invokestatic 78
Step 41, Updating instruction: haveRead = true>
Step 42, Updating instruction: aload_3
Step 43, Updating instruction: goto 74
Step 44, Updating instruction: invokestatic 72
Step 45, Updating instruction: putstatic 61
Step 46, Updating instruction: iconst_1
Step 47, Updating instruction: if_icmpne 56
Step 48, Updating instruction: iconst_0
Step 49, Updating instruction: getstatic 61
Step 50, Updating instruction: astore_3
Step 51, Updating instruction: aload_1
Step 52, Updating instruction: invokevirtual 55
Step 53, Updating instruction: invokevirtual 49
Step 54, Updating instruction: invokevirtual 40
Step 55, Updating instruction: aload_1
Step 56, Updating instruction: invokevirtual 40
Step 57, Updating instruction: ldc 45
Step 58, Updating instruction: invokevirtual 43
Step 59, Updating instruction: getfield 18
Step 60, Updating instruction: aload_0
Step 61, Updating instruction: invokevirtual 40
Step 62, Updating instruction: ldc 36
Step 63, Updating instruction: invokespecial 34
Step 64, Updating instruction: dup
Step 65, Updating instruction: new 33
Step 66, Updating instruction: getstatic 31
Step 67, Updating instruction: astore_1
Step 68, Updating instruction: ldc 25
Algorithm stabilized after 68 steps
Saving annotations to file.
Final annotations saved in ScoreSender_annotations.txt
Course of actions logged in annotation_output/log.tex
latex \\nonstopmode\\input annotation_output.tex && xdvi annotation_output.dvi
View the generated pdf-file containing course of actions and final annotations: annotation_output.pdf
View the annotations for the ScoreSender class: ScoreSender_annotations.txt
View the annotations for the WormScore class: WormScore_annotations.txt