14
School of Comput ing and Mathemat ics, University CIA2326: WEEK ?? LECTURE: Introduction to Algebras SUPPORTING NOTES: See chapters 8,9,10 of my ‘online book’ on my homepage TUTORIAL: hand out exercises Telescopes are to Astronomy what Computers are to Computer Science” (Edgar Dijstra)

CIA2326: WEEK ??

Embed Size (px)

DESCRIPTION

CIA2326: WEEK ??. LECTURE: Introduction to Algebras SUPPORTING NOTES: See chapters 8,9,10 of my ‘online book’ on my homepage TUTORIAL: hand out exercises “ Telescopes are to Astronomy what Computers are to Computer Science” (Edgar Dijstra). Algebras. Q1. What is an algebra? - PowerPoint PPT Presentation

Citation preview

Page 1: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

CIA2326: WEEK ??

LECTURE:Introduction to Algebras

SUPPORTING NOTES:

See chapters 8,9,10 of my ‘online book’ on my homepage

TUTORIAL: hand out exercises

“Telescopes are to Astronomy what Computers are to Computer Science” (Edgar Dijstra)

Page 2: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

Algebras

Q1. What is an algebra?

Q2.What has it to do with computing?

Page 3: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

Algebras

A1. Roughly, an algebra is A SET OF VALUES + the specification of some OPERATIONS on those values

A2. Roughly, a data type is A SET OF VALUES + the implementation of some OPERATIONS on those values.

Hence we can give a computer-independent meaning to data types using algebras.

Page 4: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

Abstraction in Programming

Algebras inform us in both the THEORY and PRACTICE of programming:

Good modularity of software is ensured to a large degree by procedural and data abstractions

Object technologies owe much of their success to the fact that their structure results in a high degree of procedural and data abstraction.

Data abstraction or “abstract data types” abstract away the implementation of data types’ values and operations - just like ALGEBRAS!

Page 5: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

Abstract Data Types

A very abstract way of defining data types is as follows: abstract away the implementation of data types’ values and operations in two ways:

define the operations in terms of each other; don’t represent values AT ALL except in terms of

the operations that construct them

This give us an ‘abstract algebra’…….

Page 6: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

Homogenous algebras: Formal Definition

(A,O) is a Homogenous algebra if

A is a non-empty set which contains values of the algebra and is known as the carrier set.

O is a set of closed, total operations defined over the carrier set which may include nullary operations (constants).

EXAMPLE: (Natural Numbers, {“+”}) ,

EXAMPLE: ({True,False}, {and,not})

COUNTER-EX : (Natural Numbers, {“-”})

COUNTER-EX : (Real Numbers, {“/”})

Page 7: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

heterogeneous algebras

(A,O) is a heterogeneous algebra if

A is a SET of carrier sets and

O is a set of closed and total operations over these sets.

The semantics of data types are often given by heterogeneous algebras as we shall see...

Page 8: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

Equational Specification of AlgebrasThe most abstract form of “Presentation” (ie how to

define them) is NOT TO GIVE ANY NAMES to their values.

A very abstract way to specify a (family of) Algebras/Data Types is to give an Equational Specification.

Page 9: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

Example - Equational Presentation of a Homogenous Algebra

SPEC Boolean

SORT bool

OPS

true : -> bool

false : -> bool

not : bool -> bool

and : bool bool -> bool

AXIOMS: FORALL b : bool

(1) not(true) = false (2) not(false) = true (3) and(true,b) = b

(4) and(b,true) = b (5) and(false,b) = false (6) and(b,false) = false

ENDSPEC

Page 10: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

Syntax for Equational Specs of Algebras (ADTs)

SPEC %% Name of Specification

SORT %% ‘Type of interest’ - algebra being defined

OPS %% Signature of operations

FORALL %% Universally defined variables

AXIOMS %% Equations defining MEANING of operations

ENDSPEC

Page 11: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

Another Example

SPEC Natural

SORT nat

OPS

zero : -> nat

succ : nat -> nat

add : nat nat -> nat

AXIOMS: FORALL m, n : nat

(1) add(zero, n) = n (2) add(succ(m), n) = succ(add(m, n))

ENDSPEC

Page 12: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

SPEC A_State_Machine

SORT state

OPS

S1 : -> state S2 : -> state

S3 : -> state

a : state -> state b : state -> state

c : state -> state

AXIOMS: FORALL m, n : nat

(1) a(S1) = S3 (6) c(S2) = S1

(2) b(S1) = S1 (7) a(S3) = S3

(3) c(S1) = S2 (8) b(S3) = S1

(4) a(S2) = S2 (9) c(S3) = S3

(5) b(S2) = S2

ENDSPEC

Page 13: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

Another Example...

SPEC Stack USING Natural + Boolean % Carriers are Stack, Natural

SORT stack % and Boolean

OPS % Type of Interest = Stack

init : -> stack % Signature of each Operation

push : stack nat -> stack

pop : stack -> stack

top : stack -> nat is-empty? : stack -> bool

stack-error : -> stack

nat-error : -> nat

FORALL s : stack, n : nat % universally quantified vars

AXIOMS for is-empty?:

(1) is-empty?(init) = true % this part gives `meaning'

(2) is-empty?(push(s,n)) = false % to each operation AXIOMS for pop:

(3) pop(init) = stack-error

(4) pop(push(s,n)) = s

AXIOMS for top:

(5) top(init) = nat-error

(6) top(push(s,n)) = n ENDSPEC

Page 14: CIA2326: WEEK ??

School of Computing and Mathematics, University of Huddersfield

Conclusions

ALGEBRA gives us an ABSTRACT way to specify DATA TYPES

NEXT week we will examine how to REASON with algebraic expressions.