Set Implicit Arguments.
Global Set Asymmetric Patterns.
Require Export Basics.
Arguments eq {A}.
Arguments fst {A B}.
Hint Unfold compose.
Definition proj1_conj (A B: Prop) (c: A /\ B): A :=
match c with conj x _ => x end.
Definition proj2_conj (A B: Prop) (c: A /\ B): B :=
match c with conj _ x => x end.

Lemma eq_trans (X: Set) (a b c: X): a = b -> b = c -> a = c.
Definition map_snd (A B: Set) (f: A -> B) (C: Set) (p: C * A): C * B := (fst p, f (snd p)).