| First Order Logic and proof strategies for reasoning about programs. Basic set and bag definitions, operations, and properties. Using functions to solve problems: to include definitions of function domain, range, image, composition, identity, inverse, abstraction, application, total & partial functions, injections, bijections & surjections. Reasoning using First Order Logic: truth tables, use of conjunction, disjunction, implication, negations, equivalence rules, assertions, tautologies, contradictions, universal and existential quantifiers. Representing natural language in a formal logic and proving the validity of logical statements using proof by contradiction and natural deduction. |