aboutsummaryrefslogtreecommitdiff
path: root/std.gpn
blob: a5ae76d125bd90cd61a2372be716f1a3e11c10b3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Combinators
ID = \x.x
K = \x.\y.x
KI = \x.\y.y
Y = \f.(\x.(f (x x)) \x.(f (x x)))

// Boolean Logic
TRUE = K
FALSE = KI
NOT = \x.((x FALSE) TRUE)
AND = \f.\x.((x f) x)
OR = \x.(x x)
NAND = \f.\x.((((f x) f) FALSE) TRUE)
NOR = \f.\x.((((f f) x) FALSE) TRUE)
XOR = \f.\x.((x ((f FALSE) x)) f)
XNOR = \f.\x.((x f) ((f x) TRUE))

// Church Numerals
INC = \n.\f.\x.(f ((n f) x))
0 = \s.\z.z
1 = (INC 0)
2 = (INC 1)
3 = (INC 2)
4 = (2 2)
5 = (INC 4)
6 = (INC 5)
7 = (INC 6)
8 = (3 2)
9 = (INC 8)
ZERO = \x.((x \f.FALSE) TRUE)
PRED = \n.\f.\x.(((n \a.\b.(b (a f))) \u.x) \i.i)
ADD = \a.\b.\f.\x.((a f) ((b f) x))
MUL = \a.\b.\f.(a (b f))
POW = \a.\b.(a b)