Research
λ calculus Agda Bidirectional Updating Burrows-Wheeler Transform Concurrency Converse-of-a-Function Theorem Curry-Howard Data Structure Dependent Type Fibonacci GADT Greedy Theorem Haskell HaXML List Homomorphism Logic Logic Programming Program Derivation Program Inversion Quantum Programming Quine Regular Expression Segment Problems Termination Thinning Theorem Types XML Streaming-
Recent Comments
- 先寬度標記 on Theory and applications of inverting functions as folds.
- Liang-Ting Chen on Proof Irrelevance, Extensional Equality, and the Excluded Middle
- Shin on Proof Irrelevance, Extensional Equality, and the Excluded Middle
- speleologic on Proof Irrelevance, Extensional Equality, and the Excluded Middle
- Dan Doel on No Inverses for Injective but Non-Surjective Functions?
Substraction not Definable in Simply Typed Lambda Calculus
I probably wrote this a couple of years ago when I was studying polymorphic types.
What happens if we have only monomorphic type when we define church numerals? Let us represent church numerals by the type
(a -> a) -> a -> afor some monomorphica:Zero and successor can still be defined. Their values do not matter.
Also assume we have pairs predefined:
We can even define primitive recursion, only that it does not have the desired type:
Instead we get the type below:
Therefore, predecessor does not get the type
pred :: N a -> N a
we want. Instead we have:Ref.
Oleg Kiselyov, Predecessor and lists are not representable in simply typed lambda-calculus.