Transcript

Room Change!!!!

Starting Wednesday

Room 302

Inductive Definitions

COS 441

Princeton University

Fall 2004

Reminder

If you are not on the official class list send me email

Relations

• A relation is set of tuplesOdd = {1, 3, 5, … }

Line = { (0.0, 0.0), (1.5,1.5), (x, x) , …}

Circle = { (x, y) | x2 + y2 = 1.0 }

• Odd is a predicate on natural numbers

• Line, Circle, and Sphere are relations on real numbers

• Line is a function

Judgments

• Given a relation R on objects x1,…,xn we say R(x1,…,xn) or (x1,…,xn) R to mean (x1,…,xn) 2 R

• The assertion R(x1,…,xn) or (x1,…,xn)R is a judgment

• The tuple (x1,…,xn) is an instance of the judgment form R

Example Judgments

• Valid judgments: Odd(7), Line(,), Circle(0.0,1.0), Sphere(1.0,0.0,0.0)

• Invalid judgments: Odd(2), Line(0.0,0.5)

• How do we determine if a judgment is valid or invalid?– From the definition of the relation

• How can we define relations?

Defining Relations

• Enumerate– Nice if you happen to be talking about finite

relations

• Directly via mathematical constraints– e.g. Circle = { (x,y) | x2 + y2 = 1.0 }

• Use inductive definitions– Not all relations have nice inductive definitions– Most of what we need for programming

languages fortunately do

Rules and Derivations

• Inductive definitions consist of a set of inference rules

• Inference rules are combined to form derivations trees

• A valid derivation leads to a conclusion which asserts a certain judgment is valid

• The set of all valid judgments for a relation implicitly defines the relation

Anatomy of a Rule

conclusionname

proper rule

(x1,X,…,xn) R(y1,X,…, yn) S … (z1,X,…,zn) T

axiom

conclusionpremises

name

name

rule schema

schematic variable

Rule Schemas

• Schematic rules represent rule templates

• Schematic variables can be substituted with a primitive terms or other schematic variables

• All occurrences of a variable must be substituted with the same term or variable

Reasoning with Rules

• We can find derivations for a judgment via goal-directed search or enumeration

• Both approaches will eventually find derivations for valid judgments

• Neither approach knows when to stop

• Invalid judgments cause our algorithm to non-terminate

Example: Natural Numbers

succ(X)natX nat

Szero nat

Z

succ(succ(zero))natGoal:

Example: Natural Numbers

succ(X)natX nat

Szero nat

Z

succ(succ(zero))nat

Goal succ(zero)natS

X = succ(zero)Substitution

Example: Natural Numbers

succ(X)natX nat

Szero nat

Z

succ(succ(zero))nat

Goal

succ(zero)natS

zero natS

X = zeroSubstitution

Example: Natural Numbers

succ(X)natX nat

Szero nat

Z

succ(succ(zero))nat

Done

succ(zero)natS

zero natS

Z

Example: Natural Numbers

succ(succ(zero))natGoal:

Derivable Judgments:

{}

Example: Natural Numbers

succ(succ(zero))natGoal:

Derivable Judgments:

{zero nat}

Because:zero nat

Z

Example: Natural Numbers

succ(succ(zero))natGoal:

Derivable Judgments:

{zero nat, succ(zero)nat}

Because:

succ(zero)natzero nat

S

Z

Example: Natural Numbers

succ(succ(zero))natGoal:

Derivable Judgments:

{zero nat, succ(zero)nat,succ(succ(zero))nat }

Because:

succ(succ(zero))natsucc(zero)nat

S

zero natS

Z

Odd and Even Numbers

succ(X)oddX even

S-O

zero evenZ-E

succ(X)evenX odd

S-E

Derivable Judgments:

{zero even, succ(zero)odd,succ(succ(zero))even, … }

Some Theorems about Numbers

• Theorems:– If X nat then X odd or X even– If X even then X nat– If X odd then X nat

• How do we prove the theorems above?– Note this is for the schematic variable X– The principal of rule inductions is what we use

to show a property for any instantiation of X

Rule Induction for Naturals

If X nat,

P(zero), and

if P(Y) then P(succ(Y))

then P(X).

Notice that P is a schematic variable for an arbitrary relation or proposition

Proof: If X nat then X odd or X even.

If X nat,

P(zero), and

if P(Y) then P(succ(Y))

then P(X).

Proof: If X nat then X odd or X even.

If X nat,

zero odd or zero even, and

if P(Y) then P(succ(Y))

then P(X).

Substitution P(x) = x odd or x even

Proof: If X nat then X odd or X even.

If X nat,

zero odd or zero even, and

if (Y odd or Y even) then P(succ(Y))

then P(X).

Substitution P(x) = x odd or x even

Proof: If X nat then X odd or X even.

If X nat,

zero odd or zero even, and

if (Y odd or Y even) then

succ(Y)odd or succ(Y)even

then P(X).

Substitution P(x) = x odd or x even

Proof: If X nat then X odd or X even.

If X nat,

zero odd or zero even, and

if (Y odd or Y even) then

succ(Y)odd or succ(Y)even

then X odd or X even.Substitution P(x) = x odd or x even

If X nat,

zero odd or zero even, and

if (Y odd or Y even) then

succ(Y)odd or succ(Y)even

then X odd or X even.

Proof: If X nat then X odd or X even.

Subgoal 1

Subgoal 2

1. zero even by axiom Z-E

Proof: zero odd or zero even

1. zero even by axiom Z-E

2. zero odd or zero even by (1)

Proof: zero odd or zero even

1. Y odd or Y even by assumption

2. succ(Y)odd or succ(Y)even from (1)

case Y odd 2.1. succ(Y) even by rule S-E

