Step-by-step derivation
S001 · implies
Before
source roles = [regex-boundary]
After
derived = [[mode, left_AST, right_AST, left_bounded_language, right_bounded_language, bounded_languages_equal, order_irrelevance_claim, boundary]]
Conditions: none
List the complete operation/mode field order without JavaScript or answer-shape inference;Boolean,string,null and an unclaimed result remain distinct.
Step identifiers and dependencies
Rule: source_ordered_fields_without_JS · Uses: G001
S002 · implies
Before
source roles = [Regex boundary LEFT.ast.children[0], [a, b, c], {'type': 'symbol', 'value': 'c'}]After
derived = [{'type': 'symbol', 'value': 'c'}, {type:"symbol",value:"c"}]Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order · Uses: G001, S001
S003 · implies
Before
source roles = [Regex boundary LEFT.ast.children[1], [a, b, c], {'type': 'symbol', 'value': 'c'}]After
derived = [{'type': 'symbol', 'value': 'c'}, {type:"symbol",value:"c"}]Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order · Uses: G001, S002
S004 · implies
Before
source roles = [Regex boundary LEFT.ast.children[2], [a, b, c], {'type': 'symbol', 'value': 'a'}]After
derived = [{'type': 'symbol', 'value': 'a'}, {type:"symbol",value:"a"}]Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order · Uses: G001, S003
S005 · implies
Before
source roles = [Regex boundary LEFT.ast, [a, b, c], {'type': 'concat', 'children': [{'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'a'}]}]After
derived = [{'type': 'concat', 'children': [{'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'a'}]}, {children:[{type:"symbol",value:"c"},{type:"symbol",value:"c"},{type:"symbol",value:"a"}],type:"concat"}]Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order · Uses: G001, S004
S006 · implies
Before
source roles = [[a, b, c], 3]
After
derived = [40]
Conditions: none
The bounded universe has sum |alphabet|^k words,including epsilon,and source budget<=4096.This defines complete bounded enumeration,not unbounded equivalence.
Step identifiers and dependencies
Rule: Regex_COMPLETE_bounded_word_universe_not_unbounded_equivalence · Uses: G001, S005
S007 · implies
Before
source roles = [Regex boundary LEFT.language.concat[0], symbol, {'type': 'symbol', 'value': 'c'}, 3]After
derived = [[[c]]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_atomic_language_EMPTY_versus_EPS_versus_literal_symbol · Uses: G001, S006
S008 · implies
Before
source roles = [Regex boundary LEFT.language, 0, 3, [[]], [[c]]]
After
derived = [[[c]]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_ordered_concatenation_complete_cartesian_word_products · Uses: G001, S007
S009 · implies
Before
source roles = [Regex boundary LEFT.language.concat[1], symbol, {'type': 'symbol', 'value': 'c'}, 3]After
derived = [[[c]]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_atomic_language_EMPTY_versus_EPS_versus_literal_symbol · Uses: G001, S008
S010 · implies
Before
source roles = [Regex boundary LEFT.language, 1, 3, [[c]], [[c]]]
After
derived = [[[c, c]]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_ordered_concatenation_complete_cartesian_word_products · Uses: G001, S009
S011 · implies
Before
source roles = [Regex boundary LEFT.language.concat[2], symbol, {'type': 'symbol', 'value': 'a'}, 3]After
derived = [[[a]]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_atomic_language_EMPTY_versus_EPS_versus_literal_symbol · Uses: G001, S010
S012 · implies
Before
source roles = [Regex boundary LEFT.language, 2, 3, [[c, c]], [[a]]]
After
derived = [[[c, c, a]]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_ordered_concatenation_complete_cartesian_word_products · Uses: G001, S011
S013 · implies
Before
source roles = [Regex boundary RIGHT.ast.children[0], [a, b, c], {'type': 'symbol', 'value': 'a'}]After
derived = [{'type': 'symbol', 'value': 'a'}, {type:"symbol",value:"a"}]Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order · Uses: G001, S012
S014 · implies
Before
source roles = [Regex boundary RIGHT.ast.children[1], [a, b, c], {'type': 'symbol', 'value': 'c'}]After
derived = [{'type': 'symbol', 'value': 'c'}, {type:"symbol",value:"c"}]Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order · Uses: G001, S013
S015 · implies
Before
source roles = [Regex boundary RIGHT.ast.children[2], [a, b, c], {'type': 'symbol', 'value': 'c'}]After
derived = [{'type': 'symbol', 'value': 'c'}, {type:"symbol",value:"c"}]Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order · Uses: G001, S014
S016 · implies
Before
source roles = [Regex boundary RIGHT.ast, [a, b, c], {'type': 'concat', 'children': [{'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'c'}]}]After
derived = [{'type': 'concat', 'children': [{'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'c'}]}, {children:[{type:"symbol",value:"a"},{type:"symbol",value:"c"},{type:"symbol",value:"c"}],type:"concat"}]Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_typed_node_exact_keys_symbol_scope_union_set_concat_order · Uses: G001, S015
S017 · implies
Before
source roles = [[a, b, c], 3]
After
derived = [40]
Conditions: none
The bounded universe has sum |alphabet|^k words,including epsilon,and source budget<=4096.This defines complete bounded enumeration,not unbounded equivalence.
Step identifiers and dependencies
Rule: Regex_COMPLETE_bounded_word_universe_not_unbounded_equivalence · Uses: G001, S016
S018 · implies
Before
source roles = [Regex boundary RIGHT.language.concat[0], symbol, {'type': 'symbol', 'value': 'a'}, 3]After
derived = [[[a]]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_atomic_language_EMPTY_versus_EPS_versus_literal_symbol · Uses: G001, S017
S019 · implies
Before
source roles = [Regex boundary RIGHT.language, 0, 3, [[]], [[a]]]
After
derived = [[[a]]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_ordered_concatenation_complete_cartesian_word_products · Uses: G001, S018
S020 · implies
Before
source roles = [Regex boundary RIGHT.language.concat[1], symbol, {'type': 'symbol', 'value': 'c'}, 3]After
derived = [[[c]]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_atomic_language_EMPTY_versus_EPS_versus_literal_symbol · Uses: G001, S019
S021 · implies
Before
source roles = [Regex boundary RIGHT.language, 1, 3, [[a]], [[c]]]
After
derived = [[[a, c]]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_ordered_concatenation_complete_cartesian_word_products · Uses: G001, S020
S022 · implies
Before
source roles = [Regex boundary RIGHT.language.concat[2], symbol, {'type': 'symbol', 'value': 'c'}, 3]After
derived = [[[c]]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_atomic_language_EMPTY_versus_EPS_versus_literal_symbol · Uses: G001, S021
S023 · implies
Before
source roles = [Regex boundary RIGHT.language, 2, 3, [[a, c]], [[c]]]
After
derived = [[[a, c, c]]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_EACH_ordered_concatenation_complete_cartesian_word_products · Uses: G001, S022
S024 · implies
Before
source roles = [{'type': 'concat', 'children': [{'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'a'}]}, {'type': 'concat', 'children': [{'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'c'}]}, 3]After
derived = [[[c, c, a]], [[a, c, c]], No, No]
Conditions: none
Concatenation order is semantic.These complete bounded languages actually differ;concatenation is not a commutative union.
Step identifiers and dependencies
Rule: Regex_ACTUAL_ordered_concat_language_difference · Uses: G001, S023