! bool.ax.txt - Boolean functions that use or yield `t/`f (true/false) values ! We also include predicates involving `nil. ----+----|----+----|----+----|----+----|----+----|----+----|----+----|----+----8 !/ uses form.ax, ho.ax, bit.ax ... t, f, tf - true/false representation values (hidden in this file) tfset - the set of true/false values tfseq - a sequence of true/false values t/f_sel - select from two values based on t/f index tf_fn - combine complementary binary relations to yield a true/false function and? - conjuction of t/f values or? - disjuction of t/f values not? - map `t/`f to `f/`t (not? ) - complement of Boolean function in? - test if elem in a sequence or not (given bit-distinguishability) =len?, <1> <2>) and ( <1> <2>) were both ! valid for some arg pair <1> <2>. ! - Ideally, we want and combined to be a total function over ! some arg pair domain. ! and? - conjuction of (zero-or-more) t/f values (and? $tfargs %t)< (t %t), (copies %t ($tfargs)). ! all args are true (and? $tfargs %f)< (f %f), (tfseq ($tfargs)), (in %f ($tfargs)). ! at least one arg is false ! - can't use in? here since `t/`f are not bit-distinguishable ! or? - disjunction of (zero-or-more) t/f values (or? $tfargs %f)< (f %f), (copies %f ($tfargs)). (and? $tfargs %t)< (t %t), (tfseq ($tfargs)), (in %t ($tfargs)). ! not? - map true/false to false/true (valid (not? %t %f) (not? %f %t))< (tf %t %f). ! (not? ) - complement of Boolean function ((not? %tf_fn) $args %tf)< (%tf_fn $args %ft), (not? %tf %ft). ! in? - test if elem in a sequence or not (given bit-distinguishability) (def in? (tf_fn in /in)). ! - Note that we adopt the convention that a name ending in ? denotes a ! function that yields a boolean result. ! =len?, =len)). (def <=len? (tf_fn <=len >len)). ! /=len?, /