Home
|
Introduction
A genoid theory is a category (A,
G) of
two objects such that G together with two morphisms
x: G -> A and +:
G ->
G is the product of
A and G, and G is a
dense object. A left algebra of (A,
G) is a functor from (A,
G) to the category Set of sets preserving the product.
| Let A = hom(G, A)
and G = hom(G, G). For
any pair (a, u) in A X G
let [a, u]: G
-> G be the
unique morphism such that x[a, u] =
a and + [a, u] = u. Then u
= [xu, +u] for any u in G. |
A clone theory is a category (A,
G) of
two objects such that G together with an infinite
sequence of morphisms x1, x2, .. from G
to A is a
countable power of A. A left algebra of
(A,
G) is a functor from (A,
G) to Set preserving the power. Left algebras
of clone theories are main objects of study in universal algebra.
| Let A = hom(G, A)
and G = hom(G, G). For
any infinte sequence a1, a2,
.... in A let [a1, a2...]:
G ->
G be the unique
morphism such that xi[a1, a2...]
= ai. Then u = [x1u,
x2u,...] for any u in G.
Any clone theory determines a genoid theory with x = x1,
+ = [ x2, x3 , ...]. |
Let (A, G) be a
genoid. Let P be a right act of the monoid G = hom(G,
G). An abstract binding (resp.
cobinding) operation on P is a map
σ: P
->
P such that (σp)u = σ(p[x, u+])
(resp. σ(pu) = (σp)[x, u+]) for
any p in P and u in G. A binding
algebra of (A, G)
is a right act P of G equipped with some binding,
cobinding operations, and other homomorphism of right acts Pn
-> P
for various arity n ≥
0. Here are two important types of binding algebras:
| Lambda Calculus:
A reflexive lambda calculus is a genoid (A,
G) together with a binding operation λ: A
-> A
and a cobinding operation λ*: A
->
A such that λλ* = idA. An
extensive lambda calculus is a genoid (A,
G) together with a bijective binding operation
λ: A
-> A. First Order Logic: A
quantifier algebra with terms in a genoid
(A, G)
is a right act P of G with an abstract binding operation : P ->
P and two homomorphisms F:
P0 ->
P, and =>: P
X P -> P such that (i)
P is a Boolean algebra
with respect to the derived operations (V, Λ, ~, F, T).
(ii) ∃ (p ∨
q) = (∃ p) ∨ (∃ q) for any p,q, in P.
(iii) p < (∃p)+
for any p in P. |
|
|
Genoids |
A genoid (A, G, x,
+, [ ]) consisting of a monoid (G, e),
a right act A of G, an element x of A,
an element + of G,
and a map [ ]: A X G -> G
such that for any a in A and u in G we
have (i) x[a, u] = a.
(ii) +[a,
u] = u.
(iii) u = [xu, +u].
In the following we fix a genoid, denoted simply by (A, G).
We shall write [a1, a2, ..an, u]
for [a1, [a2, [...
[an, u]...]]]. |
|
Let x1 = x, xi
= xi+
for any i > 0. Then (iii) extends to
u
= = [x1u, x2u,
... xnu, +nu]
for any n > 0. Let
κn: G -> An
be the map sending each u to the expression [x1u, x2u,
... xnu]. We assume
y, z, w, ...in {x1, x2
, x3 ...}, which are called syntactical
variables. |
| Let P be a right act of the
monoid G. We say an element p of P has a
finite rank n > 0 if pu = pv for any u, v in
G with κn(u)
= κn(v).
We say p has a finite rank 0 (or p is closed)
if pu = pv for any u, v in G. An element of
P is called finitary if it has a finite rank. We say P
(or A) is locally finitary if any of its
element is finitary. We say an element p of P is
independent of xn
if p = p[x1, .. x(n-1),
x(n+1), +n]. |
|
Let δ: G
-> G be the map sending u to [x, u+]. Then δ is an
endomorphism of monoid G. Let - = [x, e], where e is
the unit of G. Then (δ, +, -) is a monad on
G (viewed as a one-object category). Thus G is a Kleisli
algebra. |
|
If P is
any right act of G denote by PA the new right act
(P, *) of G defined by p*u = p(δu) =
p[x, u+]. A map σ: P ->
P is
an abstract binding (resp.
cobinding) operation if it is a homomorphism
from
PA
to P (resp. from P to
PA).
Such abstract binding operations can be applied to defined algebraic
theories for lambda calculus and first order logic. The traditional
binding operation σxi
: P ->
P (for each variable xi)
is
then defined as the derived operation:
σxi.p
= σ(p[x2, x3,
..., xi, x1, +i+1]).
If y = xi
then σy.p
means σxi.p. |
|
The main difference between an abstract binding
σ:
P ->
P
and a derived operation
σy: P ->
P is that σ reduces the rank n > 0 of
a finitary element of P by 1 while
σy
makes any element of P independent of the variable y
(i.e. binding y). Hence if p has a finite rank
n > 0 then
σnp
and σx1.
... σxn.p
are always closed. |
|
If P is a right act of
G let ev: PA
X A -> P be the map defined by ev(p, a) = p[a,
e]. For any right act T of G define Λ: hom(T
X
A, P) -> hom(T, PA) given by
(Λf)t
= f(t+, x).
Define Λ-1: hom(T, PA) ->
hom(T X A, P)
by
(Λ-1g)(t, a) =
g(t)[a,
e] = ev(g(t), a).
It is easy to see that Λ is the inverse of Λ-1.
Hence Λ is bijective. Thus (PA, ev) is
the exponent in the the cartesian closed category ActG of right acts of G. |
|
Letting T =
P = A we obtain a bijection Λ: hom(A X A, A)-> hom(A, AA).
This is the starting point of lambda calculus. |
|
We say
(A,
G) is an extensive genoid (or
(extensive)
lambda calculs) if it has a bijective abstract binding
operation λ: A
-> A.
Denote by
λ*
the inverse of
λ. Then λ* is a cobinding
operation. Thus λ* determines a homomorphism Λ-1(λ*):
A X A -> A
defined by
ab =
λ*a[b, e].
Hence a genoid is extensive iff there is a
homomorphism A
X A
-> A
of right acts of G such that the induced cobinding
operation
λ*
defined by
λ*(a)
= (a+)x
is bijective. Since
idA
=
λ*λ = λλ*,
we have the following two axioms
|
a = (λa)+x
|
(or a
= (λy.a)y for
any y) |
(β-conversion) |
| a
= λ(a+x) |
(or a
= λy.(ay) if a is independent
of y) |
(η-conversion) |
|
|
We list some of the useful
properties for lambda calculus: (a, b, c in A and u
in G) (1) (λa)b
= a[b, e].
(2) ((λ
a)u)b = a[b, u].
(3) (λa+)b
= a.
(4) (λn
a)+n xn...x1 = a
for any integer n > 0.
(5) If a has a finite rank n > 0 then (λna)xn...x1
= a and λna
is closed. Thus
(λna)an...a1
= (λna)xn...x1
[a1, ..., an, e] = a[a1,
..., an]
(6) An element
a has a finite rank n > 0 if and only if there
is a closed element c such that
a =
cxn...x1. |
|
The following closed terms play
important role in lambda calculus (notation: λy1...yn.a
= λy1.(λy2.(..(λyn.a)...)).)
I = λy,y
= λx1.
K = λyz.y = λλ x2
S = λyzw.yw(zw) = λλλx3x1(x2
x1).
It follows
from (5) we have
Ia
= x1 [a, e] = a.
Kab
= x2[b,
a, e] = a.
Sabc = (x3x1(x2x1))[c,
b, a, e] = ac(bc). |
|
|
|
Clones |
A clone is a set A
such that
(i) The set A* of all the infinite sequences [a1,
a2, ...] of elements of A is a monoid with a
unit [x1, x2, ...].
(ii) A is a right
act of A*.
(iii) xi[a1, a2,
...] = ai for any [a1,
a2, ...] and i > 0. |
| Any clone A determines a
genoid (A, A*, x1,
+, [ ]) with + = [x2, x3, ...] and [a1,
[b1, b2 ,..]] = [a1,
b1, b2 ,..]. Conversely, assume (A, G) is
a any genoid. Denote by F(A) the set of finitary
elements of A. For any a in F(A) with a
finite rank n > 0 and [a1,
a2, ...] in F(A)* define a[a1,
a2, ...] = a[a1,
a2, ..., an , e], which is
independent of the choice of n. Let
[a1,
a2, ...][b1,
b2, ...] = [a1[b1,
b2, ...],
a2[b1,
b2, ...], ...]
Then F(A)* is a monoid
with the unit [x1, x2, ...], F(A)
is a right act of A*, and xi[a1, a2,
...] = ai. Thus (F(A),
F(A)*) is a locally finitary genoid. If A =
F(A) is locally finitary then we have a canonical
homomorphism of genoids (A, G)
-> (A, A*) sending each u in G
to [x1u, x2u, ... xnu, ...].
Since any abstract binding operation preserving finitary elements,
if (A, G) is a lambda calculus, then so is (F(A),
F(A)*). |
| The class of genoids
forms a variety of 2-sorted heterogeneous finitary algebras with universes A and G.
The class of clones forms a variety of infinitary algebras with universe A. |
Let N be a full subcategory of a category
X. A Kleisli triple over N
is a system T = (T, η,
*-) consisting of functions
(a) T: Ob N -> Ob X,
(b) η assigns to each object
A in N a morphism ηA:
A ->
TA,
(c) *- maps each morphism f: B ->
TC with B, C in N to a morphism *f:
TB ->
TC, such that for any g: C ->
TD with D in N
(i) *f*g = *(f*g ).
(ii) ηB*f
= f.
(iii) *ηC = idTC. |
|
If N = X we obtain the original definition for a Kleisli triple over a category, which is an alternative description
of a monad. |
Let N be a full subcategory of a category
X. A clone over N is a pair (K, T) where K is a
category and T is a functor T: K ->
X such that
for any A, B, C in N
(i). Ob N = Ob K.
(ii). K(A, B) = X(A, TB). (iii). f(Tg) = fg for
any
f in K(A, B) and g in K(B,
C). |
|
The notions of a clone over N is
equivalent to a Kleisli triple over
N defined above..
|
Examples: Let X = Set
be the category of sets.
1. A clone over a singleton is equivalent to a monoid.
2. A clone over a finite set is equivalent to a unitary Menger algebra.
3. A clone over a countable set is equivalent to a clone defined above.
4. A clone over the subcategory {0, 1, 2, ...} of finite sets
is equivalent to a clone in the classical sense (or a Lawvere theory).
5. A clone over a one-object category is equivalent to a Kleisli
algebra. |
| 1. Clone Theory, its
Syntax and Semantics, and Applications to Lambda Calculus and
Algebraic Logic |
|
pdf |
| 2. Clones and Genoids (Basic
Concepts) |
html |
pdf |
| 3. Clones and Genoids in Lambda
Calculus and First Order Logic |
|
pdf |
| |
|
|
|