Definition differentiable_pt (f : R -> R -> R) (x y : R) :=
  exists lx, exists ly, differentiable_pt_lim f x y lx ly.

(* Specifications: *)
Lemma differentiable_continuity_pt : forall f x y, differentiable_pt f x y -> continuity_2d_pt f x y.
Lemma differentiable_pt_lim_proj1_0 (f : R -> R) (x y l : R) : derivable_pt_lim f x l -> differentiable_pt_lim (fun u v => f u) x y l 0.
Lemma differentiable_pt_lim_proj1_1 (f : R -> R) (x y l : R) : differentiable_pt_lim (fun u v => f u) x y l 0 -> derivable_pt_lim f x l.
Lemma differentiable_pt_lim_unique (f : R -> R -> R) (x y : R) (lx ly : R) : differentiable_pt_lim f x y lx ly -> Derive (fun x => f x y) x = lx /\ Derive (fun y => f x y) y = ly.
Lemma differentiable_pt_lim_comp : forall f1 f2 f3 x y l1x l1y l2x l2y l3x l3y, differentiable_pt_lim f1 (f2 x y) (f3 x y) l1x l1y -> differentiable_pt_lim f2 x y l2x l2y -> differentiable_pt_lim f3 x y l3x l3y -> differentiable_pt_lim (fun u v => f1 (f2 u v) (f3 u v)) x y (l1x * l2x + l1y * l3x) (l1x * l2y + l1y * l3y).
Lemma derivable_pt_lim_comp_2d : forall f1 f2 f3 x l1x l1y l2 l3, differentiable_pt_lim f1 (f2 x) (f3 x) l1x l1y -> derivable_pt_lim f2 x l2 -> derivable_pt_lim f3 x l3 -> derivable_pt_lim (fun t => f1 (f2 t) (f3 t)) x (l1x * l2 + l1y * l3).