Changes between Version 11 and Version 12 of Language


Ignore:
Timestamp:
05/18/23 12:14:38 (3 years ago)
Author:
siegel
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Language

    v11 v12  
    8383end up with the same values at termination).
    8484
    85 ===  Abstract (uninterpreted) functions
     85===  Abstract (uninterpreted) functions: `$abstract`
    8686
    8787An abstract function declares a function without a body.  An abstract function is declared using a standard function prototype with the function qualifier `$abstract`, e.g.,
     
    9191An abstract function must have a non-void return type and take at least one parameter.   An invocation of an abstract function is an expression and can be used anywhere an expression is allowed.  The interpretation is an "uninterpreted function".    A unique symbolic constant of function type will be created, corresponding to the abstract function, and invocations are represented as applications of the uninterpreted function to the arguments. 
    9292
    93 === Atomic functions
     93=== Atomic functions: `$atomic_f`
    9494
    9595A function is declared atomic using the function qualifier `$atomic_f`, e.g.,
     
    103103An atomic function must have a definition; in particular, neither a system function nor an abstract function may be declared using `$atomic_f`.
    104104
    105 === System functions
     105=== System functions: `$system`
    106106
    107107A system function is one in which the definition of the function is not provided in CIVL-C code, but is implemented instead in a certain Java class.  A system function is declared by adding the function qualifier `$system` to a function prototype.  Invocation of a system function always takes place in a single atomic step.
     
    109109A system function may have a guard, which is specified in the function contract using a `$executes_when` clause.  Unless constrained by its contract or other qualifiers, a system function may modify the stay in an arbitrary way.
    110110
    111 === Pure functions
     111=== Pure functions: `$pure`
    112112
    113113A system or atomic function may be declared to be `$pure`, e.g.,
     
    183183
    184184
    185 === The `$here` scope expression
     185=== This scope: the `$here` scope expression
    186186Expression of type `$scope`, evaluating to the dynamic scope in which the evaluation takes place.
    187187
    188 === The null process reference
     188=== The null process reference: `$proc_null`
    189189The null process constant.  Similar to the NULL pointer, this gives an object of `$proc` type a defined value, and can be used in `==` and `!=` expressions.  It cannot be used as the argument to `$wait` or `$waitall`.
    190190
    191 === The root scope constant
     191=== The root scope constant: `$root`
    192192Constant of type `$scope`, the root dynamic scope.
    193193
     
    425425== Functions
    426426
    427 === `$assert`
     427=== Assertions: `$assert`
    428428
    429429The system function `$assert` has the signature
     
    443443If x=3 and B=2, the assertion is violated and CIVL prints the error message “x-coordinate 3 exceeds bound 2”.
    444444
    445 === `$assume`
     445=== Assumptions: `$assume`
    446446
    447447=== `$assume_push`