How can we prove Stream A = νX. A × X
is isomorphic to Nat -> A = (μX. 1 + X) -> A
?
In programming sense, Stream A
can be seen as a function from Nat to A
, and I can write isomorphisms between them.
But how can this be proven mathematically?
I would also like to know the conversion mechanism from μ
to ν
, and vice versa.
μX. T = forall Y. ((\X. T) Y -> Y) -> Y
andνX. T = forall Y. (Y -> (\X. T) Y) -> (\X. T) Y
, if I'm not mistaken (ifX
only occurs in positive positions). – Labbekak Jul 31 '20 at 07:34