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_P
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
&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
 " type="lemma">plus_lt_reg_l
 " type="lemma">plus_lt_reg_l
&nb1P" type="lemma">plus_lt_reg_l
&nb1P" typass="id" type="abbreviation">Pmult_nat
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
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
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _ _ H3); S)
| unfold
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _
| unfold
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _
| unfold
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq
| unfold sp;| unfold unfold
| unfold nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">
| apply with (f := case r1)
 " type="lemma">plus_lt_reg_l
3: case |- *;
apply f_equal with (f := unfold nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">
| apply with (f := case r1)
 " type="lemma">plus_lt_reg_l
3: case |- *;
apply f_equal with (f := unfold nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">
| apply with (f := case r1)
 " type="lemma">plus_lt_reg_l
3: case |- *;
apply f_equal with (f := unfold nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">
| apply with (f := case r1)
 " type="lemma">plus_lt_reg_l
3: case |- *;
apply case r1Z.pos_ss="id" type="tactic">case r1)
| apply with (f := case r1)
 " type="lemma">plus_lt_reg_l
3: case |- *;
apply f_equal with (f := unfoldnat_of_PPmult_nat S)
| apply with (f := case r1)
 " type="lemma">plus_lt_reg_l
3: case |- *;
ring | idtac ].
repeatplus_lt_reg_l
ring_simplify.
apply Rplus_le_reg_l with (powerRZ radix (Zpred (- dExp b))).
ring_simplify
(powerRZ radix (Zpred (- dExp b)) +
plus_lt_reg_l
plus_lt_reg_l
plus_lt_reg_l
plus_lt_reg_l
plus_lt_reg_l
 " type="lemma">plus_lt_reg_l
plus_lt_reg_l
plus_lt_reg_l
plus_lt_reg_l
apply TwoSumOneNul with (b := b) (precision := precision) (p := w);
auto.
 " type="lemma">plus_lt_reg_l
plus_lt_reg_l
apply TwoSumOneNul with (b := b) (precision := precision) (p := w);
auto.
 " type="lemma">plus_lt_reg_l
auto.
 " type="lemma">plus_lt_reg_l
plus_lt_reg_l
plus_lt_reg_l
radix (+nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">
apply TwoSumOneNul b)) b := b) (precision := precision) (p := w);
auto.
 " type="lemma">plus_lt_reg_l
plus_lt_reg_l
apply TwoSumOneNul with (b := b) (precision := precision) (p := w);
auto.
 " type="lemma">plus_lt_reg_l
auto.
 " type="lemma">plus_lt_reg_l
plus_lt_reg_l
plus_lt_reg_l
plus_lt_reg_l
radix (+nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">
apply
apply sym_eq;
und" type="axsp" type="lemma">plus_lt_reg_l
apply sym_eq;
und" type="axsp" type="lemma">plus_lt_reg_l
apply sym_eq;
und" type="axsp" type="lemma">plus_lt_reg_l
apply sym_eq;
und" type="axsp" type="lemma">plus_lt_reg_l
apply sym_eq;
und" type="axsp" type="lemma">plus_lt_reg_l
und" type="axsp" type="lemma">plus_lt_reg_l
und" type="axsp" type="lemma">plus_lt_reg_l
radix (+nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">
apply
auto.
| radix (Zpred (- dExp b)) +
plus_lt_reg_l
| unfold nat_of_P in |- × ]; ring.
S)
| apply wit="id" type="variable">b)) +
plus_lt_reg_l
Pcompare_Eq_eq _
| unfold sp;| unfold nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">
plus_lt_reg_l
| apply with (f :=
plus_lt_reg_l
| apply und" type="axsp" type="lemma">plus_lt_reg_l
| apply<;x">und" type="axsp2
apply
plus_lt_reg_l
| unfold nat_of_P in |- × ]; ring.
S)
| apply plus_lt_reg_l
plus_lt_reg_l
| apply und" 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 |- × ]; ring
| unfold sp;| unfold nat_of_Pb/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pos.to_nat">
plus_lt_reg_l
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
| unfold sym_eq;
apply
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _
| unfold
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _
| unfold sp;| unfold unfold
| unfold
S)
 p://coq.inria.fr/Histrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq
| unfold sp;|
Pcompare_Eq_eq _
| unfold
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">
plus_lt_reg_l
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 _
| unfold sp;|
Pcompare_Eq_eq _
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">
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 _
| unfold
S)
 p://coq.inria.fr/distrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq _
| unfold sp;| unfold unfold
| unfold
S)
 p://coq.inria.fr/Histrib/8.4pl4/stdlib/Coq.PArith.BinPos.html#Pcompare_Eq_eq">Pcompare_Eq_eq
| unfold sp;|
Pcompare_Eq_eq _
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)
&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)
&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)
| unfold
&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)
| unfold