A.1 The first presentation

A.1 The first presentation

The objects and types of our

type theory

may be written as terms using
the following syntax, which is an

extension

of

λ

-calculus with

variables

x

,

x

′

,

…

,

primitive

constants

c

,

c

′

,

…

,

defined constants

f

,

f

′

,

…

, and term forming

operations

t

:

:

=

x

∣

λ

x

.

t

∣

t

(

t

′

)

∣

c

∣

f

The notation used here means that a term

t

is either a variable

x

, or it
has the form

λ

⁢

x

.

t

where

x

is a variable and

t

is a term, or it has
the form

t

⁢

(

t

′

)

where

t

and

t

′

are terms, or it is a primitive constant

c

, or it is a defined constant

f

. The syntactic markers ’

λ

’, ’(’,
’)’, and ’.’ are punctuation for guiding the human eye.

We use

t

⁢

(

t

1

,

…

,

t

n

)

as an abbreviation for the repeated application

t

⁢

(

t

1

)

⁢

(

t

2

)

⁢

…

⁢

(

t

n

)

. We may also use

infix

notation, writing

t

1

⋆

t

2

for

⋆

(

t

1

,

t

2

)

when

⋆

is a primitive or defined
constant.

Each defined constant has zero, one or more

defining equations

.
There are two kinds of defined constant. An

explicit

defined constant

f

has a single defining equation

f

(

x

1

,

…

,

x

n

)

:

≡

t

,

where

t

does not involve

f

.
For example, we might introduce the explicit defined constant

∘

with defining equation

∘

(

x

,

y

)

(

z

)

:

≡

x

(

y

(

z

)

)

,

and use infix notation

x

∘

y

for

∘

(

x

,

y

)

. This of course is just

composition

of

functions

.

The

second kind

of defined constant is used to specify a (parameterized)

mapping

f

⁢

(

x

1

,

…

,

x

n

,

x

)

, where

x

ranges over a type whose

elements

are generated
by zero or more primitive constants. For each such primitive constant

c

there
is a defining equation of the form

f

(

x

1

,

…

,

x

n

,

c

(

y

1

,

…

,

y

m

)

)

:

≡

t

,

where

f

may

occur in

t

, but only in such a way that it is clear that the

equations

determine a totally defined function. The paradigm examples of such
defined functions are the functions defined by

primitive recursion

on the

natural numbers

. We may call this kind of definition of a function a

total
recursive definition

.
In computer science and logic this kind of definition
of a function on a recursive data type has been called a

definition by
structural recursion

.

Convertibility

t

↓

t

′

between terms

t

and

t

′

is the

equivalence relation

generated by the defining equations for constants,
the computation rule

(

λ

x

.

t

)

(

u

)

:

≡

t

[

u

/

x

]

,

and the rules which make it a

congruence

with respect to application and

λ

-abstraction:

•

if

t

↓

t

′

and

s

↓

s

′

then

t

⁢

(

s

)

↓

t

′

⁢

(

s

′

)

, and

•

if

t

↓

t

′

then

(

λ

x

.

t

)

↓

(

λ

x

.

t

′

)

.

The

equality

judgment

t

≡

u

:

A

is then derived by the following single rule:

•

if

t

:

A

,

u

:

A

, and

t

↓

u

, then

t

≡

u

:

A

.

Judgmental equality is an equivalence relation.

Title

A.1 The first

presentation

\metatable

Generated on Thu Feb 8 19:43:44 2018 by

LaTeXML