[Imprint][Data Privacy Statement][E-Mail]

Back to main index. View the specification. View theorem base summary, View theorem base listing, the used properties by spec, the dependency list, the symbol table,

Specification array-indices
enrich
   nat-list-less
, 
   array-copy

with
   

   
   
   functions  . .indicesWhere ( . ) : array × (elem → bool) → nat-list;
              . .indicesWhere ( . ) : array × (elem → bool) × nat → nat-list;
              . .mapIndices ( . ) : array × nat-list × (elem → elem) → array;
              . .mapIndices ( . ) : array × nat-set × (elem → elem) → array;
              . .mapIf ( . ) : array × (elem → bool) × (elem → elem) → array;
              . .mapIf ( . ) : array × (elem → bool) × (elem → elem) × nat → array;
              . .map ( . ) : nat-set × (nat → nat) → nat-set;
              . .map ( . ) : array × (elem → elem) → array;
              . .filter ( . ) : nat-set × (nat → bool) → nat-set;
   predicates  valid-indices : array × nat-list;
   
   variables  φ : elem → bool;
              φn : nat → bool;
              f : elem → elem;
              fn : nat → nat;
   
   

   

   axioms indiceswhere-base :  ⊦ ar.indicesWhere(φ, 0) = [];
          used for: s, ls;
          indiceswhere-rec :  ⊦ n < # ar → ar.indicesWhere(φ, n + 1) = ar.indicesWhere(φ, n) + (φ(ar[n]) ⊃ n + [];[]);
          used for: ls;
          indiceswhere :  ⊦ ar.indicesWhere(φ) = ar.indicesWhere(φ, # ar);
          valid-indices :  ⊦ valid-indices(ar, nx) ↔ nx < # ar;
          used for: ls;
          mapindices-base :  ⊦ ar.mapIndices([], f) = ar;
          used for: s, ls;
          mapindices-rec :  ⊦ n < # ar → ar.mapIndices(n ' + nx, f) = (n < # ar ⊃ ar[n, f(ar[n])];ar).mapIndices(nx, f);
          used for: s, ls;
          mapindices-size :  ⊦ # ar.mapIndices(ns, f) = # ar;
          used for: s, ls;
          mapindices-at :  ⊦ ar.mapIndices(ns, f)[n] = (n ∈ ns ∧ n < # ar ⊃ f(ar[n]);ar[n]);
          used for: ls;
          mapif-def :  ⊦ ar.mapIf(φ, f) = ar.mapIndices(ar.indicesWhere(φ), f);
          mapifn-def :  ⊦ ar.mapIf(φ, f, n) = ar.mapIndices(ar.indicesWhere(φ, n), f);
          map-size :  ⊦ # ar.map(f) = # ar;
          used for: s, ls;
          map-at :  ⊦ ar.map(f)[n] = (n < # ar ⊃ f(ar[n]);ar[n]);
          used for: ls;
          mapset-def :  ⊦ n ∈ ns.map(fn) ↔ (∃ n0. n = fn(n0) ∧ n0 ∈ ns);
          used for: ls;
          filterset-def :  ⊦ n ∈ ns.filter(φn) ↔ n ∈ ns ∧ φn(n);
          used for: s, ls;

   

   
end enrich