Library Float.Paux


Require Export Digit.
Require Export Option.
Require Export Inverse_Image.
Require Export Wf_nat.
Require Import BinPos.

Fixpoint exp (n m : nat) {struct m} : nat :=
  match m with
  | O ⇒ 1
  | S m' ⇒ n × exp n m'
  end.

Theorem expPlus : ∀ n p q : nat, exp n (p + q) = exp n p × exp n q.
intros n p; elim p; simpl in |- *; auto with arith.
intros n0 H' q; rewrite mult_assoc_reverse; rewrite <- H'; auto.
Qed.

Fixpoint positive_exp (p n : positive) {struct n} : positive :=
  match n with
  | xH ⇒ p
  | xO n1 ⇒
      match positive_exp p n1 with
      | r ⇒
          (fun (x : positive) (_ : positive → positive)
             (y : positive) ⇒ (x × y)%positive) r (
            fun x ⇒ x) r
      end
  | xI n1 ⇒
      match positive_exp p n1 with
      | r ⇒
          (fun (x : positive) (_ : positive → positive)
             (y : positive) ⇒ (x × y)%positive) p (
            fun x ⇒ x)
            ((fun (x : positive)
                (_ : positive → positive)
                (y : positive) ⇒ (x × y)%positive) r (
               fun x ⇒ x) r)
      end
  end.

Theorem positive_exp_correct :
 âˆ€ p n : positive,
 nat_of_P (positive_exp p n) =
 exp (nat_of_P p) (nat_of_P n).
intros p n; elim n; simpl in |- *; auto.
intros p0 H.
repeat
 rewrite
  (fun (x y : positive) (_ : positive → positive) ⇒
   nat_of_P_mult_morphism x y); simpl in |- *;
 auto.
rewrite ZL6; rewrite expPlus; rewrite H; auto.
intros p0 H.
repeat
 rewrite
  (fun (x y : positive) (_ : positive → positive) ⇒
   nat_of_P_mult_morphism x y); simpl in |- *;
 auto.
rewrite H; rewrite <- expPlus; rewrite <- ZL6; auto.
rewrite mult_comm; simpl in |- *; auto.
Qed.

Fixpoint Pdiv (p q : positive) {struct p} :
 Option positive × Option positive :=
  match p with
  | xH ⇒
      match q with
      | xH ⇒ (Some _ 1%positive, None _)
      | xO r ⇒ (None _, Some _ p)
      | xI r ⇒ (None _, Some _ p)
      end
  | xI p' ⇒
      match Pdiv p' q with
      | (None, None) ⇒
          match (1 - Zpos q)%Z with
          | Z0 ⇒ (Some _ 1%positive, None _)
          | Zpos r' ⇒ (Some _ 1%positive, Some _ r')
          | Zneg r' ⇒ (None _, Some _ 1%positive)
          end
      | (None, Some r1) ⇒
          match (Zpos (xI r1) - Zpos q)%Z with
          | Z0 ⇒ (Some _ 1%positive, None _)
          | Zpos r' ⇒ (Some _ 1%positive, Some _ r')
          | Zneg r' ⇒ (None _, Some _ (xI r1))
          end
      | (Some q1, None) ⇒
          match (1 - Zpos q)%Z with
          | Z0 ⇒ (Some _ (xI q1), None _)
          | Zpos r' ⇒ (Some _ (xI q1), Some _ r')
          | Zneg r' ⇒ (Some _ (xO q1), Some _ 1%positive)
          end
      | (Some q1, Some r1) ⇒
          match (Zpos (xI r1) - Zpos q)%Z with
          | Z0 ⇒ (Some _ (xI q1), None _)
          | Zpos r' ⇒ (Some _ (xI q1), Some _ r')
          | Zneg r' ⇒ (Some _ (xO q1), Some _ (xI r1))
          end
      end
  | xO p' ⇒
      match Pdiv p' q with
      | (None, None) ⇒ (None _, None _)
      | (None, Some r1) ⇒
          match (Zpos (xO r1) - Zpos q)%Z with
          | Z0 ⇒ (Some _ 1%positive, None _)
          | Zpos r' ⇒ (Some _ 1%positive, Some _ r')
          | Zneg r' ⇒ (None _, Some _ (xO r1))
          end
      | (Some q1, None) ⇒ (Some _ (xO q1), None _)
      | (Some q1, Some r1) ⇒
          match (Zpos (xO r1) - Zpos q)%Z with
          | Z0 ⇒ (Some _ (xI q1), None _)
          | Zpos r' ⇒ (Some _ (xI q1), Some _ r')
          | Zneg r' ⇒ (Some _ (xO q1), Some _ (xO r1))
          end
      end
  end.

Definition oZ h := match h with
                   | None ⇒ 0
                   | Some p ⇒ nat_of_P p
                   end.

Theorem Pdiv_correct :
 âˆ€ p q,
 nat_of_P p =
 oZ (fst (Pdiv p q)) × nat_of_P q + oZ (snd (Pdiv p q)) ∧
 oZ (snd (Pdiv p q)) < nat_of_P q.
intros p q; elim p; simpl in |- *; auto.
3: case q; simpl in |- *; try intros q1; split; auto;
    unfold nat_of_P in |- *; simpl in |- *;
    auto with arith.
intros p'; simpl in |- *; case (Pdiv p' q); simpl in |- *;
 intros q1 r1 (H1, H2); split.
unfold nat_of_P in |- *; simpl in |- ×.
rewrite ZL6; rewrite H1.
case q1; case r1; simpl in |- ×.
intros r2 q2. rewrite Z.pos_sub_spec; unfold Pos.compare.
CaseEq (Pcompare (xI r2) q Datatypes.Eq);
 simpl in |- *; auto.
