Changes between Version 26 and Version 27 of IR2


Ignore:
Timestamp:
04/28/21 10:19:50 (5 years ago)
Author:
siegel
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • IR2

    v26 v27  
    44
    55* CIVL-IR is a subset of CIVL-C.  A CIVL-IR program is a CIVL-C program, and has the same semantics.
     6
     7Questions
     8* how to allocate an array
     9* how to initialize a variable (what are initial values?)
     10* how to go between sequences and arrays
     11* can you make types values? (reification)
     12* pure functions?  A pure function is a mathematical function of its arguments.  It cannot modify the state.
     13* state functions? A state function is a function of the current state (including arguments, global variables, ...).  It cannot modify the state.  Every pure function is a state function.
     14* declarators need parentheses
     15* `$depends_on`
     16* read/write sets: function calls to start, stop monitoring reads/writes?  All part of mem library
     17* function calls for atomic enter/exit
     18* a type for $state ?
     19
    620
    721=== Grammar ===
     
    4256* a `$system` function has no definition in CIVL-IR, but is instead defined elsewhere (for example, in C or Java code).  Such a function will always be executed atomically.   The first string specifies a path (e.g., Java package) to the library containing the function, the second is the name of the library.    These two Strings should be enough to tell CIVL where to find the system definition of the function.
    4357* the `expr` in a guard must have type `$bool`
     58* add statement `$new`:
    4459
     60{{{
     61  int a[];
     62  void main() {
     63    a = (int[10])$lambda(int i; $undefined);
     64    a = $new(int[10]); //
     65    ... initialized a somehow ...
     66   $assume($defined(a, 0, 10)); // ?
     67}}}
    4568
    4669=== Types ===
     
    81104* The difference between the function type and map type: a function is really a procedure in the language, so it can modify the state as well as return a value.    This is like the C notion of "function".   A map is a logical partial function: it is defined on some subset of the domain type, it will always "return" the same value on a given input, and reading it cannot modify the state.
    82105
    83 Questions
    84 * how to allocate an array
    85 * how to initialize a variable (what are initial values?)
    86 * how to go between sequences and arrays
    87 * can you make types values? (reification)
     106
    88107
    89108=== Statements ===