%----------------------------------------------------------------------------- % Extraction of contiguous subsequences of a sequence of countable length. % % Author: Jerry James <loganjerry@gmail.com> % % This file and its accompanying proof file are distributed under the CC0 1.0 % Universal license: http://creativecommons.org/publicdomain/zero/1.0/. % % Version history: % 2007 Feb 14: PVS 4.0 version % 2011 May 6: PVS 5.0 version % 2013 Jan 14: PVS 6.0 version %-----------------------------------------------------------------------------
csequence_extract[T: TYPE]: THEORY BEGIN
IMPORTING csequence_nth[T] IMPORTING csequence_add[T] % Proofs only
t: VAR T
p: VAR pred[T]
index, n, m: VAR nat
range, range2: VAR [nat, nat]
cseq, cseq1, cseq2: VAR csequence
fseq: VAR finite_csequence
nfseq: VAR nonempty_finite_csequence
^(cseq, range): RECURSIVE finite_csequence = LET (m, n) = range IN IF empty?(cseq) OR m > n THEN empty_cseq ELSIF m > 0 THEN rest(cseq) ^ (m - 1, n - 1) ELSE add(first(cseq), IF n = 0 THEN empty_cseq ELSE rest(cseq) ^ (m, n - 1) ENDIF) ENDIF MEASURE range`2
extract_add: THEOREM FORALL cseq, t, m, n:
add(t, cseq) ^ (m, n) = IF m > n THEN empty_cseq ELSIF m > 0 THEN cseq ^ (m - 1, max(0, n - 1)) ELSIF n > 0 THEN add(t, cseq ^ (m, n - 1)) ELSE add(t, empty_cseq) ENDIF
extract_last: THEOREM FORALL cseq, m, n: nonempty?(cseq ^ (m, n)) IMPLIES
last(cseq ^ (m, n)) = IF index?(cseq)(n) THEN nth(cseq, n) ELSE last(cseq) ENDIF
extract_some: THEOREM FORALL cseq, m, n, p:
some(p)(cseq ^ (m, n)) IFF
(EXISTS index:
m <= index AND
index <= n AND index?(cseq)(index) AND p(nth(cseq, index)))
extract_every: THEOREM FORALL cseq, m, n, p:
every(p)(cseq ^ (m, n)) IFF
(FORALL index:
m <= index AND index <= n AND index?(cseq)(index) IMPLIES
p(nth(cseq, index)))
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 und die Messung sind noch experimentell.