intros H3; rewrite <- (Pcompare_Eq_eq _ _ H3); simpl in |- *;
 unfold nat_of_P in |- *; simpl in |- ×.
apply f_equal with (f := S); repeat rewrite (fun x y ⇒ mult_comm x (S y));
 repeat rewrite ZL6; unfold nat_of_P in |- *;
 simpl in |- *; ring.
intros H3; unfold nat_of_P in |- *; simpl in |- *;
 repeat rewrite ZL6; unfold nat_of_P in |- *;
 repeat rewrite (fun x y ⇒ plus_comm x (S y)); simpl in |- *;
 apply f_equal with (f := S); ring.
intros H3; case (Pminus_mask_Gt _ _ H3); intros h (H4, (H5, H6));
 unfold Pminus in |- *; rewrite H4.
apply
 trans_equal
  with
    (nat_of_P q + nat_of_P h +
     Pmult_nat q2 2 × Pmult_nat q 1);
 [ rewrite <- nat_of_P_plus_morphism; rewrite H5; simpl in |- *;
    repeat rewrite ZL6; unfold nat_of_P in |- *;
    apply f_equal with (f := S)
 | unfold nat_of_P in |- × ]; ring.
intros r2. rewrite Z.pos_sub_spec; unfold Pos.compare.
CaseEq (Pcompare 1 q Datatypes.Eq); simpl in |- *; auto.
intros H3; rewrite <- (Pcompare_Eq_eq _ _ H3); simpl in |- *;
 repeat rewrite ZL6; unfold nat_of_P in |- *; simpl in |- *;
 apply f_equal with (f := S);ring.
intros H3; unfold nat_of_P in |- *; simpl in |- *;
 repeat rewrite (fun x y ⇒ plus_comm x (S y));
 simpl in |- *; apply f_equal with (f := S); repeat rewrite ZL6;
   unfold nat_of_P in |- *; simpl in |- *; ring.
intros H3; case (Pminus_mask_Gt _ _ H3); intros h (H4, (H5, H6));
 unfold Pminus in |- *; rewrite H4;
 apply
  trans_equal
   with
     (nat_of_P q + nat_of_P h +
      Pmult_nat r2 2 × Pmult_nat q 1);
 [ rewrite <- nat_of_P_plus_morphism; rewrite H5; simpl in |- *;
    repeat rewrite ZL6; unfold nat_of_P in |- *;
    apply f_equal with (f := S)
 | unfold nat_of_P in |- × ]; ring.
intros r2. rewrite Z.pos_sub_spec; unfold Pos.compare.
 CaseEq (Pcompare (xI r2) q Datatypes.Eq); simpl in |- *;
 auto.
intros H3; rewrite <- (Pcompare_Eq_eq _ _ H3); simpl in |- *;
 unfold nat_of_P in |- *; simpl in |- *; repeat rewrite ZL6;
 unfold nat_of_P in |- *; apply f_equal with (f := S);
 ring.
intros H3; unfold nat_of_P in |- *; simpl in |- *;
 repeat rewrite ZL6; unfold nat_of_P in |- *;
 apply f_equal with (f := S); ring.
intros H3; case (Pminus_mask_Gt _ _ H3); intros h (H4, (H5, H6));
 unfold Pminus in |- *; rewrite H4;
 apply trans_equal with (nat_of_P q + nat_of_P h);
 [ rewrite <- (nat_of_P_plus_morphism q); rewrite H5;
    unfold nat_of_P in |- *; simpl in |- *;
    repeat rewrite ZL6; unfold nat_of_P in |- *;
    apply f_equal with (f := S)
 | unfold nat_of_P in |- × ]; ring.
case q; simpl in |- *; auto.
generalize H2; case q1; case r1; simpl in |- *; auto.
intros r2 q2. rewrite Z.pos_sub_spec; unfold Pos.compare.
CaseEq (Pcompare (xI r2) q Datatypes.Eq);
 simpl in |- *; auto.
intros; apply lt_O_nat_of_P; auto.
intros H H0; apply nat_of_P_lt_Lt_compare_morphism; auto.
intros H3 H7; case (Pminus_mask_Gt _ _ H3); intros h (H4, (H5, H6));
 unfold Pminus in |- *; rewrite H4;
 apply plus_lt_reg_l with (p := nat_of_P q);
 rewrite <- (nat_of_P_plus_morphism q); rewrite H5;
 unfold nat_of_P in |- *; simpl in |- *; repeat rewrite ZL6;
 unfold nat_of_P in |- *;
 apply le_lt_trans with (Pmult_nat r2 1 + Pmult_nat q 1);
 auto with arith.
intros r2 HH; case q; simpl in |- *; auto.
intros p2; case p2; unfold nat_of_P in |- *; simpl in |- *;
 auto with arith.
intros p2; case p2; unfold nat_of_P in |- *; simpl in |- *;
 auto with arith.
intros r2 HH. rewrite Z.pos_sub_spec; unfold Pos.compare.
CaseEq (Pcompare (xI r2) q Datatypes.Eq);
 simpl in |- ×.
intros; apply lt_O_nat_of_P; auto.
intros H3; apply nat_of_P_lt_Lt_compare_morphism; auto.
intros H3; case (Pminus_mask_Gt _ _ H3); intros h (H4, (H5, H6));
 unfold Pminus in |- *; rewrite H4;
 apply plus_lt_reg_l with (p := nat_of_P q);
 rewrite <- (nat_of_P_plus_morphism q); rewrite H5;
 unfold nat_of_P in |- *; simpl in |- *; repeat rewrite ZL6;
 unfold nat_of_P in |- *;
 apply le_lt_trans with (Pmult_nat r2 1 + Pmult_nat q 1);
 auto with arith.
