Fround.v



(****************************************************************************
                                                                             
          IEEE754  :  Fround                                                     
                                                                             
          Laurent Thery                                                      
                                                                             
*****************************************************************************
*)

Require Export Float.
Require Export Fnorm.
Require Export Fop.
Require Export Fcomp.
Require Export FSucc.
Require Export FPred.
Require Export Fmin.
Require Export Fodd.
Require Export Fprop.
Section FRound.
Variable b:Fbound.
Variable radix:nat.
Variable precision:nat.

Local FtoRradix := (FtoR radix).
Coercion FtoRradix : float >-> R.
Hypothesis radixMoreThanOne:(lt (S O) radix).
Hypothesis precisionGreaterThanOne:(lt (1) precision).
Hypothesis pGivesBound:(vNum b)=(minus (exp radix precision) (1)).

Definition TotalP := [P:R -> float ->Prop] (r:R)(Ex [p:float] (P r p)).

Definition UniqueP :=
   [P:R ->
float ->Prop] (r:R) (p, q:float) (P r p) -> (P r q) -><R> p==q.

Definition CompatibleP :=
   [P:R ->
float ->Prop]
   (r1, r2:R) (p, q:float) (P r1 p) -> r1==r2 -> <R> p==q -> (Fbounded b q) ->
   (P r2 q).

Definition MinOrMaxP :=
   [P:R ->
float ->Prop] (r:R) (p:float) (P r p) ->
   (isMin b radix r p) \/ (isMax b radix r p).

Definition RoundedModeP :=
   [P:R ->
float ->Prop]
   (TotalP P) /\ ((CompatibleP P) /\ ((MinOrMaxP P) /\ (MonotoneP radix P))).

Theorem RoundedProjector: (P:?) (RoundedModeP P) ->(ProjectorP b radix P).

Theorem MinCompatible: (CompatibleP (isMin b radix)).

Theorem MinRoundedModeP: (RoundedModeP (isMin b radix)).

Theorem MaxCompatible: (CompatibleP (isMax b radix)).

Theorem MaxRoundedModeP: (RoundedModeP (isMax b radix)).

Definition ToZeroP :=
   [r:R] [p:
float]
   (Rle R0 r) /\ (isMin b radix r p) \/ (Rle r R0) /\ (isMax b radix r p).

Theorem ToZeroTotal: (TotalP ToZeroP).

Theorem ToZeroCompatible: (CompatibleP ToZeroP).

Theorem ToZeroMinOrMax: (MinOrMaxP ToZeroP).

Theorem ToZeroMonotone: (MonotoneP radix ToZeroP).

Theorem ToZeroRoundedModeP: (RoundedModeP ToZeroP).

Definition ToInfinityP :=
   [r:R] [p:
float]
   (Rle r R0) /\ (isMin b radix r p) \/ (Rle R0 r) /\ (isMax b radix r p).

Theorem ToInfinityTotal: (TotalP ToInfinityP).

Theorem ToInfinityCompatible: (CompatibleP ToInfinityP).

Theorem ToInfinityMinOrMax: (MinOrMaxP ToInfinityP).

Theorem ToInfinityMonotone: (MonotoneP radix ToInfinityP).

Theorem ToInfinityRoundedModeP: (RoundedModeP ToInfinityP).

Theorem MinUniqueP: (UniqueP (isMin b radix)).

Theorem MaxUniqueP: (UniqueP (isMax b radix)).

Theorem ToZeroUniqueP: (UniqueP ToZeroP).

Theorem ToInfinityUniqueP: (UniqueP ToInfinityP).

Theorem FnOddNEven:
  (n:
float) (FNodd b radix precision n) ->~ (FNeven b radix precision n).

Theorem MinOrMaxRep:
  (P:?) (
MinOrMaxP P) ->
  (p, q:float) (P p q) ->(Ex [m:Z] <R> q==(Float m (Fexp p))).

Theorem RoundedModeRep:
  (P:?) (
RoundedModeP P) ->
  (p, q:float) (P p q) ->(Ex [m:Z] <R> q==(Float m (Fexp p))).

Definition SymmetricP :=
   [P:R ->
float ->Prop] (r:R) (p:float) (P r p) ->(P (Ropp r) (Fopp p)).

Theorem ToZeroSymmetric: (SymmetricP ToZeroP).

Theorem ToInfinitySymmetric: (SymmetricP ToInfinityP).

Theorem RoundLessThanIsMax:
  (P:?) (
RoundedModeP P) ->
  (p, m:float) (x:R) (P x p) -> (isMax b radix x m) ->(Rle p m).
End FRound.

30/05/01, 18:11