0% found this document useful (0 votes)
60 views

CS109A Notes For Lecture 1/10/96 Major Theme: Data Models: Static Part Dynamic Part

The document summarizes key topics from a lecture on data models and recursion. It discusses data models like lists, trees, sets and programming languages. It also covers recursion through examples of adding numbers and propositional logic. Finally, it poses a class problem on determining if one statement follows from another using propositional variables.

Uploaded by

savio77
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views

CS109A Notes For Lecture 1/10/96 Major Theme: Data Models: Static Part Dynamic Part

The document summarizes key topics from a lecture on data models and recursion. It discusses data models like lists, trees, sets and programming languages. It also covers recursion through examples of adding numbers and propositional logic. Finally, it poses a class problem on determining if one statement follows from another using propositional variables.

Uploaded by

savio77
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

CS109A Notes for Lecture 1/10/96

Major Theme: Data Models


Data model = A way of representing (some
kinds of) information in a computer.
Static part : represents the information.
Dynamic part : operations on the information.
Section 1.3 discusses examples: lists, trees,
logic, use of logic to design switching circuits.
Example: The set is another common, important
data model.
Static part: Sets are characterized by a membership concept. Sets have members. =
f g says that the members of set are
the elements , , and .
Dynamic part: Many operations are used.
Examples:
( ) adds element to the members of set .
( ) produces the union of sets
and .
Example: Programming languages like C have
a data model. The C model is discussed in Section 1.4.
The static part of the C model is the language's type system. Key elements include:
Basis = atomic types, e.g. char, int, enumerations.
Inductive part = type constructors =
ways to build new types and their values, e.g. array-formation, struct formation, pointers.
The dynamic part consists of ways to operate
on values:
S

a; b; c

insert x; S

union S; T

Operations, e.g. arithmetic such as +,


logical such as &&, comparison such as
, assignment (=).
Structure-access operations, e.g., ->.
Creation/destruction operations such as
malloc and free.

<

Major Theme: Recursion

Express a concept, algorithm, proof, etc. in terms


of smaller instances of the same thing.
Example: To add two -digit numbers, start by
assuming there is a carry into the low-order position.
Basis case : If = 0, just produce the carry.
Inductive case : Add the low-order digits plus
the carry-in, generating a carry into the next
place (which may be 0). Then recursively add
the high-order 1 digits with the new carry.
n

Propositional Logic
Constants: TRUE and FALSE (often written 1
and 0, respectively).
Propositional variable = symbol that represents the truth or falsehood of a \proposition," i.e., a statement about something.
Examples are propositional variable p
standing for \it is raining" or variable q
standing for \X < Y + Z ."

Propositional Logic Expressions

Built from operands (constants and variables) and


logical operators, which are functions with Boolean
arguments and result.
Most common operators:
a) AND, OR, NOT: the usual stu as in if(...).
b) Implies. ! has value TRUE unless is
TRUE and is FALSE.
p

When p is false, we say that p ! q is


trivially true.
e.g.: \if 2+2 = 5 then the moon is made
of cheese."
c) Equivalence or \if and only if." p q is true
if p and q are both true or both false. It is
false if exactly one of p and q is true.

Predicates and Atomic Formulas

Atomic formula = propositional variable (called a


predicate) with arguments, e.g., p(X; Y ).
True or false depending on what X and Y are.
Example: Suppose arguments of p were integers,
and p(X; Y ) is assumed to mean X 2 > Y . Then
p(2; 3) is true, but p( 2; 5) is false.
Expressions can be built from atomic formulas instead of propositional variables.
Example: p(X ) ! q(X ) = \if p is true about
some object X , then q is also true about X ."
If there is no X for which p(X ) is true, then
p(X ) ! q (X ) is said to be true vacuously.
e.g.: \every green elephant wears boxer
shorts."

Quanti ers

The symbol (8 ) stands for \for all ," while


(9 ) stands for \there exists at least one ."
Quanti ers are expressed variously in English.
And a global (8 ) is often expressed without
any equivalent to \for all." just appears in
the statement.
Example: Here are some ways that \for all , if
is a prime and
2 then is odd" could be
expressed:
1. Use \every": \every prime
2 is odd."
2. Use \each": \each bigger than 2 that is a
prime is odd."
X

P >

P >

3. Use nothing: \if is a prime and


is odd."
P

P >

2 then

Class Problem for Next Time

Teaching CS145 on database systems last quarter,


I made the following de nition; never mind if the
terms sound mysterious:
\If relation is in Boyce-Codd Normal Form,
then for every nontrivial functional dependency ! , is a superkey."y
Later on that day, I used what I thought was the
above de nition in the following way:
\If ! is a nontrivial functional dependency but is not a superkey, then is not
in Boyce-Codd Normal Form."
Question: Did my second statement follow from
the rst? Why or why not?
Hint : We might be tempted to see this problem as one of predicate logic, with , , and
as variables. However, to make things simpler, let's focus on a particular , , and
. Then we can think of three propositional
variables:
1. : \ is in Boyce-Codd Normal Form."
2. : \ ! is a functional dependency."
3. : \ is a superkey."
If you solve this problem for propositions as
above, try formulating the same question in
predicate logic and solving it.
R

y Note that the ! symbol for functional dependencies


has nothing at all to do with the same logical symbol
meaning \implies."

You might also like