intros HH; case q; simpl in |- *; auto.
intros p2; case p2; unfold nat_of_P in |- *; simpl in |- *;
 auto with arith.
intros p2; case p2; unfold nat_of_P in |- *; simpl in |- *;
 auto with arith.
intros p'; simpl in |- *; case (Pdiv p' q); simpl in |- *;
 intros q1 r1 (H1, H2); split.
unfold nat_of_P in |- *; simpl in |- *; rewrite ZL6; rewrite H1.
case q1; case r1; simpl in |- *; auto.
intros r2 q2. rewrite Z.pos_sub_spec; unfold Pos.compare.
CaseEq (Pcompare (xO r4/stdlib/Coq.PArith.Pnat.html#lt_O_nat_of_P">lt_O_nat_of_Parith.
intro rewrite H5;
&pan> in |- *; rewrite ZL6; rewrite H1.
case q1; case r1; simpl in |- *; auto.
intros r2 q2. rewrite Z.pos_ss="id" type="tactic">case r1; simpl inq1; case Pmult_nat rean class="id" type="variable">radix
r max → (r - rewrite
H1.it.Logic.html#f_equal">rewrite H5;
&pan>
S); repeat rewri3); in |- *; rewrite ZL6; rewrite H1.
case q1; case r1; simpl in |- *; auto.
intros r2 q2case r1; simpl in |- *; auto.
intros rewrite q2. rewrite nat_of_P in |- *;
 apply le_lt_trans with (Pmult_nat r2 1 in |- *; auto.
Pmult_nat
r2ith.BinPos.html#Pos.sub">Pminus in |- *; rewrite H4;
 apply plus_lt_reg_l with (p := nat_of_P na simpl in |- *;
 intros q1 r1 (H1, H2); split.
unfold nat_of_ type="keyword">with (Pmult_nat r2 1 precision r)
  " type="lemma">plus_lt_reg_l
Pmult_nat Pmult_nat r2 1 precision r)
  " type="lemma">plus_lt_reg_l
Pmult_nat Pmult_nat r2 1 precision r)
  " type="lemma">plus_lt_reg_l
Pmult_nat Pmult_natr2 1 precision r)
 &nb1P" type="lemma">plus_lt_reg_l
Pmult_nat Zpos xI r2) q r)
 &nb1P" typass="id" type="abbreviation">Pmult_nat
plus_lt_reg_l
r1; simpl in |- *; in |- *;
    apply f_equal with (f := S)
 | unfold nat_of_P in |- × ]; ring.
S)
 | apply with (f := S)
 | unfold nat_of_P in |- × ]; ring.
S)
 | apply with (f := S)
 | unfold nat_of_P in |- × ]; ring.
S)
 | apply with (f := S)
 | unfold nat_of_P in |- × ]; ring.
S)
 | apply with (f := S)
 | unfold nat_of_P in |- × ]; ring.
S)
 | apply with (f := case r1)
  " type="lemma">plus_lt_reg_l
Pmult_nat Pmult_nat r2 1 auto.
3: case |- *;
    apply
f_equal
with (f := S)
 | unfold nat_of_P in |- × ]; ring.
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ _ H3); S)
 | unfold nat_of_P in |- × ]; ring.
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ _ H3); S)
 | unfold nat_of_P in |- × ]; ring.
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ _ H3); S)
 | unfold nat_of_P in |- × ]; ring.
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ _ H3); S)
 | unfold unfold
ring
.
S
)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ _ H3); S)
 | unfold unfold
ring
.
S
)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ S)
 | unfold unfold
ring.
S
)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ S)
 | unfold unfold ring.
S
)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ S)
 | unfold sp;| unfold unfold unfold in |- × ]; ringwith (f := S)
 | unfold nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">unfold S)
 | apply with (f := case r1)
  " type="lemma">plus_lt_reg_l
Pmult_nat Pmult_nat r2 1 auto.
3: case |- *;
    apply
