(* TEST part *)
(* This part is an attempt to test the computational power of "Qhomographic_Qpositive_to_Qpositive" function. We try to calculate h(x)=2x+3/(x+4) for x:=1 *) 
(* TEST 1 : 01_08_02 RAM:386MB Coq:7.3 OS:Redhat7.3   RESULT:insufficient memory *) 

Remark one_non_negative : (0 <= 1)%Z.Remark two_non_negative : (0 <= 2)%Z.Remark three_non_negative : (0 <= 3)%Z.Remark four_non_negative : (0 <= 4)%Z.Remark five_non_negative : (0 <= 5)%Z.Remark six_non_negative : (0 <= 6)%Z.Remark seven_non_negative : (0 <= 7)%Z.Remark two_plus_three_positive : (0 < 2 + 3)%Z.Remark one_plus_four_positive : (0 < 1 + 4)%Z.Definition homographicacc_wf_for_five_over_five :=
  homographicAcc_wf 2 3 1 4 One two_plus_three_positive
    one_plus_four_positive two_non_negative three_non_negative
    one_non_negative four_non_negative.(* TEST: Eval Compute in (Qhomographic_Qpositive_to_Qpositive `2` `3` `1` `4` (One) homographicacc_wf_for_five_over_five). *)

(* End of the TEST part *)


(** Proof independence of Qhomographic_Qpositive_to_Qpositive: *)

Scheme homographicAcc_ind_dep := Induction for homographicAcc Sort Prop.

Lemma Qhomographic_Qpositive_to_Qpositive_0 : forall (a b c d : Z) (p : Qpositive) (hyp : homographicAcc a b c d p), p = One -> forall (H1 : (0 < a + b)%Z) (H2 : (0 < c + d)%Z), Qhomographic_Qpositive_to_Qpositive a b c d p hyp = positive_fraction_encoding (a + b) (c + d) H1 H2.