Rpower.v
(****************************************************************************
IEEE754 : Rpower
Laurent Thery
*****************************************************************************
Definition of an exponential function over relative numbers *)
Require Import Omega.
Require Import Reals.
Require Import Zpower.
Require Import fast_integer.
Require Import Digit.
Require Import Faux.
Require Import sTactic.
(* We have already an exponential over natural number,
we prove some basic properties for this function *)
Theorem
pow_O: (e:R)(pow e O)==R1.
Theorem
pow_1: (e:R)(pow e (1))==e.
Theorem
pow_NR0: (e:R) (n:nat) ~ e==R0 ->~ (pow e n)==R0.
Theorem
pow_add:
(e:R) (n, m:nat)(pow e (plus n m))==(Rmult (pow e n) (pow e m)).
Theorem
pow_is_exp_on_nat: (n, m:nat)(pow (INR n) m)==(INR (exp n m)).
Theorem
pow_RN_plus:
(e:R) (n, m:nat) ~ e==R0 ->
(pow e n)==(Rmult (pow e (plus n m)) (Rinv (pow e m))).
Theorem
pow_lt: (e:R) (n:nat) (Rlt R0 e) ->(Rlt R0 (pow e n)).
Theorem
Rlt_pow_R1: (e:R) (n:nat) (Rlt R1 e) -> (lt O n) ->(Rlt R1 (pow e n)).
Theorem
Rlt_pow:
(e:R) (n, m:nat) (Rlt R1 e) -> (lt n m) ->(Rlt (pow e n) (pow e m)).
Theorem
pow_abs: (r:R) (n:nat)(Rabsolu (pow r n))==(pow (Rabsolu r) n).
Theorem
pow_inv: (r:R) (n:nat) ~ r==R0 ->(Rinv (pow r n))==(pow (Rinv r) n).
Theorem
pow_R1: (r:R) (n:nat) (pow r n)==R1 ->(Rabsolu r)==R1 \/ n=O.
Theorem
Zpower_NR0: (e:Z) (n:nat) (Zle ZERO e) ->(Zle ZERO (Zpower_nat e n)).
(* To define exponential over relative number, we simply do
a case analysis on the sign of the number *)
Definition
powerRZ :=
[e:R] [n:Z]
Cases n of
ZERO => R1
| (POS p) => (pow e (convert p))
| (NEG p) => (Rinv (pow e (convert p)))
end.
(* we now prove some basic properties of our exponential *)
Theorem
powerRZ_O: (e:R)(powerRZ e ZERO)==R1.
Theorem
powerRZ_1: (e:R)(powerRZ e (Zs ZERO))==e.
Theorem
powerRZ_NOR: (e:R) (z:Z) ~ e==R0 ->~ (powerRZ e z)==R0.
Theorem
powerRZ_add:
(e:R) (n, m:Z) ~ e==R0 ->
(powerRZ e (Zplus n m))==(Rmult (powerRZ e n) (powerRZ e m)).
Theorem
powerRZ_Zs:
(e:R) (n:Z) ~ e==R0 ->(powerRZ e (Zs n))==(Rmult e (powerRZ e n)).
(* Conversion theorem between relative numbers and reals *)
Theorem
Zpower_nat_powerRZ:
(n, m:nat)
(IZR (Zpower_nat (inject_nat n) m))==(powerRZ (INR n) (inject_nat m)).
Theorem
powerRZ_lt: (e:R) (z:Z) (Rlt R0 e) ->(Rlt R0 (powerRZ e z)).
Theorem
powerRZ_le: (e:R) (z:Z) (Rlt R0 e) ->(Rle R0 (powerRZ e z)).
Theorem
Rlt_powerRZ:
(e:R) (n, m:Z) (Rlt R1 e) -> (Zlt n m) ->(Rlt (powerRZ e n) (powerRZ e m)).
Theorem
Rpow_R1:
(r:R) (z:Z) ~ r==R0 -> (powerRZ r z)==R1 ->(Rabsolu r)==R1 \/ z=ZERO.
Theorem
Rpow_eq_inv:
(r:R) (p, q:Z) ~ r==R0 -> ~ (Rabsolu r)==R1 -> (powerRZ r p)==(powerRZ r q) ->
p=q.
Theorem
Zpower_nat_powerRZ_absolu:
(n, m:Z) (Zle ZERO m) ->(IZR (Zpower_nat n (absolu m)))==(powerRZ (IZR n) m).
Theorem
absolu_comp_Rpower:
(p:Z) (n:nat)(absolu (Zpower_nat p n))=(exp (absolu p) n).
Theorem
powerRZ_R1: (n:Z)(powerRZ R1 n)==R1.
Theorem
Rle_powerRZ:
(e:R) (n, m:Z) (Rle R1 e) -> (Zle n m) ->(Rle (powerRZ e n) (powerRZ e m)).
Theorem
Zlt_powerRZ:
(e:R) (n, m:Z) (Rle R1 e) -> (Rlt (powerRZ e n) (powerRZ e m)) ->(Zlt n m).
Theorem
Zle_powerRZ:
(e:R) (n, m:Z) (Rlt R1 e) -> (Rle (powerRZ e n) (powerRZ e m)) ->(Zle n m).
(* Conversion theorem between natural numbers and reals *)
Theorem
powerRZ_is_exp:
(m, n:nat) (lt O m) ->(powerRZ (INR m) (INZ n))==(INR (exp m n)).
30/05/01, 18:27