products/Sources/formale Sprachen/PVS/exact_real_arith image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei: log.pvs   Sprache: PVS

Original von: PVS©

%------------------------------------------------------------------------------
% log
%
%     Author: David Lester, Manchester University
%
%     Version 1.0            18/2/09   Initial Release Version
%------------------------------------------------------------------------------

log: THEORY

BEGIN

  IMPORTING prelude_aux, cauchy, add, sub, neg, int, inv, mul, div, shift,
            sqrtx, powerseries, lnexp_fnd@ln_exp, lnexp_fnd@ln_exp_series_alt

  x:   VAR real
  c:   VAR [nat->int]
  n,p: VAR nat

  ln_smallreal: TYPE+ = {x | -1/2 <= x & x <= 1/2} CONTAINING 0

  cauchy_ln_small?(c):bool = EXISTS (x:ln_smallreal): cauchy_prop(x,c)

  cauchy_ln_small: TYPE+ = (cauchy_ln_small?) CONTAINING cauchy_int(0)

  JUDGEMENT cauchy_ln_small SUBTYPE_OF cauchy_real

  ln_medreal: TYPE+ = {x | 1/4 <= x & x <= 9/4} CONTAINING 1

  cauchy_ln_med?(c):bool = EXISTS (x:ln_medreal): cauchy_prop(x,c)

  cauchy_ln_med: TYPE+ = (cauchy_ln_med?) CONTAINING cauchy_int(1)

  JUDGEMENT cauchy_ln_med SUBTYPE_OF cauchy_posreal

  posreal_gt_quarter: TYPE+ = {x | 1/4 < x} CONTAINING 1

  cauchy_gt_quarter?(c):bool = EXISTS (x:posreal_gt_quarter): cauchy_prop(x,c)

  cauchy_gt_quarter: TYPE+ = (cauchy_gt_quarter?) CONTAINING cauchy_int(1)

  JUDGEMENT cauchy_gt_quarter SUBTYPE_OF cauchy_posreal

  ssx:    VAR ln_smallreal
  cssx:   VAR cauchy_ln_small
  mx:     VAR ln_medreal
  cmx:    VAR cauchy_ln_med
  gt_14:  VAR posreal_gt_quarter
  cgt_14: VAR cauchy_gt_quarter
  px:     VAR posreal
  pcx:    VAR cauchy_posreal

  cauchy_ln_series(n:nat): cauchy_real
    = IF    n = 0    THEN cauchy_zero
      ELSIF even?(n) THEN cauchy_div(cauchy_int(-1),cauchy_int(n))
                     ELSE cauchy_div(cauchy_int( 1),cauchy_int(n)) ENDIF

  ln_series_lemma: LEMMA
    cauchy_prop(IF n = 0 THEN 0 ELSE lnT(1)(n-1) ENDIF, cauchy_ln_series(n))

  ln_estimate_lemma:
    LEMMA cauchy_prop(ssx,cssx) =>
          cauchy_prop(ln_estimate(ssx,n),
                      cauchy_powerseries(cssx,cauchy_ln_series,n))

  cauchy_ln_drx(cssx)(p):int
   = round(cauchy_powerseries(cssx,cauchy_ln_series,p+2)(p+2)/4)

  ln_drx_lemma: LEMMA cauchy_prop(ssx,cssx) =>
                      cauchy_prop(ln(1+ssx),cauchy_ln_drx(cssx))

  JUDGEMENT cauchy_ln_drx(cssx) HAS_TYPE cauchy_real

  cauchy_ln_half:cauchy_negreal
   = cauchy_ln_drx(cauchy_neg(cauchy_div2n(cauchy_int(1),1)))

  cauchy_ln_half_lemma: LEMMA cauchy_prop(ln(1/2),cauchy_ln_half)

  cauchy_ln2:cauchy_posreal = cauchy_neg(cauchy_ln_half)

  cauchy_ln2_lemma: LEMMA cauchy_prop(ln(2),cauchy_ln2)

  cauchy_ln_sqrt2:cauchy_posreal = cauchy_div2n(cauchy_ln2,1)

  cauchy_ln_sqrt2_lemma: LEMMA cauchy_prop(ln(sqrt(2)),cauchy_ln_sqrt2)

  cauchy_ln_dr(cmx):cauchy_real
   = IF   3 <= cmx(2) AND cmx(2) <= 5
     THEN cauchy_ln_drx(cauchy_sub(cmx,cauchy_int(1)))
     ELSE cauchy_mul2n(
              cauchy_ln_drx(cauchy_sub(cauchy_sqrt(cmx),cauchy_int(1))),1)
     ENDIF

  ln_dr_lemma: LEMMA cauchy_prop(mx,cmx) =>
                     cauchy_prop(ln(mx),cauchy_ln_dr(cmx))

  cauchy_lnx(cgt_14):[nat->int]
   = LET t = cgt_14(2) IN
     IF t <= 8 THEN cauchy_ln_dr(cgt_14) ELSE
        LET n = floor_log2(t) - 1 IN
            cauchy_add(cauchy_ln_dr(cauchy_div2n(cgt_14,n)),
                       cauchy_mul(cauchy_int(n),cauchy_ln2))
     ENDIF

  ln_lemma_x: LEMMA cauchy_prop(gt_14,cgt_14) =>
                        cauchy_prop(ln(gt_14),cauchy_lnx(cgt_14))

  JUDGEMENT cauchy_lnx(cgt_14) HAS_TYPE cauchy_real

  cauchy_ln(pcx):cauchy_real
   = IF pcx(2) <= 2 THEN cauchy_neg(cauchy_lnx(cauchy_inv(pcx)))
                    ELSE cauchy_lnx(pcx) ENDIF

  ln_lemma: LEMMA cauchy_prop(px,pcx) => cauchy_prop(ln(px),cauchy_ln(pcx))

END log

¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet)  ¤





Download des
Quellennavigators
Download des
sprechenden Kalenders

in der Quellcodebibliothek suchen




Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.


Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.


Bot Zugriff