! bit.ax.txt - bit and bit-inequality utilities ! uses form.ax, ho.ax.txt? ! -- helpful to have higher-order! !/ bit0,bit1,bits - bit atoms bit - set of bit atoms bitseq - sequence of bits < - ordering of bit exprs (where bits can be compared lexicographically) <= - (bit) ordering from < and == >, >= - reverse of <, <= ordered - sequence elements have <= bit-ordering relation /= - inequality based on bits /in - element not-in a sequence (based on bit inequality) distinct - all elements of a sequence are bit-distinguishable dup_elim - eliminate duplicate elements from a sequence (=> bit distinct) sort - 2nd arg is ordering of first arg elements, given <= relation all_in - all arg 1 elements are 'in' arg 2 sequence some_in - at least one arg 1 elem is 'in' arg 2 sequence none_in - no arg 1 elem is 'in' arg 2 sequence some_/in - at least one arg 1 elem is not-in arg 2 sequence subset - arg 1 is subset of arg 2 /subset - arg 1 is not subset of arg 2 ===== negative (bit-distinguishable) binary relations ===== /prefix - arg 1 sequence is not a prefix of arg 2 sequence /suffix - arg 2 sequence is not a suffix of arg 1 sequence ===== bit-distinguishable binary operations ... add_elem - append an element to a set if not already there union - union of set-seqs of bit distinguishable elements intersect - intersection of set-seqs of bit distinguishable elements difference - difference of set-seqs of bit distinguishable elements --- tbd: (merge ) - merge ordered sequences (given bit ordering) (merge_op < <=op> ) - merge given ordering ops (sort ) - sort a sequence of elements based on bit < (sort_op < <=op> ) - sort given ordering ops (par_sort ( ..data..) ( ..data'..)) - parallel-sort data seqs (in_ ) - expr in sequence, but only one solution - [only_]one_in or unique_in (prefix (..x..) (..)) - bit expr prefix up to (remove ) - remove 1st occurrence of expr from seq (dup_elim ) - elim duplicate exprs in seq, keeping first occur (dup_elim_front ) - elim dupl exprs in seq, keeping last occur ((subst %ex? %ex') ) - replace with if == ((replace %ex? %ex') ) - replace with if matches (replace_head ) - replace head of sequence if match for eval.ax: not_member < /in char_string < charseq -- also see eval.ax utilities: member?, ==?, prefix?,