Module NMap := IMap(NIndexed).Definition elt := X.t.Definition elt_eq := X.eq.Definition t (A: Type) := X.t -> A.Definition init (A: Type) (v: A) := fun (_: X.t) => v.Definition get (A: Type) (x: X.t) (m: t A) := m x.Definition set (A: Type) (x: X.t) (v: A) (m: t A) :=
    fun (y: X.t) => if X.eq y x then v else m y.

Lemma gsident: forall (A: Type) (i j: elt) (m: t A), get j (set i (get i m) m) = get j m.