Results

**1 - 1**of**1**### A “Book ” proof that parallel convergence tester cannot implement parallel or

, 2009

"... I give a short and elementary proof that paralle convergence tester cannot implement parallel or. Parallel convergence tester is a two-argument function c: O → O × O with the following graph: c(⊥, ⊥) = ⊥ c(⊥, ⊤) = ⊤ c(⊤, ⊥) = ⊤ c(⊤, ⊤) = ⊤. Parallel or is the well-known function p: B × B → B de ..."

Abstract
- Add to MetaCart

I give a short and elementary proof that paralle convergence tester cannot implement parallel or. Parallel convergence tester is a two-argument function c: O → O × O with the following graph: c(⊥, ⊥) = ⊥ c(⊥, ⊤) = ⊤ c(⊤, ⊥) = ⊤ c(⊤, ⊤) = ⊤. Parallel or is the well-known function p: B × B → B defined on the domain of booleans B with the following graph: p(ff,ff) = ff p(tt, ⊥) = tt p(⊥,ff) = ⊥ p(⊥,tt) = tt p(ff, ⊥) = ⊥ with all other values being determined by monotonicity. These functions arise in the discussion of full abstraction of PCF [Plo77] and the lazy λ-calculus [AO93]. It is now well-known that the lattice of degrees of parallelism is very rich and infinite in two directions [Buc97, PP01]: the fact that one cannot implement p with c is a tiny part of these results. There is, however, a very simple proof that PCF with c cannot implement p assuming that PCF by itself cannot implement p. Suppose that such an implementation exists so that there is some pure PCF context C[·] with C[c] = p. The functional λx.C[x] is monotone. Therefore the pure PCF 1 term C[λu.⊤] is extensionally above p, but p is maximal so the pure PCF term C[λu.⊤] = p, a contradiction. In fact this argument applies to any function with return type O even if it is horribly non-recursive.