Skip to content

Commit 2741d15

Browse files
committed
Allen categorized and split these up into files.
1 parent 8368d98 commit 2741d15

File tree

183 files changed

+1275
-6263
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

183 files changed

+1275
-6263
lines changed

.DS_Store

6 KB
Binary file not shown.

Basiclex/.DS_Store

6 KB
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
(in-package "ACL2")
2+
(include-book "basiclex-defs")
3+
(include-book "split-blocks-concat-defs")
4+
(include-book "doublecheck" :dir :teachpacks)
5+
6+
(defproperty append-pseudoinverts-splitoff-prefix-1
7+
(ps :value (random-list-of (random-integer))
8+
xs :value (random-list-of (random-integer)))
9+
(equal (append (car (splitoff-prefix ps xs))
10+
(caddr (splitoff-prefix ps xs)))
11+
xs))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
(in-package "ACL2")
2+
(include-book "basiclex-defs")
3+
(include-book "split-blocks-concat-defs")
4+
(include-book "doublecheck" :dir :teachpacks)
5+
6+
(defproperty append-pseudoinverts-splitoff-prefix-2
7+
(ps :value (random-list-of (random-integer))
8+
xs :value (random-list-of (random-integer)))
9+
(equal (append (car (splitoff-prefix ps xs))
10+
(cadr (splitoff-prefix ps xs)))
11+
ps))
12+
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,60 @@
1-
(in-package "ACL2")
2-
3-
; ds = list of delimiters (no constraints on what a delimiter is)
4-
; xs = list of values (no constraints on values)
5-
; (split-at-delimiter ds xs) = list of two elements
6-
; 1 longest prefix of xs containing no elements from ds
7-
; 2 rest of xs
8-
(defun split-at-delimiter (ds xs)
9-
(if (or (endp xs) (member-equal (car xs) ds))
10-
(list nil xs)
11-
(let* ((cdr-split (split-at-delimiter ds (cdr xs))))
12-
(list (cons (car xs) (car cdr-split))
13-
(cadr cdr-split)))))
14-
15-
; ps = list of signals to pass by (no constraints on signals)
16-
; xs = list of signals (no constraints on signals)
17-
; (span ps xs) = list of two elements
18-
; 1 longest prefix of xs containing only signals from ps
19-
; 2 rest of xs
20-
(defun span (ps xs)
21-
(if (or (endp xs) (not (member-equal (car xs) ps)))
22-
(list nil xs)
23-
(let* ((cdr-span (span ps (cdr xs))))
24-
(list (cons (car xs) (car cdr-span))
25-
(cadr cdr-span)))))
26-
27-
; ps = list of values (no constraints on values)
28-
; xs = list of values (no constraints on values)
29-
; (splitoff-prefix ps xs) = list of three elements
30-
; 1 longest prefix of ps that is also a prefix of xs
31-
; 2 rest of ps
32-
; 3 rest of xs beyond prefix that matches element 1
33-
(defun splitoff-prefix (ps xs)
34-
(if (or (endp ps)
35-
(endp xs)
36-
(not (equal (car xs) (car ps))))
37-
(list nil ps xs)
38-
(let* ((3way (splitoff-prefix (cdr ps) (cdr xs))))
39-
(list (cons (car ps) (car 3way))
40-
(cadr 3way)
41-
(caddr 3way)))))
42-
43-
; tok = token (list of values, no constraints on values)
44-
; xs = list of values (no constraints on values)
45-
; (split-on-token tok xs) = list of three elements
46-
; 1 prefix of xs: portion before 1st contiguous sublist matching tok
47-
; (or xs, if there is no match for tok in xs)
48-
; 2 tok if tok matches a contiguous sublist of xs, otherwise nil
49-
; 3 suffix of xs: portion after 1st contiguous sublist matching tok
50-
; (or nil, if there is no match for tok in xs)
51-
(defun split-on-token (tok xs)
52-
(if (endp xs)
53-
(list nil nil nil)
54-
(let* ((3way (splitoff-prefix tok xs)))
55-
(if (endp (cadr 3way))
56-
(list nil tok (caddr 3way))
57-
(let* ((cdr-split (split-on-token tok (cdr xs))))
58-
(list (cons (car xs) (car cdr-split))
59-
(cadr cdr-split)
60-
(caddr cdr-split)))))))
1+
(in-package "ACL2")
2+
3+
; ds = list of delimiters (no constraints on what a delimiter is)
4+
; xs = list of values (no constraints on values)
5+
; (split-at-delimiter ds xs) = list of two elements
6+
; 1 longest prefix of xs containing no elements from ds
7+
; 2 rest of xs
8+
(defun split-at-delimiter (ds xs)
9+
(if (or (endp xs) (member-equal (car xs) ds))
10+
(list nil xs)
11+
(let* ((cdr-split (split-at-delimiter ds (cdr xs))))
12+
(list (cons (car xs) (car cdr-split))
13+
(cadr cdr-split)))))
14+
15+
; ps = list of signals to pass by (no constraints on signals)
16+
; xs = list of signals (no constraints on signals)
17+
; (span ps xs) = list of two elements
18+
; 1 longest prefix of xs containing only signals from ps
19+
; 2 rest of xs
20+
(defun span (ps xs)
21+
(if (or (endp xs) (not (member-equal (car xs) ps)))
22+
(list nil xs)
23+
(let* ((cdr-span (span ps (cdr xs))))
24+
(list (cons (car xs) (car cdr-span))
25+
(cadr cdr-span)))))
26+
27+
; ps = list of values (no constraints on values)
28+
; xs = list of values (no constraints on values)
29+
; (splitoff-prefix ps xs) = list of three elements
30+
; 1 longest prefix of ps that is also a prefix of xs
31+
; 2 rest of ps
32+
; 3 rest of xs beyond prefix that matches element 1
33+
(defun splitoff-prefix (ps xs)
34+
(if (or (endp ps)
35+
(endp xs)
36+
(not (equal (car xs) (car ps))))
37+
(list nil ps xs)
38+
(let* ((3way (splitoff-prefix (cdr ps) (cdr xs))))
39+
(list (cons (car ps) (car 3way))
40+
(cadr 3way)
41+
(caddr 3way)))))
42+
43+
; tok = token (list of values, no constraints on values)
44+
; xs = list of values (no constraints on values)
45+
; (split-on-token tok xs) = list of three elements
46+
; 1 prefix of xs: portion before 1st contiguous sublist matching tok
47+
; (or xs, if there is no match for tok in xs)
48+
; 2 tok if tok matches a contiguous sublist of xs, otherwise nil
49+
; 3 suffix of xs: portion after 1st contiguous sublist matching tok
50+
; (or nil, if there is no match for tok in xs)
51+
(defun split-on-token (tok xs)
52+
(if (endp xs)
53+
(list nil nil nil)
54+
(let* ((3way (splitoff-prefix tok xs)))
55+
(if (endp (cadr 3way))
56+
(list nil tok (caddr 3way))
57+
(let* ((cdr-split (split-on-token tok (cdr xs))))
58+
(list (cons (car xs) (car cdr-split))
59+
(cadr cdr-split)
60+
(caddr cdr-split)))))))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
(in-package "ACL2")
2+
(include-book "basiclex-defs")
3+
(include-book "split-blocks-concat-defs")
4+
(include-book "doublecheck" :dir :teachpacks)
5+
6+
(defproperty split-at-delim-conserves-vals
7+
(ds :value (random-list-of (random-integer))
8+
xs :value (random-list-of (random-integer)))
9+
(let* ((pair (split-at-delimiter ds xs))
10+
(pfx (car pair))
11+
(sfx (cadr pair)))
12+
(equal (append pfx sfx)
13+
xs)))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
(in-package "ACL2")
2+
(include-book "basiclex-defs")
3+
(include-book "split-blocks-concat-defs")
4+
(include-book "doublecheck" :dir :teachpacks)
5+
6+
(defproperty split-at-delim-delivers-no-delims-in-prefix
7+
(ds :value (random-list-of (random-between 0 10))
8+
xs :value (random-list-of (random-between 0 10))
9+
x :value (random-between 0 10)
10+
:where (member-equal x (car (split-at-delimiter ds xs))))
11+
(not (member-equal x ds)))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
(in-package "ACL2")
2+
(include-book "basiclex-defs")
3+
(include-book "split-blocks-concat-defs")
4+
(include-book "doublecheck" :dir :teachpacks)
5+
6+
(defproperty split-at-delim-delivers-suffix-that-starts-with-delim
7+
(ds :value (random-list-of (random-between 0 10))
8+
xs :value (random-list-of (random-between 0 10))
9+
:where (consp (cadr (split-at-delimiter ds xs))))
10+
(member-equal (car (cadr (split-at-delimiter ds xs))) ds))
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,47 @@
1-
; Definitions specify axiomatic properties
2-
(in-package "ACL2") ; form importable "book"
3-
4-
;(defun split (n xs)
5-
; (if (and (posp n) (consp xs))
6-
; (list (cons (car xs)
7-
; (car (split (- n 1) (cdr xs))))
8-
; (cadr (split (- n 1) (cdr xs))))
9-
; (list nil xs)))
10-
;(defun insert-first (x xsys)
11-
; (list (cons x (car xsys))
12-
; (cadr xsys)))
13-
;(defun split (n xs)
14-
; (if (and (posp n) (consp xs))
15-
; (insert-first (car xs)
16-
; (split (- n 1) (cdr xs)))
17-
; (list nil xs)))
18-
(defun split (n xs)
19-
(if (and (posp n) (consp xs))
20-
(let* ((x (car xs))
21-
(s (split (- n 1) (cdr xs)))
22-
(fr (car s))
23-
(bk (cadr s)))
24-
(list (cons x fr) bk))
25-
(list nil xs)))
26-
(defun firstN (n xs)
27-
(car (split n xs)))
28-
(defun concat (xss)
29-
(if (consp xss)
30-
(append (car xss) (concat (cdr xss)))
31-
xss))
32-
(defun total-len (xss)
33-
(if (consp xss)
34-
(+ (len (car xss)) (total-len (cdr xss)))
35-
0))
36-
(defun member-one+ (x xss)
37-
(if (consp xss)
38-
(or (member-equal x (car xss))
39-
(member-one+ x (cdr xss)))
40-
nil))
41-
(defun blocks (n xs)
42-
(if (and (posp n) (consp xs))
43-
(let* ((s (split n xs))
44-
(fr (car s))
45-
(bk (cadr s)))
46-
(cons fr (blocks n bk)))
47-
nil))
1+
; Definitions specify axiomatic properties
2+
(in-package "ACL2") ; form importable "book"
3+
4+
;(defun split (n xs)
5+
; (if (and (posp n) (consp xs))
6+
; (list (cons (car xs)
7+
; (car (split (- n 1) (cdr xs))))
8+
; (cadr (split (- n 1) (cdr xs))))
9+
; (list nil xs)))
10+
;(defun insert-first (x xsys)
11+
; (list (cons x (car xsys))
12+
; (cadr xsys)))
13+
;(defun split (n xs)
14+
; (if (and (posp n) (consp xs))
15+
; (insert-first (car xs)
16+
; (split (- n 1) (cdr xs)))
17+
; (list nil xs)))
18+
(defun split (n xs)
19+
(if (and (posp n) (consp xs))
20+
(let* ((x (car xs))
21+
(s (split (- n 1) (cdr xs)))
22+
(fr (car s))
23+
(bk (cadr s)))
24+
(list (cons x fr) bk))
25+
(list nil xs)))
26+
(defun firstN (n xs)
27+
(car (split n xs)))
28+
(defun concat (xss)
29+
(if (consp xss)
30+
(append (car xss) (concat (cdr xss)))
31+
xss))
32+
(defun total-len (xss)
33+
(if (consp xss)
34+
(+ (len (car xss)) (total-len (cdr xss)))
35+
0))
36+
(defun member-one+ (x xss)
37+
(if (consp xss)
38+
(or (member-equal x (car xss))
39+
(member-one+ x (cdr xss)))
40+
nil))
41+
(defun blocks (n xs)
42+
(if (and (posp n) (consp xs))
43+
(let* ((s (split n xs))
44+
(fr (car s))
45+
(bk (cadr s)))
46+
(cons fr (blocks n bk)))
47+
nil))

