{
  "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
  "name": "tlaplus",
  "word": "identifier",
  "rules": {
    "source_file": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "leading_extramodular_text"
                  },
                  "named": true,
                  "value": "extramodular_text"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "PREC",
                "value": 1,
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "module"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "ALIAS",
                          "content": {
                            "type": "SYMBOL",
                            "name": "trailing_extramodular_text"
                          },
                          "named": true,
                          "value": "extramodular_text"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                }
              }
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "extends"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "SYMBOL",
                "name": "_unit"
              }
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "pcal_algorithm"
        }
      ]
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": 0,
        "content": {
          "type": "PATTERN",
          "value": "\\\\\\*.*"
        }
      }
    },
    "block_comment": {
      "type": "SEQ",
      "members": [
        {
          "type": "TOKEN",
          "content": {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "STRING",
              "value": "(*"
            }
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "pcal_algorithm"
              },
              {
                "type": "SYMBOL",
                "name": "block_comment_text"
              }
            ]
          }
        },
        {
          "type": "TOKEN",
          "content": {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "STRING",
              "value": "*)"
            }
          }
        }
      ]
    },
    "block_comment_text": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "TOKEN",
              "content": {
                "type": "PREC",
                "value": 1,
                "content": {
                  "type": "PATTERN",
                  "value": "[^*()]|[^*][)]|[(][^(*]|[*][)][ \t]*(\r\n|\n)?[ \t]*[(][*]"
                }
              }
            },
            {
              "type": "TOKEN",
              "content": {
                "type": "PREC",
                "value": 1,
                "content": {
                  "type": "PATTERN",
                  "value": "\\*"
                }
              }
            },
            {
              "type": "TOKEN",
              "content": {
                "type": "PREC",
                "value": 1,
                "content": {
                  "type": "PATTERN",
                  "value": "\\("
                }
              }
            },
            {
              "type": "TOKEN",
              "content": {
                "type": "PREC",
                "value": 1,
                "content": {
                  "type": "PATTERN",
                  "value": "\\)"
                }
              }
            }
          ]
        }
      }
    },
    "module": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "single_line"
          },
          "named": true,
          "value": "header_line"
        },
        {
          "type": "STRING",
          "value": "MODULE"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "single_line"
          },
          "named": true,
          "value": "header_line"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "extends"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_unit"
          }
        },
        {
          "type": "SYMBOL",
          "name": "double_line"
        }
      ]
    },
    "single_line": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "----"
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "-*"
          }
        }
      ]
    },
    "double_line": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "===="
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "=*"
          }
        }
      ]
    },
    "def_eq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "=="
        },
        {
          "type": "STRING",
          "value": "≜"
        }
      ]
    },
    "set_in": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\in"
        },
        {
          "type": "STRING",
          "value": "∈"
        }
      ]
    },
    "gets": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "<-"
        },
        {
          "type": "STRING",
          "value": "⟵"
        },
        {
          "type": "STRING",
          "value": "←"
        }
      ]
    },
    "forall": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\A"
        },
        {
          "type": "STRING",
          "value": "\\forall"
        },
        {
          "type": "STRING",
          "value": "∀"
        }
      ]
    },
    "exists": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\E"
        },
        {
          "type": "STRING",
          "value": "\\exists"
        },
        {
          "type": "STRING",
          "value": "∃"
        }
      ]
    },
    "temporal_forall": {
      "type": "STRING",
      "value": "\\AA"
    },
    "temporal_exists": {
      "type": "STRING",
      "value": "\\EE"
    },
    "all_map_to": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "|->"
        },
        {
          "type": "STRING",
          "value": "⟼"
        },
        {
          "type": "STRING",
          "value": "↦"
        }
      ]
    },
    "maps_to": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "->"
        },
        {
          "type": "STRING",
          "value": "⟶"
        },
        {
          "type": "STRING",
          "value": "→"
        }
      ]
    },
    "langle_bracket": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "<<"
        },
        {
          "type": "STRING",
          "value": "〈"
        },
        {
          "type": "STRING",
          "value": "⟨"
        }
      ]
    },
    "rangle_bracket": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": ">>"
        },
        {
          "type": "STRING",
          "value": "〉"
        },
        {
          "type": "STRING",
          "value": "⟩"
        }
      ]
    },
    "rangle_bracket_sub": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": ">>_"
        },
        {
          "type": "STRING",
          "value": "〉_"
        },
        {
          "type": "STRING",
          "value": "⟩_"
        }
      ]
    },
    "case_box": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "[]"
        },
        {
          "type": "STRING",
          "value": "□"
        }
      ]
    },
    "case_arrow": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "->"
        },
        {
          "type": "STRING",
          "value": "⟶"
        },
        {
          "type": "STRING",
          "value": "→"
        }
      ]
    },
    "colon": {
      "type": "STRING",
      "value": ":"
    },
    "address": {
      "type": "STRING",
      "value": "@"
    },
    "label_as": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "::"
        },
        {
          "type": "STRING",
          "value": "∷"
        }
      ]
    },
    "placeholder": {
      "type": "STRING",
      "value": "_"
    },
    "bullet_conj": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "/\\"
        },
        {
          "type": "STRING",
          "value": "∧"
        }
      ]
    },
    "bullet_disj": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\/"
        },
        {
          "type": "STRING",
          "value": "∨"
        }
      ]
    },
    "keyword": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "ASSUME"
        },
        {
          "type": "STRING",
          "value": "ELSE"
        },
        {
          "type": "STRING",
          "value": "LOCAL"
        },
        {
          "type": "STRING",
          "value": "UNION"
        },
        {
          "type": "STRING",
          "value": "ASSUMPTION"
        },
        {
          "type": "STRING",
          "value": "ENABLED"
        },
        {
          "type": "STRING",
          "value": "MODULE"
        },
        {
          "type": "STRING",
          "value": "VARIABLE"
        },
        {
          "type": "STRING",
          "value": "AXIOM"
        },
        {
          "type": "STRING",
          "value": "EXCEPT"
        },
        {
          "type": "STRING",
          "value": "OTHER"
        },
        {
          "type": "STRING",
          "value": "VARIABLES"
        },
        {
          "type": "STRING",
          "value": "CASE"
        },
        {
          "type": "STRING",
          "value": "EXTENDS"
        },
        {
          "type": "STRING",
          "value": "SF_"
        },
        {
          "type": "STRING",
          "value": "WF_"
        },
        {
          "type": "STRING",
          "value": "CHOOSE"
        },
        {
          "type": "STRING",
          "value": "IF"
        },
        {
          "type": "STRING",
          "value": "SUBSET"
        },
        {
          "type": "STRING",
          "value": "WITH"
        },
        {
          "type": "STRING",
          "value": "CONSTANT"
        },
        {
          "type": "STRING",
          "value": "IN"
        },
        {
          "type": "STRING",
          "value": "THEN"
        },
        {
          "type": "STRING",
          "value": "CONSTANTS"
        },
        {
          "type": "STRING",
          "value": "INSTANCE"
        },
        {
          "type": "STRING",
          "value": "THEOREM"
        },
        {
          "type": "STRING",
          "value": "COROLLARY"
        },
        {
          "type": "STRING",
          "value": "DOMAIN"
        },
        {
          "type": "STRING",
          "value": "LET"
        },
        {
          "type": "STRING",
          "value": "UNCHANGED"
        },
        {
          "type": "STRING",
          "value": "BY"
        },
        {
          "type": "STRING",
          "value": "HAVE"
        },
        {
          "type": "STRING",
          "value": "QED"
        },
        {
          "type": "STRING",
          "value": "TAKE"
        },
        {
          "type": "STRING",
          "value": "DEF"
        },
        {
          "type": "STRING",
          "value": "HIDE"
        },
        {
          "type": "STRING",
          "value": "RECURSIVE"
        },
        {
          "type": "STRING",
          "value": "USE"
        },
        {
          "type": "STRING",
          "value": "DEFINE"
        },
        {
          "type": "STRING",
          "value": "PROOF"
        },
        {
          "type": "STRING",
          "value": "WITNESS"
        },
        {
          "type": "STRING",
          "value": "PICK"
        },
        {
          "type": "STRING",
          "value": "DEFS"
        },
        {
          "type": "STRING",
          "value": "PROVE"
        },
        {
          "type": "STRING",
          "value": "SUFFICES"
        },
        {
          "type": "STRING",
          "value": "NEW"
        },
        {
          "type": "STRING",
          "value": "LAMBDA"
        },
        {
          "type": "STRING",
          "value": "STATE"
        },
        {
          "type": "STRING",
          "value": "ACTION"
        },
        {
          "type": "STRING",
          "value": "TEMPORAL"
        },
        {
          "type": "STRING",
          "value": "OBVIOUS"
        },
        {
          "type": "STRING",
          "value": "OMITTED"
        },
        {
          "type": "STRING",
          "value": "LEMMA"
        },
        {
          "type": "STRING",
          "value": "PROPOSITION"
        },
        {
          "type": "STRING",
          "value": "ONLY"
        }
      ]
    },
    "identifier": {
      "type": "PATTERN",
      "value": "([0-9_]*[A-Za-z][A-Za-z0-9_]*)"
    },
    "extends": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "EXTENDS"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              },
              "named": true,
              "value": "identifier_ref"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    "named": true,
                    "value": "identifier_ref"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "_unit": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "variable_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "constant_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "recursive_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "use_or_hide"
        },
        {
          "type": "SYMBOL",
          "name": "local_definition"
        },
        {
          "type": "SYMBOL",
          "name": "_definition"
        },
        {
          "type": "SYMBOL",
          "name": "assumption"
        },
        {
          "type": "SYMBOL",
          "name": "theorem"
        },
        {
          "type": "SYMBOL",
          "name": "module"
        },
        {
          "type": "SYMBOL",
          "name": "single_line"
        }
      ]
    },
    "local_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "LOCAL"
        },
        {
          "type": "SYMBOL",
          "name": "_definition"
        }
      ]
    },
    "_definition": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "operator_definition"
        },
        {
          "type": "SYMBOL",
          "name": "function_definition"
        },
        {
          "type": "SYMBOL",
          "name": "instance"
        },
        {
          "type": "SYMBOL",
          "name": "module_definition"
        }
      ]
    },
    "variable_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "VARIABLE"
            },
            {
              "type": "STRING",
              "value": "VARIABLES"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "constant_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "CONSTANT"
            },
            {
              "type": "STRING",
              "value": "CONSTANTS"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_id_or_op_declaration"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_id_or_op_declaration"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "recursive_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "RECURSIVE"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_id_or_op_declaration"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_id_or_op_declaration"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "operator_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              }
            },
            {
              "type": "FIELD",
              "name": "parameter",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "("
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "placeholder"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "SYMBOL",
                              "name": "placeholder"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "STRING",
                    "value": ")"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "prefix_op_symbol"
              }
            },
            {
              "type": "SYMBOL",
              "name": "placeholder"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "placeholder"
            },
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "infix_op_symbol"
              }
            },
            {
              "type": "SYMBOL",
              "name": "placeholder"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "placeholder"
            },
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "postfix_op_symbol"
              }
            }
          ]
        }
      ]
    },
    "_id_or_op_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "operator_declaration"
        }
      ]
    },
    "operator_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "name",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "identifier"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_number_set"
                      }
                    ]
                  }
                },
                {
                  "type": "FIELD",
                  "name": "parameter",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "("
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "_id_or_op_declaration"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": ","
                                    },
                                    {
                                      "type": "SYMBOL",
                                      "name": "_id_or_op_declaration"
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          {
                            "type": "STRING",
                            "value": ")"
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "name",
                  "content": {
                    "type": "SYMBOL",
                    "name": "prefix_op_symbol"
                  }
                },
                {
                  "type": "FIELD",
                  "name": "parameter",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "parameter",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                },
                {
                  "type": "FIELD",
                  "name": "name",
                  "content": {
                    "type": "SYMBOL",
                    "name": "infix_op_symbol"
                  }
                },
                {
                  "type": "FIELD",
                  "name": "parameter",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "parameter",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                },
                {
                  "type": "FIELD",
                  "name": "name",
                  "content": {
                    "type": "SYMBOL",
                    "name": "postfix_op_symbol"
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "def_eq"
        },
        {
          "type": "FIELD",
          "name": "definition",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        }
      ]
    },
    "function_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "quantifier_bound"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "quantifier_bound"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        },
        {
          "type": "SYMBOL",
          "name": "def_eq"
        },
        {
          "type": "FIELD",
          "name": "definition",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        }
      ]
    },
    "instance": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "INSTANCE"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "identifier_ref"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "WITH"
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "substitution"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "substitution"
                          }
                        ]
                      }
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "substitution": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              },
              "named": true,
              "value": "identifier_ref"
            },
            {
              "type": "SYMBOL",
              "name": "prefix_op_symbol"
            },
            {
              "type": "SYMBOL",
              "name": "infix_op_symbol"
            },
            {
              "type": "SYMBOL",
              "name": "postfix_op_symbol"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "gets"
        },
        {
          "type": "SYMBOL",
          "name": "_op_or_expr"
        }
      ]
    },
    "_op_or_expr": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_op"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "_op": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "prefix_op_symbol"
        },
        {
          "type": "SYMBOL",
          "name": "infix_op_symbol"
        },
        {
          "type": "SYMBOL",
          "name": "postfix_op_symbol"
        },
        {
          "type": "SYMBOL",
          "name": "lambda"
        }
      ]
    },
    "subexpr_prefix": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "subexpr_component"
            },
            {
              "type": "SYMBOL",
              "name": "proof_step_ref"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "!"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "subexpr_component"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "subexpr_tree_nav"
                  }
                ]
              },
              {
                "type": "STRING",
                "value": "!"
              }
            ]
          }
        }
      ]
    },
    "subexpr_component": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "identifier_ref"
        },
        {
          "type": "SYMBOL",
          "name": "bound_op"
        },
        {
          "type": "SYMBOL",
          "name": "bound_nonfix_op"
        },
        {
          "type": "SYMBOL",
          "name": "prefix_op_symbol"
        },
        {
          "type": "SYMBOL",
          "name": "infix_op_symbol"
        },
        {
          "type": "SYMBOL",
          "name": "postfix_op_symbol"
        }
      ]
    },
    "bound_op": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            },
            "named": true,
            "value": "identifier_ref"
          }
        },
        {
          "type": "FIELD",
          "name": "parameter",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "("
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_op_or_expr"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "_op_or_expr"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "STRING",
                "value": ")"
              }
            ]
          }
        }
      ]
    },
    "bound_nonfix_op": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "symbol",
              "content": {
                "type": "SYMBOL",
                "name": "prefix_op_symbol"
              }
            },
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "_expr"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "symbol",
              "content": {
                "type": "SYMBOL",
                "name": "infix_op_symbol"
              }
            },
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "_expr"
            },
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "SYMBOL",
              "name": "_expr"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "symbol",
              "content": {
                "type": "SYMBOL",
                "name": "postfix_op_symbol"
              }
            },
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "_expr"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        }
      ]
    },
    "subexpr_tree_nav": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "langle_bracket"
        },
        {
          "type": "SYMBOL",
          "name": "rangle_bracket"
        },
        {
          "type": "SYMBOL",
          "name": "child_id"
        },
        {
          "type": "SYMBOL",
          "name": "colon"
        },
        {
          "type": "SYMBOL",
          "name": "address"
        },
        {
          "type": "SYMBOL",
          "name": "operator_args"
        }
      ]
    },
    "child_id": {
      "type": "PATTERN",
      "value": "\\d+"
    },
    "operator_args": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_op_or_expr"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_op_or_expr"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "lambda": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "LAMBDA"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "module_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              }
            },
            {
              "type": "FIELD",
              "name": "parameter",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "("
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_id_or_op_declaration"
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": ","
                                },
                                {
                                  "type": "SYMBOL",
                                  "name": "_id_or_op_declaration"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "type": "STRING",
                        "value": ")"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "def_eq"
        },
        {
          "type": "FIELD",
          "name": "definition",
          "content": {
            "type": "SYMBOL",
            "name": "instance"
          }
        }
      ]
    },
    "_expr": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_number"
        },
        {
          "type": "SYMBOL",
          "name": "string"
        },
        {
          "type": "SYMBOL",
          "name": "boolean"
        },
        {
          "type": "SYMBOL",
          "name": "_primitive_value_set"
        },
        {
          "type": "SYMBOL",
          "name": "parentheses"
        },
        {
          "type": "SYMBOL",
          "name": "label"
        },
        {
          "type": "SYMBOL",
          "name": "subexpression"
        },
        {
          "type": "SYMBOL",
          "name": "proof_step_ref"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "identifier_ref"
        },
        {
          "type": "SYMBOL",
          "name": "bound_op"
        },
        {
          "type": "SYMBOL",
          "name": "bound_nonfix_op"
        },
        {
          "type": "SYMBOL",
          "name": "prefixed_op"
        },
        {
          "type": "SYMBOL",
          "name": "bound_prefix_op"
        },
        {
          "type": "SYMBOL",
          "name": "bound_infix_op"
        },
        {
          "type": "SYMBOL",
          "name": "bound_postfix_op"
        },
        {
          "type": "SYMBOL",
          "name": "bounded_quantification"
        },
        {
          "type": "SYMBOL",
          "name": "unbounded_quantification"
        },
        {
          "type": "SYMBOL",
          "name": "choose"
        },
        {
          "type": "SYMBOL",
          "name": "finite_set_literal"
        },
        {
          "type": "SYMBOL",
          "name": "set_filter"
        },
        {
          "type": "SYMBOL",
          "name": "set_map"
        },
        {
          "type": "SYMBOL",
          "name": "function_evaluation"
        },
        {
          "type": "SYMBOL",
          "name": "function_literal"
        },
        {
          "type": "SYMBOL",
          "name": "set_of_functions"
        },
        {
          "type": "SYMBOL",
          "name": "record_literal"
        },
        {
          "type": "SYMBOL",
          "name": "set_of_records"
        },
        {
          "type": "SYMBOL",
          "name": "record_value"
        },
        {
          "type": "SYMBOL",
          "name": "except"
        },
        {
          "type": "SYMBOL",
          "name": "prev_func_val"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_literal"
        },
        {
          "type": "SYMBOL",
          "name": "step_expr_or_stutter"
        },
        {
          "type": "SYMBOL",
          "name": "step_expr_no_stutter"
        },
        {
          "type": "SYMBOL",
          "name": "fairness"
        },
        {
          "type": "SYMBOL",
          "name": "if_then_else"
        },
        {
          "type": "SYMBOL",
          "name": "case"
        },
        {
          "type": "SYMBOL",
          "name": "let_in"
        },
        {
          "type": "SYMBOL",
          "name": "conj_list"
        },
        {
          "type": "SYMBOL",
          "name": "disj_list"
        }
      ]
    },
    "_subscript_expr": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "identifier_ref"
        },
        {
          "type": "SYMBOL",
          "name": "bound_op"
        },
        {
          "type": "SYMBOL",
          "name": "bound_nonfix_op"
        },
        {
          "type": "SYMBOL",
          "name": "prefixed_op"
        },
        {
          "type": "SYMBOL",
          "name": "parentheses"
        },
        {
          "type": "SYMBOL",
          "name": "finite_set_literal"
        },
        {
          "type": "SYMBOL",
          "name": "set_filter"
        },
        {
          "type": "SYMBOL",
          "name": "set_map"
        },
        {
          "type": "SYMBOL",
          "name": "function_literal"
        },
        {
          "type": "SYMBOL",
          "name": "set_of_functions"
        },
        {
          "type": "SYMBOL",
          "name": "record_literal"
        },
        {
          "type": "SYMBOL",
          "name": "set_of_records"
        },
        {
          "type": "SYMBOL",
          "name": "except"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_literal"
        },
        {
          "type": "SYMBOL",
          "name": "step_expr_or_stutter"
        },
        {
          "type": "SYMBOL",
          "name": "step_expr_no_stutter"
        }
      ]
    },
    "prefixed_op": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "prefix",
          "content": {
            "type": "SYMBOL",
            "name": "subexpr_prefix"
          }
        },
        {
          "type": "FIELD",
          "name": "op",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    "named": true,
                    "value": "identifier_ref"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_number_set"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "bound_op"
              },
              {
                "type": "SYMBOL",
                "name": "bound_nonfix_op"
              }
            ]
          }
        }
      ]
    },
    "_number": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "nat_number"
        },
        {
          "type": "SYMBOL",
          "name": "real_number"
        },
        {
          "type": "SYMBOL",
          "name": "binary_number"
        },
        {
          "type": "SYMBOL",
          "name": "octal_number"
        },
        {
          "type": "SYMBOL",
          "name": "hex_number"
        }
      ]
    },
    "nat_number": {
      "type": "PATTERN",
      "value": "\\d+"
    },
    "real_number": {
      "type": "PATTERN",
      "value": "\\d*\\.\\d+"
    },
    "binary_number": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "\\b"
              },
              {
                "type": "STRING",
                "value": "\\B"
              }
            ]
          },
          "named": true,
          "value": "format"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "PATTERN",
              "value": "[0-1]+"
            }
          },
          "named": true,
          "value": "value"
        }
      ]
    },
    "octal_number": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "\\o"
              },
              {
                "type": "STRING",
                "value": "\\O"
              }
            ]
          },
          "named": true,
          "value": "format"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "PATTERN",
              "value": "[0-7]+"
            }
          },
          "named": true,
          "value": "value"
        }
      ]
    },
    "hex_number": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "\\h"
              },
              {
                "type": "STRING",
                "value": "\\H"
              }
            ]
          },
          "named": true,
          "value": "format"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "PATTERN",
              "value": "[0-9a-fA-F]+"
            }
          },
          "named": true,
          "value": "value"
        }
      ]
    },
    "string": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "\""
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PREC",
                  "value": 3,
                  "content": {
                    "type": "PATTERN",
                    "value": "[^\"\\n]"
                  }
                }
              },
              {
                "type": "SYMBOL",
                "name": "escape_char"
              }
            ]
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "\""
          }
        }
      ]
    },
    "escape_char": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "PREC",
        "value": 3,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "\\"
            },
            {
              "type": "PATTERN",
              "value": "."
            }
          ]
        }
      }
    },
    "boolean": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "TRUE"
        },
        {
          "type": "STRING",
          "value": "FALSE"
        }
      ]
    },
    "_number_set": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "nat_number_set"
        },
        {
          "type": "SYMBOL",
          "name": "int_number_set"
        },
        {
          "type": "SYMBOL",
          "name": "real_number_set"
        }
      ]
    },
    "_primitive_value_set": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "string_set"
        },
        {
          "type": "SYMBOL",
          "name": "boolean_set"
        },
        {
          "type": "SYMBOL",
          "name": "_number_set"
        }
      ]
    },
    "string_set": {
      "type": "STRING",
      "value": "STRING"
    },
    "boolean_set": {
      "type": "STRING",
      "value": "BOOLEAN"
    },
    "nat_number_set": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "Nat"
        },
        {
          "type": "STRING",
          "value": "ℕ"
        }
      ]
    },
    "int_number_set": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "Int"
        },
        {
          "type": "STRING",
          "value": "ℤ"
        }
      ]
    },
    "real_number_set": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "Real"
        },
        {
          "type": "STRING",
          "value": "ℝ"
        }
      ]
    },
    "label": {
      "type": "PREC",
      "value": "0-0",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "name",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                },
                {
                  "type": "FIELD",
                  "name": "parameter",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "("
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "ALIAS",
                                "content": {
                                  "type": "SYMBOL",
                                  "name": "identifier"
                                },
                                "named": true,
                                "value": "identifier_ref"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": ","
                                    },
                                    {
                                      "type": "ALIAS",
                                      "content": {
                                        "type": "SYMBOL",
                                        "name": "identifier"
                                      },
                                      "named": true,
                                      "value": "identifier_ref"
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          {
                            "type": "STRING",
                            "value": ")"
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                }
              ]
            }
          },
          {
            "type": "SYMBOL",
            "name": "label_as"
          },
          {
            "type": "FIELD",
            "name": "expression",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          }
        ]
      }
    },
    "subexpression": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "subexpr_prefix"
        },
        {
          "type": "SYMBOL",
          "name": "subexpr_tree_nav"
        }
      ]
    },
    "parentheses": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "bounded_quantification": {
      "type": "PREC",
      "value": "0-0",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "quantifier",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "forall"
                },
                {
                  "type": "SYMBOL",
                  "name": "exists"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "bound",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "quantifier_bound"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "quantifier_bound"
                      }
                    ]
                  }
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "FIELD",
            "name": "expression",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          }
        ]
      }
    },
    "unbounded_quantification": {
      "type": "PREC",
      "value": "0-0",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "quantifier",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "forall"
                },
                {
                  "type": "SYMBOL",
                  "name": "exists"
                },
                {
                  "type": "SYMBOL",
                  "name": "temporal_forall"
                },
                {
                  "type": "SYMBOL",
                  "name": "temporal_exists"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "intro",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "identifier"
                      }
                    ]
                  }
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "FIELD",
            "name": "expression",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          }
        ]
      }
    },
    "choose": {
      "type": "PREC",
      "value": "0-0",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "CHOOSE"
          },
          {
            "type": "FIELD",
            "name": "intro",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "tuple_of_identifiers"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "set_in"
                  },
                  {
                    "type": "FIELD",
                    "name": "set",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expr"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "FIELD",
            "name": "expression",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          }
        ]
      }
    },
    "finite_set_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expr"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "set_filter": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "{"
          },
          {
            "type": "FIELD",
            "name": "generator",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "restricted_quantifier_bound"
              },
              "named": true,
              "value": "quantifier_bound"
            }
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "FIELD",
            "name": "filter",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          },
          {
            "type": "STRING",
            "value": "}"
          }
        ]
      }
    },
    "set_map": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "FIELD",
          "name": "map",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "generator",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "quantifier_bound"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SYMBOL",
                      "name": "quantifier_bound"
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "quantifier_bound": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "intro",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "identifier"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "tuple_of_identifiers"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "set_in"
        },
        {
          "type": "FIELD",
          "name": "set",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        }
      ]
    },
    "restricted_quantifier_bound": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "intro",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "tuple_of_identifiers"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "set_in"
        },
        {
          "type": "FIELD",
          "name": "set",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        }
      ]
    },
    "tuple_of_identifiers": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "langle_bracket"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "rangle_bracket"
        }
      ]
    },
    "function_evaluation": {
      "type": "PREC",
      "value": "16-16",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expr"
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expr"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "function_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "quantifier_bound"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "quantifier_bound"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "all_map_to"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "set_of_functions": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "SYMBOL",
          "name": "maps_to"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "record_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "all_map_to"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "identifier"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "all_map_to"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expr"
                      }
                    ]
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "set_of_records": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "identifier"
                      },
                      {
                        "type": "STRING",
                        "value": ":"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expr"
                      }
                    ]
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "record_value": {
      "type": "PREC_LEFT",
      "value": "17-17",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expr"
          },
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            },
            "named": true,
            "value": "identifier_ref"
          }
        ]
      }
    },
    "except": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "FIELD",
          "name": "expr_to_update",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        },
        {
          "type": "STRING",
          "value": "EXCEPT"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "except_update"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "except_update"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "except_update": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "update_specifier",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "!"
              },
              {
                "type": "SYMBOL",
                "name": "except_update_specifier"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "new_val",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        }
      ]
    },
    "except_update_specifier": {
      "type": "REPEAT1",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "except_update_record_field"
          },
          {
            "type": "SYMBOL",
            "name": "except_update_fn_appl"
          }
        ]
      }
    },
    "except_update_record_field": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "identifier_ref"
        }
      ]
    },
    "except_update_fn_appl": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expr"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_expr"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "prev_func_val": {
      "type": "STRING",
      "value": "@"
    },
    "tuple_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "langle_bracket"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expr"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "rangle_bracket"
        }
      ]
    },
    "step_expr_or_stutter": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": "]_"
        },
        {
          "type": "SYMBOL",
          "name": "_subscript_expr"
        }
      ]
    },
    "step_expr_no_stutter": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "langle_bracket"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "SYMBOL",
          "name": "rangle_bracket_sub"
        },
        {
          "type": "SYMBOL",
          "name": "_subscript_expr"
        }
      ]
    },
    "fairness": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "WF_"
            },
            {
              "type": "STRING",
              "value": "SF_"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_subscript_expr"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "if_then_else": {
      "type": "PREC",
      "value": "0-0",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "IF"
          },
          {
            "type": "FIELD",
            "name": "if",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          },
          {
            "type": "STRING",
            "value": "THEN"
          },
          {
            "type": "FIELD",
            "name": "then",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          },
          {
            "type": "STRING",
            "value": "ELSE"
          },
          {
            "type": "FIELD",
            "name": "else",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          }
        ]
      }
    },
    "case": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "CASE"
          },
          {
            "type": "SYMBOL",
            "name": "case_arm"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "case_box"
                },
                {
                  "type": "SYMBOL",
                  "name": "case_arm"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "case_box"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "other_arm"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "case_arm": {
      "type": "PREC",
      "value": "0-0",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expr"
          },
          {
            "type": "SYMBOL",
            "name": "case_arrow"
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          }
        ]
      }
    },
    "other_arm": {
      "type": "PREC",
      "value": "0-0",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "OTHER"
          },
          {
            "type": "SYMBOL",
            "name": "case_arrow"
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          }
        ]
      }
    },
    "let_in": {
      "type": "PREC",
      "value": "0-0",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "LET"
          },
          {
            "type": "FIELD",
            "name": "definitions",
            "content": {
              "type": "REPEAT1",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "operator_definition"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "function_definition"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "module_definition"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "recursive_declaration"
                  }
                ]
              }
            }
          },
          {
            "type": "STRING",
            "value": "IN"
          },
          {
            "type": "FIELD",
            "name": "expression",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          }
        ]
      }
    },
    "conj_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_indent"
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "conj_item"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_dedent"
        }
      ]
    },
    "conj_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_bullet"
        },
        {
          "type": "SYMBOL",
          "name": "bullet_conj"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "disj_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_indent"
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "disj_item"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_dedent"
        }
      ]
    },
    "disj_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_bullet"
        },
        {
          "type": "SYMBOL",
          "name": "bullet_disj"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "lnot": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\lnot"
        },
        {
          "type": "STRING",
          "value": "\\neg"
        },
        {
          "type": "STRING",
          "value": "~"
        },
        {
          "type": "STRING",
          "value": "¬"
        }
      ]
    },
    "union": {
      "type": "STRING",
      "value": "UNION"
    },
    "powerset": {
      "type": "STRING",
      "value": "SUBSET"
    },
    "domain": {
      "type": "STRING",
      "value": "DOMAIN"
    },
    "negative": {
      "type": "STRING",
      "value": "-"
    },
    "negative_dot": {
      "type": "STRING",
      "value": "-."
    },
    "enabled": {
      "type": "STRING",
      "value": "ENABLED"
    },
    "unchanged": {
      "type": "STRING",
      "value": "UNCHANGED"
    },
    "always": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "[]"
        },
        {
          "type": "STRING",
          "value": "□"
        }
      ]
    },
    "eventually": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "<>"
        },
        {
          "type": "STRING",
          "value": "⋄"
        },
        {
          "type": "STRING",
          "value": "◇"
        }
      ]
    },
    "prefix_op_symbol": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "lnot"
        },
        {
          "type": "SYMBOL",
          "name": "union"
        },
        {
          "type": "SYMBOL",
          "name": "powerset"
        },
        {
          "type": "SYMBOL",
          "name": "domain"
        },
        {
          "type": "SYMBOL",
          "name": "enabled"
        },
        {
          "type": "SYMBOL",
          "name": "unchanged"
        },
        {
          "type": "SYMBOL",
          "name": "always"
        },
        {
          "type": "SYMBOL",
          "name": "eventually"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "negative_dot"
          },
          "named": true,
          "value": "negative"
        }
      ]
    },
    "bound_prefix_op": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": "4-4",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "SYMBOL",
                  "name": "lnot"
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "12-12",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "SYMBOL",
                  "name": "negative"
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "13-13",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "powerset"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "union"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "domain"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "15-15",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "enabled"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "unchanged"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "always"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "eventually"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        }
      ]
    },
    "implies": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "=>"
        },
        {
          "type": "STRING",
          "value": "⟹"
        },
        {
          "type": "STRING",
          "value": "⇒"
        }
      ]
    },
    "plus_arrow": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "-+->"
        },
        {
          "type": "STRING",
          "value": "⇸"
        },
        {
          "type": "STRING",
          "value": "⥅"
        }
      ]
    },
    "equiv": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\equiv"
        },
        {
          "type": "STRING",
          "value": "≡"
        }
      ]
    },
    "iff": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "<=>"
        },
        {
          "type": "STRING",
          "value": "⟺"
        },
        {
          "type": "STRING",
          "value": "⇔"
        }
      ]
    },
    "leads_to": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "~>"
        },
        {
          "type": "STRING",
          "value": "⇝"
        },
        {
          "type": "STRING",
          "value": "↝"
        }
      ]
    },
    "land": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "/\\"
        },
        {
          "type": "STRING",
          "value": "\\land"
        },
        {
          "type": "STRING",
          "value": "∧"
        }
      ]
    },
    "lor": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\/"
        },
        {
          "type": "STRING",
          "value": "\\lor"
        },
        {
          "type": "STRING",
          "value": "∨"
        }
      ]
    },
    "assign": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": ":="
        },
        {
          "type": "STRING",
          "value": "≔"
        }
      ]
    },
    "bnf_rule": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "::="
        },
        {
          "type": "STRING",
          "value": "⩴"
        }
      ]
    },
    "eq": {
      "type": "STRING",
      "value": "="
    },
    "neq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "/="
        },
        {
          "type": "STRING",
          "value": "#"
        },
        {
          "type": "STRING",
          "value": "≠"
        }
      ]
    },
    "lt": {
      "type": "STRING",
      "value": "<"
    },
    "gt": {
      "type": "STRING",
      "value": ">"
    },
    "leq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "<="
        },
        {
          "type": "STRING",
          "value": "=<"
        },
        {
          "type": "STRING",
          "value": "\\leq"
        },
        {
          "type": "STRING",
          "value": "≤"
        }
      ]
    },
    "geq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": ">="
        },
        {
          "type": "STRING",
          "value": "\\geq"
        },
        {
          "type": "STRING",
          "value": "≥"
        }
      ]
    },
    "approx": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\approx"
        },
        {
          "type": "STRING",
          "value": "≈"
        }
      ]
    },
    "rs_ttile": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "|-"
        },
        {
          "type": "STRING",
          "value": "⊢"
        }
      ]
    },
    "rd_ttile": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "|="
        },
        {
          "type": "STRING",
          "value": "⊨"
        }
      ]
    },
    "ls_ttile": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "-|"
        },
        {
          "type": "STRING",
          "value": "⊣"
        }
      ]
    },
    "ld_ttile": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "=|"
        },
        {
          "type": "STRING",
          "value": "⫤"
        }
      ]
    },
    "asymp": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\asymp"
        },
        {
          "type": "STRING",
          "value": "≍"
        }
      ]
    },
    "cong": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\cong"
        },
        {
          "type": "STRING",
          "value": "≅"
        }
      ]
    },
    "doteq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\doteq"
        },
        {
          "type": "STRING",
          "value": "≐"
        }
      ]
    },
    "gg": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\gg"
        },
        {
          "type": "STRING",
          "value": "≫"
        }
      ]
    },
    "ll": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\ll"
        },
        {
          "type": "STRING",
          "value": "≪"
        }
      ]
    },
    "in": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\in"
        },
        {
          "type": "STRING",
          "value": "∈"
        }
      ]
    },
    "notin": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\notin"
        },
        {
          "type": "STRING",
          "value": "∉"
        }
      ]
    },
    "prec": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\prec"
        },
        {
          "type": "STRING",
          "value": "≺"
        }
      ]
    },
    "succ": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\succ"
        },
        {
          "type": "STRING",
          "value": "≻"
        }
      ]
    },
    "preceq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\preceq"
        },
        {
          "type": "STRING",
          "value": "⪯"
        }
      ]
    },
    "succeq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\succeq"
        },
        {
          "type": "STRING",
          "value": "⪰"
        }
      ]
    },
    "propto": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\propto"
        },
        {
          "type": "STRING",
          "value": "∝"
        }
      ]
    },
    "sim": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\sim"
        },
        {
          "type": "STRING",
          "value": "∼"
        }
      ]
    },
    "simeq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\simeq"
        },
        {
          "type": "STRING",
          "value": "≃"
        }
      ]
    },
    "sqsubset": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\sqsubset"
        },
        {
          "type": "STRING",
          "value": "⊏"
        }
      ]
    },
    "sqsupset": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\sqsupset"
        },
        {
          "type": "STRING",
          "value": "⊐"
        }
      ]
    },
    "sqsubseteq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\sqsubseteq"
        },
        {
          "type": "STRING",
          "value": "⊑"
        }
      ]
    },
    "sqsupseteq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\sqsupseteq"
        },
        {
          "type": "STRING",
          "value": "⊒"
        }
      ]
    },
    "subset": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\subset"
        },
        {
          "type": "STRING",
          "value": "⊂"
        }
      ]
    },
    "supset": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\supset"
        },
        {
          "type": "STRING",
          "value": "⊃"
        }
      ]
    },
    "subseteq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\subseteq"
        },
        {
          "type": "STRING",
          "value": "⊆"
        }
      ]
    },
    "supseteq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\supseteq"
        },
        {
          "type": "STRING",
          "value": "⊇"
        }
      ]
    },
    "compose": {
      "type": "STRING",
      "value": "@@"
    },
    "map_to": {
      "type": "STRING",
      "value": ":>"
    },
    "map_from": {
      "type": "STRING",
      "value": "<:"
    },
    "setminus": {
      "type": "STRING",
      "value": "\\"
    },
    "cap": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\cap"
        },
        {
          "type": "STRING",
          "value": "\\intersect"
        },
        {
          "type": "STRING",
          "value": "∩"
        }
      ]
    },
    "cup": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\cup"
        },
        {
          "type": "STRING",
          "value": "\\union"
        },
        {
          "type": "STRING",
          "value": "∪"
        }
      ]
    },
    "dots_2": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": ".."
        },
        {
          "type": "STRING",
          "value": "‥"
        }
      ]
    },
    "dots_3": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "..."
        },
        {
          "type": "STRING",
          "value": "…"
        }
      ]
    },
    "plus": {
      "type": "STRING",
      "value": "+"
    },
    "plusplus": {
      "type": "STRING",
      "value": "++"
    },
    "oplus": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\oplus"
        },
        {
          "type": "STRING",
          "value": "(+)"
        },
        {
          "type": "STRING",
          "value": "⊕"
        }
      ]
    },
    "ominus": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\ominus"
        },
        {
          "type": "STRING",
          "value": "(-)"
        },
        {
          "type": "STRING",
          "value": "⊖"
        }
      ]
    },
    "mod": {
      "type": "STRING",
      "value": "%"
    },
    "modmod": {
      "type": "STRING",
      "value": "%%"
    },
    "vert": {
      "type": "STRING",
      "value": "|"
    },
    "vertvert": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "||"
        },
        {
          "type": "STRING",
          "value": "‖"
        }
      ]
    },
    "minus": {
      "type": "STRING",
      "value": "-"
    },
    "minusminus": {
      "type": "STRING",
      "value": "--"
    },
    "amp": {
      "type": "STRING",
      "value": "&"
    },
    "ampamp": {
      "type": "STRING",
      "value": "&&"
    },
    "odot": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\odot"
        },
        {
          "type": "STRING",
          "value": "(.)"
        },
        {
          "type": "STRING",
          "value": "⊙"
        }
      ]
    },
    "oslash": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\oslash"
        },
        {
          "type": "STRING",
          "value": "(/)"
        },
        {
          "type": "STRING",
          "value": "⊘"
        }
      ]
    },
    "otimes": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\otimes"
        },
        {
          "type": "STRING",
          "value": "(\\X)"
        },
        {
          "type": "STRING",
          "value": "⊗"
        }
      ]
    },
    "mul": {
      "type": "STRING",
      "value": "*"
    },
    "mulmul": {
      "type": "STRING",
      "value": "**"
    },
    "slash": {
      "type": "STRING",
      "value": "/"
    },
    "slashslash": {
      "type": "STRING",
      "value": "//"
    },
    "bigcirc": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\bigcirc"
        },
        {
          "type": "STRING",
          "value": "◯"
        }
      ]
    },
    "bullet": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\bullet"
        },
        {
          "type": "STRING",
          "value": "●"
        }
      ]
    },
    "div": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\div"
        },
        {
          "type": "STRING",
          "value": "÷"
        }
      ]
    },
    "circ": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\o"
        },
        {
          "type": "STRING",
          "value": "\\circ"
        },
        {
          "type": "STRING",
          "value": "∘"
        }
      ]
    },
    "star": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\star"
        },
        {
          "type": "STRING",
          "value": "⋆"
        }
      ]
    },
    "excl": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_double_excl"
          },
          "named": false,
          "value": "!!"
        },
        {
          "type": "STRING",
          "value": "‼"
        }
      ]
    },
    "hashhash": {
      "type": "STRING",
      "value": "##"
    },
    "dol": {
      "type": "STRING",
      "value": "$"
    },
    "doldol": {
      "type": "STRING",
      "value": "$$"
    },
    "qq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "??"
        },
        {
          "type": "STRING",
          "value": "⁇"
        }
      ]
    },
    "sqcap": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\sqcap"
        },
        {
          "type": "STRING",
          "value": "⊓"
        }
      ]
    },
    "sqcup": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\sqcup"
        },
        {
          "type": "STRING",
          "value": "⊔"
        }
      ]
    },
    "uplus": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\uplus"
        },
        {
          "type": "STRING",
          "value": "⊎"
        }
      ]
    },
    "times": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\X"
        },
        {
          "type": "STRING",
          "value": "\\times"
        },
        {
          "type": "STRING",
          "value": "×"
        }
      ]
    },
    "wr": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\wr"
        },
        {
          "type": "STRING",
          "value": "≀"
        }
      ]
    },
    "cdot": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\cdot"
        },
        {
          "type": "STRING",
          "value": "⋅"
        }
      ]
    },
    "pow": {
      "type": "STRING",
      "value": "^"
    },
    "powpow": {
      "type": "STRING",
      "value": "^^"
    },
    "infix_op_symbol": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "implies"
        },
        {
          "type": "SYMBOL",
          "name": "plus_arrow"
        },
        {
          "type": "SYMBOL",
          "name": "equiv"
        },
        {
          "type": "SYMBOL",
          "name": "iff"
        },
        {
          "type": "SYMBOL",
          "name": "leads_to"
        },
        {
          "type": "SYMBOL",
          "name": "land"
        },
        {
          "type": "SYMBOL",
          "name": "lor"
        },
        {
          "type": "SYMBOL",
          "name": "assign"
        },
        {
          "type": "SYMBOL",
          "name": "bnf_rule"
        },
        {
          "type": "SYMBOL",
          "name": "eq"
        },
        {
          "type": "SYMBOL",
          "name": "neq"
        },
        {
          "type": "SYMBOL",
          "name": "lt"
        },
        {
          "type": "SYMBOL",
          "name": "gt"
        },
        {
          "type": "SYMBOL",
          "name": "leq"
        },
        {
          "type": "SYMBOL",
          "name": "geq"
        },
        {
          "type": "SYMBOL",
          "name": "approx"
        },
        {
          "type": "SYMBOL",
          "name": "rs_ttile"
        },
        {
          "type": "SYMBOL",
          "name": "rd_ttile"
        },
        {
          "type": "SYMBOL",
          "name": "ls_ttile"
        },
        {
          "type": "SYMBOL",
          "name": "ld_ttile"
        },
        {
          "type": "SYMBOL",
          "name": "asymp"
        },
        {
          "type": "SYMBOL",
          "name": "cong"
        },
        {
          "type": "SYMBOL",
          "name": "doteq"
        },
        {
          "type": "SYMBOL",
          "name": "gg"
        },
        {
          "type": "SYMBOL",
          "name": "ll"
        },
        {
          "type": "SYMBOL",
          "name": "in"
        },
        {
          "type": "SYMBOL",
          "name": "notin"
        },
        {
          "type": "SYMBOL",
          "name": "prec"
        },
        {
          "type": "SYMBOL",
          "name": "succ"
        },
        {
          "type": "SYMBOL",
          "name": "preceq"
        },
        {
          "type": "SYMBOL",
          "name": "succeq"
        },
        {
          "type": "SYMBOL",
          "name": "propto"
        },
        {
          "type": "SYMBOL",
          "name": "sim"
        },
        {
          "type": "SYMBOL",
          "name": "simeq"
        },
        {
          "type": "SYMBOL",
          "name": "sqsubset"
        },
        {
          "type": "SYMBOL",
          "name": "sqsupset"
        },
        {
          "type": "SYMBOL",
          "name": "sqsubseteq"
        },
        {
          "type": "SYMBOL",
          "name": "sqsupseteq"
        },
        {
          "type": "SYMBOL",
          "name": "subset"
        },
        {
          "type": "SYMBOL",
          "name": "supset"
        },
        {
          "type": "SYMBOL",
          "name": "subseteq"
        },
        {
          "type": "SYMBOL",
          "name": "supseteq"
        },
        {
          "type": "SYMBOL",
          "name": "compose"
        },
        {
          "type": "SYMBOL",
          "name": "map_to"
        },
        {
          "type": "SYMBOL",
          "name": "setminus"
        },
        {
          "type": "SYMBOL",
          "name": "cap"
        },
        {
          "type": "SYMBOL",
          "name": "cup"
        },
        {
          "type": "SYMBOL",
          "name": "dots_2"
        },
        {
          "type": "SYMBOL",
          "name": "dots_3"
        },
        {
          "type": "SYMBOL",
          "name": "plus"
        },
        {
          "type": "SYMBOL",
          "name": "plusplus"
        },
        {
          "type": "SYMBOL",
          "name": "oplus"
        },
        {
          "type": "SYMBOL",
          "name": "ominus"
        },
        {
          "type": "SYMBOL",
          "name": "mod"
        },
        {
          "type": "SYMBOL",
          "name": "modmod"
        },
        {
          "type": "SYMBOL",
          "name": "vert"
        },
        {
          "type": "SYMBOL",
          "name": "vertvert"
        },
        {
          "type": "SYMBOL",
          "name": "minus"
        },
        {
          "type": "SYMBOL",
          "name": "minusminus"
        },
        {
          "type": "SYMBOL",
          "name": "amp"
        },
        {
          "type": "SYMBOL",
          "name": "ampamp"
        },
        {
          "type": "SYMBOL",
          "name": "odot"
        },
        {
          "type": "SYMBOL",
          "name": "oslash"
        },
        {
          "type": "SYMBOL",
          "name": "otimes"
        },
        {
          "type": "SYMBOL",
          "name": "mul"
        },
        {
          "type": "SYMBOL",
          "name": "mulmul"
        },
        {
          "type": "SYMBOL",
          "name": "slash"
        },
        {
          "type": "SYMBOL",
          "name": "slashslash"
        },
        {
          "type": "SYMBOL",
          "name": "bigcirc"
        },
        {
          "type": "SYMBOL",
          "name": "bullet"
        },
        {
          "type": "SYMBOL",
          "name": "div"
        },
        {
          "type": "SYMBOL",
          "name": "circ"
        },
        {
          "type": "SYMBOL",
          "name": "star"
        },
        {
          "type": "SYMBOL",
          "name": "excl"
        },
        {
          "type": "SYMBOL",
          "name": "hashhash"
        },
        {
          "type": "SYMBOL",
          "name": "dol"
        },
        {
          "type": "SYMBOL",
          "name": "doldol"
        },
        {
          "type": "SYMBOL",
          "name": "qq"
        },
        {
          "type": "SYMBOL",
          "name": "sqcap"
        },
        {
          "type": "SYMBOL",
          "name": "sqcup"
        },
        {
          "type": "SYMBOL",
          "name": "uplus"
        },
        {
          "type": "SYMBOL",
          "name": "times"
        },
        {
          "type": "SYMBOL",
          "name": "wr"
        },
        {
          "type": "SYMBOL",
          "name": "cdot"
        },
        {
          "type": "SYMBOL",
          "name": "pow"
        },
        {
          "type": "SYMBOL",
          "name": "powpow"
        },
        {
          "type": "SYMBOL",
          "name": "map_from"
        }
      ]
    },
    "bound_infix_op": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": "1-1",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "lhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              },
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "SYMBOL",
                  "name": "implies"
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "2-2",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "lhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              },
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "plus_arrow"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "equiv"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "iff"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "leads_to"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "3-3",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "lhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              },
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "land"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "lor"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "5-5",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "lhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              },
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "assign"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "bnf_rule"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "eq"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "neq"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "lt"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "gt"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "leq"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "geq"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "approx"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "rs_ttile"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "rd_ttile"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "ls_ttile"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "ld_ttile"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "asymp"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "cong"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "doteq"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "gg"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "ll"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "in"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "notin"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "prec"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "succ"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preceq"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "succeq"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "propto"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "sim"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "simeq"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "sqsubset"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "sqsupset"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "sqsubseteq"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "sqsupseteq"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "subset"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "supset"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "subseteq"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "supseteq"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "6-6",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "lhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              },
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "SYMBOL",
                  "name": "compose"
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "7-7",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "lhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              },
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "map_to"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "map_from"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "8-8",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "lhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              },
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "setminus"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "cap"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "cup"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "9-9",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "lhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              },
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "dots_2"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "dots_3"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "10-10",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "lhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              },
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "plus"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "plusplus"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "oplus"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "11-11",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "lhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              },
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "ominus"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "mod"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "modmod"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "vert"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "vertvert"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "minus"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "minusminus"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "13-13",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "lhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              },
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "amp"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "ampamp"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "odot"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "oslash"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "otimes"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "mul"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "mulmul"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "slash"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "slashslash"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "bigcirc"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "bullet"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "div"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "circ"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "star"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "excl"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "hashhash"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "dol"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "doldol"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "qq"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "sqcap"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "sqcup"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "uplus"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "times"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": "14-14",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "lhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              },
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "wr"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "cdot"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "pow"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "powpow"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "rhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              }
            ]
          }
        }
      ]
    },
    "sup_plus": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "^+"
        },
        {
          "type": "STRING",
          "value": "⁺"
        }
      ]
    },
    "asterisk": {
      "type": "STRING",
      "value": "^*"
    },
    "sup_hash": {
      "type": "STRING",
      "value": "^#"
    },
    "prime": {
      "type": "STRING",
      "value": "'"
    },
    "postfix_op_symbol": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "sup_plus"
        },
        {
          "type": "SYMBOL",
          "name": "asterisk"
        },
        {
          "type": "SYMBOL",
          "name": "sup_hash"
        },
        {
          "type": "SYMBOL",
          "name": "prime"
        }
      ]
    },
    "bound_postfix_op": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": "15-15",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "lhs",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              },
              {
                "type": "FIELD",
                "name": "symbol",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "sup_plus"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "asterisk"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "sup_hash"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "prime"
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    },
    "assumption": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "ASSUME"
            },
            {
              "type": "STRING",
              "value": "ASSUMPTION"
            },
            {
              "type": "STRING",
              "value": "AXIOM"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "name",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                },
                {
                  "type": "SYMBOL",
                  "name": "def_eq"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "theorem": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "THEOREM"
            },
            {
              "type": "STRING",
              "value": "PROPOSITION"
            },
            {
              "type": "STRING",
              "value": "LEMMA"
            },
            {
              "type": "STRING",
              "value": "COROLLARY"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "name",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                },
                {
                  "type": "SYMBOL",
                  "name": "def_eq"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "statement",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "SYMBOL",
                "name": "assume_prove"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "proof",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_proof"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        }
      ]
    },
    "assume_prove": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "ASSUME"
        },
        {
          "type": "FIELD",
          "name": "assumption",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_expr"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "new"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "inner_assume_prove"
                  }
                ]
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_expr"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "new"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "inner_assume_prove"
                        }
                      ]
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "PROVE"
        },
        {
          "type": "FIELD",
          "name": "conclusion",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        }
      ]
    },
    "inner_assume_prove": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "label_as"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "assume_prove"
        }
      ]
    },
    "new": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "NEW"
            },
            {
              "type": "SYMBOL",
              "name": "statement_level"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "NEW"
                },
                {
                  "type": "SYMBOL",
                  "name": "statement_level"
                }
              ]
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "set_in"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "_expr"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "operator_declaration"
            }
          ]
        }
      ]
    },
    "statement_level": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "CONSTANT"
        },
        {
          "type": "STRING",
          "value": "VARIABLE"
        },
        {
          "type": "STRING",
          "value": "STATE"
        },
        {
          "type": "STRING",
          "value": "ACTION"
        },
        {
          "type": "STRING",
          "value": "TEMPORAL"
        }
      ]
    },
    "_proof": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "terminal_proof"
        },
        {
          "type": "SYMBOL",
          "name": "non_terminal_proof"
        }
      ]
    },
    "terminal_proof": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "PROOF"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "BY"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "ONLY"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "use_body"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "OBVIOUS"
            },
            {
              "type": "STRING",
              "value": "OMITTED"
            }
          ]
        }
      ]
    },
    "non_terminal_proof": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "PROOF"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_begin_proof"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "proof_step"
          }
        },
        {
          "type": "SYMBOL",
          "name": "qed_step"
        }
      ]
    },
    "proof_step": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_begin_proof_step"
        },
        {
          "type": "SYMBOL",
          "name": "proof_step_id"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "definition_proof_step"
            },
            {
              "type": "SYMBOL",
              "name": "have_proof_step"
            },
            {
              "type": "SYMBOL",
              "name": "witness_proof_step"
            },
            {
              "type": "SYMBOL",
              "name": "take_proof_step"
            },
            {
              "type": "SYMBOL",
              "name": "suffices_proof_step"
            },
            {
              "type": "SYMBOL",
              "name": "case_proof_step"
            },
            {
              "type": "SYMBOL",
              "name": "pick_proof_step"
            },
            {
              "type": "SYMBOL",
              "name": "use_or_hide"
            },
            {
              "type": "SYMBOL",
              "name": "instance"
            }
          ]
        }
      ]
    },
    "definition_proof_step": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "DEFINE"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "operator_definition"
              },
              {
                "type": "SYMBOL",
                "name": "function_definition"
              },
              {
                "type": "SYMBOL",
                "name": "module_definition"
              }
            ]
          }
        }
      ]
    },
    "have_proof_step": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "HAVE"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "witness_proof_step": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "WITNESS"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expr"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_expr"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "take_proof_step": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "TAKE"
        },
        {
          "type": "SYMBOL",
          "name": "_bound_or_identifier_list"
        }
      ]
    },
    "suffices_proof_step": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "SUFFICES"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expr"
            },
            {
              "type": "SYMBOL",
              "name": "assume_prove"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_proof"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "case_proof_step": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "CASE"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_proof"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pick_proof_step": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "PICK"
        },
        {
          "type": "SYMBOL",
          "name": "_bound_or_identifier_list"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_proof"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_bound_or_identifier_list": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "quantifier_bound"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "quantifier_bound"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "qed_step": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_begin_proof_step"
        },
        {
          "type": "SYMBOL",
          "name": "proof_step_id"
        },
        {
          "type": "STRING",
          "value": "QED"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_proof"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "use_or_hide": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "USE"
            },
            {
              "type": "STRING",
              "value": "HIDE"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "use_body"
        }
      ]
    },
    "use_body": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "use_body_expr"
        },
        {
          "type": "SYMBOL",
          "name": "use_body_def"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "use_body_expr"
            },
            {
              "type": "SYMBOL",
              "name": "use_body_def"
            }
          ]
        }
      ]
    },
    "use_body_expr": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expr"
            },
            {
              "type": "SYMBOL",
              "name": "module_ref"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_expr"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "module_ref"
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    "use_body_def": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "DEF"
            },
            {
              "type": "STRING",
              "value": "DEFS"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_op_or_expr"
                },
                {
                  "type": "SYMBOL",
                  "name": "module_ref"
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_op_or_expr"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "module_ref"
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "module_ref": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "MODULE"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "identifier_ref"
        }
      ]
    },
    "proof_step_id": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "PATTERN",
              "value": "\\d+|\\+|\\*"
            }
          },
          "named": true,
          "value": "level"
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": ">"
          }
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "PATTERN",
              "value": "[\\w|\\d]*"
            }
          },
          "named": true,
          "value": "name"
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "\\.*"
          }
        }
      ]
    },
    "proof_step_ref": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "PATTERN",
              "value": "\\d+|\\*"
            }
          },
          "named": true,
          "value": "level"
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": ">"
          }
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "PATTERN",
              "value": "[\\w|\\d]+"
            }
          },
          "named": true,
          "value": "name"
        }
      ]
    },
    "pcal_algorithm": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_pcal_p_algorithm"
        },
        {
          "type": "SYMBOL",
          "name": "_pcal_c_algorithm"
        }
      ]
    },
    "_pcal_p_algorithm": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "pcal_algorithm_start"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "pcal_var_decls"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "pcal_p_definitions"
              },
              "named": true,
              "value": "pcal_definitions"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "pcal_p_macro"
            },
            "named": true,
            "value": "pcal_macro"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "pcal_p_procedure"
            },
            "named": true,
            "value": "pcal_procedure"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "pcal_p_algorithm_body"
              },
              "named": true,
              "value": "pcal_algorithm_body"
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "pcal_p_process"
                },
                "named": true,
                "value": "pcal_process"
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "end"
        },
        {
          "type": "STRING",
          "value": "algorithm"
        },
        {
          "type": "SYMBOL",
          "name": "_notify_pcal_algorithm_end"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_pcal_c_algorithm": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "pcal_algorithm_start"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "pcal_var_decls"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "pcal_c_definitions"
              },
              "named": true,
              "value": "pcal_definitions"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "pcal_c_macro"
            },
            "named": true,
            "value": "pcal_macro"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "pcal_c_procedure"
            },
            "named": true,
            "value": "pcal_procedure"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "pcal_c_algorithm_body"
              },
              "named": true,
              "value": "pcal_algorithm_body"
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "pcal_c_process"
                },
                "named": true,
                "value": "pcal_process"
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        },
        {
          "type": "SYMBOL",
          "name": "_notify_pcal_algorithm_end"
        }
      ]
    },
    "pcal_algorithm_start": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "TOKEN",
              "content": {
                "type": "PREC",
                "value": 2,
                "content": {
                  "type": "STRING",
                  "value": "--algorithm"
                }
              }
            },
            {
              "type": "SYMBOL",
              "name": "fair"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_notify_pcal_algorithm_start"
        }
      ]
    },
    "fair": {
      "type": "SEQ",
      "members": [
        {
          "type": "TOKEN",
          "content": {
            "type": "PREC",
            "value": 2,
            "content": {
              "type": "STRING",
              "value": "--fair"
            }
          }
        },
        {
          "type": "STRING",
          "value": "algorithm"
        }
      ]
    },
    "pcal_p_definitions": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "define"
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "_definition"
          }
        },
        {
          "type": "STRING",
          "value": "end"
        },
        {
          "type": "STRING",
          "value": "define"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_c_definitions": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "define"
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "_definition"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_p_macro": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "pcal_macro_decl"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_p_algorithm_body"
          },
          "named": true,
          "value": "pcal_algorithm_body"
        },
        {
          "type": "STRING",
          "value": "end"
        },
        {
          "type": "STRING",
          "value": "macro"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_c_macro": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "pcal_macro_decl"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_c_algorithm_body"
          },
          "named": true,
          "value": "pcal_algorithm_body"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_macro_decl": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "macro"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "parameter",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "FIELD",
                        "name": "parameter",
                        "content": {
                          "type": "SYMBOL",
                          "name": "identifier"
                        }
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "pcal_p_procedure": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "pcal_proc_decl"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_p_algorithm_body"
          },
          "named": true,
          "value": "pcal_algorithm_body"
        },
        {
          "type": "STRING",
          "value": "end"
        },
        {
          "type": "STRING",
          "value": "procedure"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_c_procedure": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "pcal_proc_decl"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_c_algorithm_body"
          },
          "named": true,
          "value": "pcal_algorithm_body"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_proc_decl": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "procedure"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "pcal_proc_var_decl"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "pcal_proc_var_decl"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "pcal_proc_var_decls"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_p_process": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "fair"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "+"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "process"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "="
            },
            {
              "type": "SYMBOL",
              "name": "set_in"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "pcal_var_decls"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_p_algorithm_body"
          },
          "named": true,
          "value": "pcal_algorithm_body"
        },
        {
          "type": "STRING",
          "value": "end"
        },
        {
          "type": "STRING",
          "value": "process"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_c_process": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "fair"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "+"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "process"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "="
            },
            {
              "type": "SYMBOL",
              "name": "set_in"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "pcal_var_decls"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_c_algorithm_body"
          },
          "named": true,
          "value": "pcal_algorithm_body"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_var_decls": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "variable"
            },
            {
              "type": "STRING",
              "value": "variables"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "pcal_var_decl"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": ";"
                  },
                  {
                    "type": "STRING",
                    "value": ","
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "pcal_var_decl"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_var_decl": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "="
                    },
                    {
                      "type": "SYMBOL",
                      "name": "set_in"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_proc_var_decls": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "variable"
            },
            {
              "type": "STRING",
              "value": "variables"
            }
          ]
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "pcal_proc_var_decl"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": ";"
                  },
                  {
                    "type": "STRING",
                    "value": ","
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    "pcal_proc_var_decl": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_p_algorithm_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "begin"
        },
        {
          "type": "SYMBOL",
          "name": "_pcal_p_stmts"
        }
      ]
    },
    "_pcal_p_stmts": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_pcal_p_stmt"
              },
              {
                "type": "STRING",
                "value": ";"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "_pcal_p_stmt"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_c_algorithm_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "{"
            },
            {
              "type": "SYMBOL",
              "name": "_pcal_c_stmt"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ";"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_pcal_c_stmt"
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ";"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "}"
            }
          ]
        }
      ]
    },
    "_pcal_p_stmt": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_pcal_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_pcal_p_unlabeled_stmt"
        }
      ]
    },
    "_pcal_c_stmt": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_pcal_label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_pcal_c_unlabeled_stmt"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "pcal_c_algorithm_body"
              },
              "named": true,
              "value": "pcal_algorithm_body"
            }
          ]
        }
      ]
    },
    "_pcal_label": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "label",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "STRING",
                "value": ":"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "+"
                },
                {
                  "type": "STRING",
                  "value": "-"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_pcal_p_unlabeled_stmt": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "pcal_assign"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_p_if"
          },
          "named": true,
          "value": "pcal_if"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_p_while"
          },
          "named": true,
          "value": "pcal_while"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_p_either"
          },
          "named": true,
          "value": "pcal_either"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_p_with"
          },
          "named": true,
          "value": "pcal_with"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_await"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_print"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_assert"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_skip"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_return"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_goto"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_proc_call"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_macro_call"
        }
      ]
    },
    "_pcal_c_unlabeled_stmt": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "pcal_assign"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_c_if"
          },
          "named": true,
          "value": "pcal_if"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_c_while"
          },
          "named": true,
          "value": "pcal_while"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_c_either"
          },
          "named": true,
          "value": "pcal_either"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "pcal_c_with"
          },
          "named": true,
          "value": "pcal_with"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_await"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_print"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_assert"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_skip"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_return"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_goto"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_proc_call"
        },
        {
          "type": "SYMBOL",
          "name": "pcal_macro_call"
        }
      ]
    },
    "pcal_assign": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "pcal_lhs"
        },
        {
          "type": "SYMBOL",
          "name": "assign"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "vertvert"
              },
              {
                "type": "SYMBOL",
                "name": "pcal_lhs"
              },
              {
                "type": "SYMBOL",
                "name": "assign"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        }
      ]
    },
    "pcal_lhs": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "identifier_ref"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "["
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_expr"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "_expr"
                        }
                      ]
                    }
                  },
                  {
                    "type": "STRING",
                    "value": "]"
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "."
                  },
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    "pcal_p_if": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "if"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": "then"
        },
        {
          "type": "SYMBOL",
          "name": "_pcal_p_stmts"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "elsif"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "then"
              },
              {
                "type": "SYMBOL",
                "name": "_pcal_p_stmts"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "else"
                },
                {
                  "type": "SYMBOL",
                  "name": "_pcal_p_stmts"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "end"
          },
          "named": true,
          "value": "pcal_end_if"
        },
        {
          "type": "STRING",
          "value": "if"
        }
      ]
    },
    "pcal_c_if": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "if"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          },
          {
            "type": "STRING",
            "value": ")"
          },
          {
            "type": "SYMBOL",
            "name": "_pcal_c_stmt"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "else"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_pcal_c_stmt"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "pcal_p_while": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": "do"
        },
        {
          "type": "SYMBOL",
          "name": "_pcal_p_stmts"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "end"
          },
          "named": true,
          "value": "pcal_end_while"
        },
        {
          "type": "STRING",
          "value": "while"
        }
      ]
    },
    "pcal_c_while": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "SYMBOL",
          "name": "_pcal_c_stmt"
        }
      ]
    },
    "pcal_p_either": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "either"
        },
        {
          "type": "SYMBOL",
          "name": "_pcal_p_stmts"
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "or"
              },
              {
                "type": "SYMBOL",
                "name": "_pcal_p_stmts"
              }
            ]
          }
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "end"
          },
          "named": true,
          "value": "pcal_end_either"
        },
        {
          "type": "STRING",
          "value": "either"
        }
      ]
    },
    "pcal_c_either": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "either"
          },
          {
            "type": "SYMBOL",
            "name": "_pcal_c_stmt"
          },
          {
            "type": "REPEAT1",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "or"
                },
                {
                  "type": "SYMBOL",
                  "name": "_pcal_c_stmt"
                }
              ]
            }
          }
        ]
      }
    },
    "pcal_p_with": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "with"
        },
        {
          "type": "SYMBOL",
          "name": "_pcal_with_vars"
        },
        {
          "type": "STRING",
          "value": "do"
        },
        {
          "type": "SYMBOL",
          "name": "_pcal_p_stmts"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "end"
          },
          "named": true,
          "value": "pcal_end_with"
        },
        {
          "type": "STRING",
          "value": "with"
        }
      ]
    },
    "pcal_c_with": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "with"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_pcal_with_vars"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "SYMBOL",
          "name": "_pcal_c_stmt"
        }
      ]
    },
    "_pcal_with_vars": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "="
            },
            {
              "type": "SYMBOL",
              "name": "set_in"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "STRING",
                    "value": ";"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "="
                  },
                  {
                    "type": "SYMBOL",
                    "name": "set_in"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "STRING",
                  "value": ";"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pcal_await": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "await"
            },
            {
              "type": "STRING",
              "value": "when"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "pcal_print": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "print"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "pcal_assert": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "assert"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "pcal_skip": {
      "type": "STRING",
      "value": "skip"
    },
    "pcal_return": {
      "type": "STRING",
      "value": "return"
    },
    "pcal_goto": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "goto"
        },
        {
          "type": "FIELD",
          "name": "statement",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        }
      ]
    },
    "pcal_proc_call": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "call"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expr"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "pcal_macro_call": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expr"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "\\s|\\r?\\n"
    },
    {
      "type": "SYMBOL",
      "name": "comment"
    },
    {
      "type": "SYMBOL",
      "name": "block_comment"
    }
  ],
  "conflicts": [
    [
      "minus",
      "negative"
    ],
    [
      "bound_prefix_op",
      "prefix_op_symbol"
    ],
    [
      "bound_op",
      "_subscript_expr"
    ],
    [
      "bound_op",
      "prefixed_op"
    ],
    [
      "_expr",
      "label"
    ],
    [
      "_expr",
      "quantifier_bound"
    ],
    [
      "_expr",
      "restricted_quantifier_bound"
    ],
    [
      "_expr",
      "tuple_of_identifiers"
    ],
    [
      "_expr",
      "operator_definition"
    ],
    [
      "_expr",
      "_id_or_op_declaration",
      "label"
    ],
    [
      "_expr",
      "function_definition"
    ],
    [
      "subexpr_prefix"
    ],
    [
      "_expr",
      "pcal_lhs"
    ],
    [
      "bound_infix_op",
      "pcal_assign"
    ]
  ],
  "precedences": [
    [
      {
        "type": "STRING",
        "value": "17-17"
      },
      {
        "type": "STRING",
        "value": "16-16"
      },
      {
        "type": "STRING",
        "value": "15-15"
      },
      {
        "type": "STRING",
        "value": "14-14"
      },
      {
        "type": "STRING",
        "value": "13-13"
      },
      {
        "type": "STRING",
        "value": "12-12"
      },
      {
        "type": "STRING",
        "value": "11-11"
      },
      {
        "type": "STRING",
        "value": "10-10"
      },
      {
        "type": "STRING",
        "value": "9-9"
      },
      {
        "type": "STRING",
        "value": "8-8"
      },
      {
        "type": "STRING",
        "value": "7-7"
      },
      {
        "type": "STRING",
        "value": "6-6"
      },
      {
        "type": "STRING",
        "value": "5-5"
      },
      {
        "type": "STRING",
        "value": "4-4"
      },
      {
        "type": "STRING",
        "value": "3-3"
      },
      {
        "type": "STRING",
        "value": "2-2"
      },
      {
        "type": "STRING",
        "value": "1-1"
      },
      {
        "type": "STRING",
        "value": "0-0"
      }
    ]
  ],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "leading_extramodular_text"
    },
    {
      "type": "SYMBOL",
      "name": "trailing_extramodular_text"
    },
    {
      "type": "SYMBOL",
      "name": "_indent"
    },
    {
      "type": "SYMBOL",
      "name": "_bullet"
    },
    {
      "type": "SYMBOL",
      "name": "_dedent"
    },
    {
      "type": "SYMBOL",
      "name": "_begin_proof"
    },
    {
      "type": "SYMBOL",
      "name": "_begin_proof_step"
    },
    {
      "type": "STRING",
      "value": "PROOF"
    },
    {
      "type": "STRING",
      "value": "BY"
    },
    {
      "type": "STRING",
      "value": "OBVIOUS"
    },
    {
      "type": "STRING",
      "value": "OMITTED"
    },
    {
      "type": "STRING",
      "value": "QED"
    },
    {
      "type": "STRING",
      "value": "WF_"
    },
    {
      "type": "STRING",
      "value": "SF_"
    },
    {
      "type": "SYMBOL",
      "name": "_notify_pcal_algorithm_start"
    },
    {
      "type": "SYMBOL",
      "name": "_notify_pcal_algorithm_end"
    },
    {
      "type": "SYMBOL",
      "name": "_double_excl"
    },
    {
      "type": "SYMBOL",
      "name": "_error_sentinel"
    }
  ],
  "inline": [],
  "supertypes": [
    "_unit",
    "_expr",
    "_op",
    "_proof",
    "_number",
    "_primitive_value_set",
    "_number_set"
  ]
}
