(*************************************************************)
(** ** Exercises                                             *)
(*************************************************************)
(** *** Recommended Exercise: [swap] properties  Prove the following properties about swapping, either explicitly (by destructing [x == y]) or automatically (using [default_simp]).  *)

(** *** Challenge exercise: equivariance  Equivariance is the property that all functions and relations are preserved under swapping. (Hint: [default_simp] will be slow on some of these properties, and sometimes won't be able to do them automatically.)  *)
Lemma swap_var_equivariance : forall v x y z w,
swap_var x y (swap_var z w v) =
swap_var (swap_var x y z) (swap_var x y w) (swap_var x y v).