Class ValNull (val : Type) := {
  null : val
}.Class ValNull (val : Type) := {
  null : val
}.Definition stack := A -> val.Definition stack_empty : stack := fun x => null.Definition stack_get (x : A) : stack -> val  := fun s => s x.Definition stack_add x v s : stack :=
    fun x' => if x' ?[ eq ] x then v else s x'.

Lemma stack_lookup_add2 (x y : A) (v : val) (s : stack) (Hneq: x <> y) : (stack_add x v s) y = s y.