Step-by-step derivation
S001 · implies
Before
source roles = [regex-word-membership]
After
derived = [[alphabet, canonical_typed_AST, word, member, accepted_words_at_same_length, membership_scope]]
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 ORIGINAL membership.ast.children[0].children[0].children[0].children[0], [a, b, c], {'type': 'symbol', 'value': 'b'}]After
derived = [{'type': 'symbol', 'value': 'b'}, {type:"symbol",value:"b"}]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 ORIGINAL membership.ast.children[0].children[0].children[0].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 ORIGINAL membership.ast.children[0].children[0].children[0].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 ORIGINAL membership.ast.children[0].children[0].children[0].children[3], [a, b, c], {'type': 'symbol', 'value': 'b'}]After
derived = [{'type': 'symbol', 'value': 'b'}, {type:"symbol",value:"b"}]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 = [Regex ORIGINAL membership.ast.children[0].children[0].children[0].children[4], [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, S005
S007 · implies
Before
source roles = [Regex ORIGINAL membership.ast.children[0].children[0].children[0], [a, b, c], {'type': 'concat', 'children': [{'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}]After
derived = [{'type': 'concat', 'children': [{'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}, {children:[{type:"symbol",value:"b"},{type:"symbol",value:"c"},{type:"symbol",value:"a"},{type:"symbol",value:"b"},{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, S006
S008 · implies
Before
source roles = [Regex ORIGINAL membership.ast.children[0].children[0].children[1].child, [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, S007
S009 · implies
Before
source roles = [Regex ORIGINAL membership.ast.children[0].children[0].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"}]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, S008
S010 · implies
Before
source roles = [Regex ORIGINAL membership.ast.children[0].children[0], [a, b, c], {'type': 'union', 'children': [{'type': 'concat', 'children': [{'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}, {'type': 'star', 'child': {'type': 'symbol', 'value': 'c'}}]}]After
derived = [{'type': 'union', 'children': [{'type': 'star', 'child': {'type': 'symbol', 'value': 'c'}}, {'type': 'concat', 'children': [{'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}]}, {children:[{child:{type:"symbol",value:"c"},type:"star"},{children:[{type:"symbol",value:"b"},{type:"symbol",value:"c"},{type:"symbol",value:"a"},{type:"symbol",value:"b"},{type:"symbol",value:"c"}],type:"concat"}],type:"union"}]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, S009
S011 · implies
Before
source roles = [Regex ORIGINAL membership.ast.children[0].children[1].child, [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, S010
S012 · implies
Before
source roles = [Regex ORIGINAL membership.ast.children[0].children[1], [a, b, c], {'type': 'star', 'child': {'type': 'symbol', 'value': 'a'}}]After
derived = [{'type': 'star', 'child': {'type': 'symbol', 'value': 'a'}}, {child:{type:"symbol",value:"a"},type:"star"}]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, S011
S013 · implies
Before
source roles = [Regex ORIGINAL membership.ast.children[0], [a, b, c], {'type': 'union', 'children': [{'type': 'union', 'children': [{'type': 'concat', 'children': [{'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}, {'type': 'star', 'child': {'type': 'symbol', 'value': 'c'}}]}, {'type': 'star', 'child': {'type': 'symbol', 'value': 'a'}}]}]After
derived = [{'type': 'union', 'children': [{'type': 'star', 'child': {'type': 'symbol', 'value': 'a'}}, {'type': 'union', 'children': [{'type': 'star', 'child': {'type': 'symbol', 'value': 'c'}}, {'type': 'concat', 'children': [{'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}]}]}, {children:[{child:{type:"symbol",value:"a"},type:"star"},{children:[{child:{type:"symbol",value:"c"},type:"star"},{children:[{type:"symbol",value:"b"},{type:"symbol",value:"c"},{type:"symbol",value:"a"},{type:"symbol",value:"b"},{type:"symbol",value:"c"}],type:"concat"}],type:"union"}],type:"union"}]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 ORIGINAL membership.ast.children[1].child, [a, b, c], {'type': 'symbol', 'value': 'b'}]After
derived = [{'type': 'symbol', 'value': 'b'}, {type:"symbol",value:"b"}]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 ORIGINAL membership.ast.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"}]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 ORIGINAL membership.ast, [a, b, c], {'type': 'union', 'children': [{'type': 'union', 'children': [{'type': 'union', 'children': [{'type': 'concat', 'children': [{'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}, {'type': 'star', 'child': {'type': 'symbol', 'value': 'c'}}]}, {'type': 'star', 'child': {'type': 'symbol', 'value': 'a'}}]}, {'type': 'star', 'child': {'type': 'symbol', 'value': 'b'}}]}]After
derived = [{'type': 'union', 'children': [{'type': 'star', 'child': {'type': 'symbol', 'value': 'b'}}, {'type': 'union', 'children': [{'type': 'star', 'child': {'type': 'symbol', 'value': 'a'}}, {'type': 'union', 'children': [{'type': 'star', 'child': {'type': 'symbol', 'value': 'c'}}, {'type': 'concat', 'children': [{'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}]}]}]}, {children:[{child:{type:"symbol",value:"b"},type:"star"},{children:[{child:{type:"symbol",value:"a"},type:"star"},{children:[{child:{type:"symbol",value:"c"},type:"star"},{children:[{type:"symbol",value:"b"},{type:"symbol",value:"c"},{type:"symbol",value:"a"},{type:"symbol",value:"b"},{type:"symbol",value:"c"}],type:"concat"}],type:"union"}],type:"union"}],type:"union"}]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], 4]
After
derived = [121]
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 ORIGINAL membership.language.union[0].star_base, symbol, {'type': 'symbol', 'value': 'b'}, 4]After
derived = [[[b]]]
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 ORIGINAL membership.language.union[0], 4, 0, [[]], [[b]]]
After
derived = [[[b]], [[b], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S018
S020 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[0], 4, 1, [[b]], [[b]]]
After
derived = [[[b, b]], [[b, b], [b], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S019
S021 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[0], 4, 2, [[b, b]], [[b]]]
After
derived = [[[b, b, b]], [[b, b, b], [b, b], [b], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S020
S022 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[0], 4, 3, [[b, b, b]], [[b]]]
After
derived = [[[b, b, b, b]], [[b, b, b, b], [b, b, b], [b, b], [b], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S021
S023 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[0], 4, 4, [[b, b, b, b]], [[b]]]
After
derived = [[], [[b, b, b, b], [b, b, b], [b, b], [b], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S022
S024 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[0].star_base, symbol, {'type': 'symbol', 'value': 'a'}, 4]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, S023
S025 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[0], 4, 0, [[]], [[a]]]
After
derived = [[[a]], [[a], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S024
S026 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[0], 4, 1, [[a]], [[a]]]
After
derived = [[[a, a]], [[a, a], [a], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S025
S027 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[0], 4, 2, [[a, a]], [[a]]]
After
derived = [[[a, a, a]], [[a, a, a], [a, a], [a], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S026
S028 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[0], 4, 3, [[a, a, a]], [[a]]]
After
derived = [[[a, a, a, a]], [[a, a, a, a], [a, a, a], [a, a], [a], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S027
S029 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[0], 4, 4, [[a, a, a, a]], [[a]]]
After
derived = [[], [[a, a, a, a], [a, a, a], [a, a], [a], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S028
S030 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[0].star_base, symbol, {'type': 'symbol', 'value': 'c'}, 4]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, S029
S031 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[0], 4, 0, [[]], [[c]]]
After
derived = [[[c]], [[c], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S030
S032 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[0], 4, 1, [[c]], [[c]]]
After
derived = [[[c, c]], [[c, c], [c], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S031
S033 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[0], 4, 2, [[c, c]], [[c]]]
After
derived = [[[c, c, c]], [[c, c, c], [c, c], [c], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S032
S034 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[0], 4, 3, [[c, c, c]], [[c]]]
After
derived = [[[c, c, c, c]], [[c, c, c, c], [c, c, c], [c, c], [c], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S033
S035 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[0], 4, 4, [[c, c, c, c]], [[c]]]
After
derived = [[], [[c, c, c, c], [c, c, c], [c, c], [c], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_STAR_each_extensional_frontier_closure_EPS_cycles_terminate · Uses: G001, S034
S036 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[1].concat[0], symbol, {'type': 'symbol', 'value': 'b'}, 4]After
derived = [[[b]]]
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, S035
S037 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[1], 0, 4, [[]], [[b]]]
After
derived = [[[b]]]
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, S036
S038 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[1].concat[1], symbol, {'type': 'symbol', 'value': 'c'}, 4]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, S037
S039 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[1], 1, 4, [[b]], [[c]]]
After
derived = [[[b, 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, S038
S040 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[1].concat[2], symbol, {'type': 'symbol', 'value': 'a'}, 4]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, S039
S041 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[1], 2, 4, [[b, c]], [[a]]]
After
derived = [[[b, 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, S040
S042 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[1].concat[3], symbol, {'type': 'symbol', 'value': 'b'}, 4]After
derived = [[[b]]]
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, S041
S043 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[1], 3, 4, [[b, c, a]], [[b]]]
After
derived = [[[b, c, a, b]]]
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, S042
S044 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[1].concat[4], symbol, {'type': 'symbol', 'value': 'c'}, 4]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, S043
S045 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1].union[1], 4, 4, [[b, c, a, b]], [[c]]]
After
derived = [[]]
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, S044
S046 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1].union[1], 4, [[[c, c, c, c], [c, c, c], [c, c], [c], []], []]]
After
derived = [[[c, c, c, c], [c, c, c], [c, c], [c], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_union_ALL_child_languages_extensional_bound · Uses: G001, S045
S047 · implies
Before
source roles = [Regex ORIGINAL membership.language.union[1], 4, [[[a, a, a, a], [a, a, a], [a, a], [a], []], [[c, c, c, c], [c, c, c], [c, c], [c], []]]]
After
derived = [[[a, a, a, a], [a, a, a], [a, a], [a], [c, c, c, c], [c, c, c], [c, c], [c], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_union_ALL_child_languages_extensional_bound · Uses: G001, S046
S048 · implies
Before
source roles = [Regex ORIGINAL membership.language, 4, [[[b, b, b, b], [b, b, b], [b, b], [b], []], [[a, a, a, a], [a, a, a], [a, a], [a], [c, c, c, c], [c, c, c], [c, c], [c], []]]]
After
derived = [[[a, a, a, a], [a, a, a], [a, a], [a], [b, b, b, b], [b, b, b], [b, b], [b], [c, c, c, c], [c, c, c], [c, c], [c], []]]
Conditions: none
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.
Step identifiers and dependencies
Rule: Regex_union_ALL_child_languages_extensional_bound · Uses: G001, S047
S049 · implies
Before
source roles = [[a, b, c], {'type': 'union', 'children': [{'type': 'star', 'child': {'type': 'symbol', 'value': 'b'}}, {'type': 'union', 'children': [{'type': 'star', 'child': {'type': 'symbol', 'value': 'a'}}, {'type': 'union', 'children': [{'type': 'star', 'child': {'type': 'symbol', 'value': 'c'}}, {'type': 'concat', 'children': [{'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}, {'type': 'symbol', 'value': 'a'}, {'type': 'symbol', 'value': 'b'}, {'type': 'symbol', 'value': 'c'}]}]}]}]}, [b, c, a, b], 4]After
derived = [No, [[a, a, a, a], [b, b, b, b], [c, c, c, c]]]
Conditions: none
Recompute through the FULL queried length and retain every accepted word at that length.The empty word differs from a symbol;absence from an insufficient shorter bound is not nonmembership.
Step identifiers and dependencies
Rule: Regex_WHOLE_queried_word_exact_membership_complete_same_length_slice · Uses: G001, S048