1. Implement a homomorphic encryption function for beta reduction
50 points
2. Implement said scheme in a compiler for your favorite language
30 points
3. Create an anonymous peer to peer secure grid computing framework
20 points
Due date: before your death.
Name:
Anonymous2013-02-19 4:25
ffs look at this...
For example, suppose we have an expression such as
\x y -> 2*x*x + y
and we change this to
\a b -> 2*a*a + b
This is clearly the same function, even though it uses different variable names. This process of renaming variables is alpha conversion.
Note that alpha conversion is not as simple as it first seems. We must be careful to avoid name capture. For example, if we rename
x
to
y
in
\x -> x + y
then we end up with
\y -> y + y
, which is not the same function!
next
For example, suppose we apply the function
(\x -> 2*x*x + y)
to the value
7
. To calculate the result, we substitute
7
for every free occurrence of
x
, and so the application of the function
(\x -> 2*x*x + y)(7)
is reduced to the result
2*7*7 + y
This is a beta reduction.
next
An eta conversion (also written η-conversion) is adding or dropping of abstraction over a function. For example, the following two values are equivalent under η-conversion:
\x -> abs x
and
abs
Converting from the first to the second would constitute an eta reduction, and moving from the second to the first would be an eta abstraction. The term 'eta conversion' can refer to the process in either direction.
next
A lambda abstraction is another name for an anonymous function. It gets its name from the usual notation for writing it: for example, \lambda x \to x^2. (Another common, equivalent notation is: \lambda x . \ x^2.)