 
 
 
 
 
 
 
  
The logic of IMPS is called LUTINS7.1, a Logic of Undefined Terms for Inference in a Natural Style. LUTINS is a kind of predicate logic that is intended to support standard mathematical reasoning. It is classical in the sense that it allows nonconstructive reasoning, but it is nonclassical in the sense that terms may be nondenoting. The logic, however, is bivalent; formulas are always defined.
Unlike first-order predicate logic, LUTINS provides strong support for specifying and reasoning about partial functions (i.e., functions which are not necessarily defined on all arguments), including the following mechanisms:
 -notation for specifying functions;
-notation for specifying functions;
The treatment of partial functions in LUTINS is studied in [4], while the treatment of subtypes is the subject of [5]. In this chapter we give a brief overview of LUTINS. For a detailed presentation of LUTINS, see [16]7.2.
A LUTINS language contains two kinds of objects: sorts and expressions. Sorts denote nonempty domains of elements (mathematical objects), while expressions denote members of these domains. Expressions are used for both referring to elements and making statements about them.
In this section we give a brief description of a hypothetical language
 .  This language will be presented using the ``mathematical
syntax'' which will be used throughout the rest of the manual.  There
are other syntaxes for  LUTINS, including the ``string
syntax'' introduced in Chapter 3 and the
``s-expression syntax'' presented in [16].
.  This language will be presented using the ``mathematical
syntax'' which will be used throughout the rest of the manual.  There
are other syntaxes for  LUTINS, including the ``string
syntax'' introduced in Chapter 3 and the
``s-expression syntax'' presented in [16].  
Expressions are formed by applying constructors to variables, constants, and compound expressions. The constructors are given in Table 7.1; they serve as ``logical constants'' that are available in every language. Variables and constants belong to specific languages.
| 
 | 
In the mathematical syntax, the symbols for the constructors, the common punctuation symbols, and the symbol with are reserved. By a name, we mean any unreserved symbol.
The sorts of 
 are generated from a finite set
are generated from a finite set 
 of names called
atomic sorts.  More precisely, a sort of
of names called
atomic sorts.  More precisely, a sort of
 is a sequence of symbols defined inductively by:
 is a sequence of symbols defined inductively by:
 is a sort of
is a sort of 
 .
.
 are sorts of
are sorts of 
 with
with  ,
then
,
then 
![$[\alpha_1,\ldots,\alpha_{n+1}]$](img83.gif) is a sort of
is a sort of
 .
.
![$[\alpha_1,\ldots,\alpha_{n+1}]$](img83.gif) are called compound sorts.  In the next section we shall show that a compound
sort denotes a domain of functions.  Let
are called compound sorts.  In the next section we shall show that a compound
sort denotes a domain of functions.  Let 
 denote the set
of sorts of
 denote the set
of sorts of 
 .
.
 assigns each
 assigns each 
 a member of
a member of 
 called the
enclosing sort of
 called the
enclosing sort of  .
The atomic/enclosing sort
relation determines a partial order
.
The atomic/enclosing sort
relation determines a partial order  on
on 
 with the
following properties:
 with the
following properties:
 and
and  is the enclosing sort of
is the enclosing sort of
 ,
then
,
then 
 .
.
 iff
iff
![$[\alpha_1,\ldots,\alpha_n,\alpha_{n+1}] \preceq
[\beta_1,\ldots,\beta_n,\beta_{n+1}]$](img88.gif) .
.
 with
with 
 and
and  is compound, then
is compound, then  is compound and
has the same length as
is compound and
has the same length as  .
.
 there is a unique
there is a unique 
  such that
such that 
 and
and  is 
maximal with respect to
is 
maximal with respect to  .
.
 is intended to denote set inclusion.
is intended to denote set inclusion.
The members of 
 which are maximal with respect to
 which are maximal with respect to  are
called types.  A base type is a type which is atomic.
Every language has the base type
are
called types.  A base type is a type which is atomic.
Every language has the base type  which denotes the set
which denotes the set
 of standard truth values.  The type of a sort
of standard truth values.  The type of a sort  ,
written
,
written 
 ,
is the unique type
,
is the unique type
 such that
such that 
 .
The least upper
bound of
.
The least upper
bound of  and
and  ,
written
,
written 
 ,
is the least upper bound of
,
is the least upper bound of  and
and  in the
partial order
in the
partial order  .
(The least upper bound of two sorts with the
same type is always defined).
.
(The least upper bound of two sorts with the
same type is always defined). 
A function sort is a sort  such that
such that 
 has
