Set Bullet Behavior "Strict Subproofs".
Set Implicit Arguments.
Definition first :=
fun (A B C D  E: Prop) (p : A /\ B /\ C /\ D /\ E) =>
match p with
| conj H _ => H
end.
Definition second :=
fun (A B C D E : Prop) (p : A /\ B /\ C /\ D /\ E) =>
match p with
| conj _ (conj H _) => H
end.
Definition third :=
fun (A B C D E : Prop) (p : A /\ B /\ C /\ D /\ E) =>
match p with
| conj _ (conj _ (conj H _)) => H
end.
Definition fourth :=
fun (A B C D E : Prop) (p : A /\ B /\ C /\ D /\ E) =>
match p with
| conj _ (conj _ (conj _ (conj H _))) => H
end.
Definition fifth :=
fun (A B C D E : Prop) (p : A /\ B /\ C /\ D /\ E) =>
match p with
| conj _ (conj _ (conj _ (conj _ H))) => H
end.
(* ------------------------------------- *)

(* Specifications: *)
Lemma dom_subst_inv: forall (G: context) (f: sort -> sort), dom G = dom (map f G).
(* -------------------------------------- *)
Lemma binds_map_3 :
forall a b x s (f : a -> b) G, binds x s (map f G) ->
exists s', f s' = s /\ binds x s' G.