Local Notation power := (mscal mult 1).Local Infix "⇡" := nat_join (at level 50, left associativity).Fact mult_lt_power_2 u v k : u < power k 2 -> v < power k 2 -> u*v < power (2*k) 2.Fact mult_lt_power_2_4 u v k : u < power k 2 -> v < power k 2 -> u*v < power (4*k) 2.Fact mult_lt_power_2_4' u1 v1 u2 v2 k : 
               u1 < power k 2 
            -> v1 < power k 2
            -> u2 < power k 2
            -> v2 < power k 2
            -> u1*v1+v2*u2 < power (4*k) 2.Fact mult_2_eq_plus x : x + x = 2 *x.Fact power_2_n_ij_neq i j n : i <> j -> power (S n) 2 <> power i 2 + power j 2.Fact power_2_inj i j : power i 2 = power j 2 -> i = j.

(* Specifications: *)
Theorem sum_2_power_2_injective i1 j1 i2 j2 : j1 <= i1 -> j2 <= i2 -> power i1 2 + power j1 2 = power i2 2 + power j2 2 -> i1 = i2 /\ j1 = j2.