Changes between Version 58 and Version 59 of IR2


Ignore:
Timestamp:
05/01/21 10:53:52 (5 years ago)
Author:
siegel
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • IR2

    v58 v59  
    3434  * For now, you can't.  [Note to self: consider creating a type like `$byte` for this purpose?]
    35351. **How do you iterate over a domain?**
     36  * Coming soon.
     371. ** Bitvectors? **
    3638  * Coming soon.
    3739
     
    242244=== `civlc.cvh` ===
    243245
     246* `round(e,t)`: returns value in numerical type `t` that is "closest" to the given value `e`
     247 * add argument for rounding mode?
     248 * exception if out of range?
     249* `floor(e)` : given a real or floating number, returns the greatest `Integer` less than or equal to it.
     250* `ceil(e)` : given a real or floating number, returns the least `Integer` greater than or equal to it.
     251* `abs(e)`: given any numeric expression e, returns the absolute value; result is same type as `e`.
     252* `pow(e,n)`: power operator
     253 * given any numeric expression e and expression `n` of any integral type, returns e to the n-th power.
     254 * `n` must evaluate to a nonnegative integer.
     255* `herbrand(e)`: "Herbrandize" a numeric value.
     256 * given a numeric value of type `T`, returns the value as type `Herbrand[T]`, a trivial symbolic expression consisting of a single node.
     257* `eval(e)` : evaluate a Herbrand expression
     258 * given a value of type `Herbrand[T]`, returns the value of type `T` obtained by evaluating all the delayed operations
     259 * exceptions may be thrown if evaluating any of the delayed operations results in an exception
     260
     261
     262
    244263{{{
    245264
     
    248267=== `mem.cvh` ===
    249268
     269* `mem_reach(ptr)`, where `ptr` is an expression with a pointer type.
     270 * This represents the set of all memory units reachable from `ptr`, including the memory unit pointed to by `ptr` itself.
     271* `mem_union(mem1,mem2)`, where `mem1` and `mem2` are expressions of type `Mem`.
     272 * This is the union of the two memory sets.
     273* `mem_isect(mem1,mem1)` : set intersection
     274* `mem_comp(mem1)` : set complement (everything not in `mem1`)
     275* `mem_slice(a,dom)`
     276 * where `a` is an expression of array type and `dom` is an expression of `Domain` type.
     277 * The dimension of the array must match the dimension of the domain.   This represents all memory units which are the cells in the array indexed by a tuple in `dom`.
     278
    250279=== `seq.cvh` ===
    251280
     281Should these be language primitives or library functions (or does it matter)?
     282
     283* need concrete sequence
     284* `seq_add(a,e)` : array obtained by adding element e to the end of the array.  Original array a is not modified.
     285* `seq_append(a1,a2)` : array obtained by concatenating two arrays.  Original array not modified.
     286* `seq_remove(a,i)` : array obtained by removing element at position i from a.  Original array a not modified.
     287* `seq_insert(a,i,x)` : array obtained by inserting an element x at position i in a.
     288* `seq_length(a)` : returns length of array a (an `Integer`)
     289
    252290=== `set.cvh` ===
     291
     292* concrete set
     293* add an element to a set
     294* test if an element is in a set
     295* union
     296* intersection
     297* difference
     298
    253299
    254300=== `map.cvh` ===