Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quellcode-Bibliothek

© Kompilation durch diese Firma

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

Datei: min_array.prf   Sprache: PVS

Original von: PVS©

%  Upper and lower bounds on subsets; lub, glb;
% (complete) upper and lower semilattices; (complete) lattices
%
% Author: Alfons Geser ([email protected]), National Institute of Aerospace
% Date: Oct 2004 / Jan 2005
%
% lub_singleton, least_upper_bound_singleton, glb_singleton, and
% greates_lower_bound_singleton added 23 Feb 2005 by Jerry James
% <[email protected]>, University of Kansas.

bounded_orders[T: TYPE]: THEORY

BEGIN

  IMPORTING sets[T], finite_sets[T], relations_extra[T]

  t, u, r: VAR T
  S, R: VAR set
  NF: VAR non_empty_finite_set
  <=: VAR pred[[T,T]]

  % ==========================================================================
  % Upper bounds
  % ==========================================================================

  upper_bound?(t, S, <=): bool = FORALL (r: (S)): r <= t
  upper_bound?(S, <=)(t): MACRO bool = upper_bound?(t, S, <=)
  bounded_above?(S, <=): bool = EXISTS t: upper_bound?(t, S, <=)
  bounded_above?(<=)(S): MACRO bool = bounded_above?(S, <=)

  least_upper_bound?(t, S, <=): bool =
    upper_bound?(t, S, <=) AND
    (FORALL r: upper_bound?(r, S, <=) => t <= r)
  least_upper_bound?(S, <=)(t): MACRO bool = least_upper_bound?(t, S, <=)
  least_bounded_above?(S, <=): bool = EXISTS t: least_upper_bound?(t, S, <=)
  least_bounded_above?(<=)(S): MACRO bool = least_bounded_above?(S, <=)

  complete_upper_semilattice?(<=): bool =
    partial_order?(<=) AND FORALL S: least_bounded_above?(S, <=)
  upper_semilattice?(<=): bool =
    partial_order?(<=) AND FORALL NF: least_bounded_above?(NF, <=)

  lub(<=)(S: (least_bounded_above?(<=))): (least_upper_bound?(S, <=))

  % Properties
  unique_least_upper_bound: THEOREM
    FORALL (<=: (antisymmetric?[T]), t, r: (least_upper_bound?(S, <=))): t = r

  subset_upper_bound: LEMMA
    (subset?(S, R) AND upper_bound?(t, R, <=)) => upper_bound?(t, S, <=)

  subset_least_upper_bound: COROLLARY
    subset?(S, R) AND
    least_upper_bound?(t, R, <=) AND
    least_upper_bound?(r, S, <=) IMPLIES
      r <= t

  lub_def: LEMMA
    FORALL (<=: (antisymmetric?[T]), S: (least_bounded_above?(<=))):
      (lub(<=)(S) = t IFF least_upper_bound?(S, <=)(t))

  lub_eq: LEMMA
    FORALL (<=: (antisymmetric?[T]), S: (least_bounded_above?(<=)),
            t: (least_upper_bound?(S, <=))):
      lub(<=)(S) = t

  lub_ge: LEMMA
    FORALL (S: (least_bounded_above?(<=)), t: (S)):
      t <= lub(<=)(S)

  lub_le: LEMMA
    FORALL (<=: (transitive?[T]), S: (least_bounded_above?(<=))):
      (lub(<=)(S) <= t IFF upper_bound?(S, <=)(t))

  all_least_bounded: LEMMA
    FORALL (<=: (complete_upper_semilattice?)):
      least_bounded_above?(S, <=)

  all_finite_least_bounded: LEMMA
    FORALL (<=: (upper_semilattice?)):
      least_bounded_above?(NF, <=)

  complete_upper_semilattice_upper: JUDGEMENT
    (complete_upper_semilattice?) SUBTYPE_OF (upper_semilattice?)

  upper_semilattice_is_partial_order: JUDGEMENT
    (upper_semilattice?) SUBTYPE_OF (partial_order?)


  % ==========================================================================
  % Lower bounds
  % ==========================================================================

  lower_bound?(t, S, <=): bool = FORALL (r: (S)): t <= r
  lower_bound?(S, <=)(t): MACRO bool = lower_bound?(t, S, <=)
  bounded_below?(S, <=): bool = EXISTS t: lower_bound?(t, S, <=)
  bounded_below?(<=)(S): MACRO bool = bounded_below?(S, <=)

  greatest_lower_bound?(t, S, <=): bool =
    lower_bound?(t, S, <=) AND
    (FORALL r: lower_bound?(r, S, <=) => r <= t)
  greatest_lower_bound?(S, <=)(t): MACRO bool = greatest_lower_bound?(t, S, <=)
  greatest_bounded_below?(S, <=): bool =
    EXISTS t: greatest_lower_bound?(t, S, <=)
  greatest_bounded_below?(<=)(S): MACRO bool = greatest_bounded_below?(S, <=)

  complete_lower_semilattice?(<=): bool = 
    partial_order?(<=) AND FORALL S: greatest_bounded_below?(S, <=)
  lower_semilattice?(<=): bool = 
    partial_order?(<=) AND FORALL NF: greatest_bounded_below?(NF, <=)

  glb(<=)(S: (greatest_bounded_below?(<=))): (greatest_lower_bound?(S, <=))

  % Properties
  unique_greatest_lower_bound: THEOREM
    FORALL (<=: (antisymmetric?[T]), t, r: (greatest_lower_bound?(S, <=))):
      t = r

  subset_lower_bound: LEMMA
    FORALL S, R, t:
      (subset?(S, R) AND lower_bound?(t, R, <=)) => lower_bound?(t, S, <=)

  subset_greatest_lower_bound: COROLLARY
    subset?(S, R) AND
    greatest_lower_bound?(t, S, <=) AND
    greatest_lower_bound?(r, R, <=) IMPLIES
      r <= t

  glb_def: LEMMA
    FORALL (<=: (antisymmetric?[T]), S: (greatest_bounded_below?(<=))):
      (glb(<=)(S) = t IFF greatest_lower_bound?(S, <=)(t))

  glb_eq: LEMMA
    FORALL (<=: (antisymmetric?[T]), S: (greatest_bounded_below?(<=)),
            t: (greatest_lower_bound?(S, <=))):
      glb(<=)(S) = t

  glb_le: LEMMA
    FORALL (S: (greatest_bounded_below?(<=)), t: (S)):
      glb(<=)(S) <= t

  glb_ge: LEMMA
    FORALL (<=: (transitive?[T]), S: (greatest_bounded_below?(<=))):
      (t <= glb(<=)(S) IFF lower_bound?(S, <=)(t))

  all_greatest_bounded: LEMMA
    FORALL (<=: (complete_lower_semilattice?)):
      greatest_bounded_below?(S, <=)

  all_finite_greatest_bounded: LEMMA
    FORALL (<=: (lower_semilattice?)):
      greatest_bounded_below?(NF, <=)

  complete_lower_semilattice_lower: JUDGEMENT
    (complete_lower_semilattice?) SUBTYPE_OF (lower_semilattice?)

  lower_semilattice_is_partial_order: JUDGEMENT
    (lower_semilattice?) SUBTYPE_OF (partial_order?)


  % ==========================================================================
  % Upper and lower bounds
  % ==========================================================================

  bounded?(S, <=): bool = bounded_above?(S, <=) AND bounded_below?(S, <=)
  bounded?(<=)(S): MACRO bool = bounded?(S, <=)
  tightly_bounded?(S, <=): bool =
    least_bounded_above?(S, <=) AND greatest_bounded_below?(S, <=)
  tightly_bounded?(<=)(S): MACRO bool = tightly_bounded?(S, <=)
  complete_lattice?(<=): bool =
     complete_upper_semilattice?(<=) AND complete_lower_semilattice?(<=)
  lattice?(<=): bool =
     upper_semilattice?(<=) AND lower_semilattice?(<=)

  bounded_is_bounded_above: JUDGEMENT (bounded?) SUBTYPE_OF (bounded_above?)
 
  bounded_is_bounded_below: JUDGEMENT (bounded?) SUBTYPE_OF (bounded_below?)
 
  tightly_bounded_above: JUDGEMENT
    (tightly_bounded?) SUBTYPE_OF (least_bounded_above?)
 
  tightly_bounded_below: JUDGEMENT
    (tightly_bounded?) SUBTYPE_OF (greatest_bounded_below?)
 
  complete_lattice_upper: JUDGEMENT
    (complete_lattice?) SUBTYPE_OF (complete_upper_semilattice?)

  complete_lattice_lower: JUDGEMENT
    (complete_lattice?) SUBTYPE_OF (complete_lower_semilattice?)

  lattice_upper: JUDGEMENT
    (lattice?) SUBTYPE_OF (upper_semilattice?)

  lattice_lower: JUDGEMENT
    (lattice?) SUBTYPE_OF (lower_semilattice?)

  complete_lattice_is_lattice: JUDGEMENT
    (complete_lattice?) SUBTYPE_OF (lattice?)


  % bounds of singleton sets

  upper_bound_singleton: LEMMA
    upper_bound?[T](t, singleton(u), <=) IFF u <= t

  least_upper_bound_singleton: LEMMA
    FORALL (<=: (reflexive?)): least_upper_bound?[T](t, singleton(t), <=)

  lub_singleton: LEMMA
    FORALL (<=: (partial_order?)): lub(<=)(singleton(u)) = u

  lower_bound_singleton: LEMMA
    lower_bound?[T](t, singleton(u), <=) IFF t <= u

  greatest_lower_bound_singleton: LEMMA
    FORALL (<=: (reflexive?)): greatest_lower_bound?[T](t, singleton(t), <=)

  glb_singleton: LEMMA
    FORALL (<=: (partial_order?)): glb(<=)(singleton(u)) = u


  % bounds of the empty set
  upper_bound_emptyset: LEMMA
    upper_bound?(t, emptyset, <=)

  lower_bound_emptyset: LEMMA
    lower_bound?(t, emptyset, <=)

  lub_emptyset_is_glb_fullset: THEOREM
    least_upper_bound?(t, emptyset, <=) IFF
    greatest_lower_bound?(t, fullset, <=)

  glb_emptyset_is_lub_fullset: THEOREM
    greatest_lower_bound?(t, emptyset, <=) IFF
    least_upper_bound?(t, fullset, <=)

  least_bounded_above_emptyset: COROLLARY
    least_bounded_above?(emptyset, <=) IFF
    greatest_bounded_below?(fullset, <=)

  greatest_bounded_below_emptyset: COROLLARY
    greatest_bounded_below?(emptyset, <=) IFF
    least_bounded_above?(fullset, <=)


