import Lectures.LoVe.LoVelib
/-!
Exercises for Lecture 5: Forward Proofs.
Give a structured proof of each statement, replacing `sorry`.
The import provides `fix` and `assume` and the arithmetic lemmas.
Exercises 1 to 6 use `fix`, `assume`, `have`, and `show` only.
Exercises 7 and 8 use `calc`. Exercises 9 and 10 are optional.
-/
namespace Forward

theorem S (a b c : Prop) :
    (a → b → c) → (a → b) → a → c :=
  sorry

end Forward

namespace Forward

theorem curry_iff (a b c : Prop) :
    (a ∧ b → c) ↔ (a → b → c) :=
  sorry

end Forward

namespace Forward

theorem iff_symm (a b : Prop) :
    (a ↔ b) → (b ↔ a) :=
  sorry

end Forward

namespace Forward

theorem non_contradiction (a : Prop) :
    ¬ (a ∧ ¬ a) :=
  sorry

end Forward

namespace Forward

theorem or_imp (a b c : Prop) :
    (a ∨ b → c) ↔ (a → c) ∧ (b → c) :=
  sorry

end Forward

namespace Forward

theorem forall_eq_three (P : ℕ → Prop) :
    (∀ x, x = 3 → P x) ↔ P 3 :=
  sorry

end Forward

namespace Forward

theorem two_distrib (a b : ℕ) :
    2 * (a + b) = a + a + (b + b) :=
  sorry

end Forward

namespace Forward

theorem calc_chain (a b c : ℕ) :
    (a + b) * c = a * c + b * c :=
  sorry

end Forward

namespace Forward

theorem exists_eq_three (P : ℕ → Prop) :
    (∃ x, x = 3 ∧ P x) ↔ P 3 :=
  sorry

end Forward

namespace Forward

theorem curry_three (a b c d : Prop) :
    (a ∧ b ∧ c → d) ↔ (a → b → c → d) :=
  sorry

end Forward

