File: bcv-if-pc-small-then-not-bound-in-witness.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 (99 lines) | stat: -rw-r--r-- 3,767 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
88
89
90
91
92
93
94
95
96
97
98
99
(in-package "ACL2")
(include-book "bcv-model")
(include-book "bcv-simple-model")
(include-book "generic")


(defthm ordered-less-than-first-then-not-member
  (implies (and (ordered l)
                (< pc (car l)))
           (not (member pc l))))


(encapsulate () 
  (local (include-book "bcv-if-verified-then-pc-ordered"))
  (defthm merged-code-is-safe-implies-ordered
   (implies (and (merged-code-safe merged-code init-frame)
                 (wff-code1 (extract-code merged-code)
                            (g 'pc (car merged-code))))
            (ordered (collect-pc-merged-code merged-code))))

  (defthm merged-code-safe-implies-pc-less-than
    (implies (and (WFF-CODE1 (EXTRACT-CODE MERGED-CODE)
                             (+ 1 pc))
                  (consp (extract-code merged-code))
                  (merged-code-safe merged-code sig-frame))
             (< pc 
                (g 'pc (car merged-code))))
    :rule-classes :linear)

  (defthm merged-code-safe-stack-map-implies-consp-extract-code
    (implies (and (merged-code-safe merged-code init-frame)
                  (stack-map? init-frame))
             (consp (extract-code merged-code)))
    :rule-classes :forward-chaining))



(defthm car-collect-pc-merged-code-is
  (implies (consp (cdr merged-code))
           (equal (car (collect-pc-merged-code merged-code))
                  (g 'pc (car merged-code)))))


(defun collect-keys-from-witness (sig-vector)
  (if (endp sig-vector) nil
    (cons (car (car sig-vector))
          (collect-keys-from-witness (cdr sig-vector)))))


(defthm subsetp-collect-pc-collect-pc
  (implies (member x (collect-keys-from-witness 
                      (collect-witness-merged-code-safe merged-code init-frame)))
           (member x (collect-pc-merged-code merged-code)))
  :hints (("Goal" :in-theory (disable sig-frame-compatible
                                      bcv-check-step-pre
                                      bcv-execute-step
                                      inst? stack-map?)
           :do-not '(generalize fertilize))))


(defthm subsetp-collect-pc-collect-pc-1
  (implies  (not (member x (collect-pc-merged-code merged-code)))
            (not (member x (collect-keys-from-witness 
                            (collect-witness-merged-code-safe merged-code init-frame)))))
  :hints (("Goal" :in-theory (disable sig-frame-compatible
                                      bcv-check-step-pre
                                      bcv-execute-step
                                      inst? stack-map?)
           :do-not '(generalize fertilize))))


(defthm not-member-of-keys-not-bound
  (implies (not (member x (collect-keys-from-witness sig-vector)))
           (not (assoc-equal x sig-vector))))


;; (i-am-here) ;; Mon Nov  7 14:18:54 2005

(defthm not-consp-cdr-not-collect-witness
  (implies (not (consp (cdr merged-code)))
           (not (collect-witness-merged-code-safe merged-code init-frame))))


(defthm merged-code-is-safe-implies-not-bound-smaller
  (implies (and (merged-code-safe merged-code init-frame)
                (WFF-CODE1 (EXTRACT-CODE MERGED-CODE)
                           (g 'pc (car merged-code)))
                 (< pc1 (g 'pc (car merged-code))))
           (not (assoc-equal pc1 (collect-witness-merged-code-safe 
                                  merged-code init-frame))))
  :hints (("Goal" :in-theory (disable merged-code-safe
                                      wff-code1
                                      stack-map?
                                      collect-pc-merged-code
                                      extract-code
                                      collect-witness-merged-code-safe)
           :cases ((consp (cdr merged-code)))
           :do-not-induct t)))