{
  "schema_version": "ocme-reviewed-question-reader-v1",
  "question_id": "q-20261015-advance-20261118-r06-regular-expression-0038",
  "pilot_number": "R0054-27563",
  "number": 27563,
  "family_id": "qf-mod49-regex-bounded-language",
  "title": {
    "zh-Hant": "第 27563 題：正規表示式",
    "en": "Question 27563: The Complete Bounded Language Includes Epsilon and Terminates Epsilon Cycles"
  },
  "original_question": {
    "schema_version": "ocme-question-v0.1",
    "id": "q-20261015-advance-20261118-r06-regular-expression-0038",
    "batch_id": "batch-20261015-advance-20261118-r06-regular-expression-foundations",
    "language": "zh-Hant",
    "source_mko_ids": [
      "mko-regular-expression"
    ],
    "title_zh": "正規表示式",
    "stem_zh": "typed regex AST、finite alphabet與完整word semantics責任。操作=regex-bounded-language；資料={\"alphabet\":[\"a\",\"b\",\"c\"],\"regex\":{\"type\":\"union\",\"children\":[{\"type\":\"union\",\"children\":[{\"type\":\"concat\",\"children\":[{\"type\":\"symbol\",\"value\":\"a\"},{\"type\":\"symbol\",\"value\":\"b\"},{\"type\":\"symbol\",\"value\":\"c\"}]},{\"type\":\"star\",\"child\":{\"type\":\"symbol\",\"value\":\"b\"}}]},{\"type\":\"star\",\"child\":{\"type\":\"symbol\",\"value\":\"c\"}}]},\"max_length\":3}。請依 exact_ordered_tuple_declared_by_interface 欄序回答。",
    "answer": {
      "kind": "expression",
      "value": "([a, b, c], {children:[{child:{type:\"symbol\",value:\"c\"},type:\"star\"},{children:[{child:{type:\"symbol\",value:\"b\"},type:\"star\"},{children:[{type:\"symbol\",value:\"a\"},{type:\"symbol\",value:\"b\"},{type:\"symbol\",value:\"c\"}],type:\"concat\"}],type:\"union\"}],type:\"union\"}, 3, [[], [b], [c], [b, b], [c, c], [a, b, c], [b, b, b], [c, c, c]], 8, 是, epsilon_cycles_terminate_by_extensional_dedup)",
      "explanation_zh": "Wave6第十二層核對=([a, b, c], {children:[{child:{type:\"symbol\",value:\"c\"},type:\"star\"},{children:[{child:{type:\"symbol\",value:\"b\"},type:\"star\"},{children:[{type:\"symbol\",value:\"a\"},{type:\"symbol\",value:\"b\"},{type:\"symbol\",value:\"c\"}],type:\"concat\"}],type:\"union\"}],type:\"union\"}, 3, [[], [b], [c], [b, b], [c, c], [a, b, c], [b, b, b], [c, c, c]], 8, 是, epsilon_cycles_terminate_by_extensional_dedup)；依完整明示資料獨立重算；empty language、epsilon、union、ordered concat與star嚴格區分並處理epsilon cycle；bounded enumeration不證unbounded equivalence；shell wildcard不是核心AST。"
    },
    "difficulty": {
      "band": "undergraduate_core",
      "level": 2,
      "skills": [
        "正規表示式"
      ]
    },
    "variant": {
      "family_id": "qf-mod49-regex-bounded-language",
      "seed": 202611186038,
      "parameters": {
        "alphabet": [
          "a",
          "b",
          "c"
        ],
        "regex": {
          "type": "union",
          "children": [
            {
              "type": "union",
              "children": [
                {
                  "type": "concat",
                  "children": [
                    {
                      "type": "symbol",
                      "value": "a"
                    },
                    {
                      "type": "symbol",
                      "value": "b"
                    },
                    {
                      "type": "symbol",
                      "value": "c"
                    }
                  ]
                },
                {
                  "type": "star",
                  "child": {
                    "type": "symbol",
                    "value": "b"
                  }
                }
              ]
            },
            {
              "type": "star",
              "child": {
                "type": "symbol",
                "value": "c"
              }
            }
          ]
        },
        "max_length": 3,
        "domain": "Exact_typed_regular_expression",
        "operation": "regex-bounded-language",
        "semantic_template": "regex-bounded-language|{alphabet:[\"a\",\"b\",\"c\"],max_length:3,regex:{children:[{child:{type:\"symbol\",value:\"c\"},type:\"star\"},{children:[{child:{type:\"symbol\",value:\"b\"},type:\"star\"},{children:[{type:\"symbol\",value:\"a\"},{type:\"symbol\",value:\"b\"},{type:\"symbol\",value:\"c\"}],type:\"concat\"}],type:\"union\"}],type:\"union\"}}"
      }
    },
    "verification": {
      "status": "candidate",
      "checks": [
        "producer_exact_finite_or_symbolic_model",
        "producer_source_snapshot_check",
        "producer_substantive_template_deduplication",
        "producer_json_schema"
      ],
      "warning_zh": "候選須主端重算；不構成一般limit theorem、coverage、number-theory或language theorem證明、人工審定、Lean或Evidence。"
    },
    "provenance": {
      "generator_role": "question_producer",
      "generator_model": "model_unknown",
      "generated_at": "2026-10-15",
      "contract_version": "ocme-question-factory-v0.1"
    }
  },
  "original_english_edition": {
    "schema_version": "ocme-question-localization-v0.1",
    "question_id": "q-20261015-advance-20261118-r06-regular-expression-0038",
    "batch_id": "batch-20261015-advance-20261118-r06-regular-expression-foundations",
    "locale": "en",
    "translation_state": "ai_candidate",
    "source": {
      "question_sha256": "e244073f1359ded0ce99b50a6a46fac317be2d0d81372d76bbec97d385577840",
      "family_id": "qf-mod49-regex-bounded-language",
      "seed": 202611186038,
      "semantic_template": "regex-bounded-language|{alphabet:[\"a\",\"b\",\"c\"],max_length:3,regex:{children:[{child:{type:\"symbol\",value:\"c\"},type:\"star\"},{children:[{child:{type:\"symbol\",value:\"b\"},type:\"star\"},{children:[{type:\"symbol\",value:\"a\"},{type:\"symbol\",value:\"b\"},{type:\"symbol\",value:\"c\"}],type:\"concat\"}],type:\"union\"}],type:\"union\"}}"
    },
    "fields": {
      "title": "The Complete Bounded Language Includes Epsilon and Terminates Epsilon Cycles",
      "stem": "Use alphabet=[a, b, c] and typed regular-expression AST={\"type\":\"union\",\"children\":[{\"type\":\"union\",\"children\":[{\"type\":\"concat\",\"children\":[{\"type\":\"symbol\",\"value\":\"a\"},{\"type\":\"symbol\",\"value\":\"b\"},{\"type\":\"symbol\",\"value\":\"c\"}]},{\"type\":\"star\",\"child\":{\"type\":\"symbol\",\"value\":\"b\"}}]},{\"type\":\"star\",\"child\":{\"type\":\"symbol\",\"value\":\"c\"}}]}. Words are arrays of alphabet symbols; distinguish empty language from the language containing the empty word. Enumerate every accepted word of length at most=3. Give (alphabet, canonical_typed_AST, max_length, complete_bounded_language, word_count, bounded_enumeration_complete, epsilon_cycle_scope).",
      "answer": {
        "kind": "expression",
        "value": "([a, b, c], {children:[{child:{type:\"symbol\",value:\"c\"},type:\"star\"},{children:[{child:{type:\"symbol\",value:\"b\"},type:\"star\"},{children:[{type:\"symbol\",value:\"a\"},{type:\"symbol\",value:\"b\"},{type:\"symbol\",value:\"c\"}],type:\"concat\"}],type:\"union\"}],type:\"union\"}, 3, [[], [b], [c], [b, b], [c, c], [a, b, c], [b, b, b], [c, c, c]], 8, Yes, epsilon_cycles_terminate_by_extensional_dedup)",
        "explanation": "Retain all words in length/canonical order and the exact count. Star closure includes the empty word and uses extensional deduplication to terminate epsilon cycles. Completeness is only through the declared bound; it does not establish equivalence of the full unbounded languages. The exact result, retaining the requested order, is ([a, b, c], {children:[{child:{type:\"symbol\",value:\"c\"},type:\"star\"},{children:[{child:{type:\"symbol\",value:\"b\"},type:\"star\"},{children:[{type:\"symbol\",value:\"a\"},{type:\"symbol\",value:\"b\"},{type:\"symbol\",value:\"c\"}],type:\"concat\"}],type:\"union\"}],type:\"union\"}, 3, [[], [b], [c], [b, b], [c, c], [a, b, c], [b, b, b], [c, c, c]], 8, Yes, epsilon_cycles_terminate_by_extensional_dedup)."
      },
      "skills": [
        "The Complete Bounded Language Includes Epsilon and Terminates Epsilon Cycles"
      ],
      "verification_warning": "This is a candidate exercise. Mechanical recomputation checks only the stated conditions and this instance; it is neither a formal proof nor human review."
    }
  },
  "givens": [
    {
      "id": "G001",
      "text": {
        "zh-Hant": "typed regex AST、finite alphabet與完整word semantics責任。操作=regex-bounded-language；資料={\"alphabet\":[\"a\",\"b\",\"c\"],\"regex\":{\"type\":\"union\",\"children\":[{\"type\":\"union\",\"children\":[{\"type\":\"concat\",\"children\":[{\"type\":\"symbol\",\"value\":\"a\"},{\"type\":\"symbol\",\"value\":\"b\"},{\"type\":\"symbol\",\"value\":\"c\"}]},{\"type\":\"star\",\"child\":{\"type\":\"symbol\",\"value\":\"b\"}}]},{\"type\":\"star\",\"child\":{\"type\":\"symbol\",\"value\":\"c\"}}]},\"max_length\":3}。請依 exact_ordered_tuple_declared_by_interface 欄序回答。",
        "en": "Use alphabet=[a, b, c] and typed regular-expression AST={\"type\":\"union\",\"children\":[{\"type\":\"union\",\"children\":[{\"type\":\"concat\",\"children\":[{\"type\":\"symbol\",\"value\":\"a\"},{\"type\":\"symbol\",\"value\":\"b\"},{\"type\":\"symbol\",\"value\":\"c\"}]},{\"type\":\"star\",\"child\":{\"type\":\"symbol\",\"value\":\"b\"}}]},{\"type\":\"star\",\"child\":{\"type\":\"symbol\",\"value\":\"c\"}}]}. Words are arrays of alphabet symbols; distinguish empty language from the language containing the empty word. Enumerate every accepted word of length at most=3. Give (alphabet, canonical_typed_AST, max_length, complete_bounded_language, word_count, bounded_enumeration_complete, epsilon_cycle_scope)."
      }
    }
  ],
  "steps": [
    {
      "id": "S001",
      "uses": [
        "G001"
      ],
      "before": "source roles = [regex-bounded-language]",
      "after": "derived = [[alphabet, canonical_typed_AST, max_length, complete_bounded_language, word_count, bounded_enumeration_complete, epsilon_cycle_scope]]",
      "relation": "implies",
      "rule_id": "source_ordered_fields_without_JS",
      "conditions": [],
      "explanation": {
        "zh-Hant": "直接明列此操作與mode完整欄序，不依JavaScript、不由答案形狀猜角色；布林、字串、null與未作聲稱保持不同。",
        "en": "List the complete operation/mode field order without JavaScript or answer-shape inference;Boolean,string,null and an unclaimed result remain distinct."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S002",
      "uses": [
        "G001",
        "S001"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.ast.children[0].children[0].children[0], [a, b, c], {'type': 'symbol', 'value': 'a'}]",
      "after": "derived = [{'type': 'symbol', 'value': 'a'}, {type:\"symbol\",value:\"a\"}]",
      "relation": "implies",
      "rule_id": "Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order",
      "conditions": [],
      "explanation": {
        "zh-Hant": "逐node檢type、exact keys與symbol membership。union在raw至少兩child之後才extensional去重（canonical可剩一child）；concat保原順序，star保child。不把canonical結果當raw再多加arity限制。",
        "en": "For EACH node qualify type,exact keys and symbol membership.A union checks raw arity>=2 BEFORE extensional deduplication,so its canonical form may have one child.Concatenation retains order and star retains its child.Do not revalidate canonical output as raw input with a new arity gate."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S003",
      "uses": [
        "G001",
        "S002"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.ast.children[0].children[0].children[1], [a, b, c], {'type': 'symbol', 'value': 'b'}]",
      "after": "derived = [{'type': 'symbol', 'value': 'b'}, {type:\"symbol\",value:\"b\"}]",
      "relation": "implies",
      "rule_id": "Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order",
      "conditions": [],
      "explanation": {
        "zh-Hant": "逐node檢type、exact keys與symbol membership。union在raw至少兩child之後才extensional去重（canonical可剩一child）；concat保原順序，star保child。不把canonical結果當raw再多加arity限制。",
        "en": "For EACH node qualify type,exact keys and symbol membership.A union checks raw arity>=2 BEFORE extensional deduplication,so its canonical form may have one child.Concatenation retains order and star retains its child.Do not revalidate canonical output as raw input with a new arity gate."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S004",
      "uses": [
        "G001",
        "S003"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.ast.children[0].children[0].children[2], [a, b, c], {'type': 'symbol', 'value': 'c'}]",
      "after": "derived = [{'type': 'symbol', 'value': 'c'}, {type:\"symbol\",value:\"c\"}]",
      "relation": "implies",
      "rule_id": "Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order",
      "conditions": [],
      "explanation": {
        "zh-Hant": "逐node檢type、exact keys與symbol membership。union在raw至少兩child之後才extensional去重（canonical可剩一child）；concat保原順序，star保child。不把canonical結果當raw再多加arity限制。",
        "en": "For EACH node qualify type,exact keys and symbol membership.A union checks raw arity>=2 BEFORE extensional deduplication,so its canonical form may have one child.Concatenation retains order and star retains its child.Do not revalidate canonical output as raw input with a new arity gate."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S005",
      "uses": [
        "G001",
        "S004"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.ast.children[0].children[0], [a, b, c], {'type': 'concat', 'children': [{'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}]",
      "after": "derived = [{'type': 'concat', 'children': [{'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}, {children:[{type:\"symbol\",value:\"a\"},{type:\"symbol\",value:\"b\"},{type:\"symbol\",value:\"c\"}],type:\"concat\"}]",
      "relation": "implies",
      "rule_id": "Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order",
      "conditions": [],
      "explanation": {
        "zh-Hant": "逐node檢type、exact keys與symbol membership。union在raw至少兩child之後才extensional去重（canonical可剩一child）；concat保原順序，star保child。不把canonical結果當raw再多加arity限制。",
        "en": "For EACH node qualify type,exact keys and symbol membership.A union checks raw arity>=2 BEFORE extensional deduplication,so its canonical form may have one child.Concatenation retains order and star retains its child.Do not revalidate canonical output as raw input with a new arity gate."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S006",
      "uses": [
        "G001",
        "S005"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.ast.children[0].children[1].child, [a, b, c], {'type': 'symbol', 'value': 'b'}]",
      "after": "derived = [{'type': 'symbol', 'value': 'b'}, {type:\"symbol\",value:\"b\"}]",
      "relation": "implies",
      "rule_id": "Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order",
      "conditions": [],
      "explanation": {
        "zh-Hant": "逐node檢type、exact keys與symbol membership。union在raw至少兩child之後才extensional去重（canonical可剩一child）；concat保原順序，star保child。不把canonical結果當raw再多加arity限制。",
        "en": "For EACH node qualify type,exact keys and symbol membership.A union checks raw arity>=2 BEFORE extensional deduplication,so its canonical form may have one child.Concatenation retains order and star retains its child.Do not revalidate canonical output as raw input with a new arity gate."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S007",
      "uses": [
        "G001",
        "S006"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.ast.children[0].children[1], [a, b, c], {'type': 'star', 'child': {'type': 'symbol', 'value': 'b'}}]",
      "after": "derived = [{'type': 'star', 'child': {'type': 'symbol', 'value': 'b'}}, {child:{type:\"symbol\",value:\"b\"},type:\"star\"}]",
      "relation": "implies",
      "rule_id": "Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order",
      "conditions": [],
      "explanation": {
        "zh-Hant": "逐node檢type、exact keys與symbol membership。union在raw至少兩child之後才extensional去重（canonical可剩一child）；concat保原順序，star保child。不把canonical結果當raw再多加arity限制。",
        "en": "For EACH node qualify type,exact keys and symbol membership.A union checks raw arity>=2 BEFORE extensional deduplication,so its canonical form may have one child.Concatenation retains order and star retains its child.Do not revalidate canonical output as raw input with a new arity gate."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S008",
      "uses": [
        "G001",
        "S007"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.ast.children[0], [a, b, c], {'type': 'union', 'children': [{'type': 'concat', 'children': [{'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}, {'type': 'star', 'child': {'type': 'symbol', 'value': 'b'}}]}]",
      "after": "derived = [{'type': 'union', 'children': [{'type': 'star', 'child': {'type': 'symbol', 'value': 'b'}}, {'type': 'concat', 'children': [{'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}]}, {children:[{child:{type:\"symbol\",value:\"b\"},type:\"star\"},{children:[{type:\"symbol\",value:\"a\"},{type:\"symbol\",value:\"b\"},{type:\"symbol\",value:\"c\"}],type:\"concat\"}],type:\"union\"}]",
      "relation": "implies",
      "rule_id": "Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order",
      "conditions": [],
      "explanation": {
        "zh-Hant": "逐node檢type、exact keys與symbol membership。union在raw至少兩child之後才extensional去重（canonical可剩一child）；concat保原順序，star保child。不把canonical結果當raw再多加arity限制。",
        "en": "For EACH node qualify type,exact keys and symbol membership.A union checks raw arity>=2 BEFORE extensional deduplication,so its canonical form may have one child.Concatenation retains order and star retains its child.Do not revalidate canonical output as raw input with a new arity gate."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S009",
      "uses": [
        "G001",
        "S008"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.ast.children[1].child, [a, b, c], {'type': 'symbol', 'value': 'c'}]",
      "after": "derived = [{'type': 'symbol', 'value': 'c'}, {type:\"symbol\",value:\"c\"}]",
      "relation": "implies",
      "rule_id": "Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order",
      "conditions": [],
      "explanation": {
        "zh-Hant": "逐node檢type、exact keys與symbol membership。union在raw至少兩child之後才extensional去重（canonical可剩一child）；concat保原順序，star保child。不把canonical結果當raw再多加arity限制。",
        "en": "For EACH node qualify type,exact keys and symbol membership.A union checks raw arity>=2 BEFORE extensional deduplication,so its canonical form may have one child.Concatenation retains order and star retains its child.Do not revalidate canonical output as raw input with a new arity gate."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S010",
      "uses": [
        "G001",
        "S009"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.ast.children[1], [a, b, c], {'type': 'star', 'child': {'type': 'symbol', 'value': 'c'}}]",
      "after": "derived = [{'type': 'star', 'child': {'type': 'symbol', 'value': 'c'}}, {child:{type:\"symbol\",value:\"c\"},type:\"star\"}]",
      "relation": "implies",
      "rule_id": "Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order",
      "conditions": [],
      "explanation": {
        "zh-Hant": "逐node檢type、exact keys與symbol membership。union在raw至少兩child之後才extensional去重（canonical可剩一child）；concat保原順序，star保child。不把canonical結果當raw再多加arity限制。",
        "en": "For EACH node qualify type,exact keys and symbol membership.A union checks raw arity>=2 BEFORE extensional deduplication,so its canonical form may have one child.Concatenation retains order and star retains its child.Do not revalidate canonical output as raw input with a new arity gate."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S011",
      "uses": [
        "G001",
        "S010"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.ast, [a, b, c], {'type': 'union', 'children': [{'type': 'union', 'children': [{'type': 'concat', 'children': [{'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}, {'type': 'star', 'child': {'type': 'symbol', 'value': 'b'}}]}, {'type': 'star', 'child': {'type': 'symbol', 'value': 'c'}}]}]",
      "after": "derived = [{'type': 'union', 'children': [{'type': 'star', 'child': {'type': 'symbol', 'value': 'c'}}, {'type': 'union', 'children': [{'type': 'star', 'child': {'type': 'symbol', 'value': 'b'}}, {'type': 'concat', 'children': [{'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}]}]}, {children:[{child:{type:\"symbol\",value:\"c\"},type:\"star\"},{children:[{child:{type:\"symbol\",value:\"b\"},type:\"star\"},{children:[{type:\"symbol\",value:\"a\"},{type:\"symbol\",value:\"b\"},{type:\"symbol\",value:\"c\"}],type:\"concat\"}],type:\"union\"}],type:\"union\"}]",
      "relation": "implies",
      "rule_id": "Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order",
      "conditions": [],
      "explanation": {
        "zh-Hant": "逐node檢type、exact keys與symbol membership。union在raw至少兩child之後才extensional去重（canonical可剩一child）；concat保原順序，star保child。不把canonical結果當raw再多加arity限制。",
        "en": "For EACH node qualify type,exact keys and symbol membership.A union checks raw arity>=2 BEFORE extensional deduplication,so its canonical form may have one child.Concatenation retains order and star retains its child.Do not revalidate canonical output as raw input with a new arity gate."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S012",
      "uses": [
        "G001",
        "S011"
      ],
      "before": "source roles = [[a, b, c], 3]",
      "after": "derived = [40]",
      "relation": "implies",
      "rule_id": "Regex_COMPLETE_bounded_word_universe_not_unbounded_equivalence",
      "conditions": [],
      "explanation": {
        "zh-Hant": "界內所有words個數為Σ|alphabet|^k（含epsilon），來源budget至多4096；這限定完整枚舉範圍，不構成unbounded等價證書。",
        "en": "The bounded universe has sum |alphabet|^k words,including epsilon,and source budget<=4096.This defines complete bounded enumeration,not unbounded equivalence."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S013",
      "uses": [
        "G001",
        "S012"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[0].star_base, symbol, {'type': 'symbol', 'value': 'c'}, 3]",
      "after": "derived = [[[c]]]",
      "relation": "implies",
      "rule_id": "Regex_atomic_language_EMPTY_versus_EPS_versus_literal_symbol",
      "conditions": [],
      "explanation": {
        "zh-Hant": "empty-language無任何word；epsilon有唯一空word；symbol有其一個token，受查詢長度界限制。word是token array，不以字串split改變alphabet語義。",
        "en": "The empty language has no words;epsilon has the single empty word;a symbol has its one token within the queried length bound.Words are token arrays,not reinterpreted character splits."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S014",
      "uses": [
        "G001",
        "S013"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[0], 3, 0, [[]], [[c]]]",
      "after": "derived = [[[c]], [[c], []]]",
      "relation": "implies",
      "rule_id": "Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate",
      "conditions": [],
      "explanation": {
        "zh-Hant": "從epsilon開始加入全部仍在長度界內的base連乘，只有真正新word進下一frontier。epsilon循環不產生新word；有限alphabet、長度界與4096 budget給有限宇宙，frontier清空才完成，不把任意步數截斷當closure。",
        "en": "Start with epsilon and add ALL base concatenations within the length bound.Only genuinely new words enter the next frontier.Epsilon cycles add none.The finite alphabet/length bound and4096 budget give a finite universe;completion requires an empty frontier,not an arbitrary iteration cutoff."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S015",
      "uses": [
        "G001",
        "S014"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[0], 3, 1, [[c]], [[c]]]",
      "after": "derived = [[[c, c]], [[c, c], [c], []]]",
      "relation": "implies",
      "rule_id": "Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate",
      "conditions": [],
      "explanation": {
        "zh-Hant": "從epsilon開始加入全部仍在長度界內的base連乘，只有真正新word進下一frontier。epsilon循環不產生新word；有限alphabet、長度界與4096 budget給有限宇宙，frontier清空才完成，不把任意步數截斷當closure。",
        "en": "Start with epsilon and add ALL base concatenations within the length bound.Only genuinely new words enter the next frontier.Epsilon cycles add none.The finite alphabet/length bound and4096 budget give a finite universe;completion requires an empty frontier,not an arbitrary iteration cutoff."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S016",
      "uses": [
        "G001",
        "S015"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[0], 3, 2, [[c, c]], [[c]]]",
      "after": "derived = [[[c, c, c]], [[c, c, c], [c, c], [c], []]]",
      "relation": "implies",
      "rule_id": "Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate",
      "conditions": [],
      "explanation": {
        "zh-Hant": "從epsilon開始加入全部仍在長度界內的base連乘，只有真正新word進下一frontier。epsilon循環不產生新word；有限alphabet、長度界與4096 budget給有限宇宙，frontier清空才完成，不把任意步數截斷當closure。",
        "en": "Start with epsilon and add ALL base concatenations within the length bound.Only genuinely new words enter the next frontier.Epsilon cycles add none.The finite alphabet/length bound and4096 budget give a finite universe;completion requires an empty frontier,not an arbitrary iteration cutoff."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S017",
      "uses": [
        "G001",
        "S016"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[0], 3, 3, [[c, c, c]], [[c]]]",
      "after": "derived = [[], [[c, c, c], [c, c], [c], []]]",
      "relation": "implies",
      "rule_id": "Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate",
      "conditions": [],
      "explanation": {
        "zh-Hant": "從epsilon開始加入全部仍在長度界內的base連乘，只有真正新word進下一frontier。epsilon循環不產生新word；有限alphabet、長度界與4096 budget給有限宇宙，frontier清空才完成，不把任意步數截斷當closure。",
        "en": "Start with epsilon and add ALL base concatenations within the length bound.Only genuinely new words enter the next frontier.Epsilon cycles add none.The finite alphabet/length bound and4096 budget give a finite universe;completion requires an empty frontier,not an arbitrary iteration cutoff."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S018",
      "uses": [
        "G001",
        "S017"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[1].union[0].star_base, symbol, {'type': 'symbol', 'value': 'b'}, 3]",
      "after": "derived = [[[b]]]",
      "relation": "implies",
      "rule_id": "Regex_atomic_language_EMPTY_versus_EPS_versus_literal_symbol",
      "conditions": [],
      "explanation": {
        "zh-Hant": "empty-language無任何word；epsilon有唯一空word；symbol有其一個token，受查詢長度界限制。word是token array，不以字串split改變alphabet語義。",
        "en": "The empty language has no words;epsilon has the single empty word;a symbol has its one token within the queried length bound.Words are token arrays,not reinterpreted character splits."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S019",
      "uses": [
        "G001",
        "S018"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[1].union[0], 3, 0, [[]], [[b]]]",
      "after": "derived = [[[b]], [[b], []]]",
      "relation": "implies",
      "rule_id": "Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate",
      "conditions": [],
      "explanation": {
        "zh-Hant": "從epsilon開始加入全部仍在長度界內的base連乘，只有真正新word進下一frontier。epsilon循環不產生新word；有限alphabet、長度界與4096 budget給有限宇宙，frontier清空才完成，不把任意步數截斷當closure。",
        "en": "Start with epsilon and add ALL base concatenations within the length bound.Only genuinely new words enter the next frontier.Epsilon cycles add none.The finite alphabet/length bound and4096 budget give a finite universe;completion requires an empty frontier,not an arbitrary iteration cutoff."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S020",
      "uses": [
        "G001",
        "S019"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[1].union[0], 3, 1, [[b]], [[b]]]",
      "after": "derived = [[[b, b]], [[b, b], [b], []]]",
      "relation": "implies",
      "rule_id": "Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate",
      "conditions": [],
      "explanation": {
        "zh-Hant": "從epsilon開始加入全部仍在長度界內的base連乘，只有真正新word進下一frontier。epsilon循環不產生新word；有限alphabet、長度界與4096 budget給有限宇宙，frontier清空才完成，不把任意步數截斷當closure。",
        "en": "Start with epsilon and add ALL base concatenations within the length bound.Only genuinely new words enter the next frontier.Epsilon cycles add none.The finite alphabet/length bound and4096 budget give a finite universe;completion requires an empty frontier,not an arbitrary iteration cutoff."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S021",
      "uses": [
        "G001",
        "S020"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[1].union[0], 3, 2, [[b, b]], [[b]]]",
      "after": "derived = [[[b, b, b]], [[b, b, b], [b, b], [b], []]]",
      "relation": "implies",
      "rule_id": "Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate",
      "conditions": [],
      "explanation": {
        "zh-Hant": "從epsilon開始加入全部仍在長度界內的base連乘，只有真正新word進下一frontier。epsilon循環不產生新word；有限alphabet、長度界與4096 budget給有限宇宙，frontier清空才完成，不把任意步數截斷當closure。",
        "en": "Start with epsilon and add ALL base concatenations within the length bound.Only genuinely new words enter the next frontier.Epsilon cycles add none.The finite alphabet/length bound and4096 budget give a finite universe;completion requires an empty frontier,not an arbitrary iteration cutoff."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S022",
      "uses": [
        "G001",
        "S021"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[1].union[0], 3, 3, [[b, b, b]], [[b]]]",
      "after": "derived = [[], [[b, b, b], [b, b], [b], []]]",
      "relation": "implies",
      "rule_id": "Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate",
      "conditions": [],
      "explanation": {
        "zh-Hant": "從epsilon開始加入全部仍在長度界內的base連乘，只有真正新word進下一frontier。epsilon循環不產生新word；有限alphabet、長度界與4096 budget給有限宇宙，frontier清空才完成，不把任意步數截斷當closure。",
        "en": "Start with epsilon and add ALL base concatenations within the length bound.Only genuinely new words enter the next frontier.Epsilon cycles add none.The finite alphabet/length bound and4096 budget give a finite universe;completion requires an empty frontier,not an arbitrary iteration cutoff."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S023",
      "uses": [
        "G001",
        "S022"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[1].union[1].concat[0], symbol, {'type': 'symbol', 'value': 'a'}, 3]",
      "after": "derived = [[[a]]]",
      "relation": "implies",
      "rule_id": "Regex_atomic_language_EMPTY_versus_EPS_versus_literal_symbol",
      "conditions": [],
      "explanation": {
        "zh-Hant": "empty-language無任何word；epsilon有唯一空word；symbol有其一個token，受查詢長度界限制。word是token array，不以字串split改變alphabet語義。",
        "en": "The empty language has no words;epsilon has the single empty word;a symbol has its one token within the queried length bound.Words are token arrays,not reinterpreted character splits."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S024",
      "uses": [
        "G001",
        "S023"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[1].union[1], 0, 3, [[]], [[a]]]",
      "after": "derived = [[[a]]]",
      "relation": "implies",
      "rule_id": "Regex_EACH_ordered_concatenation_complete_cartesian_word_products",
      "conditions": [],
      "explanation": {
        "zh-Hant": "依原concat次序取全部prefix×下一child之word concatenations；只截去過長word。總長<=m時各片段長亦<=m，所以不會因截斷漏掉合法組合。",
        "en": "In ORIGINAL concatenation order take EVERY prefix/next-child word concatenation and discard only excessive length.If total length<=m,every factor length<=m,so truncation loses no allowed combination."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S025",
      "uses": [
        "G001",
        "S024"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[1].union[1].concat[1], symbol, {'type': 'symbol', 'value': 'b'}, 3]",
      "after": "derived = [[[b]]]",
      "relation": "implies",
      "rule_id": "Regex_atomic_language_EMPTY_versus_EPS_versus_literal_symbol",
      "conditions": [],
      "explanation": {
        "zh-Hant": "empty-language無任何word；epsilon有唯一空word；symbol有其一個token，受查詢長度界限制。word是token array，不以字串split改變alphabet語義。",
        "en": "The empty language has no words;epsilon has the single empty word;a symbol has its one token within the queried length bound.Words are token arrays,not reinterpreted character splits."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S026",
      "uses": [
        "G001",
        "S025"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[1].union[1], 1, 3, [[a]], [[b]]]",
      "after": "derived = [[[a, b]]]",
      "relation": "implies",
      "rule_id": "Regex_EACH_ordered_concatenation_complete_cartesian_word_products",
      "conditions": [],
      "explanation": {
        "zh-Hant": "依原concat次序取全部prefix×下一child之word concatenations；只截去過長word。總長<=m時各片段長亦<=m，所以不會因截斷漏掉合法組合。",
        "en": "In ORIGINAL concatenation order take EVERY prefix/next-child word concatenation and discard only excessive length.If total length<=m,every factor length<=m,so truncation loses no allowed combination."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S027",
      "uses": [
        "G001",
        "S026"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[1].union[1].concat[2], symbol, {'type': 'symbol', 'value': 'c'}, 3]",
      "after": "derived = [[[c]]]",
      "relation": "implies",
      "rule_id": "Regex_atomic_language_EMPTY_versus_EPS_versus_literal_symbol",
      "conditions": [],
      "explanation": {
        "zh-Hant": "empty-language無任何word；epsilon有唯一空word；symbol有其一個token，受查詢長度界限制。word是token array，不以字串split改變alphabet語義。",
        "en": "The empty language has no words;epsilon has the single empty word;a symbol has its one token within the queried length bound.Words are token arrays,not reinterpreted character splits."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S028",
      "uses": [
        "G001",
        "S027"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[1].union[1], 2, 3, [[a, b]], [[c]]]",
      "after": "derived = [[[a, b, c]]]",
      "relation": "implies",
      "rule_id": "Regex_EACH_ordered_concatenation_complete_cartesian_word_products",
      "conditions": [],
      "explanation": {
        "zh-Hant": "依原concat次序取全部prefix×下一child之word concatenations；只截去過長word。總長<=m時各片段長亦<=m，所以不會因截斷漏掉合法組合。",
        "en": "In ORIGINAL concatenation order take EVERY prefix/next-child word concatenation and discard only excessive length.If total length<=m,every factor length<=m,so truncation loses no allowed combination."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S029",
      "uses": [
        "G001",
        "S028"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language.union[1], 3, [[[b, b, b], [b, b], [b], []], [[a, b, c]]]]",
      "after": "derived = [[[a, b, c], [b, b, b], [b, b], [b], []]]",
      "relation": "implies",
      "rule_id": "Regex_union_ALL_child_languages_extensional_bound",
      "conditions": [],
      "explanation": {
        "zh-Hant": "union收全部child語言，重複word只保一個，且不改symbol次序。結構歸納使每個長度界內word的包含／排除都有完整依據。",
        "en": "Union includes ALL child languages,retaining each word once without reordering its symbols.Structural induction accounts for inclusion/exclusion of every word within the bound."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    },
    {
      "id": "S030",
      "uses": [
        "G001",
        "S029"
      ],
      "before": "source roles = [Regex ORIGINAL bounded.language, 3, [[[c, c, c], [c, c], [c], []], [[a, b, c], [b, b, b], [b, b], [b], []]]]",
      "after": "derived = [[[a, b, c], [b, b, b], [b, b], [b], [c, c, c], [c, c], [c], []]]",
      "relation": "implies",
      "rule_id": "Regex_union_ALL_child_languages_extensional_bound",
      "conditions": [],
      "explanation": {
        "zh-Hant": "union收全部child語言，重複word只保一個，且不改symbol次序。結構歸納使每個長度界內word的包含／排除都有完整依據。",
        "en": "Union includes ALL child languages,retaining each word once without reordering its symbols.Structural induction accounts for inclusion/exclusion of every word within the bound."
      },
      "reverse_audit": {
        "kind": "premise_and_result_audit",
        "explanation": {
          "zh-Hant": "回查原始資料、操作數、完整範圍與本步前提；有限見證、條件式定理引用與形式證明分開。",
          "en": "Reverse-check original data,operands,complete scope and premises;finite witnesses,conditional theorem use and formal proof remain distinct."
        }
      },
      "arithmetic": null
    }
  ],
  "math_model": {
    "result": [
      [
        "a",
        "b",
        "c"
      ],
      {
        "type": "union",
        "children": [
          {
            "type": "star",
            "child": {
              "type": "symbol",
              "value": "c"
            }
          },
          {
            "type": "union",
            "children": [
              {
                "type": "star",
                "child": {
                  "type": "symbol",
                  "value": "b"
                }
              },
              {
                "type": "concat",
                "children": [
                  {
                    "type": "symbol",
                    "value": "a"
                  },
                  {
                    "type": "symbol",
                    "value": "b"
                  },
                  {
                    "type": "symbol",
                    "value": "c"
                  }
                ]
              }
            ]
          }
        ]
      },
      3,
      [
        [],
        [
          "b"
        ],
        [
          "c"
        ],
        [
          "b",
          "b"
        ],
        [
          "c",
          "c"
        ],
        [
          "a",
          "b",
          "c"
        ],
        [
          "b",
          "b",
          "b"
        ],
        [
          "c",
          "c",
          "c"
        ]
      ],
      8,
      true,
      "epsilon_cycles_terminate_by_extensional_dedup"
    ]
  },
  "conclusion": {
    "canonical_value": "([a, b, c], {children:[{child:{type:\"symbol\",value:\"c\"},type:\"star\"},{children:[{child:{type:\"symbol\",value:\"b\"},type:\"star\"},{children:[{type:\"symbol\",value:\"a\"},{type:\"symbol\",value:\"b\"},{type:\"symbol\",value:\"c\"}],type:\"concat\"}],type:\"union\"}],type:\"union\"}, 3, [[], [b], [c], [b, b], [c, c], [a, b, c], [b, b, b], [c, c, c]], 8, 是, epsilon_cycles_terminate_by_extensional_dedup)",
    "explanation": {
      "zh-Hant": "依上列完整代值及條件核對得到原題答案；原題編號、格式與狀態保持不變。",
      "en": "The full substitutions and premise checks give the original answer; source identity,format and status are unchanged."
    }
  },
  "definition_note": {
    "zh-Hant": "沿用原題明示的論域、假設與來源 MKO 定義。本題已完成第二對話數理與中英語義覆核，並由原始參數逐題獨立重算模型、答案與每個算術步驟；原題仍為 candidate。",
    "en": "Use the original question domain, assumptions and cited MKO definitions. This item has second-context mathematical and bilingual review, with the model, answer and every arithmetic step independently recomputed from the original parameters; the source question remains a candidate."
  },
  "source": {
    "input_commit": "0f7be61e2c22317a4075561dc822c87d881a50db",
    "question_binding": {
      "batch_id": "batch-20261015-advance-20261118-r06-regular-expression-foundations",
      "batch_path": "public/data/questions/batches/batch-20261015-advance-20261118-r06-regular-expression-foundations/questions.jsonl",
      "batch_sha256": "b5a9bdb4921ed6644e4166cdf8195037033c5a94e7c2372abaf5f100e2ec370d",
      "original_line": 38,
      "original_line_sha256": "78a011cf11e3d35c6f42f889f1852f7d3e75ec9e17801ff66fb4e7b1950d5943",
      "question_compact_sha256": "e244073f1359ded0ce99b50a6a46fac317be2d0d81372d76bbec97d385577840",
      "english_row_compact_sha256": "431fae7d321e55de02a2d00816497762383c032850dccd619ad54f86eafdbd47",
      "english_manifest_path": "public/data/i18n/editions/batch-20261015-advance-20261118-r06-regular-expression-foundations.en.json",
      "english_rows_path": "public/data/i18n/questions/batch-20261015-advance-20261118-r06-regular-expression-foundations.en.jsonl"
    },
    "mko_bindings": {
      "mko-regular-expression": {
        "sha256": "0d4eaa52f48c71240a6e4166e4f1a4ddb3b607f21c102c49d944833b87583695",
        "english_sha256": "22c20144ec938506d8fa94ef6bff9ebea017c5799c2428a541f7b478c7e8182e",
        "original_path": "public/data/mko/regular-expression.json",
        "english_path": "public/data/i18n/editions/mko-regular-expression.en.json"
      }
    },
    "selected_manifest_sha256": "5233edba9654a6cffd8b6b2d83c932f82ded15f9c0b7c733bd049943e672acff",
    "selected_part_sha256": "ad40cc18f9292c43924a7679f3af46574a5284aa5447f5f7f78a0de98840acb8",
    "original_candidate_sha256": "d4bea39f75d9a68fa84909dcda1903f841534b076353ecd3adf4822d813abc8a",
    "original_candidate_line_sha256": "d4bea39f75d9a68fa84909dcda1903f841534b076353ecd3adf4822d813abc8a"
  },
  "historical_source_state": {
    "review_state": {
      "derivation": "candidate_authored_and_locally_checked",
      "source_question_state": "candidate",
      "independent_AI_or_human_review": "NOT_PERFORMED",
      "formalization": "not_formalized",
      "Lean": "NOT_RUN"
    },
    "scope_note": {
      "zh-Hant": "來源綁定教學推導候選；精確核對不等於獨立AI／人工審查或一般形式證明。原題、答案、MKO、公式、AST與歷史不變。",
      "en": "Source-bound pedagogical derivation candidate.Exact checking is not independent AI/human review or general formal proof.Original questions,answers,MKOs,formulas,ASTs and history remain unchanged."
    },
    "label": "Frozen producer metadata; current per-question review is separate below."
  },
  "revision": {
    "id": "review-20261026-010-p55",
    "review_date": "2026-10-26",
    "owner_authorized_reader_publication": true,
    "scope": "One hundred sixty family prototypes and their mathematical/bilingual reasoning variants, stems, boundary statements and every distinct explanation shape were reviewed in a context independent of the producer; parameter substitutions, source bindings, full math models, both answer strings and every arithmetic step were independently reconstructed per question from the original parameters only, with negative controls. This grouped method does not claim a separate literal AI reading of every repeated sentence or an extra AI voter.",
    "review_receipts": {
      "semantic_review_sha256": "0a76d8e93c08bb16998a0483f3dfc0504f269fc3e1982e6cd868cab0a2856d54",
      "question_first_witness_sha256": "09127b736c225714dfa0b7ceb0e6a6e66df27438b480cad8217d3c2f99ce9437"
    },
    "status": "second_context_reviewed",
    "mathematical_semantics": true,
    "bilingual_semantics": true,
    "steps_reviewed": 30,
    "method": "family_template_semantic_review_plus_independent_per_instance_reconstruction",
    "exact_question_first_check": {
      "model_sha256": "5aaaf2f9342ef0d6681707e17bac5dade711dd40761401f75f9383103b326127",
      "arithmetic_steps": 0
    },
    "uses_answer_as_premise": false,
    "human_review": "NOT_PERFORMED",
    "formalization": "not_formalized",
    "Lean": "NOT_RUN",
    "Canonical_truth_promotion": false,
    "authority": "Owner-authorized reviewed reader publication; original question/candidate states remain historical and unchanged."
  }
}
