fseqs_ops [T: TYPE+]: THEORY %------------------------------------------------------------------------ % % Defines some convenient operations over finite sequences % % EXPERIMENTAL % %------------------------------------------------------------------------ BEGIN
IMPORTING fseqs[T]
fs: VAR fseq
nefs: VAR ne_fseq
i,n: VAR nat
x: VAR T
first(fs): T = fs`seq(0)
rest(fs): fseq = fs^(1,l(fs))
delete(n, nefs): fseq = IF n < l(nefs) THEN
(# length := l(nefs) - 1,
seq := (LAMBDA i: (IF i < n THEN nefs(i) ELSE nefs(i + 1) ENDIF))
#) ELSE nefs ENDIF
insert(x, n, fs): fseq = IF n <= l(fs) THEN
(# length := l(fs) + 1,
seq := (LAMBDA i: IF i < n THEN fs(i) ELSIF i = n THEN x ELSE fs(i - 1) ENDIF)
#) ELSE
fs ENDIF
add(x, fs): fseq = insert(x, 0, fs)
addend(x:T,fs:fseq): fseq = (# length := l(fs) + 1,
seq := (LAMBDA (ii: nat): IF ii < l(fs) THEN seq(fs)(ii) ELSIF ii < l(fs) + 1 THEN x ELSE default ENDIF)
#)
insert_delete: LEMMA n < l(nefs) IMPLIES
insert(nefs`seq(n), n, delete(n, nefs)) = nefs
% This definition looks a little strange. The following lemma can be easily proved.
some_p_trivial: LEMMA some(p,fs)
F: VAR [T -> T]
map(F,fs): fseq = (# length := length(fs),
seq := (LAMBDA i: IF i < length(fs) THEN
F(fs`seq(i)) ELSE
default ENDIF)
#)
END fseqs_ops
¤ 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.0.0Bemerkung:
(vorverarbeitet)
¤
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.