CONSTRUCTIVE LOGIC (1) MINIMAL IMPLICATIONAL LOGIC (N^>_m) Propositions: A ::= a | A => A Contexts: Gamma = finite set {xi:Ai} with distinct xi Sequent: Gamma |- A (premise,conclusion) Rules: Examples: ((A > (B > C)) > ((A > B) > (A > C))) A > ((A > (B > C)) > ((A > B) > (A > C))) - use contexts - use tagged assumptions Redundancy: D1 G,x:A |- B ---------- D2 G |- A > B G |- A ---------------------- G |- B Construct proof of G |- B without using x:A Leaves of the form G,Del,x:A,y:C|-C or G,Del,x:A|-A Replace leaves G,Del,x:A|-A with D2 by adding Del to the premise of each sequent in Delta (May need to rename variables in D2) Delete x:A from premise of every sequent Resulting Deduction: D1[D2/x] NOTE: not all assumptions are necessarily used some assumptions used more than once This transformation is called Reduction or Normalization step. Curry/Howard Isomorphism (Propositions-as-Types) TypeChecking \lambda^>: Sequent: G |- M:A M=term representing a deduction of A Rules Redundancy Example: (\x:A.M)N:B ==> M[N/x] D1 = term M D2 = term N Reduction step = Beta ADDING CONJUNCTION, DISJUNCTION, NEGATION (INTUITIONISTIC PROPOSITIONAL LOGIC) Propositions: A ::= a| A=>A | A ^ A | A v A | bot (negation is encoded: ~A == A => bot) ^-elim and intro v-elim and intro bot-elim: G |- bot -------- G |- A A^B => B^A, AvB => BvA, A^(B^C) => (A^B)^C Minimal Propositional Logic - drop bot-elim Classical Propositional Logic: Add negation to minimal logic: G,x:~A |- bot ------------- (by-contra) G |- A In Classical logic, bot-elim can be DERIVED: if G |- bot, then G,x:~A |- bot, hence G|-A Note: A => ~~A