(* ========================================================================== *)
(* FLYSPECK - BOOK FORMALIZATION *)
(* *)
(* Definitions: (General definitions file) *)
(* Chapter: Packings *)
(* Author: Thomas C. Hales *)
(* Date: 2010-07-01 *)
(* ========================================================================== *)
(*
Support for functions f {a,b} defined by lambda abstraction.
*)
module Beta_pair = struct
let WELLDEFINED_FUNCTION_2 = prove_by_refinement(
`(?f:C->D. (!x:A y:B. f(s x y) = t x y)) <=>
(!x x' y y'. (s x y = s x' y') ==> t x y = t x' y')`,
[
MATCH_MP_TAC
EQ_TRANS ;
EXISTS_TAC `?f:C->D. !z. !x:A y:B. (s x y = z) ==> f z = t x y`;
CONJ_TAC;
MESON_TAC[];
REWRITE_TAC[GSYM
SKOLEM_THM];
MESON_TAC[];
]);;
end;;