Triangular matrix: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>Rgdboer
m Description: update link
 
en>Rschwieb
Undid revision 583513769 by 39.45.19.27 (talk) Reverting invalid edits and addition of signature.
Line 1: Line 1:
Hi there. My title is Sophia Meagher although it is not the title on my birth certification. I've usually loved residing in Kentucky but now I'm contemplating other options. I am truly fond of handwriting but I can't make it my occupation truly. Distributing manufacturing is where her main earnings comes from.<br><br>Feel free to surf to my web blog; psychic solutions by lynne ([http://sarah.juicysweetie.com/xe/fag/545599 get redirected here])
In [[type theory]], a '''type rule''' is an [[inference rule]] that describes how a [[type system]] assigns a type to a syntactic construction. These rules may be applied by the type system to determine if a [[Computer program|program]] is well typed and what type [[Expression (computer science)|expression]]s have. A prototypical example of the use of type rules is in defining type inference in the [[simply typed lambda calculus]], which is the [[internal language]] of [[Cartesian closed categories]].
 
== Notation ==
<!-- historical reference (what it the paper by Luca Cardelli that introduce this notation?) -->
An expression <math>e</math> of type <math>\tau</math> is written as <math>e\!:\!\tau</math>. The [[typing environment]] is written as <math>\Gamma</math>. The notation for inference is the usual one for [[sequent]]s and [[inference rule]]s, and has the following general form
 
:<math>
\frac{\Gamma_1 \vdash e_1\!:\!\tau_1 \quad \cdots \quad \Gamma_n \vdash e_n\!:\!\tau_n}{\Gamma \vdash e\!:\!\tau}
</math>
 
The sequents above the line are the premises that must be fulfilled for the rule to be applied, yielding the conclusion: the sequents below the line. This can be read as: ''if expression <math>e_i</math> has type <math>\tau_i</math> in [[Typing environment|environment]] <math>\Gamma_i</math>, for all <math>i=1..n</math>, then the expression <math>e</math> will have an environment <math>\Gamma</math> and type <math>\tau</math>''.
 
For example, a simple language to perform arithmetic calculations on real numbers may have the following rules
 
:<math>
\frac{\Gamma \vdash e_1\!:\!real \quad \Gamma \vdash e_2\!:\!real}{\Gamma \vdash e_1+e_2\!:\!real}
\qquad \frac{\Gamma \vdash e_1\!:\!integer \quad \Gamma \vdash e_2 : integer}{\Gamma \vdash e_1+e_2\!:\!integer} \qquad \cdots
</math>
 
A type rule may have no premises, and usually the line is omitted in these cases. A type rule may also change an environment by adding new variables to a previous environment; for example, a declaration may have the following type rule, where a new variable <math>id</math>,
with type <math>\tau'</math>, is added to <math>\Gamma</math>:
 
:<math>
\frac{\Gamma \vdash e'\!:\!\tau' \quad \Gamma, id\!:\!\tau' \vdash e\!:\!\tau}{\Gamma \vdash \text{let id = } e' \text{ in } e \text{ end} :\!\tau}
</math>
 
This types can be used to derive composed expressions types, much like in [[natural deduction]].
 
==See also==
* [[Judgment (mathematical logic)]]
* [[Type system]]
* [[Type theory]]
* [[Curry–Howard correspondence]]
 
== Further reading ==
*  Luca Cardelli, "Type Systems", ''ACM Computing Surveys''
 
{{type-theory-stub}}
 
[[Category:Data types]]
[[Category:Program analysis]]
[[Category:Type theory]]

Revision as of 18:31, 27 November 2013

In type theory, a type rule is an inference rule that describes how a type system assigns a type to a syntactic construction. These rules may be applied by the type system to determine if a program is well typed and what type expressions have. A prototypical example of the use of type rules is in defining type inference in the simply typed lambda calculus, which is the internal language of Cartesian closed categories.

Notation

An expression e of type τ is written as e:τ. The typing environment is written as Γ. The notation for inference is the usual one for sequents and inference rules, and has the following general form

Γ1e1:τ1Γnen:τnΓe:τ

The sequents above the line are the premises that must be fulfilled for the rule to be applied, yielding the conclusion: the sequents below the line. This can be read as: if expression ei has type τi in environment Γi, for all i=1..n, then the expression e will have an environment Γ and type τ.

For example, a simple language to perform arithmetic calculations on real numbers may have the following rules

Γe1:realΓe2:realΓe1+e2:realΓe1:integerΓe2:integerΓe1+e2:integer

A type rule may have no premises, and usually the line is omitted in these cases. A type rule may also change an environment by adding new variables to a previous environment; for example, a declaration may have the following type rule, where a new variable id, with type τ, is added to Γ:

Γe:τΓ,id:τe:τΓlet id = e in e end:τ

This types can be used to derive composed expressions types, much like in natural deduction.

See also

Further reading

  • Luca Cardelli, "Type Systems", ACM Computing Surveys

Template:Type-theory-stub