(*s Extending D with an element None representing infinity *)

Definition Ddmin (dd dd' : option D) :=
  match dd, dd' with
  | None, _ => dd'
  | _, None => dd
  | Some d, Some d' => Some (Dmin d d')
  end.

(* Specifications: *)
Lemma Ddmin_idempotent : forall dd : option D, Ddmin dd dd = dd.
Lemma Ddmin_comm : forall dd dd' : option D, Ddmin dd dd' = Ddmin dd' dd.
Lemma Ddmin_assoc : forall dd dd' dd'' : option D, Ddmin (Ddmin dd dd') dd'' = Ddmin dd (Ddmin dd' dd'').