f_equal
with (f := unfold nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">unfold S)
 | apply with (f := case r1)
  " type="lemma">plus_lt_reg_l
Pmult_nat Pmult_nat r2 1 auto.
3: case |- *;
    apply
f_equal
with (f := unfold nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">unfold S)
 | apply with (f := case r1)
  " type="lemma">plus_lt_reg_l
Pmult_nat Pmult_nat r2 1 auto.
3: case |- *;
    apply
f_equal
with (f := unfold nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">unfold S)
 | apply with (f := case r1)
  " type="lemma">plus_lt_reg_l
Pmult_nat Pmult_nat r2 1 auto.
3: case |- *;
    apply
case
r1Z.pos_ss="id" type="tactic">case r1)
 | apply with (f := case r1)
  " type="lemma">plus_lt_reg_l
Pmult_nat Pmult_nat r2 1 auto.
3: case |- *;
    apply
f_equal
with (f := unfoldnat_of_PPmult_nat S)
 | apply with (f := case r1)
  " type="lemma">plus_lt_reg_l
Pmult_nat Pmult_nat type="lemma">pluse="tactic">auto.
3: case |- *;
    ring | idtac ].
repeatplus_lt_reg_l Rinv_r; auto with real.
ring_simplify.
apply Rplus_le_reg_l with (powerRZ radix (Zpred (- dExp b))).
ring_simplify
    (powerRZ radix (Zpred (- dExp b)) +
     plus_lt_reg_l
powerRZ radix (Zpred (- dExp b)) +
     plus_lt_reg_l
powerRZ radix (Zpred (- dExp b)) +
     plus_lt_reg_l powerRZ radix (Zpred (plus_lt_reg_l b)) +
     plus_lt_reg_l powerRZ radix (Zpred (plus_lt_reg_l   " type="lemma">plus_lt_reg_l b)) +
     plus_lt_reg_l case r1)
  " type="lemma">plus_lt_reg_l
intros H3
     powerRZ
radix (Zpred (- dExp b)) +
     plus_lt_reg_l
plus_lt_reg_l powerRZ radix (Zpred (- dExp b)) +
     plus_lt_reg_l powerRZ radix (Zpred (plus_lt_reg_tn/em.radix">H3; )) +
     plus_lt_reg_l plus_lt_reg_l powerRZ nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l sym_eq;
 apply TwoSumOneNul with (b := b) (precision := precision) (p := w);
 auto.
  " type="lemma">plus_lt_reg_l
powerRZ radix (Zpred (plus_lt_reg_tn/em.radix">H3; )) +
     plus_lt_reg_l plus_lt_reg_l powerRZ nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l sym_eq;
 apply TwoSumOneNul with (b := b) (precision := precision) (p := w);
 auto.
  " type="lemma">plus_lt_reg_l
powerRZ radix (Zpred (plus_lt_reg_tn/em.radix">H3; )) w);
 auto.
  " type="lemma">plus_lt_reg_l +
     plus_lt_reg_l plus_lt_reg_l powerRZ nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l   " type="lemma">plus_lt_reg_l +
     plus_lt_reg_l plus_lt_reg_l Zpred (plus_lt_reg_lplus_lt_reg_l powerRZ nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l   " type="lemma">plQLn>+
     radix (+nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l sym_eq;
 apply TwoSumOneNul b)) b
:= b) (precision := precision) (p := w);
 auto.
  " type="lemma">plus_lt_reg_l powerRZ radix (Zpred (plus_lt_reg_tn/em.radix">H3; )) +
     plus_lt_reg_l plus_lt_reg_l powerRZ nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l sym_eq;
 apply TwoSumOneNul with (b := b) (precision := precision) (p := w);
 auto.
  " type="lemma">plus_lt_reg_l
powerRZ radix (Zpred (plus_lt_reg_tn/em.radix">H3; )) w);
 auto.
  " type="lemma">plus_lt_reg_l +
     plus_lt_reg_l +
     plus_lt_reg_l plus_lt_reg_l und" type="axsp" type="lemma">plus_lt_reg_l   " type="lemma">plus_lt_reg_l +
     plus_lt_reg_l plus_lt_reg_l Zpred (plus_lt_reg_lplus_lt_reg_l powerRZ nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l   " type="lemma">plQLn>+
     radix (+nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l sym_eq;
 apply plus_lib/8.4pl4/stdlib/Cog_l +nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l sym_eq;
 apply sym_eq;
  und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l sym_eq;
 apply sym_eq;
  und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l sym_eq;
 apply sym_eq;
  und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l sym_eq;
 apply sym_eq;
  und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l sym_eq;
 apply sym_eq;
  und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" typtype="tactic">apply sym_eq;
  und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" typtype="tactic">apply sym_eq;
  und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="axsp" type="lemma">plus_lt_reg_l   " type="lemma">plQLn>+
     radix (+nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l sym_eq;
 apply plus_lib/8.4pl4/stdlib/Cog_l +nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l plus_lib/8.4pl4/stdlib/Cog_l +nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l plus_lib/8.4pl4/stdlib/Cog_l +nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l H3; )) w);
 auto.+nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" tyte="lemma">plus_lt_reg_l plus_lib/8.4pl4/stduib/Cog_l +nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4ic">auto.+ und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" tyte="lemma">plus_lt_reg_l plus_lib/8.4pl4/stduib/Cog_l +nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4ic">auto.+ und" type="axsp2S)
 | radix (Zpred (- dExp b)) +
     plus_lt_reg_l
pow class="id" type="constructor">S)
 | unfold nat_of_P in |- × ]; ring.
S)
 | apply wit="id" type="variable">b)) +
     plus_lt_reg_l powerRZ radix (Zpred (und" type="axsp2+
     Pcompare_Eq_eq _ S)
 | unfold sp;| unfold nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l   " type="lemma">plus_lt_reg_l +
     plus_lt_reg_l plus_lt_reg_l S)
 | apply with (f := nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l   " type="lemma">plus_lt_reg_l +
     plus_lt_reg_l plus_lt_reg_l S)
 | apply und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="axsp" type="lemma">plus_lt_reg_l nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">unfold S)
 | apply<;x">und" type="axsp2 sym_eq;
 apply Pmult_nat
Pmult_nat r2 1 b)) +
     plus_lt_reg_l
pow class="id" type="constructor">S)
 | unfold nat_of_P in |- × ]; ring.
S)
 | apply plus_lt_reg_l
  " type="lemma">plus_lt_reg_l ++
     plus_lt_reg_l plus_lt_reg_l S)
 | apply und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="axsp" type="lemma">plus_lt_reg_l )
 | unfold nat_of_P in |- × ]; ring.
S)
 | apply plus_lt_reg_l<,="idref" href4ml#sym_eq3>sym_eq;
 nat_of_P in |- × ]; ringPcompare_Eq_eq _ S<="Float.Fbound.html#dExp">und/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type=p;Pcompare_Eq_eq _ S)
 | unfold sp;| unfold nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l
  " type="lemma">plus_lt_reg_l +
     plus_lt_reg_l
