version: 3
mode: addition-only
recognition: Exact on recorded finite task probes; not a universal proof
operations:
- name: op_001
  params:
  - a
  - b
  param_types:
  - nat
  - nat
  return_type: nat
  arg_mins:
  - 0
  - 0
  body:
    kind: repeat
    value: null
    children:
    - kind: read
      value: b
      children: []
    - kind: literal
      value: 0
      children: []
    - kind: add
      value: null
      children:
      - kind: read
        value: state
        children: []
      - kind: read
        value: a
        children: []
  identity: multiply
  task: multiply
  step_limit: 200000
  max_value: 1000000000000
  training:
  - - - 0
      - 0
    - 0
  - - - 0
      - 1
    - 0
  - - - 0
      - 2
    - 0
  - - - 0
      - 3
    - 0
  - - - 0
      - 4
    - 0
  - - - 1
      - 0
    - 0
  - - - 1
      - 1
    - 1
  - - - 1
      - 2
    - 2
  - - - 1
      - 3
    - 3
  - - - 1
      - 4
    - 4
  - - - 2
      - 0
    - 0
  - - - 2
      - 1
    - 2
  - - - 2
      - 2
    - 4
  - - - 2
      - 3
    - 6
  - - - 2
      - 4
    - 8
  - - - 3
      - 0
    - 0
  - - - 3
      - 1
    - 3
  - - - 3
      - 2
    - 6
  - - - 3
      - 3
    - 9
  - - - 3
      - 4
    - 12
  - - - 4
      - 0
    - 0
  - - - 4
      - 1
    - 4
  - - - 4
      - 2
    - 8
  - - - 4
      - 3
    - 12
  - - - 4
      - 4
    - 16
  validation:
  - - - 0
      - 6
    - 0
  - - - 0
      - 9
    - 0
  - - - 0
      - 13
    - 0
  - - - 1
      - 6
    - 6
  - - - 1
      - 9
    - 9
  - - - 1
      - 13
    - 13
  - - - 6
      - 0
    - 0
  - - - 6
      - 1
    - 6
  - - - 6
      - 6
    - 36
  - - - 6
      - 9
    - 54
  - - - 6
      - 13
    - 78
  - - - 9
      - 0
    - 0
  - - - 9
      - 1
    - 9
  - - - 9
      - 6
    - 54
  - - - 9
      - 9
    - 81
  - - - 9
      - 13
    - 117
  - - - 13
      - 0
    - 0
  - - - 13
      - 1
    - 13
  - - - 13
      - 6
    - 78
  - - - 13
      - 9
    - 117
  - - - 13
      - 13
    - 169
- name: op_002
  params:
  - n
  param_types:
  - nat
  return_type: nat
  arg_mins:
  - 0
  body:
    kind: repeat
    value: null
    children:
    - kind: read
      value: n
      children: []
    - kind: read
      value: n
      children: []
    - kind: read
      value: i
      children: []
  identity: predecessor
  task: predecessor
  step_limit: 200000
  max_value: 1000000000000
  training:
  - - - 0
    - 0
  - - - 1
    - 0
  - - - 2
    - 1
  - - - 3
    - 2
  - - - 4
    - 3
  - - - 5
    - 4
  validation:
  - - - 6
    - 5
  - - - 7
    - 6
  - - - 9
    - 8
  - - - 12
    - 11
  - - - 17
    - 16
  - - - 25
    - 24
- name: op_003
  params:
  - n
  param_types:
  - nat
  return_type: nat
  arg_mins:
  - 0
  body:
    kind: repeat
    value: null
    children:
    - kind: read
      value: n
      children: []
    - kind: literal
      value: 1
      children: []
    - kind: literal
      value: 0
      children: []
  identity: is_zero
  task: is_zero
  step_limit: 200000
  max_value: 1000000000000
  training:
  - - - 0
    - 1
  - - - 1
    - 0
  - - - 2
    - 0
  - - - 3
    - 0
  - - - 4
    - 0
  - - - 5
    - 0
  validation:
  - - - 6
    - 0
  - - - 7
    - 0
  - - - 9
    - 0
  - - - 12
    - 0
  - - - 17
    - 0
  - - - 25
    - 0
