** Abstraction in general What is abstraction? many to one mapping, suppression of inessential detail *** Abstraction Techniques parameterization (abstraction of variables) e.g., summing an array, sum(a), sum[T](a) specification an abstraction of the implementation (its effect) clients rely on specification, not impl. for procedures: *pre- and *post-conditions establish pre before call (with args) after call can use post condition (forget details) *** Kinds of abstractions (give examples) procedural e.g., sum of array abstracts effect of sequence of stmts pre+post conditions used for spec data e.g., complex numbers, arrays, ints abstracts representation and algorithms of data structure abstract values + descriptions of ops used for spec control e.g., if-then-else, goto iteration abstraction e.g., int$from_to, set[array[int]]$elements abstracts generation of a sequence (of elements) used in a loop specified by giving sequence yielded