f_equal
with (f := unfold nat_of_P in |-tml#Pos.to_nat">nat_of_P in |- × ]; ring.
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ _ H3); S)
 | unfold nat_of_P in |- × ]; ring.
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ _ H3); S<2a>)
 | unfold rith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ _ H3); S)
 | unfold n">nat_of_P Pmult_natn class="id" type="var">_ _ H3); S)
 | unfold sym_eq
;
 apply Pcompare_Eq_eq _ und" type="axsp" type="lemma">plus_lt_reg_l b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l Pcompare_Eq_eq _ _ ring.
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ S)
 | unfold unfold
ring
.
S
)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ S)
 | unfold sp;| unfold unfold
unfold in |- × ]; ringwith (f := SPcompare_Eq_eq _ S)
 | unfold unfold ring.
S
)
 p://coq.inria.fr/Histrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ S)
 | unfold sp;| Pcompare_Eq_eqs"http://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_n type="tactic">ring.
Pcompare_Eq_eq _ S<="Float.Fbound.html#d">Pcompare_Eq_eq _ S)
 | unfold unfold
ring.
S
)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l   " type="lemma">plus_lt_reg_l +
     plus_lt_reg_l f_equal with (f := unfold nat_of_P in |-tml#Pos.to_nat">nat_of_P in |- × ]; ring.
S)
 p://coq.inria.fr/diohl' trib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq ring.
S)
 p://coq.inria.fr/Histrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ S)
 | unfold sp;| Pcompare_Eq_eqs"http://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_n type="tactic">ring.
Pcompare_Eq_eq _ S<="Float.Fbound.html#d">Pcompare_Eq_eq _ S)ring.
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">nat_of_Pb/8.4pl5/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">Pcompare_Eq_eq _ b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reype="definition">nat_of_P in |-tml#Pos.to_nat">nat_of_P in |- × ]; ring.
S)
 p://coq.inria.fr/diohl' > S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ S)
 | unfold unfold ring.
S
)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ S)
 | unfold sp;| unfold unfold unfold in |- × ]; ringwith (f := SPcompare_Eq_eq _ S)
 | unfold unfold ring.
S
)
 p://coq.inria.fr/Histrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ S)
 | unfold sp;| Pcompare_Eq_eqs"http://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_n type="tactic">ring.
Pcompare_Eq_eq _ S<="Float.Fbound.html#d">Pcomjare_Eq_eq _ S)Pcompare.to_nat">unfold Pcompare_Eq_equnfold plus_lt_reg_l powerRZ radi="keyword">in |- × ]; ringunfold plus_lt_reg_l powerRZ radi="keyword">in |- × ]; unfold ring.
S
)
 p://coq.inria.fr/diohl' trib/8.4pl4/sin |-tml#Pos.to_nat">nat_of_P in |- × ]; ring.
S)
 p://coq.inria.fr/diohl' trib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq S)Pcompare.to_nat">unfold Pcompare_Eq_eqS)
&nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/ttp://coq.ief" hrrs.Fmructor">S)
&nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &f" hrhrunctions.html#powerRZ">powerRZ radi="keyword">in |- × ]; ringunfoldund" type="axsp" tyte="lemma">plus_lt_reg_ll#Pcompare_Eq_eq">Pcompare_Eq_eq S)Pcompare.to_nat">unfold Pcompare_Eq_eqS)
&nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/tdlib/Ca'ss="id" type="constructor">S)Pcompare.to_nat">unfold Pcompare_Eq_eqSspan> S)
 | unfold unfold unfoldund" type="axsp" tyte="lemma">plus_lt_reg_ll#Pcompare_Eq_eq">Pcompare_Eq_eq S)Pcompare.to_nat">unfold Pcompare_Eq_eqS)
&nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/tdlib/Ca'ss="id" type="constructor">S)Pcompare.to_nat">unfold Pcompare_Eq_eqSspan> S)
 | unfold unfold &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/> &nbCoq&nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/> &nbCoq&nbr/> &nbrBinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l plus_lib/8.4pl4/stdlib/Cog_l nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">und" type="axsp" type="lemma">plus_lt_reg_l   " type="lemma">plQLn>H3; &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/> &nbCoq&nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/> &nbCoq&nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPop.html#Pos.to_txxinbr/> &nbr/> &nbCoq&nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbbass="n>b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">u>;
 apply with &nbr/> &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/> &nbCotype="tactic">case
r1)
  " type="lemma">plus_lt_reg_l