- name: op_004
  params:
  - a
  - b
  param_types:
  - nat
  - nat
  return_type: nat
  arg_mins:
  - 0
  - 0
  body:
    kind: repeat
    value: null
    children:
    - kind: read
      value: b
      children: []
    - kind: read
      value: a
      children: []
    - kind: call
      value: op_002
      children:
      - kind: read
        value: state
        children: []
  identity: subtract
  task: subtract
  step_limit: 200000
  max_value: 1000000000000
  training:
  - - - 0
      - 0
    - 0
  - - - 0
      - 1
    - 0
  - - - 0
      - 2
    - 0
  - - - 0
      - 3
    - 0
  - - - 0
      - 4
    - 0
  - - - 1
      - 0
    - 1
  - - - 1
      - 1
    - 0
  - - - 1
      - 2
    - 0
  - - - 1
      - 3
    - 0
  - - - 1
      - 4
    - 0
  - - - 2
      - 0
    - 2
  - - - 2
      - 1
    - 1
  - - - 2
      - 2
    - 0
  - - - 2
      - 3
    - 0
  - - - 2
      - 4
    - 0
  - - - 3
      - 0
    - 3
  - - - 3
      - 1
    - 2
  - - - 3
      - 2
    - 1
  - - - 3
      - 3
    - 0
  - - - 3
      - 4
    - 0
  - - - 4
      - 0
    - 4
  - - - 4
      - 1
    - 3
  - - - 4
      - 2
    - 2
  - - - 4
      - 3
    - 1
  - - - 4
      - 4
    - 0
  validation:
  - - - 0
      - 7
    - 0
  - - - 1
      - 9
    - 0
  - - - 7
      - 0
    - 7
  - - - 7
      - 1
    - 6
  - - - 9
      - 6
    - 3
  - - - 6
      - 9
    - 0
  - - - 12
      - 12
    - 0
  - - - 17
      - 5
    - 12
  - - - 5
      - 17
    - 0
  - - - 25
      - 7
    - 18
- name: op_005
  params:
  - a
  - b
  param_types:
  - nat
  - nat
  return_type: nat
  arg_mins:
  - 0
  - 0
  body:
    kind: call
    value: op_003
    children:
    - kind: call
      value: op_004
      children:
      - kind: repeat
        value: null
        children:
        - kind: literal
          value: 0
          children: []
        - kind: read
          value: a
          children: []
        - kind: read
          value: a
          children: []
      - kind: read
        value: b
        children: []
  identity: less_equal
  task: less_equal
  step_limit: 200000
  max_value: 1000000000000
  training:
  - - - 0
      - 0
    - 1
  - - - 0
      - 1
    - 1
  - - - 0
      - 2
    - 1
  - - - 0
      - 3
    - 1
  - - - 0
      - 4
    - 1
  - - - 1
      - 0
    - 0
  - - - 1
      - 1
    - 1
  - - - 1
      - 2
    - 1
  - - - 1
      - 3
    - 1
  - - - 1
      - 4
    - 1
  - - - 2
      - 0
    - 0
  - - - 2
      - 1
    - 0
  - - - 2
      - 2
    - 1
  - - - 2
      - 3
    - 1
  - - - 2
      - 4
    - 1
  - - - 3
      - 0
    - 0
  - - - 3
      - 1
    - 0
  - - - 3
      - 2
    - 0
  - - - 3
      - 3
    - 1
  - - - 3
      - 4
    - 1
  - - - 4
      - 0
    - 0
  - - - 4
      - 1
    - 0
  - - - 4
      - 2
    - 0
  - - - 4
      - 3
    - 0
  - - - 4
      - 4
    - 1
  validation:
  - - - 0
      - 7
    - 1
  - - - 1
      - 9
    - 1
  - - - 7
      - 0
    - 0
  - - - 7
      - 1
    - 0
  - - - 9
      - 6
    - 0
  - - - 6
      - 9
    - 1
  - - - 12
      - 12
    - 1
  - - - 17
      - 5
    - 0
  - - - 5
      - 17
    - 1
  - - - 25
      - 7
    - 0
