Section foo.
Variable f : nat -> nat.
Definition g := f.
Variable lem : g 0 = 0.
Goal f 0 = 0.
Print Equivalent Keys.
End foo.
Definition G {A} (f : A -> A -> A) (x : A) := f x x.

(* Basically like list_foo, but now uses the op projection for everything *)
Lemma test2 A (l : list A) : G op (op l nil) = G op l.