Cryptography/.DS_Store

6 KB
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
(include-book "cryptography-defs")
2+
(include-book "doublecheck" :dir :teachpacks)
3+
4+
(defproperty codevis->plainvis-inverts-plainvis->codevis
5+
(vals :value (random-list-of (random-between 0 94))
6+
:where (and (viscode-listp vals) (consp vals)))
7+
(equal (codevis->plainvis (plainvis->codevis vals)) vals))

Cryptography/cryptography-defs.lisp

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
;;;All the theorems in this file have been proven - ARS 04/11/12;;;;;;;;;;;
2+
(IN-PACKAGE "ACL2")
3+
(include-book "linear-encoding-defs")
4+
(include-book "doublecheck" :dir :teachpacks)
5+
(include-book "list-utilities" :dir :teachpacks)
6+
7+
(defun codes->chrs (codes)
8+
(if (endp codes)
9+
nil
10+
(cons (code-char (car codes)) (codes->chrs (cdr codes)))))
11+
12+
(defun visibilize-txt (chrs)
13+
(if (consp chrs)
14+
(if (and (>= (char-code (car chrs)) 32)
15+
(<= (char-code (car chrs)) 126))
16+
(cons (car chrs) (visibilize-txt (cdr chrs)))
17+
(cons #\Space (visibilize-txt (cdr chrs))))
18+
nil))
19+
20+
(defun txt->vis (chrs)
21+
(if (consp chrs)
22+
(cons (- (char-code (car chrs)) 32) (txt->vis (cdr chrs)))
23+
nil))
24+
25+
(defun vis->txt (viscs)
26+
(if (consp viscs)
27+
(cons (code-char (+ 32 (car viscs))) (vis->txt (cdr viscs)))
28+
nil))
29+
30+
(defun plainvis->codevis (viscs)
31+
(encode 95 viscs))
32+
33+
(defun codevis->plainvis (viscs)
34+
(decode 95 viscs))
35+
36+
(defun visible-txt-listp (chrs)
37+
(or (endp chrs)
38+
(and (>= (char-code (car chrs)) 32)
39+
(<= (char-code (car chrs)) 126)
40+
(visible-txt-listp (cdr chrs)))))
41+
42+
(defun viscode-listp (vals)
43+
(code-listp 95 vals))
+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
(IN-PACKAGE "ACL2")
2+
(include-book "arithmetic-3/floor-mod/floor-mod" :dir :system)
3+
4+
(defun encode (m xs)
5+
(if (consp (cdr xs))
6+
(cons (mod (+ (car xs) (cadr xs)) m) (encode m (cdr xs)))
7+
(list (mod (+ (car xs) (1- m)) m))))
8+
9+
(defun decode (m ys)
10+
(if (consp (cdr ys))
11+
(let* ((cdr-xs (decode m (cdr ys)))
12+
(car-xs (mod (- (car ys) (car cdr-xs)) m)))
13+
(cons car-xs cdr-xs))
14+
(list (mod (- (car ys) (1- m)) m))))
15+
16+
(defun basep (m)
17+
(and (natp m) (>= m 2)))
18+
19+
(defun codep (m x)
20+
(and (natp x) (> m x)))
21+
22+
(defun code-listp (m xs)
23+
(and (true-listp xs)
24+
(or (endp xs)
25+
(and (codep m (car xs)) (code-listp m (cdr xs))))))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
(include-book "cryptography-defs")
2+
(include-book "doublecheck" :dir :teachpacks)
3+
4+
(defproperty nth-character-is-nth-element
5+
(vals :value (random-list-of (random-between 0 94))
6+
:where (and (viscode-listp vals) (consp vals))
7+
n :value (random-between 0 (1- (len vals)))
8+
:where (and (natp n) (<= n (1- (len vals)))))
9+
(equal (code-char (+ 32 (nth n vals))) (nth n (vis->txt vals))))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
(include-book "cryptography-defs")
2+
(include-book "doublecheck" :dir :teachpacks)
3+
4+
(defproperty nth-viscode-is-nth-element
5+
(codes :value (random-list-of (random-between 0 255))
6+
chrs :value (visibilize-txt (codes->chrs codes))
7+
:where (and (visible-txt-listp chrs) (consp chrs))
8+
n :value (random-between 0 (1- (len chrs)))
9+
:where (and (natp n) (<= n (1- (len chrs)))))
10+
(equal (- (char-code (nth n chrs)) 32) (nth n (txt->vis chrs))))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
(include-book "cryptography-defs")
2+
(include-book "doublecheck" :dir :teachpacks)
3+
4+
(defproperty txt->vis-delivers-list-of-viscodes
5+
(codes :value (random-list-of (random-between 0 255))
6+
chrs :value (visibilize-txt (codes->chrs codes))
7+
:where (visible-txt-listp chrs))
8+
(viscode-listp (txt->vis chrs)))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
(include-book "cryptography-defs")
2+
(include-book "doublecheck" :dir :teachpacks)
3+
4+
(defproperty vis->txt-delivers-list-of-characters
5+
(vals :value (random-list-of (random-between 0 94))
6+
:where (viscode-listp vals))
7+
(character-listp (vis->txt vals)))

0 commit comments

Comments
 (0)