let bool : Type := Prop,
    and : bool → bool → Prop := λ (p q : bool), Π (c : bool), (p → q → c) → c,
    and_intro : Π (p q : bool), p → q → and p q :=
      λ (p q : bool) (H1 : p) (H2 : q) (c : bool) (H : p → q → c), H H1 H2,
    and_elim_left : Π (p q : bool), and p q → p := λ (p q : bool) (H : and p q), H p (λ (H1 : p) (H2 : q), H1),
    and_elim_right : Π (p q : bool), and p q → q := λ (p q : bool) (H : and p q), H q (λ (H1 : p) (H2 : q), H2)
in and_intro :
  ∀ (p q : Prop), p → q → ∀ (c : Prop), (p → q → c) → c
let1.lean:19:17: error: invalid let-expression, expression
  λ (p q : bool) (H1 : p) (H2 : q) (c : bool) (H : p → q → c), H H1 H2
has type
  Π (p q : bool), p → q → Π (c : bool), (p → q → c) → c
but is expected to have type
  Π (p q : bool), p → q → and q p
let bool : Type := Prop,
    and : bool → bool → Prop := λ (p q : bool), Π (c : bool), (p → q → c) → c,
    and_intro : Π (p q : bool), p → q → and q p := sorry,
    and_elim_left : Π (p q : bool), and p q → p := λ (p q : bool) (H : and p q), H p (λ (H1 : p) (H2 : q), H1),
    and_elim_right : Π (p q : bool), and p q → q := λ (p q : bool) (H : and p q), H q (λ (H1 : p) (H2 : q), H2)
in and_intro :
  ∀ (p q : Prop), p → q → (λ (p q : Prop), ∀ (c : Prop), (p → q → c) → c) q p
