File: consistent-state-properties2.lisp

package info (click to toggle)
acl2 8.6%2Bdfsg-2
  • links: PTS
  • area: main
  • in suites: trixie
  • size: 1,111,420 kB
  • sloc: lisp: 17,818,294; java: 125,359; python: 28,122; javascript: 23,458; cpp: 18,851; ansic: 11,569; perl: 7,678; xml: 5,591; sh: 3,976; makefile: 3,833; ruby: 2,633; yacc: 1,126; ml: 763; awk: 295; csh: 233; lex: 197; php: 178; tcl: 49; asm: 23; haskell: 17
file content (87 lines) | stat: -rw-r--r-- 3,117 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
(in-package "DJVM")
(include-book "consistent-state")
(include-book "djvm-frame-manipulation-primitives")

(in-theory (disable consistent-state consistent-thread-entry))

(include-book "INST/base-bind-free")

(defthm consistent-state-imlies-thread-by-id
  (implies (consistent-state s)
           (thread-by-id (current-thread s) 
                         (thread-table s)))
  :hints (("Goal" :in-theory (enable consistent-state thread-exists?))))



(defthm consistent-state-implies-consistent-thread-entries
  (implies (and (consistent-state s)
                (equal (instance-class-table s) cl)
                (equal (heap s) hp))
           (consistent-thread-entries (thread-table s) cl hp))
  :hints (("Goal" :in-theory (enable consistent-state))))



(defthm consistent-thread-entries-implies-consistent-thread
  (implies (and (thread-by-id id tt)
                (consistent-thread-entries tt cl hp))
           (consistent-thread-entry (thread-by-id id tt)
                                    cl hp))
  :hints (("Goal" :in-theory (enable thread-by-id))))



(defthm consistent-thread-entry-implies-consp-thread-call-stack
  (implies  (and (syntaxp (acl2::found-symbol2 's thread))
                 (bind-free (acl2::default-bind-free 's 's (acl2::pkg-witness "DJVM")))
                 (consistent-thread-entry thread 
                                          (instance-class-table s)
                                          (heap s)))
            (consp (thread-call-stack thread)))
  :hints (("Goal" :in-theory (enable consistent-thread-entry))))

;----------------------------------------------------------------------

;;(i-am-here) 

(encapsulate ()
  (local (include-book "consistent-state-properties"))
  (local 
    (defthm consistent-state-topstack-consistent-value-x
      (implies (and (topStack-guard-strong s)
                    (consistent-state s))
               (consistent-value-x (safe-topStack s) 
                                   (instance-class-table s)
                                   (heap s)))
      :rule-classes :forward-chaining))

 (defthm consistent-value-x-implies-wff-tagged-value
   (implies (consistent-value-x v cl hp)
            (wff-tagged-value v))
   :rule-classes :forward-chaining)

 (local 
  (defthm safe-topStack-is-topStack 
    (equal (safe-topStack s)
           (topStack s))
    :hints (("Goal" :in-theory (enable safe-topStack topStack
                                       current-frame)))))


 (defthm consistent-state-topstack-consistent-value-x-2
   (implies (and (topStack-guard-strong s)
                 (consistent-state s))
            (consistent-value-x (topStack s)
                                (instance-class-table s)
                                (heap s)))
   :hints (("Goal" :in-theory (disable safe-topStack 
                                       topStack  consistent-value-x)
            :use ((:instance consistent-state-topstack-consistent-value-x))))
   :rule-classes :forward-chaining))


(in-theory (disable topStack safe-topStack consistent-value-x 
                    topStack-guard-strong))