% --------- New content from David Lester

  nonempty_least_bounded_above?(<=)(S):bool
     = nonempty?(S) AND least_bounded_above?(<=)(S)

  nonempty_greatest_bounded_below?(<=)(S):bool
     = nonempty?(S) AND greatest_bounded_below?(<=)(S)

  le_lub: LEMMA FORALL (<=:(partial_order?),S,R:(least_bounded_above?(<=))):
      (FORALL (s:(S)): EXISTS (r:(R)): s <= r) IMPLIES lub(<=)(S) <= lub(<=)(R)

  eq_lub: LEMMA FORALL (<=:(partial_order?),S,R:(least_bounded_above?(<=))):
      (FORALL (s:(S)): EXISTS (r:(R)): s <= r) AND
      (FORALL (r:(R)): EXISTS (s:(S)): r <= s) IMPLIES lub(<=)(S) = lub(<=)(R)

  lub_add: LEMMA FORALL (<=:(partial_order?),S:(least_bounded_above?(<=))):
      lub(<=)(add(lub(<=)(S),S)) = lub(<=)(S)

  le_glb: LEMMA FORALL (<=:(partial_order?),S,R:(greatest_bounded_below?(<=))):
      (FORALL (r:(R)): EXISTS (s:(S)): s <= r) IMPLIES glb(<=)(S) <= glb(<=)(R)

  eq_glb: LEMMA FORALL (<=:(partial_order?),S,R:(greatest_bounded_below?(<=))):
      (FORALL (s:(S)): EXISTS (r:(R)): r <= s) AND
      (FORALL (r:(R)): EXISTS (s:(S)): s <= r) IMPLIES glb(<=)(S) = glb(<=)(R)

  glb_add: LEMMA FORALL (<=:(partial_order?),S:(greatest_bounded_below?(<=))):
      glb(<=)(add(glb(<=)(S),S)) = glb(<=)(S)




END bounded_orders

¤ Dauer der Verarbeitung: 0.18 Sekunden  (vorverarbeitet)  ¤





Druckansicht
unsichere Verbindung
Druckansicht
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



                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik