SyTeCi: Model-checking contextual equivalence
of higher-order programs with references

Description of the characteristics of the transition systems:

  • The rectangle state is the initial state.
  • The diamond states are the failed states.
  • Blue transitions correspond to transitions taken by the two programs (i.e. by Player), while red ones correspond to transitions taken by the environment (i.e. by Opponent).
  • Dotted transitions correspond to epsilon transitions.
  • Each Player transition is labelled by:
    • a description of the modification of the heap by the first and by the second program (indicated by h1 ↝ h2, where h1,h2 are two symbolic heaps, with ε indicating the empty heap);
    • a set of arithmetic constraints on the variables appearing in the symbolic heaps and in the terms;
    • a tag indicating what kind of transition it is:
      • Player Internal (PI), that corresponds to an evaluation to recursive calls;
      • Player Question (PQ), that corresponds to the call of a function provided by the environment (i.e. a callback);
      • Player Answer (PA), that corresponds to the evaluation to a (possibly higher-order) value.
  • Each Opponent transition is labelled by a tag indicating what kind of transition it is:
    • Opponent Question (OQ), that corresponds to the call of a function provided by the program;
    • Opponent Answer (OA), that corresponds to the answer of a callback.