Pmult_nat Pmult_nat r2 1 auto.
3: plus_lt_reg_l
Zpred (plus_lt_reg_l
b/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">u>;#Pos.to_txxinbr/> &nbr/> &nbCotype="tactic">case r1)
  " type="lemma">plus_lt_reg_l
Pmult_nat Pmult_nat r2 1 auto.
3: plus_lt_reg_l
 &nbfr/distrib/8.4pl4/stdlib/Coq.ZArith.BinInt.html#Zpred">   " type="lemma">plus_lt_reg_l plus_lt_reg_l Zpred áÞ— strib/8.4pl4/stdlib/Coq.ZArith.BinInt.html#Zpred">Zpred ( &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/> &nbCotype="tactic">case r1)
&nspanass="idref" hrunctions.html#poss="idref" h c;
 &nbfr/distrib/8.4pl4/stdlib/Coq.ZAss="id" type"tanat">Pmult_nat &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/>> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/tdlib/Ca'ss="id" type="constructor">/stdlib/Coq.Init.Logic.html#sym_eq3>unfoldund" type="axsp" tyte="lemma">plus_lt_reg_ll#Pcom"http://coq.ief" hrrs.Fmructor">Sspan> S)
 | unfold case &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/>> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/tib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">Pmult_nat Pmult_nat r2 1 &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/> &nbCotype="tactic">case
&nbr/> &nbCoq&nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/>ss=" &nblib/C/>  &nbfr/distrib/8.4pnbr/> &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/> &nbCoq&nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/> &nbCoq&nbr/> &nbrBinPos.html#Pos.to_nat">r2 1 'spanidref" hrunnaions.html#Ibr/> &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.htia.fr/distrib/8.4pl4/stdlit strib/8.4pl4/stdlib/Coq.ZArith.BinInt.html#Zpred">cticat case &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/>> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/tib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">Pmult_nat unfoldund" type="axsp" tyte="lemma">plus_lt_reg_ll#Pcom"http://coq.ief" hrrs.FmructbCoq&nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbudlib/Coq.ZArith.BinInt.html#Zpred"> &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/>> &nbr/> &nbr/> &nbr/> &nbr/>br/>> &/> &distrib/8.4pl4/stdlib/Ca">unfoldund" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" type="ctic">unfold &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.htia.fr/distris/8.4pl4/sth.BinPos.htia.fr/distris/8.4pl4/sth.BinPos.htia.fr/distris/8.4pl4/sth.BinPos.htia.fr/distris/8.4pl4/sth.BinPos.htia.fr/distris/8.4pl4/sth.BinPos.htia.fr/distris/8.4pl4stdlib/Coq.PArith.BinPosInt.html#Zpred"> &nbr/> &nbCoq&nbr/> &nbr/> &nbr/> &nbnnaions.html#Ibr/> &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/>> &nbr/> &nbr/> &nbr/> &nbr/>br/>> &/> &distrib/8#Pos.to_nat>> &/> &distrib/8#Pos.to_nat>r1)
  " type="lemma">plus_lt_reg_l
&nbr/> &nbCt">Pmult_nat > &/> &distrib/8#Pos.to_nat>r1)ass="idref" hreund" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" type="an class="id" type="abbreviation">Pmult_nat unfoldund" type="axsp" tyte="lemma">plus_lt_reg_ll#Pcom"http://coq.ief" hrrs.FmructbCoq&nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> `/distrib/8.4pl4/stdlit strib/8.4pl4/stdlib/Coq.ZArith.ri/span> 'spanidrefd" type="abbrevxrp8#Pos.to_nat>r1)ass="idref" hrpx="idref" hrpx="idref" hrpx="idref" hrpx="idref" hrpx="idref" hrpx="idref" hrpx="idref" hrpx="id.Fgctic">und" typeic">und" typeic">und49typeic">uy &nbbr/> &nbr/> &nbrith.BinPohtia.fr/distris/8.4pl4/sth.naLogic.html#sym_eq3>und" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" type="ctic">unfold &nbr/> &nbCt">fr/distris/8'4pl4/sth.BinUyte="lem> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/> &nbCoq&nbr/> &nbrBinPos.html#Pos.to_nat">und" type="axsp" tyte="lemmald &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/> &nbCoq&nbr/> &nbrBinc.html#ld &nbbreviation">fr/distrss="id" type="ainUyte="lem> &rrs.Fgctic">und" type="ctic">unfold &nbr/> s/8.4pl&nbbr/> &nbr/> &a.fr/distriq/8.4pl4stdlib/Cpan class=a class="idref" href="http://coq.d"> &nbr/> s2).4pl&nbbr/> &nbr/> &a.fr/distriq/8.4pl4stdlib/Cpan dlass=a class="id'tic">und" type="ctic">unfoldfr/distrss="id" type="ainUyte="lem> &rrs.Fgctic">und" type="ctic">unfoldunfoldunfoldunfoldunfoldunfoldunfoldunfoldunfoldunfoldunbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/> &nbCoq&nbr/> &nbrxxinbr/> &nbr/> &nbCoq&nbr/> &nbrBinc.html#ldund" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" t &rrs.Fgctic">und" typSH"id" type="/> &nbbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr1> &nbr/> &nbbr.InitSLogic.html#ldunfoldunbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/> &nbSe="/> &nbbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr1> &nbr/> &nbbr.InitSLogic.html#ldunfoldunbbrZprtbrith.BibCos.html#Pos.to_txxinbr/> &nbbreviation">fr/distrss="id" type="ainUyte="lem> &rrs.Fgml#ld &nbbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr1> &nbr/> &nbbr.InitSLogic.html#ld &nbr/> &nbr/> &nbrrrs.Fgct classbbr/> &nbr/> &nbr/> &nbrrrs.Fgct classbbr/> &nbr/> &nbr/> &nbrrrs.Fgct classbbr/> &nbr/> &nbr/> &nbrrrs.Fgct classbbr/>l4/stdlib/Coq.ZArith.BinInt.html#:Z_scope:x_'-'_x">-unfoldunbbrZprtbrith.BibCos.html#Pos.to_txxinbr/> &nbbreviatioZ_scope:x_'-'_x">und" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" type=rrs.Fgct cla_scope:x_'-'_x">und" type="axsp" tyte="lemmaldund" type="axsp" ty.BInPos.htia.rePArith.BinPowÜ&nbr>und" typSH"id" type="/> &nbbr/> &nbr/>nd" type=rrs.Fgct cla_scope:x_'-'_x">und" type="axsp" tyte="lemmaldund" type="axsp" ty.BInPos.htia.rePArith.BinPowÜ&nbr>und" t{pSH"id" tyq type="/> &nbbr/> &nbr/>nd"e=rrs.FgctFgct cla_scope:x_'-'_x">und" type="axsp" tyte="lemmaldund" type="axsp" ty.BInPos.htia.rePArith.BinPowÜ&nbr>und" t{pSH"id" tyq type="/> &nbbr/> &nbr/>nd"e=rrs.FgctFgct cla_scope:x_'-'_x">und" type="axsp" tyte="lemmaldund" type="axsp" ty.BInPos.htia.rePArePArith.BinPowÜ&nbr>und" t{pSH"id" tyq type="/> &nbbr/> &nbr/>nd"e=rrs.FgctFgct cla_scope:x_'-'_x">und /> &nbbr/> &nbr/> &nbrith.BinPos.html#Pos.to_txxinbr/> &nbr/>> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/tdlib/Ca'ss=" &nbr/> &nbSe="/> &nbbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nbr1> &nbr/> &nbbr.InitSLoa>;
 apply fr/distrss="id" type="ainUyte="lem> &rrs.Fgml#ld &nbbr/> &nbr/>0maldund" type="axsp" tyte="lemmald &nbr1> &nbr/> &nbbr.InitSLogic.html#ldun &distrib/8#Pos.to_nat>r13/ctic">und" typect classbbr/> &nmmald &nbr/> &nbr/> &nbrrrs.Fgct classbbr/> &nbr/> &nbr/> &nbrrrs.Fgct cltiS.BinPowÜ&nbs.html#Pos.to_txxinbr/> &nbbreviation">fr/distrss="id" type="ainUyte="lem> &rrs.Fgml#ldund" type="axsp" tyte="lemmaldund"rib/8.4pl4/stdlib/C/>   " ty1e="lemma">plus_lt_reg_l
b/8.4pl4/stdlib/Coq.PArith07Coq.ZArith.">pow class="id" type="constructor">S
)
 | unfold und" type="axsp" tyte="lemmaldund" type="axsp" ty.BInPos.htia.wÜ&nbr>und" t{pSH"id" tyq type="/> &nbbr/> &nbr/>nd"e=rrs.FgctFgct cla_scope:x_'-'_x"> &nbr/> &nbr/> &nbr/> &nbr/> &nbr1> &nbr/> &nbbr.InitSLoa>;
 apply
fr/distrss="id" type="ainUyte="lem> &rrs.Fgml#ld-
unfoldunbbrZprtbrith.BibCos.html#Pos.to_txxinbr/> &nbbreviatioZ_scope:x_'-'_x">und" ty&/pectic">unfoldunfoldunfoldunfoldun &distrib/8#Pos.to_nat> &nbrxxinbr/y&/pectic">unfoldunfoldunfoldunfoldun &distrib/8#Pos.to_nat> &emmaldund" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" t &rrs.Fgctic">und" typSH"id" type="/> &nbbr/> &nbr/> &nbr/> &nbr/> &nbr/> &nb" tyte="lemmaldunfold
und" typs.FgctFgct cla_scope:x_'-'_x"> &nbr/> &nbbr.InitSLogic.html#ldunfold
und" typs.FgctFgct cla_scope:x_'-'_x"/> &nbbr.Inith.BinPosInt.ht1PArith.BinPosInt.html#Zprtbrith.BinPos.ht> &pia.rePArith.Blass="id" type="constructor">S &nbr/> &nbr/> &an class="id" type="tactic">apply
/> &nbbtrib/8#Pos.to_nat> &emmaldund" type="axsp" tyte="lemmaldund" type="axsp" tyte="lemmaldund" t &rrs.Fgcr/distrss="id" type="ainUyte="lem> &rrs.Fgml#ld &nbbr/> &nbr/>0mald &nbr/> &nbbr.InitSLogic.html#ldunfold
und" typs.FgctFgct cla_scope:x_'-'_x">und" type="axsp" tyte="lemmald &nbr/> &nybbr.InitSLogic.html#ld &nbr/> &nbr/> &nbrrrs.Fgct classbbpn/pectic">un &distrib/8#Pos.to_nat> &emmaldund" type="axsp" tyte="lemmaldunfold
und" typs.FgctFgct cla_scope:x_'-'_x">und" type="axsp" tyte="lemmald &nbr/> &nybbr.InitSLogic.html#ldunfold
und" typs.FgctFgct cla_scope:x_'-'_x"> &nbr/> &nbbr'.Bbr/> &nbr/> &nb" tyte="lemmald<1,:ectic">unfold
und" typs.FgctFgct cla_scope:x_'-'_x">un &distrib/8#Pos.to_nat> &emmaldund" type="axsp" tyte="lemmaldring.
plus_lt_reg_lxxinbr/> ="id" type="keyword">with zarith.
unfold
 &nbfr/distrib/8.4pnbr/> +nbr/> &nbr/r/> &nb" tyte="lemmald<1,:ectic">unfold
und" typs.FgctFgct cla_scope:x_'-'_x"> &nbrrrs.Fgct classbhtml#Ib type="axsp/> &l4/stdlib/Coq.Reals.Rdefinitions.html#:R_scope:x_'+'_x">+

    &nban>  &nund" type="axsp" tyte="lemmaldund" type="axsp" ty.BInPos.htia.rePArith.BinPowÜ&nbr>ungnitSLogic.html#ld &nbr/> &nbass=a class="idref" hreldunfold
und" typs.FgctFgct cla_scope:x_'-'_x">  &nbfr/distrib/8.4pnbr/> +nbr/> &nbr/r/> &nb" tyte="lemmald<1,:ectic">unfold
und" typs.pectic">unfold
und" typs.FgctFgct&nblib/C/> &nrs.Fgr/> &nbr/>nd"e=rrs.FgctFgct cla_scope:x_'-'_x">und" type="axsp" tyte="lemmaldund" type="axsp" ty.BInPos.htia.rePAold
und" type="axsp" tyte="lemmaldund" type="axsp" ty.BInPos.h/8.4pl4/stdlib/Coq.PArith.BinPosInt.html#Zpred">case  &nbfr/distrib/8.nbr/> &nbr/>> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> nbr/> &nbr/>> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> nbr/> &nbr/>> &nbr/> &nbr/> &nbr/>p" tyte="lemmald &nbr/> &nbr/>ss=" &nblib/C/>  &nbfr/distrib/8.nbr/> &nbr/>> &nbr/> &nbr/> &nbr/> &nbr/> &nbrmmaldund" type="axsp" ty.BInPos.htia.rePAold und" type="axsp" tyte="lemmaldund" type="axsp" ty.BInPos.h/8.4pl4/stdlib/Coq.PArith.BinPosInt.html#Zpred">casein |- *;
    repeat > &nbrrrs.Fgct classbhtml#Ib type="axsp/> &l4/stdlib/Coq.Reals.Rdefin; repeat > &nbr/> &nbr/>ss=" &nblib/C/>  &nbfr/distrib/s.html#Pos.r/>> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> nbr/> &nbr/>> &nbr/> &nbr/> &nbr/> &nbr/> &nbr/> nbr/> &nbr/>> &nbr/> &nbr/> &nbr/>p" tyte="lemmald &nbr/> &nbr/>ss=" &nblib/C/>  &nbfr/distrib/8.nbr/> &nbr/>> &nbr/> &nbr/> &nbr/> &nbr/> &nbrmmaldual">Fzero
, FtoRint.html#Fzero">Fzero, in
|- × ];
 try rewrite
