How to define a recursive function in the (pure) calculus of constructions? I do not see any fixpoint combinator there.
Recursion in the calculus of construction
405 Views Asked by Bob At
1
There are 1 best solutions below
Related Questions in RECURSION
- What is the problem in my "sumAtBis" code?
- Leetcode 1255-recursion and backtracking
- Unexpected Recursive Call
- Clang possibly skipping line(s) of code while compiling
- Return an arraylist without passing an argument
- Solving Maze using Backtracking C++
- I can't get the specific node of BST using recursion . i.e. every stack it erase
- Python Quadtree won't insert values
- Top View Of Binary Tree Depth First Search Using TreeMap
- Select/filter tree structure in postgres
- Python global variables in recursion get different result
- Trying to recursively find the area of a polygon
- *Dynamically* decorate a recursive function in Python
- What structure can be made to avoid having to use RefCell?
- Why is the output of the two given cout statements different in the given cpp code
Related Questions in FUNCTIONAL-PROGRAMMING
- On Google Sheets (and only built-in functions allowed, no Google Apps Script) Is it possible to simulate pipe function?
- Why does Enum require to implement toEnum and fromEnum, if that's not enough for types larger than Int?
- Is there a functional way to map a list (N elements) to a list of sums of adjacent elements (N - 1 elements) in Kotlin?
- How to count the occurences of every element in a list in Haskell fast?
- Combine lists with absolute index in functional programming
- How to refactor a loop with iterator. (Returning from closure)
- In Haskell, what does `Con Int` mean?
- Setting up different Java class fields value by a single value on some counter value
- Why doesn't map read show (Integer) work to separate each value in a string of Integers?
- Grouping by multiple fields and counting using in Java 8
- Variable capture: How variables behave in function closures
- Composing React Providers with Value props in Typescript
- How can atomicModifyIORef cause leaks? And why does atomicModifyIORef' solve the problem?
- How can I change XMobar's Kbd monitor plugin such that clicking on it loops throught the layouts?
- How to get success or error data without folding the response while using fpdart in flutter?
Related Questions in COQ
- Coq : mutually recursive definitions with [mrec] in InteractionTrees Library
- Is there a function that returns a list of values with specific type in OCaml?
- How to prove (X !-> 3) =[ <{ X := X + 2 }> ]=> (X !-> 5)?
- Showing polynomial equality in coq/ssreflect
- Syntax of the case tactic in coq
- Why assuming singleton elimination and definitional proof irrelevance leads to UIP, in Coq?
- Understanding nat_ind2 in Logical Foundations
- What `dependent induction` tactic does in Coq and how to use it
- Split multiple conjuncts in the goal
- Coq can't define an inductive proposition
- Coq Decreasing Argument mapping
- The `specialize` tatic in Coq does not work well with typeclasses?
- Multiple Assignements in a Coq Map to the same value
- Decider for lists In Fixpoint
- VSCoq Error: Connection to server got closed. Server will not be restarted
Related Questions in LAMBDA-CALCULUS
- How could this Y' same as this Y combinator itself?
- Type information system recovery
- mock - church numerals?
- beta-equivalence, beta-reduction and transitive+reflexive beta-reduction
- Overlapping Days Calculation Nightmare
- Lambda Calculus - Evaluating Custom Rewrite Rules to Increment
- Is it possible, using PHOAS, to evaluate a term to normal form, and then stringify it?
- Are numbers also functions in functional programming?
- Valid Lambda Expressions
- 'Segmentation Fault' occurred when Lambda Function in Python recurves over 1e5 times
- Why Rust fails when I try to implement recursion with "S I I" from SKI-calculus?
- Do you multiply or add when simplifying λ-expressions?
- How does "true" evaluate in the lazy lambda calculus?
- What is (Y Y), the Y-combinator applied to itself?
- How to prove Theorem euclid_gcd : forall a b z, euclid a b z -> gcd a b z. using coq?
Related Questions in TYPED-LAMBDA-CALCULUS
- Writing a more strongly typed interpreter
- Example of the undecidability of higher-order unification
- Is there simple way to extend simply typed lambda calculus with monad types?
- What are the weird equations found while researching Simply Typed Lambda Calculus
- The `repeat` syntax of gradual typed lambda calculus defined by Racket?
- Using Typescript, how do I type the functional True function?
- System F Church numerals in Agda
- Recursion in the calculus of construction
- Type checking vs type inference
- Right way to define lambda-calculus constructors
- Simply typed Lambda calculas
- Proof trees for simply typed lambda calculus
- What is the canonical implementation of System F?
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)
Popular # Hahtags
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?
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: