1.4.11 Trees
| (alphorder x y) → t |
| x : (atom x) |
| y : (atom y) |
Determines if x is lexicographically less than y. Works on any atomic input.
Examples: |
| > (alphorder 6 4) |
() |
| > (alphorder 4 6) |
t |
| > (alphorder 4 4) |
t |
| > (alphorder "abc" "bcd") |
t |
| > (alphorder "bcd" "abc") |
() |
| > (alphorder #\a "a") |
t |
| > (alphorder "a" #\a) |
() |
| (atom x) → t |
| x : t |
Returns true if x is not a cons pair.
Examples: |
| > (atom 4) |
t |
| > (atom 'hello) |
t |
| > (atom (cons 4 nil)) |
() |
| (eq x y) → t |
| x : t |
| y : (or (symbolp x) (symbolp y)) |
Tests two symbols for equality.
Examples: |
| > (eq 'yes 'yes) |
t |
| > (eq 'yes 'no) |
() |
| (eql x y) → t |
| x : t |
| y : (or (eqlablep x) (eqlablep y)) |
Tests equality of two numbers, symbols, or characters.
Examples: |
| > (eql 'yes 'yes) |
t |
| > (eql 'yes 'no) |
() |
| > (eql 5 5) |
t |
| > (eql #\a #\b) |
() |
| > (eql #\5 5) |
() |
| (eqlablep x) → t |
| x : t |
Returns t if and only if x is either a number, a symbol, or a character.
Examples: |
| > (eqlablep nil) |
t |
| > (eqlablep 4) |
t |
| > (eqlablep #\a) |
t |
| > (eqlablep 'symbol) |
t |
| > (eqlablep "string") |
() |
| (equal x y) |
Tests x and y for equality. Returns t if and only if they are the same value.
Examples: |
| > (equal "yes" "yes") |
t |
| > (equal 'yes "no") |
() |
| > (equal 'yes "yes") |
() |
| (identity x) → t |
| x : t |
The identity function. Returns its argument unchanged.
Examples: |
| > (identity 'x) |
x |
| (lexorder a b) → t |
| a : t |
| b : t |
Determines if the two given items are in lexicographic order.
Examples: |
| > (lexorder 6 4) |
() |
| > (lexorder 4 6) |
t |
| > (lexorder #\a #\b) |
t |
| > (lexorder #\b #\a) |
() |
| > (lexorder 'a 'b) |
t |
| > (lexorder 'b 'a) |
() |
| > (lexorder "abc" "bcd") |
t |
| > (lexorder "bcd" "abc") |
() |
| > (lexorder (list 1 2) (list 3 4)) |
t |
| > (lexorder (list 3 4) (list 1 2)) |
() |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
Shorthand macros for compositions of car and cdr. For instance, (caddr x) is equivalent to (car (cdr (cdr x))).
Examples: | |||||
| |||||
| > (caar *tree*) | |||||
((0 . 1) 2 . 3) | |||||
| > (cdar *tree*) | |||||
((4 . 5) 6 . 7) | |||||
| > (cadr *tree*) | |||||
((8 . 9) 10 . 11) | |||||
| > (cddr *tree*) | |||||
((12 . 13) 14 . 15) | |||||
| > (caaar *tree*) | |||||
(0 . 1) | |||||
| > (cdaar *tree*) | |||||
(2 . 3) | |||||
| > (cadar *tree*) | |||||
(4 . 5) | |||||
| > (cddar *tree*) | |||||
(6 . 7) | |||||
| > (caadr *tree*) | |||||
(8 . 9) | |||||
| > (cdadr *tree*) | |||||
(10 . 11) | |||||
| > (caddr *tree*) | |||||
(12 . 13) | |||||
| > (cdddr *tree*) | |||||
(14 . 15) | |||||
| > (caaaar *tree*) | |||||
0 | |||||
| > (cdaaar *tree*) | |||||
1 | |||||
| > (cadaar *tree*) | |||||
2 | |||||
| > (cddaar *tree*) | |||||
3 | |||||
| > (caadar *tree*) | |||||
4 | |||||
| > (cdadar *tree*) | |||||
5 | |||||
| > (caddar *tree*) | |||||
6 | |||||
| > (cdddar *tree*) | |||||
7 | |||||
| > (caaadr *tree*) | |||||
8 | |||||
| > (cdaadr *tree*) | |||||
9 | |||||
| > (cadadr *tree*) | |||||
10 | |||||
| > (cddadr *tree*) | |||||
11 | |||||
| > (caaddr *tree*) | |||||
12 | |||||
| > (cdaddr *tree*) | |||||
13 | |||||
| > (cadddr *tree*) | |||||
14 | |||||
| > (cddddr *tree*) | |||||
15 |
| (quote ) |
Examples: |
| > 'a |
a |
| > '(1 2 3 4) |
(1 2 3 4) |
| (quasiquote ) |
Examples: |
| > `a |
a |
| > `(1 2 3 4) |
(1 2 3 4) |
| (unquote ) |
Examples: |
| > '(list ,a b c d) |
(list ,a b c d) |
| (subst new old tree) → t |
| new : t |
| old : (eqlablep old) |
| tree : t |
Substitutes every occurrence of old with new in the given tree. Uses eql as the test.
Examples: |
| > (subst 2 1 (list 1 1 1 3 1 1 1)) |
(2 2 2 3 2 2 2) |
| > (subst 'z 'a (list 'a 'b (list 'd 'a (list 'a 'e)) 'a)) |
(z b (d z (z e)) z) |
| (acl2-count v) → natp |
| v : t |
Calculates the size of a value. This is the default recursion metric used for ACL2 termination proofs.
The size of a cons-pair is one more than the sum of the sizes of its car and cdr. The size of an integer is its absolute value, the size of a rational number is the sum of the sizes of its numerator and denominator, and the size of a complex number is one more than the sum of the sizes of its real and imaginary parts. The size of a string is its length. The size of all other values (characters and symbols) is 0.
Examples: |
| > (acl2-count 3/4) |
7 |
| > (acl2-count (complex 3 4)) |
8 |
| > (acl2-count "ABCD") |
4 |
| > (acl2-count 'ABCD) |
0 |
| > (acl2-count '(a b c d)) |
4 |