August 2005
Proposed final version for Houston J. Math., January 19, 2006
Drafts
This Web page is a companion to a paper (in preparation) of the same name, and it serves several purposes. It fills in some proofs and details omitted from the paper, it is a tutorial on the use of the automated deduction, it is written in a more elementary style, and it serves as research notes for the project.
The automated deduction systems Prover9 and Otter (which search for proofs) and Mace4 (which searches for finite models and counterexamples) is used. Note that for these programs, x,y,z,... are variables; A,B,C, ... are constants; and implications are written as disjunctions.
% Lattice Theory (LT) x v y = y v x. x ^ y = y ^ x. (x v y) v z = x v (y v z). (x ^ y) ^ z = x ^ (y ^ z). x ^ (x v y) = x. x v (x ^ y) = x. % Existence of Complements x v x' = 1. x ^ x' = 0. % Unique Complementation (UC) x v y != 1 | x ^ y != 0 | x' = y.A very basic theorem is that a complemented lattice satisfying either of the distributivity laws is a Boolean algebra, and we use that theorem as the basis of this work.
It is also well known that a UC lattice satisfying modularity is a Boolean algebra. Prover9 can prove this by deriving distributivity:
prover9 -f uc-mod.in > uc-mod.outIn ordinary lattice theory, modularity is weaker than distributivity, and this work extends that notion by presenting even wearker properties that force UC lattices to be Boolean.
Another property that forces a UC lattice to be Boolean is "order reversibilty", that is, the implication x ≤ y → y' ≤ x'. Here is a Prover9 proof that derives distributivity from the order reverseibility property.
prover9 -f ord-rev.in > ord-rev.outThis property is usually easier to prove than distributivity or modularity, so we use it in the proofs below.
Also see a first-order proof for Frink's basis for Boolean algebra:
prover9 -f frink.in > frink.out
prover9 -f H69.in > H69.outMace4 shows that H69 does not satisfy modularity (by giving N_5 as a counterexample):
mace4 -c -N100 -f H69-nonmod.in > H69-nonmod.outTheorem 3 from the paper:
prover9 -f H58.in > H58.out
x v y != x v z | x v y = x v (y ^ z) # label(SD_join). x v y != x v z | (x ^ y) v (x ^ z) = x ^ (y v z) # label(CD_join). x v y != x v z | x ^ ((x ^ y) v z) = (x ^ y) v (x ^ z) # label(CM_join).and their duals SD_meet, CD_meet, CM_meet.
Theorem 2 in the paper says that these are Huntington properties. Here are Prover9 proofs.
prover9 -f SD-join.in > SD-join.out prover9 -f CD-join.in > CD-join.out prover9 -f CM-join.in > CM-join.outEach of the identities in the following lists is shown to be a Huntington identity by proving one of those six properties.
x ^ (y v (z ^ (x v u))) = x ^ (y v (z ^ (x v (z ^ (y v u))))) # label(H50). x ^ (y v (z ^ (x v u))) = x ^ (y v ((x ^ z) v (z ^ u))) # label(H51). x ^ (y v (z ^ (y v u))) = x ^ (y v (z ^ (u v (x ^ y)))) # label(H76). x ^ (y v (z ^ (x v u))) = x ^ ((x ^ (y v (x ^ z))) v (z ^ u)) # label(H79).
x ^ (y v z) = x ^ (y v (x ^ (z v (x ^ (y v (x ^ z)))))) # label(H64). x ^ (y v z) = x ^ (y v (x ^ (z v (x ^ y)))) # label(H68). x ^ (z v y) = (x ^ (y v (x ^ z))) v (x ^ (z v (x ^ y))) # label(H69). x ^ (y v (z ^ (y v u))) = x ^ (y v (z ^ (u v (x ^ y)))) # label(H76). x ^ (y v (z ^ (x v u))) = x ^ ((x ^ (y v (x ^ z))) v (z ^ u)) # label(H79).
(x ^ y) v (x ^ z) = x ^ ((y ^ (x v z)) v (z ^ (x v y))) # label(H82).
(x ^ y) v (x ^ z) = x ^ ((x ^ y) v ((x ^ z) v (y ^ (x v z)))) # label(H18). (x ^ y) v (x ^ z) = x ^ ((x ^ y) v (z ^ (x v (y ^ (x v z))))) # label(H80). (x ^ y) v (x ^ z) = x ^ ((y ^ (x v z)) v (z ^ (x v y))) # label(H82).
x ^ (y v (z ^ (x v u))) = x ^ (y v (z ^ (x v (z ^ u)))) # label(H1). x ^ (y v (x ^ z)) = x ^ (y v (z ^ ((x ^ (y v z)) v (y ^ z)))) # label(H2). x ^ (y v (x ^ z)) = x ^ (y v (z ^ (y v (x ^ (z v (x ^ y)))))) # label(H3). x v (y ^ (x v z)) = x v (y ^ (z v (x ^ (z v y)))) # label(H55). x ^ (y v z) = x ^ (y v ((x v y) ^ (z v (x ^ y)))) # label(H58). % Theorem 3Here are the corresponding Prover9 proofs.
prover9 -f H1.in > H1.out prover9 -f H2.in > H2.out prover9 -f H3.in > H3.out prover9 -f H55.in > H55.out prover9 -f H58.in > H58.outNone of these five Huntington identities satisfies any of the six Huntington implications. Mace4 easily shows this by finding the counterexamples given in the following table. Each counterexample is the smallest possible.
Note: Lattice NM08 (number 18) has been removed from the paper.
x ^ (y v (z ^ (x v u))) = x ^ (y v (z ^ (x v (z ^ u)))) # label(H1). % 1 2 7 10 11 13 14 15 17 x ^ (y v (x ^ z)) = x ^ (y v (z ^ ((x ^ (y v z)) v (y ^ z)))) # label(H2). % 1 4 6 7 8 9 10 11 12 13 14 15 16 17 18 x ^ (y v (x ^ z)) = x ^ (y v (z ^ (y v (x ^ (z v (x ^ y)))))) # label(H3). % 1 4 6 7 8 9 10 11 12 13 14 15 16 17 18 (x ^ y) v (x ^ z) = x ^ ((x ^ y) v ((x ^ z) v (y ^ (x v z)))) # label(H18). % 1 4 6 7 9 10 11 13 15 16 17 18 x ^ (y v (z ^ (x v u))) = x ^ (y v (z ^ (x v (z ^ (y v u))))) # label(H50). % 1 6 7 9 10 11 13 14 15 17 x ^ (y v (z ^ (x v u))) = x ^ (y v ((x ^ z) v (z ^ u))) # label(H51). % 1 7 10 11 13 14 15 17 x v (y ^ (x v z)) = x v (y ^ (z v (x ^ (z v y)))) # label(H55). % 2 5 6 7 8 9 10 12 13 14 15 16 17 18 x ^ (y v z) = x ^ (y v ((x v y) ^ (z v (x ^ y)))) # label(H58). % 2 5 6 7 8 9 10 12 13 14 15 16 17 18 x ^ (y v z) = x ^ (y v (x ^ (z v (x ^ (y v (x ^ z)))))) # label(H64). % 2 6 7 8 9 10 11 12 13 14 15 17 x ^ (y v z) = x ^ (y v (x ^ (z v (x ^ y)))) # label(H68). % 2 6 7 8 9 10 12 13 14 15 17 x ^ (z v y) = (x ^ (y v (x ^ z))) v (x ^ (z v (x ^ y))) # label(H69). % 2 6 7 8 9 10 12 13 14 15 17 x ^ (y v (z ^ (y v u))) = x ^ (y v (z ^ (u v (x ^ y)))) # label(H76). % 6 7 8 9 10 13 14 15 17 x ^ (y v (z ^ (x v u))) = x ^ ((x ^ (y v (x ^ z))) v (z ^ u)) # label(H79). % 7 10 13 14 15 17 (x ^ y) v (x ^ z) = x ^ ((x ^ y) v (z ^ (x v (y ^ (x v z))))) # label(H80). % 1 3 4 6 7 8 9 10 11 13 15 16 17 18 (x ^ y) v (x ^ z) = x ^ ((y ^ (x v z)) v (z ^ (x v y))) # label(H82). % 1 4 6 7 9 10 11 13 15 17According to the table, the only pairs of identites that might be equivalent (given LT) are H2-H3, H55-H58, and H68-H69. The following Mace4 jobs show that they are not. In these five jobs, H2-H3, for example, shows that H2 does not imply H3.
mace4 -N100 -f H2-H3.in > H2-H3.out mace4 -N100 -f H3-H2.in > H3-H2.out mace4 -N100 -f H55-H58.in > H55-H58.out mace4 -N100 -f H58-H55.in > H58-H55.out mace4 -N100 -f H68-H69.in > H68-H69.outNext we consider all implications that might hold (according to the table) between pairs of identities. For example, H82 might imply H80, because H80 holds in a subset of the 18 models in which H82 holds.
mace4 -N100 -f H18-H3.in > H18-H3.out mace4 -N100 -f H76-H69.in > H76-H69.out mace4 -N100 -f H79-H69.in > H79-H69.out mace4 -N100 -f H82-H3.in > H82-H3.out
Once we had the collection of theorems, we started from scratch, to get the proofs in a uniform way with Prover9. The proofs range from easy (e.g., H51->H1) to quite challenging (H50->H2). We started by trying to prove each without any hints. Then we iterated, using the proofs from the successful searches as hints for the failures. (Because the time limit was increased at each iteration, it is not always clear that the hints played a positive role.)
Only the proofs are given here. To reconstruct the input file, use "the basic input file" for each group.
Proved without hints (1 hour limit). All use this basic input file.
H18 -> H2 H18 -> H80 H50 -> H3 H51 -> H1 H51 -> H2 H51 -> H3 H68 -> H55 H68 -> H58 H68 -> H64 H69 -> H55 H69 -> H58 H69 -> H64 H69 -> H68 H76 -> H2 H76 -> H3 H76 -> H55 H76 -> H58 H76 -> H64 H76 -> H68 H79 -> H1 H79 -> H2 H79 -> H3 H79 -> H51 H79 -> H55 H79 -> H58 H79 -> H64 H79 -> H68 H82 -> H18 H82 -> H80 H82 -> H2Proved with hints from the preceding proofs (1 hour limit). Here is this basic input file.
H51 -> H50 H79 -> H50Proved with hints from all of the preceding proofs (1 hour limit). Here is this basic input file.
H50 -> H2This following one was proved later.
prover9 -f H79-H76.in > H79-H76.out