the form
has
the form 
![$[\alpha_1,\ldots,\alpha_n,\alpha_{n+1}]$](img95.gif) .
The
range sort of a function sort
.
The
range sort of a function sort  ,
written
,
written
 ,
is defined as follows: if
,
is defined as follows: if 
![$\alpha =
[\alpha_1,\ldots,\alpha_n,\alpha_{n+1}]$](img97.gif) ,
then
,
then
 ;
otherwise,
;
otherwise,
 where
where  is the
enclosing sort of
is the
enclosing sort of  .
.
Sorts are divided into two kinds as follows: A sort is of kind
 if either it is
if either it is  or it is a compound sort
or it is a compound sort
![$[\alpha_1,\ldots,\alpha_{n+1}]$](img83.gif) where
where 
 is of kind
is of kind
 ;
otherwise it is of kind
;
otherwise it is of kind  .
We shall see later
the purpose behind this division.  All atomic sorts except
.
We shall see later
the purpose behind this division.  All atomic sorts except  are
of kind
are
of kind  .
.
 contains a set
 contains a set 
 of names called constants.
Each constant is assigned a sort in
 of names called constants.
Each constant is assigned a sort in 
 .  An expression of
.  An expression of 
 of sort
 of sort  is a sequence of symbols defined inductively by:
is a sequence of symbols defined inductively by:
 then
then
 is an expression of sort
is an expression of sort  .
.
 is of sort
is of sort  ,
then A is an expression 
of sort
,
then A is an expression 
of sort  .
.
 are expressions of sort
are expressions of sort  with
with  ,
then
,
then  
Expressions will usually be written in an abbreviated form as follows.
Suppose A is an expression whose free variables are
 .
Then A is
abbreviated as
.
Then A is
abbreviated as 
 
 in A with xi.  This mode of abbreviation
preserves meaning as long as there are not two variables
in A with xi.  This mode of abbreviation
preserves meaning as long as there are not two variables
 and
and 
 with
with 
 which
are either both free in A or both in the scope of the same binder in
A.
which
are either both free in A or both in the scope of the same binder in
A.
Parentheses in expressions may be suppressed when meaning is not lost. In addition, the following alternate notation may be used in the IMPS mathematical syntax:
 and
and  ,
respectively.
,
respectively.
 in
place of a compound sort
in
place of a compound sort 
![$[\alpha_1,\ldots,\alpha_n,\beta]$](img123.gif) ,
and
,
and
 in place of
a compound sort
in place of
a compound sort 
![$[\alpha_1,\ldots,\alpha_n,\beta]$](img123.gif) with
with  of
kind
of
kind  .
.
 instead of
instead of
 .
.
 in place of the biconditional
in place of the biconditional  .
.
 in place of
in place of
 
 in place of
in place of 
 .
.
The semantics for a  LUTINS language is defined in terms of
models that are similar to models of many-sorted first-order logic.
Let 
 be a  LUTINS language, and let
 be a  LUTINS language, and let 
 denote the
set of sorts of
 denote the
set of sorts of 
 .
.
A frame for 
 is a set
 is a set 
  of nonempty domains (sets) such that:
of nonempty domains (sets) such that:
 (
(
 ).
).
 ,
then
,
then 
  .
.
![$\alpha =
[\alpha_1,\ldots,\alpha_n,\alpha_{n+1}]$](img97.gif) is of
kind
is of
kind  ,
then
,
then 
  is the set of all partial functions
is the set of all partial functions 
  .
.
![$\alpha =
[\alpha_1,\ldots,\alpha_n,\alpha_{n+1}]$](img97.gif) is of
kind
is of
kind  ,
then
,
then 
  is the set of all total functions
is the set of all total functions 
  such that, for all
such that, for all 
  ,
,
 whenever
whenever 
  for at least one i with
for at least one i with 
 .
.
 of kind
of kind  ,
,
 is
defined inductively by:
is
defined inductively by:
 .
.
![$\alpha = [\alpha_1,\ldots,\alpha_{n+1}]$](img161.gif) ,
then
,
then 
 is the
function which maps every n-tuple
is the
function which maps every n-tuple 
  to
to
 .
.
A model for 
 is a pair
 is a pair 
  where
where 
  is a frame for
is a frame for 
 and I is a function which maps each constant of
 and I is a function which maps each constant of
 of sort
 of sort  to an element of
to an element of 
  .
.
Let 
  be a model for
be a model for
 .  A variable
assignment into
.  A variable
assignment into 
 is a function which maps each variable
 is a function which maps each variable
 of
of 
 to an element of
 to an element of 
  .
Given a
variable assignment
.
Given a
variable assignment  into
into 
 ; distinct variables
