Admitted. (* QuickChick ble_n_Sn. *)
Fixpoint nth_bad (l:natlist) (n:nat) : nat :=
match l with
| nil => 42  (* arbitrary! *)
| a :: l' => match beq_nat n O with
| true => a
| false => nth_bad l' (pred n)
end
end.
Inductive natoption : Type :=
| Some : nat -> natoption
| None : natoption.
Instance dec_natoption (p q : natoption) : Dec (p = q).
End NatList.
(* This is probably a poor choice with ssr *)
Inductive id : Type :=
| Id : nat -> id.
Instance dec_id (p q : id) : Dec (p = q).
(* LEO: Continue *)
Module PartialMap.
Export NatList.
Inductive partial_map : Type :=
| empty  : partial_map
| record : id -> nat -> partial_map -> partial_map.
Instance dec_partial_map (p q : partial_map) : Dec (p = q).

Theorem update_neq :
forall (d : partial_map) (x y : id) (o: nat),
beq_id x y = false -> find x (update d y o) = find x d.