- name: op_006
  params:
  - n
  - a
  - b
  param_types:
  - nat
  - nat
  - nat
  return_type: nat
  arg_mins:
  - 0
  - 0
  - 0
  body:
    kind: call
    value: op_005
    children:
    - kind: call
      value: op_001
      children:
      - kind: read
        value: b
        children: []
      - kind: read
        value: a
        children: []
    - kind: read
      value: n
      children: []
  identity: fits_groups
  task: fits_groups
  step_limit: 200000
  max_value: 1000000000000
  training:
  - - - 0
      - 0
      - 0
    - 1
  - - - 0
      - 0
      - 1
    - 1
  - - - 0
      - 0
      - 2
    - 1
  - - - 0
      - 0
      - 3
    - 1
  - - - 0
      - 1
      - 0
    - 1
  - - - 0
      - 1
      - 1
    - 0
  - - - 0
      - 1
      - 2
    - 0
  - - - 0
      - 1
      - 3
    - 0
  - - - 0
      - 2
      - 0
    - 1
  - - - 0
      - 2
      - 1
    - 0
  - - - 0
      - 2
      - 2
    - 0
  - - - 0
      - 2
      - 3
    - 0
  - - - 0
      - 3
      - 0
    - 1
  - - - 0
      - 3
      - 1
    - 0
  - - - 0
      - 3
      - 2
    - 0
  - - - 0
      - 3
      - 3
    - 0
  - - - 1
      - 0
      - 0
    - 1
  - - - 1
      - 0
      - 1
    - 1
  - - - 1
      - 0
      - 2
    - 1
  - - - 1
      - 0
      - 3
    - 1
  - - - 1
      - 1
      - 0
    - 1
  - - - 1
      - 1
      - 1
    - 1
  - - - 1
      - 1
      - 2
    - 0
  - - - 1
      - 1
      - 3
    - 0
  - - - 1
      - 2
      - 0
    - 1
  - - - 1
      - 2
      - 1
    - 0
  - - - 1
      - 2
      - 2
    - 0
  - - - 1
      - 2
      - 3
    - 0
  - - - 1
      - 3
      - 0
    - 1
  - - - 1
      - 3
      - 1
    - 0
  - - - 1
      - 3
      - 2
    - 0
  - - - 1
      - 3
      - 3
    - 0
  - - - 2
      - 0
      - 0
    - 1
  - - - 2
      - 0
      - 1
    - 1
  - - - 2
      - 0
      - 2
    - 1
  - - - 2
      - 0
      - 3
    - 1
  - - - 2
      - 1
      - 0
    - 1
  - - - 2
      - 1
      - 1
    - 1
  - - - 2
      - 1
      - 2
    - 1
  - - - 2
      - 1
      - 3
    - 0
  - - - 2
      - 2
      - 0
    - 1
  - - - 2
      - 2
      - 1
    - 1
  - - - 2
      - 2
      - 2
    - 0
  - - - 2
      - 2
      - 3
    - 0
  - - - 2
      - 3
      - 0
    - 1
  - - - 2
      - 3
      - 1
    - 0
  - - - 2
      - 3
      - 2
    - 0
  - - - 2
      - 3
      - 3
    - 0
  - - - 3
      - 0
      - 0
    - 1
  - - - 3
      - 0
      - 1
    - 1
  - - - 3
      - 0
      - 2
    - 1
  - - - 3
      - 0
      - 3
    - 1
  - - - 3
      - 1
      - 0
    - 1
  - - - 3
      - 1
      - 1
    - 1
  - - - 3
      - 1
      - 2
    - 1
  - - - 3
      - 1
      - 3
    - 1
  - - - 3
      - 2
      - 0
    - 1
  - - - 3
      - 2
      - 1
    - 1
  - - - 3
      - 2
      - 2
    - 0
  - - - 3
      - 2
      - 3
    - 0
  - - - 3
      - 3
      - 0
    - 1
  - - - 3
      - 3
      - 1
    - 1
  - - - 3
      - 3
      - 2
    - 0
  - - - 3
      - 3
      - 3
    - 0
  - - - 4
      - 0
      - 0
    - 1
  - - - 4
      - 0
      - 1
    - 1
  - - - 4
      - 0
      - 2
    - 1
  - - - 4
      - 0
      - 3
    - 1
  - - - 4
      - 1
      - 0
    - 1
  - - - 4
      - 1
      - 1
    - 1
  - - - 4
      - 1
      - 2
    - 1
  - - - 4
      - 1
      - 3
    - 1
  - - - 4
      - 2
      - 0
    - 1
  - - - 4
      - 2
      - 1
    - 1
  - - - 4
      - 2
      - 2
    - 1
  - - - 4
      - 2
      - 3
    - 0
  - - - 4
      - 3
      - 0
    - 1
  - - - 4
      - 3
      - 1
    - 1
  - - - 4
      - 3
      - 2
    - 0
  - - - 4
      - 3
      - 3
    - 0
  validation:
  - - - 0
      - 5
      - 0
    - 1
  - - - 0
      - 0
      - 7
    - 1
  - - - 1
      - 1
      - 7
    - 0
  - - - 6
      - 2
      - 3
    - 1
  - - - 7
      - 2
      - 3
    - 1
  - - - 5
      - 2
      - 3
    - 0
  - - - 17
      - 3
      - 5
    - 1
  - - - 17
      - 4
      - 5
    - 0
  - - - 25
      - 5
      - 5
    - 1
  - - - 24
      - 5
      - 5
    - 0
  - - - 37
      - 3
      - 11
    - 1
  - - - 37
      - 4
      - 11
    - 0