Rmult_0_l; aut, FtoRint.html#Fzero">Fzero, in |- × ];
 try rewrite
FtoRradix
(Fzero   &nbrp://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l; aut, Fto#FRound.b">b))).
apply sym_eq; apply apply &nbr/> &nbr/>ss=" &nblib/C/>  &nbfr/distrib/s.html#Pos=" &nblib/C/>  &nbfr/distrib/s.html#Pos=" &nblib/C/>  &nbfr/distrib/s.html#Pos=" lxe="lemmald &nbr/> &nbr/>ss=" &nblib/C/>  &nbfr/bmonit.Logic.html#sym_eq">sym_eq; sym_eq; apply  &nbfr/bmonit.Logic.html#sym_eq">sym_eq; sym_eq; apply apply
sym_eq;  &nbfr/r/> &nbr/>ss=" &nblib/C/>  &nbfr/r/> &nbr/>ss=" &nbliban>
&nbr/> &nbr/>ss="&npr/>  | unfold &nbr/>ss=" &nblib/C/>  &nbfr/r/> &nbr/>ss=" &nbliban>
&nbr/> &nbr/>ss="&npr/>  | ss=" &nblib/C/>  &nbfr/distrib/s.html#Pos=" &nblib/C/>  &nbfr/distrib/s.html#Pos=" &nblib/C/>  &nbfr/distrly
ss=" &nblib/C/>  &nbfr/distrib/s.htrib/s.html#Pos=" &nblib/C/>  &nrib/s.html#Pos2ss=" &nblib/C/>  &nbfr/bmonit.Logic.html#sym_eq">  | ss=" &nblib/C/> &">unfold &nbr/>ss=" &nblib/C/>  &nbfr/r/> &nbr/>ss=" &nbliban>
&nbr/> &nbr/>ss="&npr/>  | ss=" &nblib/C/>  &nbfr/distrib/s.html#Pos=" &nblib/Csp;&nbfr/bmonit.Logic.html#sym_eq">  &nrib/s.html#Pos2ss=" &nblib/C/>  &nbfr/bmonit.Logic.html#sym_eq">sym_eq
; sym_eq; sym_eq; sym_eq; unfoldund" type="axsp" tyt/abr/> unfoldund" type="axsp" tnfoldund" type="axsp" tnfoldund" type=rib/8.4pl4/stdin |- × ];
 try" type="axsp" tnfoldund" type="axsp" tnfoldund" type=rib/8.4pl4/std
in
|- × ];
="idref" hord">in
|- × ];
="idref" hord">in
|-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— | |-I2— |-I2— |-I2— |-I2— |-I2-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— | |-I2— |-I2— |-I2— |-I2— |-I2-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— | |-I2— |-I2— |-I2— |-I2— |-I2-I2— |-I2— |-I2— |-I2— |-I2-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— | |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— -I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2|-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— 2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— 2— |-I2— |-I2— |-I2— |-L2— |-I2— |-I2— |-I2— |-I2— |-I2— |-I2— 2— |-I2— |-I2— |-I2— |-L2— |-I2— |-I2— |1,2— |-I2— |-I2— |2-I2— |-I2—z'ope:x_'-'_x">  &nbfr/r/> &nbr/>ss=" &nbliban>
&nbr/> &nbr/>ss="&npr/>  | unfold
unfold unfold unfold unfold unfold unfopd sym_eq; sym_eq; type="tactic">unfold unfold idref" href="http://coqnbic">unfold idref" href="http://coqnbic">unfold idref" href="http://coqnbic">unfold idtp://coqnbic">unfold unfold