Raquel Oliveira Universidade Federal do Rio Grande do Norte Departamento de Inform´ atica e Matem´ atica Aplicada DIM0610 - L´ ogica Computacional 2017-09-25 1/30
Propositional Logic LCP-006: (A → (B → C)) (B → (A → C)) example (A B C: Prop)(H: A → (B → C)) : (B → (A → C)) := show B → (A →C), from ( assume Hb : B, show A → C ,from ( assume Ha : A, show C, from ( have Hbc: B → C, from H Ha, show C, from Hbc Hb ) ) ) 10/30
Propositional Logic LCP-006: (A → (B → C)) (B → (A → C)) example (A B C: Prop)(H: A → (B → C)) : (B → (A → C)) := assume Hb : B, assume Ha : A, have Hbc: B → C, from H Ha, show C, from Hbc Hb 11/30
Propositional Logic LCP-049: A ¬¬A example ( H: P ): ¬¬P := have H1: ¬P → false, from (assume H2: ¬P, show false, from H2 H), show ¬¬P, from not.intro H1 13/30
Propositional Logic LCP-057: (A → B), (¬A → B) B example (A B: Prop) (H1: A→B) (H2: ¬A→B) : B := show B, from ( by_cases (assume H3: A, show B, from H1 H3) (assume H4: ¬A, show B, from H2 H4) ) 16/30
Propositional Logic LCP-057: (A → B), (¬A → B) B example (A B: Prop) (H1: A→B) (H2: ¬A→B) : B := by_cases (assume H3: A, show B, from H1 H3) (assume H4: ¬A, show B, from H2 H4) 17/30
Propositional Logic ¬ (A ∨ B) → ¬ A ∧ ¬ B ¬(A ∨ B) (1) [A] ∨-Iright A ∨ B ¬-E ⊥ (1)¬-I ¬A ¬(A ∨ B) (2) [B] ∨-Ileft A ∨ B ¬-E ⊥ (2)¬-I ¬B ∧-I ¬A ∧ ¬B 18/30
Propositional Logic LCP-074: ¬ (A ∨ B) → ¬ A ∧ ¬ B example (A B: Prop) : ¬ (A ∨ B) → ¬ A ∧ ¬ B := assume H1: ¬ (A ∨ B), show ¬A ∧¬B, from have NA : ¬A, from (assume P1 : A, have P2 : A ∨ B, from or.inl P1, show false, from H1 P2), have NB : ¬B, from (assume P1 : B, have P2 : A ∨ B, from or.inr P1, show false, from H1 P2), and.intro NA NB 19/30
Propositional Logic LCP-074: ¬ (A ∨ B) → ¬ A ∧ ¬ B example (A B: Prop) : ¬ (A ∨ B) → ¬ A ∧ ¬ B := assume H1: ¬ (A ∨ B), and.intro (show ¬A, from (assume H2: A, have H3: A∨B, from or.inl H2, show false,from H1 H3)) (show ¬B, from (assume H4: B, have H5: A∨B, from or.inr H4, show false, from H1 H5 )) 20/30
First Order logic LCPO-15: ∀x.(R(x)→S(x)) ∀y.R(y)→∀z.S(z) variable U: Type variables R S: U -> Prop example (H1: (∀x,(R(x)→S(x)))) : (∀y, R(y)) → (∀z, S(z)) := assume H2: ∀y, R(y), take x, have H3: R(x)→S(x), from H1 x, have H4: R(x), from H2 x, show S(x), from H3 H4 22/30
First Order logic LCPO-27: ∃x.R(x)∨∃y.S(y) ∃z.(R(z)∨S(z)) variables (U: Type) (R S: U -> Prop) example (H1: (∃x,R(x))∨(∃y,S(y))): ∃z , R(z)∨S(z) := or.elim H1 (assume H2: ∃x, (R(x)), obtain (w:U) (H4: R(w)), from H2, have H5: R(w)∨S(w), from or.inl H4, show ∃z , R(z)∨S(z), from exists.intro w H5) (assume H3: ∃y, S(y), obtain (k:U) (H6: S(k)), from H3, have H7: R(k)∨S(k), from or.inr H6, show ∃z , R(z)∨S(z), from exists.intro k H7) 24/30
First Order logic LCPO-69: ∀x.(Q(x)→R(x)), ∃x.(P(x)∧¬R(x)) ∃x.(P(x)∧¬Q(x)) variables (U: Type)( P Q R: U -> Prop) example (H1: ∀x, Q(x)→R(x)) (H2: ∃x, P(x)∧¬R(x)): ∃x , P(x)∧¬Q(x) := obtain y (H3: P(y)∧¬R(y)), from H2, have H4: ¬R(y), from and.right H3, have Hqr : Q(y)→R(y), from H1 y, have Hnq: ¬Q(y), from (suppose Q(y), have H5: R(y), from Hqr this, show false, from H4 H5), have H6: P(y), from and.left H3, have H7: P(y) ∧¬Q(y), from and.intro H6 Hnq, show ∃x, P(x) ∧¬Q(x), from exists.intro y H7 26/30
First Order logic LCPO-69: ∀x.(Q(x)→R(x)), ∃x.(P(x)∧¬R(x)) ∃x.(P(x)∧¬Q(x)) variables (U: Type)( P Q R: U -> Prop) example (H1: ∀x, Q(x)→R(x)) (H2: ∃x, P(x)∧¬R(x)): ∃x , P(x)∧¬Q(x) := obtain y H3, from H2, have Hqr : Q(y)→R(y), from H1 y, have Hnq: ¬Q(y), from (suppose Q(y), show false, from (and.right H3) (Hqr this)), have H7: P(y) ∧¬Q(y), from and.intro (and.left H3) Hnq, exists.intro y H7 27/30
First Order logic LCPO-83: ∃x.(P(x)∧∃y.Q(x,y)) ∃x.∃y.(P(x)∧Q(x,y)) variables (U: Type) (P: U -> Prop) (Q: U -> U -> Prop ) example (H1: ∃x, P x ∧ ∃y, Q x y): ∃x, ∃y, (P x ∧Q x y):= obtain x (H2: P x ∧ ∃y, Q x y), from H1, have H3: P x, from and.left H2, have H4: ∃y, Q x y, from and.right H2, obtain y (H5: Q x y), from H4, have H6: (P x ∧ Q x y), from and.intro H3 H5, have H7: ∃y, (P x ∧ Q x y), from exists.intro y H6, show ∃x, ∃y, (P x ∧ Q x y), from exists.intro x H7 29/30