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?
117 Views Asked by 盛安安 At
1
There are 1 best solutions below
Related Questions in TYPES
- Inheritance in Java, apparent type vs actual type
- Converting 8 byte char array into long
- Derby, Java: Trouble with "CREATE_TYPE" statement
- How to tell Java that two wildcard types are the same?
- F# strange type error message
- Convert String scanner to class type
- How to access a Row Type within an Array Type in DB2 SQL PL
- Python Type Dispatching with variables, is it possible?
- Ocaml unbound type constructor with module
- Cloning a Javascript object with its type
- How to remove error of incompatible variable types in LoadLibrary() function?
- What's the difference or relationship between Type and TypeInfo?
- Scala: generic method using implicit evidence doesn't compile
- Guaranteeing data type size
- Convert String With Comma To Number Using Python Pandas
Related Questions in TYPE-THEORY
- How can linear-types replace monads?
- How to define a subformula of an inductively defined type in Agda?
- OCaml passing labeled function as parameter / labeled function type equivalence
- Function arity of a first-class function
- Why can some disjoint and exhaustive patterns not be represented as definitional equalities?
- Parity of nested function type and recursive call
- Type theory: type kinds
- Why is record considered product type but class not so in java?
- Intuitionistic Propositional Logic
- Proof by contradiction in Coq
- Why coq doesn't use subtyping for logical or?
- API for theorem proving strategies
- Lean define groups
- Lean pass type as parameter
- What is a "System FC2 grammar for Kinds"?
Related Questions in HOMOTOPY-TYPE-THEORY
- How to define higher inductive types in Z3
- Importing HoTT library in Coq
- Equality between paths
- Is the univalence axiom injective?
- Interval extensionality?
- How to prove that the defining equations of the recursor for N hold propositionally using the induction principle for N in Agda?
- Unfolding terms created with `assert` in Coq
- Is this formulation of Modulo a Set?
- Why does universe level restriction behave differently between inductive family and parameterized inductive type without axiom K in agda
- In scala, what can be done to prevent compiler from cyclic summoning of implicit premises? And how to avoid them
- In cubical type theory, why are there function types that accept intervals as arguments when there are already a path type?
- Constructing a path with constraints in an isSet type
- Constructing squares with constraints in an isSet type
- How do I handle the higher inductive cases when defining functions on HITs?
- coq code of the article Homotopy type theory and Voevodsky's univalent foundations
Related Questions in CUBICAL-TYPE-THEORY
- Pushing a path along a pair of paths originating from its endpoints
- Equality between paths
- Is the univalence axiom injective?
- Interval extensionality?
- Is this formulation of Modulo a Set?
- Cube with different combinations of refl 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 would reals be implemented in Cubical Agda?
- Constructing a path with constraints in an isSet type
- Constructing squares with constraints in an isSet type
- Handling heterogeneous paths in a set
- How do I handle the higher inductive cases when defining functions on HITs?
- Paths vs Equivalences in cubical agda for specific computational behavior
- How to prove element addition is injective for a cubical finite multi set?
- How do I prove two applications of the absurd pattern result in the same in Cubical Agda?
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 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?
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.