2.2. succ(Y) odd or succ(Y) even by (2.1)

case Y even 2.1. succ(Y) odd by rule S-O

2.2. succ(Y) odd or succ(Y) even by (2.1)

Proof: if (Y odd or Y even) then succ(Y)odd or succ(Y)even

1. Y odd or Y even by assumption

2. succ(Y)odd or succ(Y)even from (1)

case Y odd 2.1. succ(Y) even by rule S-E

2.2. succ(Y) odd or succ(Y) even by (2.1)

case Y even 2.1. succ(Y) odd by rule S-O

2.2. succ(Y) odd or succ(Y) even by (2.1)

Proof: if (Y odd or Y even) then succ(Y)odd or succ(Y)even

1. Y odd or Y even by assumption

2. succ(Y)odd or succ(Y)even from (1)

case Y odd 2.1. succ(Y) even by rule S-E

2.2. succ(Y) odd or succ(Y) even by (2.1)

case Y even 2.1. succ(Y) odd by rule S-O

2.2. succ(Y) odd or succ(Y) even by (2.1)

Proof: if (Y odd or Y even) then succ(Y)odd or succ(Y)even

1. Y odd or Y even by assumption

2. succ(Y)odd or succ(Y)even from (1)

case Y odd 2.1. succ(Y) even by rule S-E

2.2. succ(Y) odd or succ(Y) even by (2.1)

case Y even 2.1. succ(Y) odd by rule S-O

2.2. succ(Y) odd or succ(Y) even by (2.1)

Proof: if (Y odd or Y even) then succ(Y)odd or succ(Y)even

1. Y odd or Y even by assumption

2. succ(Y)odd or succ(Y)even from (1)

case Y odd 2.1. succ(Y) even by rule S-E

2.2. succ(Y) odd or succ(Y) even by (2.1)

case Y even 2.1. succ(Y) odd by rule S-O

2.2. succ(Y) odd or succ(Y) even by (2.1)

Proof: if (Y odd or Y even) then succ(Y)odd or succ(Y)even

Derivable and Admissible Rules

• The primitive rules Z and S define the predicate nat

• Other rules may be shown to be derivable or admissible wrt the primitive rules

• Derivable rules follow directly from a partial derivations of primitive rules

• Admissible rules are a consequence of the primitive rules that are not derivable

Reminder about Odd and Even

succ(X)oddX even

S-O

zero evenZ-E

succ(X)evenX odd

S-E

These are the only primitive rules for odd and even judgments.

A Derivable Rule

succ(succ(X))evensucc(X)odd

S-E

X evenS-O

X evenS-S-E

succ(succ(X))even

The rule

is derivable because

Underivable Rules

bogus1

zero odd

These rules are not derivable or admissible

X evenbogus2

succ(X) even

Underivable Rules

bogus1

zero odd

These rules are not derivable or admissible

The rule is not derivable

X evenbogus2

succ(X) even

succ(X)oddinvert-S-O

X even

Underivable Rules

bogus1

zero odd

These rules are not derivable or admissible

The rule is not derivable but is admissible

X evenbogus2

succ(X) even

succ(X)oddinvert-S-O

X even

Admissible Rule

The rule invert-S-O is admissible because

because ???

succ(X)oddinvert-S-O

X even

Admissible Rule

The rule invert-S-O is admissible because

because any complete derivation of succ(X)odd must

have ??? X even

succ(X)oddinvert-S-O

X even

Admissible Rule

The rule invert-S-O is admissible because

because any complete derivation of succ(X)odd must

have used the rule S-O which requires X even as a premise

succ(X)oddinvert-S-O

X even

Admissible Rules Caveat

• Admissible rules are admissible with respect to a fixed set of primitive rules

• Adding a new primitive rule can change admissibility of previous rules

• Adding a new primitive rule does not effect derivability of previous rules

Breaking an Admissible Rule

If we add this primitive rule to Z-E, S-O, and S-E

The rule below is not admissible wrt Z-E,S-O,S-E, and S-N-O

S-N-O

succ(neg(zero)) odd

succ(X)oddinvert-S-O

X even

Fixing an Admissible Rule

succ(X)oddinvert-S-O

X even

If we add these primitive rules to Z-E, S-O, and S-E

The rule below is admissible wrt Z-E,S-O,S-E, S-N-O, and N-Z-E

neg(X) evenS-N-O

succ(neg(X)) odd

N-Z-E

neg(zero) even

Be Careful!

succ(X)oddinvert-S-O

X even

If we add this primitive rules to Z-E, S-O, and S-E

The rule below is ??

Z-O

zero odd

Be Careful!

succ(X)oddinvert-S-O

X even

If we add this primitive rules to Z-E, S-O, and S-E

The rule below is still admissible wrt Z-E,S-O,S-E, and Z-O

Z-O

zero odd

Be Careful!

succ(X)oddinvert-S-O

X even

If we add this primitive rules to Z-E, S-O, and S-E

The rule below is still admissible wrt Z-E,S-O,S-E, and Z-O

Z-O

zero odd

X oddsilly1

X even

The rules below are also admissible or derivable

silly2

succ(one) even

Formal versus Informal Reasoning

• There is nothing technically bad about the rule Z-O

• However, it destroys our intuitions about even and odd numbers– We want to capture all of the intuitive

properties and only those intuitive properties of even and odd numbers

– Must craft our primitive rules to do this carefully

Lessons Learned

• Inductive definitions provide a concise way of describing mathematical relations

• Principle of rule induction provides a way of prove properties about inductively defined relations

• Must be careful about what primitives rules we choose so that the “right” rules are admissible and definable and the “wrong” rules are not

Next Lecture

• Showing that a inductively defined relation is in fact a function

• Converting mathematical functions into functions in Standard ML


Recommended