Thanks Bruno!
Following so far with not problems.

On 5 September 2018 at 19:41, Bruno Marchal <[email protected]> wrote:
> Hi Jason, Telmo, Brent, others,
>
> Some of you might say “OK, combinators combine, and now we know that the
> combination of S and K, that is, the combinators, can do all combination”.
> The last post did prove the so-called combinatorial completeness.
>
> But that might still seem far from Turing universality.
>
> The post of today will make a simple step in that direction.
>
> I propose to implement elementary logic with the combinators. I expose a
> solution due to Barendrecht, which is extraordinarily elegant. It is also
> the one used by Smullyan in “To Mock a Mocking Bird”.
>
> I will first implement the control structure:
>
>        if A then B else C
>
> As you can guess this is a pretty important step toward Turing Universality.
> A is supposed to be some “propositional combinators”, being true or false,
> on some argument(s) or not, and we want that if A is true, then the
> combinators B is trigged, and if A is false, then the combinator C should be
> trigged.
>
> For this we need some representation of the constant Boolean TRUE and FALSE.
>
> Barendrecht defined the constant TRUE by K. And he defined the constant
> false by KI. (I is of course the identity combinator, i.e. SKK). I will use
> t and f as usual for those boolean constants.
>
> So we define:
>
>  t = K
>
>  and
>
> f = KI
>
> Now, the implementation of
>
>        if A then B else C
>
> Is simply
>
>       ABC
>
> Indeed, if A is true, A = t = K, and KBC = B, and if A is false, A = f = KI,
> then ABC = fBC = KIBC = C.
>
> (KIxy = (KIx)y = Iy = y)
>
> OK?
>
> Bold Summary: By choosing t = K, and f = KI, “if A then B else C” becomes
> ABC.
>
> This will be exploited later for programming, but right now, we can use this
> to implement elementary propositional logic.
>
> I will use minuscule for those logical combinators
>
> 1) conjunction: c    ("x and y” is written cxy)
>
> We want a combinator c such that cxy = t if both x and y are equal to t, and
> false in all other situations.
>
> But cxy, the conjunction of x and y, is really the same as "If x then y else
> f".
>
> Indeed, if x is false, “x & y” is false, and if x is true, “x & y” is given
> by the truth value of y.
>
> So:  cxy = 'if x then y else f' = xyf (cf the bold summary above), and c =
> [x][y] xyf, but that is Rfxy where R is the Robin (one of the combinator
> which does a circular permutation, that we have seen previously):
> Rxyz = yzx. Conclusion c = Rf.
>
> <<Remark.
> To be sure we have seen that R = CC and that
> C = S(BBS)(KK),  (note the difference between c and C)
>
> R = CC =  S(BBS)(KK)(S(BBS)(KK)) but there are still B there, which we
> replace by its SK-implementation S(KS)K:
>
> R = S(S(KS)K(S(KS)K)S)(KK)(S(S(KS)K(S(KS)K)S)(KK))
>
> So the combinator c is Rf which is R(KI), and that gives, with I = SKK,
>
> c =  S(S(KS)K(S(KS)K)S)(KK)(S(S(KS)K(S(KS)K)S)(KK))(K(SKK))
>
> But I will write it simply c = Vf. I just wanted you to remember that c is
> truly a combinator, i.e.. a combination of K and S.>>
>
> Does it work? It should. No need to verify this with the long expression, as
> we have already verified that Vxyz = zxy, etc. We can test directly the
> truth table:
>
> ctt = Rftt = ttf = Ktf = t
> ctf = Rftf = tff = Kff = f
> cft = Rfft = ftf = KItf = f
> cff = Rfff = fff = KIff = f
>
> It works!
>
> 2) Disjunction:  d
>
> dxy = if x then t else y  (OK?)
>
> So dxy = xty. So d = [x][y]xty = Tty (with Txy = yx): Ttxy = xty indeed.
>
> So d = Tt
>
> Does it work? Let us verify:
>
> dtt = Tttt = ttt = Ktt = t
> dtf = Tttf = ttf = Ktf = t
> dft = Ttft = ftt = (KI)tt = t
> dff = Ttff = ftf = (KI)tf = f
>
> It works!
>
> 3) implication: i
>
> ixy should be false only if x is t and y is f, if you remember its truth
> table. ixy is basically the (negation of x) or y.
>
> So ixy = if x then y else t.   OK? So ixy = xyt, and i = [x][y]xyt, and that
> gives i = Rt.
> Vérification:
>
> itt = Rttt = ttt = Ktt = t
> itf = Rttf = tft = Kft = f
> ift = Rtft = ftt = KItt = t
> iff = Rtff = fft = KIft = t
>
> It works!
>
> 4) Negation : N (I use “N” instead of “n", as “n” is so much used for
> numbers …, who will soon appear)
>
> We know that (Not x) is the same as (x -> f), so Nx = ixf, and N =[x]ixf
> would do, but we can find it again directly by the fact that
>
> (Not x) = if x then f else t.   OK?
>
> So Nx = xft, and N = [x]xft, which gives N = Vft, with V being the Vireo,
> the other circular permuter combinator: Vxyz = zxy.
>
> Vérification:
>
> (Not t) = Vftt = tft = Kft = f.
> (Not f) = Vftf = fft = (KI)ft = t.
>
> It works!
>
> So we can do propositional logic!
>
> Summary:
>
> t = K
> f = KI
>
> “If x then y else z” = xyz
>
> c = Rf
> d = Tt
> i = Rt
> N = Vft
>
>
> Does this close the Turing Universality question? Some of my students
> thought so. The reason that they give is that with NOT and AND, or with NOT
> and OR, we are supposed to be able to build the Boolean circuit of some von
> Neuman computer. But that is not true, we have only the Boolean logic, and
> to build NAND gates and flip flop, you need time-delay, clock and and some
> implicit recursion or iteration procedure.
>
> In the next chapter (combinator 4), we will obtain recursion, very easily,
> providing a big step for showing that the combinator gives a (high level!)
> programming language, which will be the subject matter of combinator 5. In
> combinator 6 I will explain a *particular* relation between the combinators
> and the phi_i (and the w_i), and perhaps explain the second recursion
> theorem in this setting, which is what is needed to get the mathematical
> definition of the “third person self” (the one obeying to the modal logic G
> and G*).
>
> I might let the things deepen up to the Löbian combinators and their
> “theology" and “physics". Here too Löbianity is imposed by having
> sufficiently strong induction axioms, which provide the strong
> self-referential abilities.
>
> I hope you enjoy.
>
> Bruno
>
>
>
>
>
>
>
>
>
> lllopmp
>
> --
> You received this message because you are subscribed to the Google Groups
> "Everything List" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/everything-list.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Everything List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/everything-list.
For more options, visit https://groups.google.com/d/optout.

Reply via email to