list(usable). a(k(x),y) = x. a(p1,pair(x,y)) = x. a(p2,pair(x,y)) = y. a(pair(x,y),z) = pair(a(x,z),a(y,z)). pair(a(p1,x),a(p2,x)) = x. a(a(a(abst,x),y),z) = a(a(x,k(z)),a(y,z)). x != y | a(eq,pair(x,y)) = p1. x = y | a(eq,pair(x,y)) = p2. x = y | a(x,noteq(x,y)) != a(y,noteq(x,y)). p1 != p2. end_of_list.
pair(p1, p2) is an identity combinator, in fact the identity combinator if we also consider the axiom of extensionality below. The sixth clause defines the action of the combinator abst which provides stratified combinatory completeness. The seventh and eighth clauses postulate the existence of eq, the characteristic function of equality. The ninth clause uses a skolem function noteq to express the axiom of extensionality, which says that if two combinators represent the same function, that is, given identical inputs they always produce identical outputs, then they are equal. The last clause precludes a trivial universe consisting of a single combinator.
At the outset I added some redundant versions of some of the above axioms in the hope that they would help OTTER to find proofs. The following two clauses follow so immediately from the above that we do not bother including the one-line OTTER proofs.
list(usable). p2 != p1. a(eq,pair(x,x)) = p1. end_of_list.
eq in terms of projections.list(usable). a(p1,x) != a(p2,x) | a(eq,x) = p1. end_of_list.
Proof of a(p1,x) != a(p2,x) | a(eq,x) = p1. | OTTER output file
list(usable). a(p1,x) = a(p2,x) | a(eq,x) = p2. end_of_list.
Proof of a(p1,x) = a(p2,x) | a(eq,x) = p2. | OTTER output file
up | previous | next | detailed contents | brief contents