- entry_type: invariant_set
  metadata:
    format_version: "2.0"
    uuid: 3cf7f12b-1e3c-4eb5-9f65-36a0f6865bb5
    creation_time: 2025-03-22T11:33:27Z
    producer:
      name: Goblint
      version: heads/master-0-g66dff5a90-dirty
      command_line: '''./goblint'' ''--conf'' ''conf/svcomp.json'' ''--disable'' ''witness.graphml.enabled''
        ''--sets'' ''ana.specification'' ''/mnt/goblint-svcomp/benchexec/sv-benchmarks/c/properties/valid-memsafety.prp''
        ''--sets'' ''exp.architecture'' ''32bit'' ''/mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i'''
    task:
      input_files:
      - /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
      input_file_hashes:
        /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i: 9ef00830dcb82cc10e5b0f8d7fb365d9f2713a5f71453d70a7c45b027c5a738d
      data_model: ILP32
      language: C
      specification: 'CHECK( init(main()), LTL(G valid-free) )

        CHECK( init(main()), LTL(G valid-deref) )

        CHECK( init(main()), LTL(G valid-memtrack) )'
  content:
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 568
        column: 10
        function: verification_spin_end
      value: v == 0 || v == 1
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 6040
        column: 9
        function: run
      value: arg == tid
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 6040
        column: 9
        function: run
      value: j == 1
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 6040
        column: 9
        function: run
      value: ((((tid == 0U && i == 1) && (unsigned int )arg == 0U) && (j == 1 || (0
        == j && j == 0))) || (((i == 0 && j == 1) && ((tid == 0U || tid == 1U) ||
        tid == 2U)) && (((unsigned int )arg == 0U || (unsigned int )arg == 1U) ||
        (unsigned int )arg == 2U))) || ((((0 == j && i == 0) && j == 0) && ((tid ==
        0U || tid == 1U) || tid == 2U)) && (((unsigned int )arg == 0U || (unsigned
        int )arg == 1U) || (unsigned int )arg == 2U))
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5455
        column: 5
        function: arraylock_acquire
      value: tail <= 255U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5455
        column: 5
        function: arraylock_acquire
      value: '*slot <= 3U'
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5455
        column: 5
        function: arraylock_acquire
      value: lock == & lock
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5455
        column: 5
        function: arraylock_acquire
      value: lock->flags == & flags[0]
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5455
        column: 5
        function: arraylock_acquire
      value: lock->flags_len == 4U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 6076
        column: 10
        function: acquire
      value: (tid == 0U || tid == 1U) || tid == 2U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5442
        column: 5
        function: arraylock_init
      value: 0 == i
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5442
        column: 5
        function: arraylock_init
      value: lock == & lock
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5442
        column: 5
        function: arraylock_init
      value: flags == & flags[0]
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5442
        column: 5
        function: arraylock_init
      value: flags == flags
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5442
        column: 5
        function: arraylock_init
      value: len == (vuint32_t const   )4U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5442
        column: 5
        function: arraylock_init
      value: i == 0U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5442
        column: 5
        function: arraylock_init
      value: lock.flags == 0
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5442
        column: 5
        function: arraylock_init
      value: lock.flags_len == 0U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5442
        column: 5
        function: arraylock_init
      value: lock->flags == 0
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5442
        column: 5
        function: arraylock_init
      value: lock->flags_len == 0U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5442
        column: 5
        function: arraylock_init
      value: (unsigned int )len == 4U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 6057
        column: 5
        function: main
      value: i == 3U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 6057
        column: 5
        function: main
      value: ((i == 3U || i == 2U) || i == 1U) || (0 == i && i == 0U)
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5446
        column: 5
        function: arraylock_init
      value: lock == & lock
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5446
        column: 5
        function: arraylock_init
      value: flags == & flags[0]
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5446
        column: 5
        function: arraylock_init
      value: flags == flags
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5446
        column: 5
        function: arraylock_init
      value: len == (vuint32_t const   )4U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5446
        column: 5
        function: arraylock_init
      value: lock.flags == & flags[0]
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5446
        column: 5
        function: arraylock_init
      value: lock.flags_len == 4U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5446
        column: 5
        function: arraylock_init
      value: lock->flags == & flags[0]
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5446
        column: 5
        function: arraylock_init
      value: lock->flags_len == 4U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5446
        column: 5
        function: arraylock_init
      value: (unsigned int )len == 4U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5446
        column: 5
        function: arraylock_init
      value: ((i == 3U || i == 2U) || (1 == i && i == 1U)) || i == 4U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5441
        column: 5
        function: arraylock_init
      value: 0 == i
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5441
        column: 5
        function: arraylock_init
      value: lock == & lock
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5441
        column: 5
        function: arraylock_init
      value: flags == & flags[0]
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5441
        column: 5
        function: arraylock_init
      value: flags == flags
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5441
        column: 5
        function: arraylock_init
      value: len == (vuint32_t const   )4U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5441
        column: 5
        function: arraylock_init
      value: i == 0U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5441
        column: 5
        function: arraylock_init
      value: lock.flags == 0
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5441
        column: 5
        function: arraylock_init
      value: lock.flags_len == 0U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5441
        column: 5
        function: arraylock_init
      value: lock->flags == 0
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5441
        column: 5
        function: arraylock_init
      value: lock->flags_len == 0U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 5441
        column: 5
        function: arraylock_init
      value: (unsigned int )len == 4U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 6052
        column: 5
        function: main
      value: ((i == 3U || i == 2U) || i == 1U) || (((0 == i && i == 0U) && lock.flags
        == & flags[0]) && lock.flags_len == 4U)
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 6033
        column: 5
        function: run
      value: arg == tid
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 6033
        column: 5
        function: run
      value: ((j == 1 && j == 1) && (((tid == 0U && i == 2) && (unsigned int )arg
        == 0U) || ((i == 1 && ((tid == 0U || tid == 1U) || tid == 2U)) && (((unsigned
        int )arg == 0U || (unsigned int )arg == 1U) || (unsigned int )arg == 2U))))
        || (((0 == i && i == 0) && ((tid == 0U || tid == 1U) || tid == 2U)) && (((unsigned
        int )arg == 0U || (unsigned int )arg == 1U) || (unsigned int )arg == 2U))
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 573
        column: 10
        function: verification_loop_bound
      value: (bound == 4U && bound == (vuint32_t )4) || (bound == 2U || bound == 3U)
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 6082
        column: 10
        function: release
      value: (tid == 0U || tid == 1U) || tid == 2U
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 6035
        column: 9
        function: run
      value: arg == tid
      format: c_expression
  - invariant:
      type: loop_invariant
      location:
        file_name: /mnt/goblint-svcomp/benchexec/sv-benchmarks/c/libvsync/arraylock.i
        line: 6035
        column: 9
        function: run
      value: (((((tid == 0U && i == 1) && j == 1) && (unsigned int )arg == 0U) &&
        (j == 1 || (0 == j && j == 0))) || (((i == 0 && j == 1) && ((tid == 0U ||
        tid == 1U) || tid == 2U)) && (((unsigned int )arg == 0U || (unsigned int )arg
        == 1U) || (unsigned int )arg == 2U))) || ((((((0 == i && 0 == j) && i == 0)
        && i == j) && j == 0) && ((tid == 0U || tid == 1U) || tid == 2U)) && (((unsigned
        int )arg == 0U || (unsigned int )arg == 1U) || (unsigned int )arg == 2U))
      format: c_expression
