Haskell accepts the definition of these two types
data PowerPower = PP ((PowerPower -> Bool) -> Bool)
data Power = P (Power -> Bool)
Type PowerPower is used extensively in the Reynolds' paper that refutes set semantics for System F. It is represented by this type of System F
PowerPower = forall A, (((A -> Bool) -> Bool) -> A) -> A
PP = \ z A f -> f (\ u -> z (\ x -> u (x A f)))
Reynolds' refutation ends by arguing that PowerPower is isomorphic to the powerset of the powerset of PowerPower, which contradicts Cantor's theorem about cardinals. The two nested powersets correspond to the two arrows towards Bool in the definition of PowerPower.
The refutation would be greatly simplified if we could use type Power instead of PowerPower. One powerset is enough to apply Cantor's theorem. The question then becomes: can we represent type Power in System F? It may be difficult, because Power's underlying type functor, \X -> (X -> Bool), is contravariant instead of covariant. Since Haskell accepts the definition of Power, we might use its representation in Haskell's memory model to derive a type in System F.