HerbCore.jl Documentation
HerbCore.AbstractConstraint — Type
Represents a constraint for a AbstractGrammar. Concrete implementations can be found in HerbConstraints.jl.
HerbCore.AbstractGrammar — Type
AbstractGrammarAbstract type representing all grammars. It is assumed that all grammar structs have at least the following attributes:
rules::Vector{Any}: A list of RHS of rules (subexpressions).types::Vector{Symbol}: A list of LHS of rules (types, all symbols).isterminal::BitVector: A bitvector where bitirepresents whether ruleiis terminal.iseval::BitVector: A bitvector where bitirepresents whether rule i is an eval rule.bytype::Dict{Symbol,Vector{Int}}: A dictionary that maps a type to all rules of said type.domains::Dict{Symbol, BitVector}: A dictionary that maps a type to a domain bitvector. The domain bitvector has bitiset to true iff theith rule is of this type.childtypes::Vector{Vector{Symbol}}: A list of types of the children for each rule.
If a rule is terminal, the corresponding list is empty.
log_probabilities::Union{Vector{Real}, Nothing}: A list of probabilities for each rule.
If the grammar is non-probabilistic, the list can be nothing.
For concrete types, see ContextSensitiveGrammar within the HerbGrammar module.
HerbCore.AbstractHole — Type
AbstractHole <: AbstractRuleNodeA AbstractHole is a placeholder where certain rules from the grammar can still be applied. The domain of a AbstractHole defines which rules can be applied. The domain is a bitvector, where the ith bit is set to true if the ith rule in the grammar can be applied.
HerbCore.AbstractRuleNode — Type
abstract type AbstractRuleNode endAbstract type for representing expression trees. An AbstractRuleNode is expected to implement the following functions:
isfilled(::AbstractRuleNode)::Bool. True iff the grammar rule this node holds is not ambiguous, i.e. has domain size 1.isuniform(::AbstractRuleNode)::Bool. True iff the children of this node are known.get_rule(::AbstractRuleNode)::Int. Returns the index of the grammar rule it represents.get_children(::AbstractRuleNode)::Vector{AbstractRuleNode}. Returns the children of this node.
Expression trees consist of RuleNodes and AbstractHoles.
- A
RuleNoderepresents a certain production rule in theAbstractGrammar. - A
AbstractHoleis a placeholder where certain rules in the grammar still can be applied.
HerbCore.AbstractUniformHole — Type
Hole <: AbstractHoleAn AbstractUniformHole is a placeholder where certain rules from the grammar can still be applied, but all rules in the domain are required to have the same childtypes.
HerbCore.Hole — Type
Hole <: AbstractHoledomain: A bitvector, where theith bit is set to true if theith rule in the grammar can be applied.
HerbCore.HoleReference — Type
HoleReferenceContains a hole and the path to the hole from the root of the tree.
HerbCore.RuleNode — Type
RuleNode <: AbstractRuleNodeA RuleNode represents a node in an expression tree. Each node corresponds to a certain rule in the AbstractGrammar. A RuleNode consists of:
ind: The index of the rule in theAbstractGrammarwhich this node is representing._val: Field for caching evaluations ofRuleNodes, preventing multiple unnecessary evaluations. The field can be used to store any needed infromation.children: The children of this node in the expression tree
HerbCore.RuleNode — Method
RuleNode(ind::Int, _val::Any)Create a RuleNode for the AbstractGrammar rule with index ind, _val as immediately evaluated value and no children
Only use this constructor if you are absolutely certain that a rule is terminal and cannot have children. Use [RuleNode(ind::Int, grammar::AbstractGrammar)] for rules that might have children. In general, AbstractHoles should be used as a placeholder when the children of a node are not yet known.
HerbCore.RuleNode — Method
RuleNode(ind::Int, children::Vector{AbstractRuleNode})Create a RuleNode for the AbstractGrammar rule with index ind and children as subtrees.
HerbCore.UniformHole — Type
UniformHole <: AbstractHoledomain: A bitvector, where theith bit is set to true if theith rule in the grammar can be applied. All rules in the domain are required to have the same childtypes.children: The children of this hole in the expression tree.
HerbCore.@rulenode — Macro
@rulenodeConstruct a RuleNode using the shorthand notation RuleNodes and AbstractHoles are printed with using Base.show.
Does not yet support AbstractHoles defined outside of HerbCore.
AbstractHoles' domains are printed with a Bool[...] surrounding them. The macro accepts the domain with or without the Bool[...]: UniformHole[Bool[1, 1, 0, 0]]{2,3} and UniformHole[1, 1, 0, 0]{2,3} both work.
Examples
julia> @rulenode 1{4{5,6},1{2,3}}
1{4{5,6},1{2,3}}
julia> @rulenode 1
1
julia> @rulenode 1{2, 3}
1{2,3}
julia> @rulenode UniformHole[1, 1, 0, 0]{2,3}
UniformHole[Bool[1, 1, 0, 0]]{2,3}
julia> @rulenode Hole[1, 1, 0, 0]
Hole[Bool[1, 1, 0, 0]]
Base.isless — Method
Base.isless(rn₁::AbstractRuleNode, rn₂::AbstractRuleNode)::BoolCompares two RuleNodes. Returns true if the left RuleNode is less than the right RuleNode. Order is determined from the index of the RuleNodes. If both RuleNodes have the same index, a depth-first search is performed in both RuleNodes until nodes with a different index are found.
Base.length — Method
Base.length(root::RuleNode)Return the number of nodes in the tree rooted at root.
HerbCore.contains_hole — Method
contains_hole(rn::RuleNode) = any(contains_hole(c) for c ∈ rn.children)Checks if an AbstractRuleNode tree contains a AbstractHole.
HerbCore.contains_index — Method
contains_index(rulenode::RuleNode, index::Int)Returns true if the rulenode contains the index.
HerbCore.contains_nonuniform_hole — Method
contains_nonuniform_hole(rn::RuleNode)Checks if an AbstractRuleNode tree contains a Hole.
HerbCore.depth — Method
depth(root::RuleNode)::IntReturn the depth of the AbstractRuleNode tree rooted at root. Holes do count towards the depth.
HerbCore.get_children — Method
get_children(rn::AbstractRuleNode)Returns the children of the given AbstractRuleNode
HerbCore.get_node_at_location — Method
get_node_at_location(root::AbstractRuleNode, location::Vector{Int})Retrieves a RuleNode at the given location by reference.
HerbCore.get_node_at_location — Method
get_node_at_location(root::Hole, location::Vector{Int})Retrieves the current hole, if location is this very hole. Throws error otherwise.
HerbCore.get_path — Method
get_path(root::AbstractRuleNode, node::AbstractRuleNode)Returns the path from the root to the targetnode. Returns nothing if no path exists.
HerbCore.get_rule — Method
get_rule(rn::AbstractRuleNode)Returns the index of the rule that this AbstractRuleNode represents
HerbCore.get_rulesequence — Method
get_rulesequence(node::RuleNode, path::Vector{Int})Extract the derivation sequence from a path (sequence of child indices) and an AbstractRuleNode. If the path is deeper than the deepest node, it returns what it has.
HerbCore.hasdynamicvalue — Method
function hasdynamicvalue(rn::AbstractRuleNode)::BoolReturns true iff the rule has a _val field set up.
HerbCore.have_same_shape — Method
have_same_shape(node1::AbstractRuleNode, node2::AbstractRuleNode)Returns true iff node1 and node2 have the same shape Example: RuleNode(3, [ RuleNode(1), RuleNode(1) ]) and RuleNode(9, [ RuleNode(2), Hole(domain) ]) have the same shape: 1 root with 2 children.
HerbCore.is_domain_valid — Function
is_domain_valid(x, n_rules::Integer)
is_domain_valid(x, grammar::AbstractGrammar)Check if the domain for the given object x (ex: RuleNode, Hole or AbstractConstraint) is valid given the provided grammar or number of rules.
If isfilled(x) and x has children, it checks if all children are valid.
HerbCore.isfilled — Method
isfilled(node::AbstractRuleNode)::BoolReturns whether the [AbstractRuleNode] holds a single rule. This is always the case for RuleNodes. Holes are considered to be "filled" iff their domain size is exactly 1.
HerbCore.issame — Method
issame(a, b)Returns whether the two given objects a and b (ex: RuleNode, Hole or AbstractConstraint) are the same.
HerbCore.isuniform — Method
isuniform(rn::AbstractRuleNode)Returns true iff the children of the AbstractRuleNode are known.
HerbCore.node_depth — Method
node_depth(root::AbstractRuleNode, node::AbstractRuleNode)::IntReturn the depth of node for an AbstractRuleNode tree rooted at root. Depth is 1 when root == node.
HerbCore.number_of_holes — Method
number_of_holes(rn::AbstractRuleNode)::IntRecursively counts the number of holes in an AbstractRuleNode
HerbCore.rulesoftype — Function
rulesoftype(node::RuleNode, grammar::AbstractGrammar, ruletype::Symbol[, ignoreNode::AbstractRuleNode])Returns every rule of nonterminal symbol ruletype from the grammar that is also used in the AbstractRuleNode tree, but not in the ignoreNode subtree.
HerbCore.rulesoftype — Function
rulesoftype(node::RuleNode, ruleset::Set{Int}[, ignoreNode::AbstractRuleNode])
rulesoftype(node::RuleNode, rule_index::Int[, ignoreNode::AbstractRuleNode])Returns every rule in the ruleset that is also used in the AbstractRuleNode tree, but not in the ignoreNode subtree.
HerbCore.rulesonleft — Method
rulesonleft(expr::RuleNode, path::Vector{Int})::Set{Int}Finds all rules that are used in the left subtree defined by the path.
HerbCore.swap_node — Method
swap_node(expr::AbstractRuleNode, new_expr::AbstractRuleNode, path::Vector{Int})Replace a node in expr, specified by path, with new_expr. Path is a sequence of child indices, starting from the root node.
HerbCore.swap_node — Method
swap_node(expr::RuleNode, node::RuleNode, child_index::Int, new_expr::RuleNode)Replace child i of a node, a part of larger expr, with new_expr.
HerbCore.update_rule_indices! — Function
update_rule_indices!(...)Updates the rule indices of the given rule node, hole or grammar constraint when the grammar changes.
HerbCore.update_rule_indices! — Method
update_rule_indices!(hole::AbstractHole, n_rules::Integer, mapping::AbstractDict{<:Integer, <:Integer})Updates the domains of hole and its children according to mapping. For AbstractHoles, this updates both the size of the domain BitVector and the rule indices. Errors if the length of the domain vector exceeds new n_rules.
Arguments
hole: The currentAbstractHolebeing processedn_rules: The new number of rules in the grammarmapping: A dictionary mapping the old rule indices to new ones
HerbCore.update_rule_indices! — Method
update_rule_indices!(node::AbstractHole, n_rules::Integer)Resize the domains of hole and its children. Errors if the length of the domain vector exceeds new n_rules.
Arguments
hole: The currentAbstractHolebeing processedn_rules: The new number of rules in the grammar
HerbCore.update_rule_indices! — Method
update_rule_indices!(node::RuleNode, n_rules::Integer, mapping::AbstractDict{<:Integer, <:Integer})Remap the rule indices of node and its children according to the provided mapping. Errors if the rule index exceeds new n_rules.
Arguments
node: The currentRuleNodebeing processedn_rules: The new number of rules in the grammarmapping: A dictionary mapping old rule indices to new rule indices
HerbCore.update_rule_indices! — Method
update_rule_indices!(node::RuleNode, n_rules::Integer)Updates the node as required when grammar size changes. Errors if the rule index exceeds new n_rules.
Arguments
node: The currentRuleNodebeing processedn_rules: The new number of rules in the grammar
Index
HerbConstraints.AbstractGrammarConstraintHerbConstraints.AbstractLocalConstraintHerbConstraints.AbstractStateManagerHerbConstraints.ContainsHerbConstraints.ContainsSubtreeHerbConstraints.DomainRuleNodeHerbConstraints.ForbiddenHerbConstraints.ForbiddenSequenceHerbConstraints.GenericSolverHerbConstraints.GenericSolverHerbConstraints.GenericSolverHerbConstraints.LessThanOrEqualHardFailHerbConstraints.LessThanOrEqualResultHerbConstraints.LessThanOrEqualSoftFailHerbConstraints.LessThanOrEqualSuccessHerbConstraints.LessThanOrEqualSuccessEqualityHerbConstraints.LessThanOrEqualSuccessLessThanHerbConstraints.LessThanOrEqualSuccessWithHolesHerbConstraints.LocalContainsHerbConstraints.LocalContainsSubtreeHerbConstraints.LocalContainsSubtreeHerbConstraints.LocalForbiddenHerbConstraints.LocalForbiddenSequenceHerbConstraints.LocalOrderedHerbConstraints.LocalUniqueHerbConstraints.MakeEqualHardFailHerbConstraints.MakeEqualResultHerbConstraints.MakeEqualSoftFailHerbConstraints.MakeEqualSuccessHerbConstraints.OrderedHerbConstraints.PatternMatchHardFailHerbConstraints.PatternMatchResultHerbConstraints.PatternMatchSoftFailHerbConstraints.PatternMatchSuccessHerbConstraints.PatternMatchSuccessWhenHoleAssignedToHerbConstraints.SolverHerbConstraints.SolverStateHerbConstraints.StateHoleHerbConstraints.StateHoleHerbConstraints.StateHoleHerbConstraints.StateIntHerbConstraints.StateIntBackupHerbConstraints.StateManagerHerbConstraints.StateSparseSetHerbConstraints.StateSparseSetHerbConstraints.StateStackHerbConstraints.StateStackHerbConstraints.StateStackHerbConstraints.UniformSolverHerbConstraints.UniformSolverHerbConstraints.UniqueHerbConstraints.VarNodeHerbCore.AbstractConstraintHerbCore.AbstractGrammarHerbCore.AbstractHoleHerbCore.AbstractRuleNodeHerbCore.AbstractUniformHoleHerbCore.HoleHerbCore.HoleReferenceHerbCore.RuleNodeHerbCore.RuleNodeHerbCore.RuleNodeHerbCore.UniformHoleHerbGrammar.ContextSensitiveGrammarHerbGrammar.NodeLocHerbGrammar.SymbolTableHerbSearch.AbstractBFSIteratorHerbSearch.AbstractDFSIteratorHerbSearch.AbstractMHSearchIteratorHerbSearch.AbstractSASearchIteratorHerbSearch.AbstractVLSNSearchIteratorHerbSearch.BFSIteratorHerbSearch.DFSIteratorHerbSearch.ExpandFailureReasonHerbSearch.GeneticSearchIteratorHerbSearch.MHSearchIteratorHerbSearch.MLFSIteratorHerbSearch.ProgramIteratorHerbSearch.RandomIteratorHerbSearch.SASearchIteratorHerbSearch.StochasticSearchIteratorHerbSearch.SynthResultHerbSearch.TopDownIteratorHerbSearch.UniformIteratorHerbSearch.UniformIteratorHerbSearch.VLSNSearchIteratorHerbSpecification.AbstractDependentTypeSpecificationHerbSpecification.AgdaSpecificationHerbSpecification.IOExampleHerbSpecification.MetricProblemHerbSpecification.ProblemHerbSpecification.SMTSpecificationHerbSpecification.TraceBase.collectBase.collectBase.findallBase.findfirstBase.findlastBase.getBase.getindexBase.getindexBase.inBase.inBase.insert!Base.islessBase.iterateBase.iterateBase.iterateBase.iterateBase.iterateBase.lengthBase.lengthBase.lengthBase.lengthBase.push!Base.randBase.randBase.randBase.showBase.sizeBase.sizeBase.sumHerbConstraints._containsHerbConstraints._count_occurrencesHerbConstraints._count_occurrencesHerbConstraints._count_occurrences!HerbConstraints._exchange_positions!HerbConstraints._update_bounds_val_removed!HerbConstraints._update_max_val_removed!HerbConstraints._update_min_val_removed!HerbConstraints.annotation2constraintHerbConstraints.are_disjointHerbConstraints.are_disjointHerbConstraints.backup!HerbConstraints.check_treeHerbConstraints.check_treeHerbConstraints.check_treeHerbConstraints.check_treeHerbConstraints.check_treeHerbConstraints.check_treeHerbConstraints.contains_varnodeHerbConstraints.deactivate!HerbConstraints.deactivate!HerbConstraints.decrement!HerbConstraints.fix_point!HerbConstraints.freeze_stateHerbConstraints.get_grammarHerbConstraints.get_grammarHerbConstraints.get_grammarHerbConstraints.get_hole_at_locationHerbConstraints.get_hole_at_locationHerbConstraints.get_intersectionHerbConstraints.get_max_depthHerbConstraints.get_max_depthHerbConstraints.get_max_sizeHerbConstraints.get_max_sizeHerbConstraints.get_nodesHerbConstraints.get_nodes_on_pathHerbConstraints.get_priorityHerbConstraints.get_starting_symbolHerbConstraints.get_starting_symbolHerbConstraints.get_stateHerbConstraints.get_treeHerbConstraints.get_treeHerbConstraints.get_tree_sizeHerbConstraints.get_valueHerbConstraints.increment!HerbConstraints.is_subdomainHerbConstraints.is_subdomainHerbConstraints.isfeasibleHerbConstraints.isfeasibleHerbConstraints.load_state!HerbConstraints.make_equal!HerbConstraints.make_less_than_or_equal!HerbConstraints.make_less_than_or_equal!HerbConstraints.make_less_than_or_equal!HerbConstraints.new_state!HerbConstraints.notify_new_nodeHerbConstraints.notify_new_nodesHerbConstraints.notify_new_nodesHerbConstraints.notify_tree_manipulationHerbConstraints.notify_tree_manipulationHerbConstraints.partitionHerbConstraints.pattern_matchHerbConstraints.pattern_matchHerbConstraints.pattern_matchHerbConstraints.pattern_matchHerbConstraints.pattern_matchHerbConstraints.pattern_matchHerbConstraints.post!HerbConstraints.post!HerbConstraints.propagate!HerbConstraints.propagate!HerbConstraints.propagate!HerbConstraints.propagate!HerbConstraints.propagate!HerbConstraints.propagate!HerbConstraints.propagate!HerbConstraints.remove!HerbConstraints.remove!HerbConstraints.remove!HerbConstraints.remove!HerbConstraints.remove!HerbConstraints.remove_above!HerbConstraints.remove_above!HerbConstraints.remove_above!HerbConstraints.remove_all_but!HerbConstraints.remove_all_but!HerbConstraints.remove_all_but!HerbConstraints.remove_all_but!HerbConstraints.remove_all_but!HerbConstraints.remove_all_but!HerbConstraints.remove_below!HerbConstraints.remove_below!HerbConstraints.remove_below!HerbConstraints.remove_node!HerbConstraints.restore!HerbConstraints.restore!HerbConstraints.restore!HerbConstraints.save_state!HerbConstraints.save_state!HerbConstraints.save_state!HerbConstraints.schedule!HerbConstraints.set_infeasible!HerbConstraints.set_infeasible!HerbConstraints.set_value!HerbConstraints.shouldscheduleHerbConstraints.shouldscheduleHerbConstraints.simplify_hole!HerbConstraints.substitute!HerbCore.contains_holeHerbCore.contains_holeHerbCore.contains_indexHerbCore.contains_nonuniform_holeHerbCore.depthHerbCore.get_childrenHerbCore.get_node_at_locationHerbCore.get_node_at_locationHerbCore.get_node_at_locationHerbCore.get_node_at_locationHerbCore.get_pathHerbCore.get_pathHerbCore.get_pathHerbCore.get_ruleHerbCore.get_ruleHerbCore.get_rulesequenceHerbCore.hasdynamicvalueHerbCore.have_same_shapeHerbCore.is_domain_validHerbCore.isfilledHerbCore.isfilledHerbCore.issameHerbCore.isuniformHerbCore.node_depthHerbCore.number_of_holesHerbCore.rulesoftypeHerbCore.rulesoftypeHerbCore.rulesonleftHerbCore.swap_nodeHerbCore.swap_nodeHerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbCore.update_rule_indices!HerbGrammar.add_rule!HerbGrammar.add_rule!HerbGrammar.add_rule!HerbGrammar.addconstraint!HerbGrammar.child_typesHerbGrammar.child_typesHerbGrammar.cleanup_removed_rules!HerbGrammar.clearconstraints!HerbGrammar.containedinHerbGrammar.contains_returntypeHerbGrammar.expr2csgrammarHerbGrammar.expr2pcsgrammarHerbGrammar.expr2rulenodeHerbGrammar.expr2rulenodeHerbGrammar.expr2rulenodeHerbGrammar.expr2rulenodeHerbGrammar.get_childtypesHerbGrammar.get_domainHerbGrammar.get_domainHerbGrammar.get_rulesequenceHerbGrammar.grammar2symboltableHerbGrammar.init_probabilities!HerbGrammar.iscompleteHerbGrammar.isevalHerbGrammar.isevalHerbGrammar.isevalHerbGrammar.isprobabilisticHerbGrammar.isterminalHerbGrammar.isterminalHerbGrammar.isterminalHerbGrammar.isvariableHerbGrammar.isvariableHerbGrammar.isvariableHerbGrammar.isvariableHerbGrammar.log_probabilityHerbGrammar.max_arityHerbGrammar.max_rulenode_log_probabilityHerbGrammar.merge_grammars!HerbGrammar.mindepthHerbGrammar.mindepth_mapHerbGrammar.nchildrenHerbGrammar.nchildrenHerbGrammar.nonterminalsHerbGrammar.normalize!HerbGrammar.parse_probabilistic_ruleHerbGrammar.probabilityHerbGrammar.read_csgHerbGrammar.read_pcsgHerbGrammar.remove_rule!HerbGrammar.return_typeHerbGrammar.return_typeHerbGrammar.return_typeHerbGrammar.root_node_locHerbGrammar.rulenode2exprHerbGrammar.rulenode_log_probabilityHerbGrammar.rulesonleftHerbGrammar.store_csgHerbGrammar.subsequenceofHerbGrammar.swap_nodeHerbGrammar.swap_nodeHerbInterpret.evaluate_programHerbInterpret.execute_on_inputHerbInterpret.execute_on_inputHerbInterpret.execute_on_inputHerbInterpret.execute_on_inputHerbInterpret.interpretHerbSearch._calculate_costHerbSearch._extract_name_from_argumentHerbSearch._find_next_complete_treeHerbSearch._is_field_declHerbSearch._is_kwdefHerbSearch._processkwarg!HerbSearch.acceptHerbSearch.best_acceptHerbSearch.calculate_costHerbSearch.const_temperatureHerbSearch.constructNeighbourhoodHerbSearch.constructNeighbourhoodRuleSubsetHerbSearch.cross_overHerbSearch.crossover_swap_children_1HerbSearch.crossover_swap_children_2HerbSearch.decreasing_temperatureHerbSearch.default_fitnessHerbSearch.derivation_heuristicHerbSearch.derivation_heuristicHerbSearch.derivation_heuristicHerbSearch.enumerate_neighbours_proposeHerbSearch.evaluateHerbSearch.fitnessHerbSearch.generate_branchesHerbSearch.get_best_programHerbSearch.get_solverHerbSearch.heuristic_leftmostHerbSearch.heuristic_randomHerbSearch.heuristic_rightmostHerbSearch.heuristic_smallest_domainHerbSearch.hole_heuristicHerbSearch.mean_squared_errorHerbSearch.misclassificationHerbSearch.mutate!HerbSearch.mutate_random!HerbSearch.neighbourhoodHerbSearch.next_solution!HerbSearch.priority_functionHerbSearch.priority_functionHerbSearch.priority_functionHerbSearch.priority_functionHerbSearch.probabilistic_acceptHerbSearch.probabilistic_accept_with_temperatureHerbSearch.probabilistic_accept_with_temperature_fractionHerbSearch.proposeHerbSearch.random_fill_proposeHerbSearch.select_chromosomeHerbSearch.select_fitness_proportional_parentsHerbSearch.select_parentsHerbSearch.set_stateholes!HerbSearch.synthHerbSearch.temperatureHerbSearch.validate_iteratorStatsBase.sampleStatsBase.sampleStatsBase.sampleStatsBase.sampleHerbConstraints.@csgrammar_annotatedHerbCore.@rulenodeHerbGrammar.@cfgrammarHerbGrammar.@csgrammarHerbGrammar.@pcsgrammarHerbSearch.@programiterator