A Theorem on Boolean Matrices

Given two boolean matrices A arid B, we define the boolean product A A B as that matrix whose (i, j)th entry is vk(a~/, A bki). We define tile boolean sum A V B as that matrix whose (i, j)th entry is a ij V b~j. The use of boolean matrices to represent program topology (Presser [1], and Marimont [2], t'or example) has led to interest in algorithms for transforming the d × d boolean matrix M to the d × d boolean matrix M' given by: d M' = v M s where we defineM ~ = MandM ~+I = M ~AM. 4=1 ne convenience of describing the transformation as a boolean sum of boolean products has apparently l suggested the corresponding algorithms, the running times of which increase-other things being equal-as the cube of d. While refraining from comment on the area of utility of such matrices, we prove the validity of an algorithm whose running time goes up slightly faster than the square of d. T,~EoeE~z. Given a square (d × d) matrix M each of whose elements m~5 is 0 or 1. Define M' by m,{~ = 1 if and only if either mii= 1 or there exist integers 1. Set i = 1. 2. (Va3 :my* = 1)(V£) set. rnj* =mik V mik. We assert M* = M'. PROOF. Trivially, m~*j = 1 ~ m~i = 1. For, either m~s was unity initially (m,4j = J)-in which case m~i is surely unity-or m~*-was set to unity in step two. That is, there were, at the L0th application of step two, m~L0 = m~0~" = 1. 1 Presser, op. cir. In his definition of Boolean sum and product, Presser uses "V" for product and "/k" for sum. This is apparently a typographicM error, for his subsequent usage is consistent with ours. This definition of M' is trivially equivalent to the previous one. a This definition by construction is equivalent to the recursive definition: 0. (mo)~ = mij ; 1.