+let rec list_forall_default3 f l1 l2 def l3 =
+ match l1,l2,l3 with
+ | [], [], _ -> true
+ | [], _, _
+ | _, [], _ -> raise (Invalid_argument "list_forall_default3")
+ | a::ta, b::tb, c::tc -> f a b c && list_forall_default3 f ta tb def tc
+ | a::ta, b::tb, [] -> f a b def && list_forall_default3 f ta tb def []
+;;
+