Skip to content

Commit baacbe2

Browse files
added crypto and file stuff to axioms
1 parent 079d161 commit baacbe2

File tree

1 file changed

+14
-61
lines changed

1 file changed

+14
-61
lines changed

axioms/axioms.md

+14-61
Original file line numberDiff line numberDiff line change
@@ -92,68 +92,21 @@ ArrayDeque
9292

9393
Note: peekFirst would be very similar to peekLast
9494

95-
File
96-
======
97-
* `read(filereader(file(f, d, l, n), p)) == d[p]`
98-
* `read!(filereader(file(f, d, l, n), p)) == filereader(file(f, d, l, n), p+1)`
99-
* `ready(filereader(file(f, d, l, n), p)) == ITE(p != l-1, True, False)`
100-
101-
HashSet
102-
=======
103-
104-
* `add!(add!(s, e1), e2) == ITE(e2.equals(e1), add!(s, e1), add!(add!(s, e2), e1))`
105-
* `add(add!(s, e1), e2) == ITE(e2.equals(e1), False, add(s, e2))`
106-
* `add([], e) == True`
107-
* `remove!(add!(s, e1), e2) == ITE(e2.equals(e1), s, add!(remove!(s, e2), e1))`
108-
* `remove!([], e) == []`
109-
* `remove(add(s, e1), e2) == ITE(e2.equals(e1), True, remove(s, e2))`
110-
* `remove([], e) == False`
111-
* `size(add(s, _)) == size(s) + 1`
112-
* `size([]) == 0`
113-
114-
TreeSet
115-
=======
116-
117-
* `add!(add!(s, e1), e2) == ITE(e2.equals(e1), add!(s, e1), add!(add!(s, e2), e1))`
118-
* `clear!(_) == []`
119-
* `add(add!(s, e1), e2) == ITE(e2.equals(e1), False, add(s, e2))`
120-
* `add([], e) == True`
121-
* `contains(add!(s, e1), e2) == ITE(e2.equals(e1), True, contains(s, e2))`
122-
123-
ArrayDeque
124-
==========
125-
126-
* `removeFirst!(addFirst!(d, e)) == d`
127-
* `removeFirst!(addLast!(d, e)) == ITE(size(d)==0, [], addLast!(removeFirst!(d), e))`
128-
* `removeFirst!([]) == []`
129-
* `removeFirst(addFirst!(d, e)) == e`
130-
* `removeFirst(addLast!(d, e)) == ITE(size(d)==0, e, removeFirst(d))`
131-
* `removeFirst([]) == null // Note: In Java this is an exception`
132-
* `removeLast!(addLast!(d, e)) == d`
133-
* `removeLast!(addFirst!(d, e)) == ITE(size(d)==0, [], addFirst!(removeLast!(d), e))`
134-
* `removeLast!([]) == []`
135-
* `removeLast(addLast!(d, e)) == e`
136-
* `removeLast(addFirst!(d, e)) == ITE(size(d)==0, e, removeLast(d))`
137-
* `removeLast([]) == null // Note: In Java this is an exception`
138-
* `peekFirst(addFirst!(d, e)) == e`
139-
* `peekFirst(addLast!(d, e)) == ITE(size(d)==0, e, peekFirst(d))`
140-
* `peekLast(addLast!(d, e)) == e`
141-
* `peekLast(addFirst!(d, e)) == ITE(size(d)==0, e, peekLast(d))`
142-
* `size(addFirst!(d, e)) == size(d) + 1`
143-
* `size(addLast!(d, e)) == size(d) + 1`
144-
* `size([]) == 0`
145-
* `isEmpty(s) == ITE(size(s)==0, True, False)`
95+
Cipher (with init and doFinal (one arg))
96+
=====
97+
* `doFinal(init!(c1, m1, k1), doFinal(init!(c2, m2, k2), t)) --> ` <br />
98+
`m1==DEC && m2 == ENC && k1.equals(k2) ? t : GARBAGE`
14699

147-
DES Example (private key -- symmetric crypto)
148-
===========
100+
Note: The benchmarks we used with Cipher varied a bit in the versions of `doFinal` used (i.e. how many args passed), however, all of the axioms for Cipher were similar to this.
149101

150-
* `let g = getInstance("DES/ECB/PKCS5Padding") in` <br />
151-
` let t = doFinal(init(g, "Cipher.ENCRYPT_MODE", k1), t1) in` <br />
152-
`doFinal(init(g,"Cipher.DECRYPT_MODE", k2), t) == ITE(k2.equals(k1), t1, GARBAGE)`
102+
Mac
103+
==
104+
* `doFinal(init!(m, s), t) --> t`
153105

154-
RSA Example (public key -- asymmetric crypto)
155-
===========
106+
BufferedReader
107+
=============
108+
* `readLine([f]) --> f.getLine(0)`
109+
* `readLine(readLine!(b)) --> readLineCount(b, 1)`
110+
* `readLineCount([f], i) --> f.getLine(i)`
111+
* `readLineCount(readLine!(b), i) --> readLineCount(b, i+1)`
156112

157-
* `let g = getInstance("RSA/ECB/PKCS1Padding") in` <br />
158-
`let t = doFinal(init(g, "Cipher.ENCRYPT_MODE", getPublic(k1)), t1) in` <br />
159-
`doFinal(init(g,"Cipher.DECRYPT_MODE", getPrivate(k2)), t) == ITE(k2.equals(k1), t1, GARBAGE)`

0 commit comments

Comments
 (0)