In the original CCHM paper, a path can be constructed using an interval and two endpoints. However, why do I see in some other papers some types like I -> A in which I is the interval type and A is a normal type? It seems that values of I -> A are constructed by a normal lambda. Why are these function types needed while there is another binding construct for path types? (e.g. <i> a i) If types like I -> A is really needed, why is it not present in CCHM?
In cubical type theory, why are there function types that accept intervals as arguments when there are already a path type?
118 views Asked by 盛安安 At
1
There are 1 answers
Related Questions in TYPES
- Need clarification on VHDL expressions involving std_logic_vector, unsigned and literals, unsure about compiler interpretation
- Adding a different string to a table fails
- The type of B is displayed as A when `type B = A` is used. Why is it displayed as `any` when `type B = A | A` is used instead?
- why we got same data type in two versions like "int" and "integer" in php?
- Handling NaN entries in a dataframe created from CSV
- Cannot find type definition file for 'node' in react project
- Correct way to count types in whole corpus
- Typescript: how to get possible keys from const with limited values?
- Having two Image types in React TypeScript one for upload, one for display
- MOOC.fi Java Programming course 1 - Exercise 13 "Exercises" Part 6 - Compilation error
- Is is a mistake to use type keyword after curly braces in TS when importing constants and files fro one file?
- type annotations needed, try using a fully qualified path to specify the expected types
- Need a simple example how to catch a data type error en C++
- Pyspark reads data as string but on Mongo they are double
- Extract a Maybe from a heterogeneous collection
Related Questions in TYPE-THEORY
- TypeScript recursive union function type
- What is the paradigm of wrapping generic parameters into nested structures called?
- Parity of nested function type and recursive call
- Why can some disjoint and exhaustive patterns not be represented as definitional equalities?
- List without gaps in Coq
- In cubical type theory, why are there function types that accept intervals as arguments when there are already a path type?
- How to prove Theorem euclid_gcd : forall a b z, euclid a b z -> gcd a b z. using coq?
- Rust is the automatic dereference of Box types prohibative?
- Is there a library for sets that works with bool in Coq?
- Type theory with an Any/Variant type
- Why can't all existential binders be replaced by unique constants during skolemization?
- In intuitionistic type theory, can any proof written in CoC be rewritten in system λP2? Or, does CoC = λP2?
- It is possible to define a function in haskell that takes one parameter, ignores it, and returns itself?
- Why can't I define this rewrite rule for type elimination of proof-irrelevant disjunctions in Agda
- Non-determinism on a set defined by the characteristic function
Related Questions in HOMOTOPY-TYPE-THEORY
- Why assuming singleton elimination and definitional proof irrelevance leads to UIP, in Coq?
- In cubical type theory, why are there function types that accept intervals as arguments when there are already a path type?
- Why does cubical agda choose the particular two component homogeneous path composition operator it does?
- Agda: Failed to solve the following constraints: P x <= _X_53 (blocked on _X_53)
- Unfolding terms created with `assert` in Coq
- Importing HoTT library in Coq
- How do you use the Ring solver in Cubical Agda?
- In scala, what can be done to prevent compiler from cyclic summoning of implicit premises? And how to avoid them
- Why does universe level restriction behave differently between inductive family and parameterized inductive type without axiom K in agda
- Coq for HoTT: proving || P-> X || -> (P-> ||X||)
- How does one write (and debug) a two arguement dependent application, apd2, and use this to prove functoriality of such ap in agda?
- How to prove element addition is injective for a cubical finite multi set?
- How does one use identity elimination (in agda) to prove Eckmann Hilton for higher dimensional paths in HoTT?
- How to explicitly use an induction principle in coq?
- Is this formulation of Modulo a Set?
Related Questions in CUBICAL-TYPE-THEORY
- Equality of coinductive types
- How to deal with non-termination error in Cubical Agda
- In cubical type theory, why are there function types that accept intervals as arguments when there are already a path type?
- How do I prove two applications of the absurd pattern result in the same in Cubical Agda?
- Why does cubical agda choose the particular two component homogeneous path composition operator it does?
- Is the image of a `hcomp` the `hcomp` of images?
- Expected an irrelevant argument, but found a relevant argument
- How do you use the Ring solver in Cubical Agda?
- Parametric theorem implied by goal
- Paths vs Equivalences in cubical agda for specific computational behavior
- Why can't I move a partial box definition into a local binding?
- How do I find further constraints than boundary conditions?
- Importing `Cubical.Data.Nat` breaks `isOfHLevel→isOfHLevelDep`
- How to prove element addition is injective for a cubical finite multi set?
- Covering for binary naturals as a higher inductive type
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)
The "normal" function type former expects fibrant domain and codomain types. Fibrant means that the type supports Kan operations.
Idoes not support Kan operations, soI -> Acan't be a normal function type.I -> Acan be instead viewed as a path type where the endpoints are not constrained in the type. It's called "line type" in theyaccttandccttimplementations.Whenever we don't want to specify the endpoints of a path, the line type is more convenient than the path type, and it also possibly improves type checking speed because there's less data to track.
For an example, here's a cctt proof that coercion is an equivalence. Th
f',g',linv'andrinv'helper definitions all have dependent line types; they take one or moreIarguments and that's translated to line types during type checking. Here, the endpoints of the definitions can be already computed on demand just by instantiating theIarguments to0or1, so there's no need to specify them in the types. You can see that the return types of helper definitions are pretty simple, justA iorA r. Without line types, we'd have needed to specify all endpoints there, which are pretty big expressions, and it gets more annoying if we have multipleIarguments, because then we have to give2^Nendpoints in an iterated path type.A generalization of both path types and line types is called extension type. This is supported in
cooltt. It lets us abstract over an arbitrary number ofIarguments at once, plus we can put a boundary condition on the result. In once special case, we have one interval argument and the0and1endpoint specification, so we get path types. If we omit the endpoint specification, we get line types. It's also possible to e.g. specify just one endpoint, and in general we may have N-dimensional cubes with some faces being specified in the type.