ComposeMaps (M1, M2, D, T, R): trait
% If m1 is a map from D to T
% and m2 is a map from T to R,
% m1 \circ m2 is a map from D to R.
assumes
FiniteMap (M1, T, R),
FiniteMap (M2, D, T)
includes FiniteMap
introduces __ \circ __: M1, M2 -> M
asserts forall m1: M1, m2: M2, d: D
apply(m1 \circ m2, d) == apply(m1, apply(m2, d));
defined(m1 \circ m2, d) ==
defined(m2, d) /\ defined(m1, apply(m2, d))
[Table of Contents] [Index]