How to define a recursive function in the (pure) calculus of constructions? I do not see any fixpoint combinator there.
Related Questions in RECURSION
- Needing a private and public method for the same recursive function
- Recursive function in PHP function : how to prevent return value?
- Json implicit format with recursive class definition
- java update all children in list
- recursively editing member variable: All instances have same value
- Editing pseudo_encrypt PostgreSQL function with Recurrsion to Avoid Certain IDs
- How to copy elements from array one to array two using recursion?
- create_progress_bar in recursive functions in R
- How to check that all values are equal in array using recursion?
- String List of filepaths to structured object
Related Questions in FUNCTIONAL-PROGRAMMING
- Access into a Binary Search Tree via a bound function in a function template
- Convert loop to Maybe monad
- Lazy concat in Immutable.js?
- Erlang syntax error unclear
- What is the type of the variable in do-notation here in Haskell?
- Lazy functions evaluation in swift
- Standard ML / NJ: Loading in file of functions
- First Object in Set<Future<Object>> that satisfies a predicate
- How to write a type that is isomorphic to Tree without nested lists?
- Functional way of doing a loop of operations on an array
Related Questions in COQ
- CoqIDE loadpath error for ssreflect
- How to assign a natural number to variable in Coq?
- Handling let in hypothesis
- Sum of exponents with same base
- How to run Athena | Coq | Isabelle codes remotely?
- Is equality decidable on any coinductive type?
- Coq "convoy pattern"
- In coq, how to do "induction n eqn: Hn" in a way that doesn't mess up the inductive hypothesis?
- Pattern matching multiple constructors in a single clause in Coq
- How to use Coq GenericMinMax to prove facts about the reals
Related Questions in LAMBDA-CALCULUS
- Reducing Complex DCGs Prolog
- Why is this an invalid eta conversion?
- Why are the set of variables in lambda calculus typically defined as countable infinite?
- Lambda calculus entire expression substitution
- Turing Machines and Lambda Calculus equivalence
- Haskell for Lambda Calculus, Type Inferencing
- Define the binary exponential operator CARAT in Lambda Calculus
- Find the lambda-terme without free variables of the following types?
- Looking for a Church-encoding (lambda calculus) to define < , > , !=
- Haskell, lambda calculus for Evaluation
Related Questions in TYPED-LAMBDA-CALCULUS
- Recursion in the calculus of construction
- What are the weird equations found while researching Simply Typed Lambda Calculus
- Type checking vs type inference
- Using Typescript, how do I type the functional True function?
- Is there simple way to extend simply typed lambda calculus with monad types?
- Right way to define lambda-calculus constructors
- The `repeat` syntax of gradual typed lambda calculus defined by Racket?
- Proof trees for simply typed lambda calculus
- Simply typed Lambda calculas
- Example of the undecidability of higher-order unification
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
People in the CS stack exchange might be able to provide some more insight, but here is an attempt.
Inductive data types are defined in the calculus of constructions with a Church encoding: the data type is the type of its fold function. The most basic example are the natural numbers, which are defined as follows, using a Coq-like notation:
This encoding yields two things: (1) terms
zero : natandsucc : nat -> natfor constructing natural numbers, and (2) an operatornat_recfor writing recursive functions.If we pose
F := nat_rec T x ffor termsx : Tandf : T -> T, we see that the following equations are valid:Thus,
nat_recallows us to define recursive functions by specifying a return valuexfor the base case, and a functionfto process the value of the recursive call. Note that this does not allow us to define arbitrary recursive functions on the natural numbers, but only those that perform recursive calls on the predecessor of their argument. Allowing arbitrary recursion would open the door to partial functions, which would compromise the soundness of the calculus.This example can be generalized to other inductive data types. For instance, we can define the type of lists of natural numbers as the type of their fold right function: