Dependent type, the Glossary
In computer science and logic, a dependent type is a type whose definition depends on a value.[1]
Table of Contents
69 relations: Ada (programming language), Agda (programming language), ATS (programming language), C (programming language), Calculus of constructions, Cartesian product, Codomain, Combinatory logic, Computer science, Constructive proof, Coq (software), Curry–Howard correspondence, Decision problem, Dependent ML, Dual (category theory), Epigram (programming language), Equality (mathematics), F Sharp (programming language), F* (programming language), First-order logic, Formal verification, Function (computer programming), Function type, Functional programming, Generalized quantifier, Generic programming, GitHub, Haskell, Haskell Curry, Henk Barendregt, Idris (programming language), If and only if, Intuitionistic logic, Intuitionistic type theory, Journal of Functional Programming, Kind (type theory), Lambda cube, Lean (proof assistant), Lennart Augustsson, Logic, Logic programming, Logical framework, Matita, Model theory, Natural number, Nicolaas Govert de Bruijn, Nuprl, OCaml, Oxford University Press, Polymorphism (computer science), ... Expand index (19 more) »
- Dependently typed programming
- Foundations of mathematics
- Type systems
Ada (programming language)
Ada is a structured, statically typed, imperative, and object-oriented high-level programming language, inspired by Pascal and other languages.
See Dependent type and Ada (programming language)
Agda (programming language)
Agda is a dependently typed functional programming language originally developed by Ulf Norell at Chalmers University of Technology with implementation described in his PhD thesis.
See Dependent type and Agda (programming language)
ATS (programming language)
In computing, ATS (Applied Type System) is a multi-paradigm, general-purpose, high-level, functional programming language.
See Dependent type and ATS (programming language)
C (programming language)
C (pronounced – like the letter c) is a general-purpose programming language.
See Dependent type and C (programming language)
Calculus of constructions
In mathematical logic and computer science, the calculus of constructions (CoC) is a type theory created by Thierry Coquand. Dependent type and calculus of constructions are dependently typed programming and type theory.
See Dependent type and Calculus of constructions
Cartesian product
In mathematics, specifically set theory, the Cartesian product of two sets and, denoted, is the set of all ordered pairs where is in and is in.
See Dependent type and Cartesian product
Codomain
In mathematics, a codomain or set of destination of a function is a set into which all of the output of the function is constrained to fall.
See Dependent type and Codomain
Combinatory logic
Combinatory logic is a notation to eliminate the need for quantified variables in mathematical logic.
See Dependent type and Combinatory logic
Computer science
Computer science is the study of computation, information, and automation.
See Dependent type and Computer science
Constructive proof
In mathematics, a constructive proof is a method of proof that demonstrates the existence of a mathematical object by creating or providing a method for creating the object.
See Dependent type and Constructive proof
Coq (software)
Coq is an interactive theorem prover first released in 1989.
See Dependent type and Coq (software)
Curry–Howard correspondence
In programming language theory and proof theory, the Curry–Howard correspondence (also known as the Curry–Howard isomorphism or equivalence, or the proofs-as-programs and propositions- or formulae-as-types interpretation) is the direct relationship between computer programs and mathematical proofs. Dependent type and Curry–Howard correspondence are dependently typed programming and type theory.
See Dependent type and Curry–Howard correspondence
Decision problem
In computability theory and computational complexity theory, a decision problem is a computational problem that can be posed as a yes–no question of the input values.
See Dependent type and Decision problem
Dependent ML
Dependent ML is an experimental, multi-paradigm, general-purpose, high-level, functional programming language proposed by Hongwei Xi and Frank Pfenning.
See Dependent type and Dependent ML
Dual (category theory)
In category theory, a branch of mathematics, duality is a correspondence between the properties of a category C and the dual properties of the opposite category Cop.
See Dependent type and Dual (category theory)
Epigram (programming language)
Epigram is a functional programming language with dependent types, and the integrated development environment (IDE) usually packaged with the language.
See Dependent type and Epigram (programming language)
Equality (mathematics)
In mathematics, equality is a relationship between two quantities or, more generally, two mathematical expressions, asserting that the quantities have the same value, or that the expressions represent the same mathematical object.
See Dependent type and Equality (mathematics)
F Sharp (programming language)
F# (pronounced F sharp) is a general-purpose, high-level, strongly typed, multi-paradigm programming language that encompasses functional, imperative, and object-oriented programming methods.
See Dependent type and F Sharp (programming language)
F* (programming language)
F* (pronounced F star) is a high-level, multi-paradigm, functional and object-oriented programming language inspired by the languages ML, Caml, and OCaml, and intended for program verification.
See Dependent type and F* (programming language)
First-order logic
First-order logic—also called predicate logic, predicate calculus, quantificational logic—is a collection of formal systems used in mathematics, philosophy, linguistics, and computer science.
See Dependent type and First-order logic
Formal verification
In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of a system with respect to a certain formal specification or property, using formal methods of mathematics.
See Dependent type and Formal verification
Function (computer programming)
In computer programming, a function, procedure, method, subroutine, routine, or subprogram is a callable unit of software logic that has a well-defined interface and behavior and can be invoked multiple times.
See Dependent type and Function (computer programming)
Function type
In computer science and mathematical logic, a function type (or arrow type or exponential) is the type of a variable or parameter to which a function has or can be assigned, or an argument or result type of a higher-order function taking or returning a function. Dependent type and function type are type theory.
See Dependent type and Function type
Functional programming
In computer science, functional programming is a programming paradigm where programs are constructed by applying and composing functions.
See Dependent type and Functional programming
Generalized quantifier
In formal semantics, a generalized quantifier (GQ) is an expression that denotes a set of sets.
See Dependent type and Generalized quantifier
Generic programming
Generic programming is a style of computer programming in which algorithms are written in terms of data types to-be-specified-later that are then instantiated when needed for specific types provided as parameters.
See Dependent type and Generic programming
GitHub
GitHub is a developer platform that allows developers to create, store, manage and share their code.
Haskell
Haskell is a general-purpose, statically-typed, purely functional programming language with type inference and lazy evaluation.
See Dependent type and Haskell
Haskell Curry
Haskell Brooks Curry (September 12, 1900 – September 1, 1982) was an American mathematician and logician.
See Dependent type and Haskell Curry
Henk Barendregt
Hendrik Pieter (Henk) Barendregt (born 18 December 1947, Amsterdam) is a Dutch logician, known for his work in lambda calculus and type theory.
See Dependent type and Henk Barendregt
Idris (programming language)
Idris is a purely-functional programming language with dependent types, optional lazy evaluation, and features such as a totality checker.
See Dependent type and Idris (programming language)
If and only if
In logic and related fields such as mathematics and philosophy, "if and only if" (often shortened as "iff") is paraphrased by the biconditional, a logical connective between statements.
See Dependent type and If and only if
Intuitionistic logic
Intuitionistic logic, sometimes more generally called constructive logic, refers to systems of symbolic logic that differ from the systems used for classical logic by more closely mirroring the notion of constructive proof.
See Dependent type and Intuitionistic logic
Intuitionistic type theory
Intuitionistic type theory (also known as constructive type theory, or Martin-Löf type theory, the latter abbreviated as MLTT) is a type theory and an alternative foundation of mathematics. Dependent type and Intuitionistic type theory are dependently typed programming, foundations of mathematics and type theory.
See Dependent type and Intuitionistic type theory
Journal of Functional Programming
The Journal of Functional Programming is a peer-reviewed scientific journal covering the design, implementation, and application of functional programming languages, spanning the range from mathematical theory to industrial practice.
See Dependent type and Journal of Functional Programming
Kind (type theory)
In the area of mathematical logic and computer science known as type theory, a kind is the type of a type constructor or, less commonly, the type of a higher-order type operator. Dependent type and kind (type theory) are type theory.
See Dependent type and Kind (type theory)
Lambda cube
In mathematical logic and type theory, the λ-cube (also written lambda cube) is a framework introduced by Henk Barendregt to investigate the different dimensions in which the calculus of constructions is a generalization of the simply typed λ-calculus. Dependent type and lambda cube are type theory.
See Dependent type and Lambda cube
Lean (proof assistant)
Lean is a proof assistant and a functional programming language.
See Dependent type and Lean (proof assistant)
Lennart Augustsson
Lennart Augustsson is a Swedish computer scientist.
See Dependent type and Lennart Augustsson
Logic
Logic is the study of correct reasoning.
Logic programming
Logic programming is a programming, database and knowledge representation paradigm based on formal logic.
See Dependent type and Logic programming
Logical framework
In logic, a logical framework provides a means to define (or present) a logic as a signature in a higher-order type theory in such a way that provability of a formula in the original logic reduces to a type inhabitation problem in the framework type theory. Dependent type and logical framework are dependently typed programming and type theory.
See Dependent type and Logical framework
Matita
Matita is an experimental proof assistant under development at the Computer Science Department of the University of Bologna.
Model theory
In mathematical logic, model theory is the study of the relationship between formal theories (a collection of sentences in a formal language expressing statements about a mathematical structure), and their models (those structures in which the statements of the theory hold).
See Dependent type and Model theory
Natural number
In mathematics, the natural numbers are the numbers 0, 1, 2, 3, etc., possibly excluding 0.
See Dependent type and Natural number
Nicolaas Govert de Bruijn
Nicolaas Govert "Dick" de Bruijn (9 July 1918 – 17 February 2012) was a Dutch mathematician, noted for his many contributions in the fields of analysis, number theory, combinatorics and logic.
See Dependent type and Nicolaas Govert de Bruijn
Nuprl
Nuprl is a proof development system, providing computer-mediated analysis and proofs of formal mathematical statements, and tools for software verification and optimization.
OCaml
OCaml (formerly Objective Caml) is a general-purpose, high-level, multi-paradigm programming language which extends the Caml dialect of ML with object-oriented features.
Oxford University Press
Oxford University Press (OUP) is the publishing house of the University of Oxford.
See Dependent type and Oxford University Press
Polymorphism (computer science)
In programming language theory and type theory, polymorphism is the use of a single symbol to represent multiple different types. Dependent type and polymorphism (computer science) are type theory.
See Dependent type and Polymorphism (computer science)
Predicate (mathematical logic)
In logic, a predicate is a symbol that represents a property or a relation.
See Dependent type and Predicate (mathematical logic)
Product type
In programming languages and type theory, a product of types is another, compounded, type in a structure. Dependent type and product type are type theory.
See Dependent type and Product type
Proof assistant
In computer science and mathematical logic, a proof assistant or interactive theorem prover is a software tool to assist with the development of formal proofs by human–machine collaboration.
See Dependent type and Proof assistant
Proof-carrying code
Proof-carrying code (PCC) is a software mechanism that allows a host system to verify properties about an application via a formal proof that accompanies the application's executable code. Dependent type and proof-carrying code are dependently typed programming.
See Dependent type and Proof-carrying code
Propositional calculus
The propositional calculus is a branch of logic.
See Dependent type and Propositional calculus
Prototype Verification System
The Prototype Verification System (PVS) is a specification language integrated with support tools and an automated theorem prover, developed at the Computer Science Laboratory of SRI International in Menlo Park, California.
See Dependent type and Prototype Verification System
Pure type system
In the branches of mathematical logic known as proof theory and type theory, a pure type system (PTS), previously known as a generalized type system (GTS), is a form of typed lambda calculus that allows an arbitrary number of sorts and dependencies between any of these. Dependent type and pure type system are type theory.
See Dependent type and Pure type system
Purely functional programming
In computer science, purely functional programming usually designates a programming paradigm—a style of building the structure and elements of computer programs—that treats all computation as the evaluation of mathematical functions.
See Dependent type and Purely functional programming
Real number
In mathematics, a real number is a number that can be used to measure a continuous one-dimensional quantity such as a distance, duration or temperature.
See Dependent type and Real number
Scheme (programming language)
Scheme is a dialect of the Lisp family of programming languages.
See Dependent type and Scheme (programming language)
Simply typed lambda calculus
The simply typed lambda calculus (\lambda^\to), a form of type theory, is a typed interpretation of the lambda calculus with only one type constructor (\to) that builds function types. Dependent type and simply typed lambda calculus are type theory.
See Dependent type and Simply typed lambda calculus
System F
System F (also polymorphic lambda calculus or second-order lambda calculus) is a typed lambda calculus that introduces, to simply typed lambda calculus, a mechanism of universal quantification over types. Dependent type and System F are type theory.
See Dependent type and System F
Termination analysis
In computer science, termination analysis is program analysis which attempts to determine whether the evaluation of a given program halts for each input.
See Dependent type and Termination analysis
Twelf
Twelf is an implementation of the logical framework LF developed by Frank Pfenning and Carsten Schürmann at Carnegie Mellon University. Dependent type and Twelf are type theory.
Type system
In computer programming, a type system is a logical system comprising a set of rules that assigns a property called a ''type'' (for example, integer, floating point, string) to every term (a word, phrase, or other set of symbols). Dependent type and type system are type systems and type theory.
See Dependent type and Type system
Type theory
In mathematics and theoretical computer science, a type theory is the formal presentation of a specific type system.
See Dependent type and Type theory
Typed lambda calculus
A typed lambda calculus is a typed formalism that uses the lambda-symbol (\lambda) to denote anonymous function abstraction. Dependent type and typed lambda calculus are type theory.
See Dependent type and Typed lambda calculus
Universe (mathematics)
In mathematics, and particularly in set theory, category theory, type theory, and the foundations of mathematics, a universe is a collection that contains all the entities one wishes to consider in a given situation.
See Dependent type and Universe (mathematics)
William Alvin Howard
William Alvin Howard (born 1926) is a proof theorist best known for his work demonstrating formal similarity between intuitionistic logic and the simply typed lambda calculus that has come to be known as the Curry–Howard correspondence.
See Dependent type and William Alvin Howard
See also
Dependently typed programming
- Brouwer–Heyting–Kolmogorov interpretation
- Calculus of constructions
- Curry–Howard correspondence
- Dependent type
- Futhark (programming language)
- Generalized algebraic data type
- Higher-order abstract syntax
- Inductive data type
- Intuitionistic type theory
- Logical framework
- Proof assistants
- Proof-carrying code
- Type variable
Foundations of mathematics
- Axiom of reducibility
- Category of sets
- Category theory
- Dependent type
- Foundations of geometry
- Foundations of mathematics
- Higher category theory
- Homotopy type theory
- Intuitionistic type theory
- Multiverse (set theory)
- Relationship between mathematics and physics
- Topos
- Univalent foundations
- Von Neumann–Bernays–Gödel set theory
- Zermelo–Fraenkel set theory
Type systems
- Comparison of programming languages by type system
- Data types
- Dependent type
- Flow-sensitive typing
- Gradual typing
- Hindley–Milner type system
- Inheritance (object-oriented programming)
- Intersection type
- Intersection type discipline
- Latent typing
- Liquid Haskell
- Manifest typing
- Multi-stage programming
- Nominal type system
- Refinement type
- Security type system
- Session type
- Strong and weak typing
- Structural type system
- Type inference
- Type system
References
[1] https://en.wikipedia.org/wiki/Dependent_type
Also known as Comparision of programming languages with dependent types, Comparison of dependently typed programming languages, Comparison of programming languages with dependent types, Dependent type theory, Dependent types, Dependent typing, Dependently typed, Dependently typed language, Dependently typed programming, Dependently typed programming language, Dependently-typed, Dependently-typed language, Dependently-typed programming language, List of dependently-typed programming languages, Sigma type, Type-level programming, ΛΠ-calculus.
, Predicate (mathematical logic), Product type, Proof assistant, Proof-carrying code, Propositional calculus, Prototype Verification System, Pure type system, Purely functional programming, Real number, Scheme (programming language), Simply typed lambda calculus, System F, Termination analysis, Twelf, Type system, Type theory, Typed lambda calculus, Universe (mathematics), William Alvin Howard.