; distinct variables
 ;
and
;
and 
  ,
,
let
,
,
let 
![\begin{displaymath}\varphi[x_1\mbox{:}\alpha_1\mapsto{a_1},
\ldots,x_n\mbox{:}\alpha_n\mapsto{a_n}]\end{displaymath}](img168.gif) 
 such that
such that 
 
 is the partial binary function on variable assignments
into
is the partial binary function on variable assignments
into 
 and expressions of
 and expressions of 
 defined by the following statements:
 defined by the following statements:

 .
.
 .
.
 .
.



 is
is 
 or
or  ,
,



 
 

 .
Then
.
Then 
 
 are each defined;
otherwise
are each defined;
otherwise
 is undefined.
is undefined.
![$[\alpha_1,\ldots,\alpha_{n+1}]$](img83.gif) of kind
of kind  .
Then
.
Then  
 are each defined; otherwise
are each defined; otherwise
 .
.
 of kind
of kind  .
Then
.
Then 
 is the partial
function
is the partial
function 
  such that
such that
![\begin{displaymath}f(a_1,\ldots,a_n) =V_{\varphi[x_1\mbox{:}\alpha_1\mapsto{a_1},
\ldots,x_n\mbox{:}\alpha_n\mapsto{a_n}]}(A)\end{displaymath}](img194.gif) 
![$V_{\varphi[x_1\mbox{:}\alpha_1\mapsto{a_1},
\ldots,x_n\mbox{:}\alpha_n\mapsto{a_n}]}(A)$](img195.gif) is defined; otherwise
is defined; otherwise
 is undefined.
is undefined.
 of kind
of kind  .
Then
.
Then 
 is the total
function
is the total
function 
  such that
such that
![\begin{displaymath}f(a_1,\ldots,a_n) =V_{\varphi[x_1\mbox{:}\alpha_1\mapsto{a_1},
\ldots,x_n\mbox{:}\alpha_n\mapsto{a_n}]}(A)\end{displaymath}](img194.gif) 
 ;
otherwise
;
otherwise 
 .
.
 is the unique
element
is the unique
element 
  such that
such that 
![$V_{\varphi[x\mbox{:}\alpha
\mapsto a]}(A) = \mbox{\sc t}$](img200.gif) ;
otherwise
;
otherwise 
 is undefined.
is undefined.
 is the unique
element
is the unique
element 
  such that
such that 
![$V_{\varphi[x\mbox{:}\alpha
\mapsto a]}(A) = \mbox{\sc t}$](img200.gif) ;
otherwise
;
otherwise 
 .
.

 
 is undefined.
is undefined.
Clearly, for each variable assignment  into
into 
 and each
expression A of
 and each
expression A of 
 ,
, 
 if
if 
 is defined, and
is defined, and
 is defined if A is of kind
is defined if A is of kind  .
.
 is called the value or denotation of
A in
is called the value or denotation of
A in 
 with respect to
 with respect to  ,
provided it is defined.  When
,
provided it is defined.  When
 is not defined, A is said to be nondenoting
in
is not defined, A is said to be nondenoting
in 
 with respect to
 with respect to  .
.
The logic can be effectively extended by introducing ``quasi-constructors.'' They are the subject of Chapter 10.
 and
and
 with
with 
 ), they tend to be confusing
and should be avoided if possible.
), they tend to be confusing
and should be avoided if possible.
 world and the
world and the
 world.  Expressions of kind
world.  Expressions of kind  are part of the
are part of the  world, and expressions of kind
world, and expressions of kind  are part of the
are part of the  world.
Although both worlds can be used for encoding mathematics, the
world.
Although both worlds can be used for encoding mathematics, the  world is much preferred for this purpose.  As a general rule,
expressions of kind
world is much preferred for this purpose.  As a general rule,
expressions of kind  should not be used to denote mathematical
objects.  Normally, formulas or predicates (i.e., expressions having a
sort of the form
should not be used to denote mathematical
objects.  Normally, formulas or predicates (i.e., expressions having a
sort of the form 
![$[\alpha_1,\ldots,\alpha_n,\ast]$](img132.gif) )
are the only
useful expressions of kind
)
are the only
useful expressions of kind  .
Consequently, there is little
support in  IMPS for the constructor
.
Consequently, there is little
support in  IMPS for the constructor 
 ,
the definite
description operator for the
,
the definite
description operator for the  world.
world.
% is often used in the names of variables
and constants in the string syntax to denote a space (the character
_ is used to denote the start of a subscript).   This character
is printed in the mathematics syntax as either % or _.
 
 
 
 
 
 
