Next: SOFTWARE-EVOLUTION-LIBRARY/COMMAND-LINE-REST, Previous: Software Evolution Library Index, Up: Software Evolution Library Index [Contents][Index]
Class precedence list: mutate, error, serious-condition, condition, slot-object, t
Mutation errors are thrown when a mutation fails. These may often be safely ignored. A common restart is ‘ignore-failed-mutation’.
Class precedence list: no-mutation-targets, mutate, error, serious-condition, condition, slot-object, t
This is a particularly benign form of mutation error. A common restart is ‘ignore-failed-mutation’.
Class precedence list: oid-object, standard-object, slot-object, t
Attaches a unique oid (object identifier) to each instance.
Fraction of new individuals generated using crossover rather than mutation.
Variable to hold crossover statistics.
Number of individuals to automatically promote to next population.
Range: 0..(- (length *population*) 1)
When evolving super-mutants, or calling generational-evolve,
*elitism*
specifies the number of individuals which are automatically
promoted prior to typical generational replacement or eviction
process. The selected individuals will be the ones with the
best fitness.
When using super-mutants, the *elitism*
value will reduce the number of new
individuals created in each generation by the value of *elitism*
(since this
number will automatically be promoted).
Track the total number of fitness evaluations.
Function to compare two fitness values to select which is preferred.
Function to convert fitness to a numeric value
Holds the running generation count.
Maximum allowable population size.
Holds the genome elements which may be used by ‘mcmc-step’. Should be initialized to a list of the unique possible genome elements.
Chance to mutate a new individual.
*mut-rate*
.
*mut-rate*
times.
List of recent mutation improvements cons’d with *fitness-evals*.
Variable to hold mutation statistics.
Holds the variant programs to be evolved. This variable may be read to inspect a running search process, or written to as part of a running search process.
True when a search process is running, set to nil to stop evolution.
Holds the start time of evolutionary processes.
Predicate indicating whether an individual has reached the target fitness.
Function to compare two tie breaker values to select which is preferred.
Number of individuals to participate in eviction tournaments.
Function used to select winners of a tournament. Returns a list of winners.
Number of individuals to participate in tournament selection.
Function used to break ties in a tournament. Returns a single winner.
Default worst fitness todo
.
Predicate indicating whether an individual has the worst possible fitness.
Current branch of the software-evolution-library
.
Path to directory holding software-evolution-library
.
Current major version of the software-evolution-library
(without git hash).
Current version of the software-evolution-library
.
Apply mutation
to every target in software
.
Returns the resulting software objects. Returns a list of the applied
mutations as an optional second value.
Apply mutation
to software
, return the resulting software object.
Mutation application may destructively modify the software object, or it may return a
new instance with the mutation applied, and leave the original untouched. Any client
which calls apply-mutation should ensure that the result returned by apply-mutation is
captured, and should not make assumptions about the state of the original.
Example: (let ((mutated-software (apply-mutation (copy software) mutation))) ...
Define an :around method on this function to record mutations.
docfixme
docfixme
docfixme
docfixme
docfixme
Cut two random elements of the genome. If the two elements indices are equal, this just becomes one simple-cut. Otherwise it is implemented as two simple-cut mutations, so derived mutations should only need to implement simple-cut.
docfixme
Apply ops
to software
, returning the resulting software
.
obj
object to be mutated
op
mutation to be performed
Apply mutation
to software
, returning the resulting software
.
software
object to be mutated
mutation
mutation to be performed
Apply mutation
to software
, returning the resulting software
.
software
object to be mutated
mutation
mutation to be performed
docfixme
llvm
docfixme
op
docfixme
docfixme
obj
docfixme
mutation
docfixme
docfixme
obj
docfixme
mutation
docfixme
docfixme
obj
docfixme
mutation
docfixme
docfixme
obj
docfixme
mut
docfixme
docfixme
obj
docfixme
mutation
docfixme
docfixme
obj
docfixme
mutation
docfixme
docfixme
obj
docfixme
mutation
docfixme
docfixme
obj
docfixme
mutation
docfixme
docfixme
obj
docfixme
mutation
docfixme
docfixme
obj
docfixme
mutation
docfixme
docfixme
obj
docfixme
mutation
docfixme
docfixme
obj
docfixme
mutation
docfixme
docfixme
docfixme
Apply a ‘type-safe-swap’ mutation
to Coq object obj
.
Inject fodder dependencies such as types, macros, and headers after a fodder
mutation
has been applied to obj
.
obj
software object modified by mutation
mutation
operations applied to obj
docfixme
Apply an asm-replace-operand mutation
to asm-heap
, return the resulting
software. The mutation
targets are a pair of instruction indices pointing
to a "bad" instruction (whose operand will be replaced) and
a "good" instruction (whose operand will be used as the replacement).
If either instruction lacks an operand, a ‘no-mutation-targets’ condition
is raised.
Swap the values at two locations in ASM as specified by mutation
.
Insert a value into location of ASM as specified by mutation
.
Implement simple-cut mutation on asm-heap
.
Apply an asm-replace-operand mutation
to ASM, return the resulting software.
The mutation
targets are a pair of instruction indices pointing to a "bad"
instruction (whose operand will be replaced) and a "good" instruction
(whose operand will be used as the replacement). If either instruction lacks an
operand, a ‘no-mutation-targets’ condition is raised.
docfixme
obj
docfixme
op
docfixme
Apply the execution trace path
behind key
in software
.
docfixme
Apply a list of sampled addresses
to the ASM’s genome behind key
.
If each element of addresses
is a cons cell then assume the car is the
address and the cdr is the value.
Build operation on software
from a mutation
.
Return an association list with the operations to apply a ‘nop’
mutation
to software
.
muation
defines teh targets of the nop operation
software
object to be modified by the mutation
Return an association list with the operations to apply a ‘parseable-cut’
mutation
to software
.
mutation
defines the targets of the cut operation
software
object to be modified by the mutation
Return an association list with the operations to apply an
‘parseable-replace’ mutation
to software
.
mutation
defines targets of the replace operation
software
object to be modified by the mutation
Return an association list with the operations to apply a ‘parseable-move’
mutation
to software
.
mutation
defines targets of the move operation
software
object to be modified by the mutation
Return an association list with the operations to apply a ‘parseable-swap’
mutation
to software
.
mutation
defines targets of the swap operation
software
object to be modified by the mutation
Return an association list with the operations to apply a ‘parseable-insert’
mutation
to software
.
mutation
defines targets of insertion operation
software
object to be modified by the mutation
Return an association list with the operations to apply a ‘rename-variable’
mutation
to software
.
mutation
defines the targets of the rename-variable operation
software
object to be modified by the mutation
Return an association list with the operations to apply a ‘cut-decl’
mutation
to clang
.
mutation
defines the targets of the cut-decl operation
clang
object to be modified by the mutation
Return an association list with the operations to apply a
‘coalesce-while-loop’ mutation
to software
.
mutation
defines the targets of the coalesce-while-loop operation
obj
object to be modified by the mutation
Return an association list with the operations to apply an
‘explode-for-loop’ mutation
to obj
.
mutation
defines the targets of the explode-for-loop operation
obj
object to be modified by the mutation
Return an association list with the operations to apply a
‘clang-promote-guarded’ mutation
to software
.
mutation
defines the targets of the cut operation
software
object to be modified by the mutation
Return an association list with the operations to apply a ‘clang-swap’
mutation
to software
.
mutation
defines targets of the swap operation
software
object to be modified by the mutation
Return an association list with the operations to apply a ‘clang-insert’
mutation
to software
.
mutation
defines targets of insertion operation
software
object to be modified by the mutation
Return an association list with the operations to apply a
‘insert-fodder-decl-rep’ mut
to obj
.
mut
defines the targets of the insertion operation
obj
object to be modified by the mutation
Generic copy
method.
Wrapper around copy
to transform all keyword arguments which are
not explicit slot initargs into annotations for functional tree ASTs.
Wrap the copy method to ensure the OBJ’s fields are copied.
Wrap the copy method to ensure the OBJ’s fields are copied.
Wrapper before copy to ensure all AST paths are populated in the genome supplied as a keyword.
Customized copy for ‘asm-range’ software objects. Ensures deep copies are made of the genome (ranges) but shallow copies are made of the reference base genome.
Crossover two software objects. Define an :around method on this function to record crossovers.
Randomly pick a file in A and crossover with the corresponding file in b
.
docfixme
Perform single-point crossover between two parseable software
objects, and returning a new software object as the result. If
an error occurs, returns nil
.
Algorithm:
A random node of the tree ’a’ is chosen, its path calculated,
and if there is a node at the corresponding path in ’b’, then that
node will replace the corresponding node in the genome of ’a’.
In order to update the genome of ’a’ the genome is copied and the resulting
modified genome is stored in ’a’.
docfixme
docfixme
b
docfixme
Crossover two software objects, A and b
.
One point crossover.
One point crossover.
By default, crossover for ASM objects uses ‘homologous-crossover’.
docfixme
docfixme
b
docfixme
Like ‘defclass’ but inherits targeter
slot-options from mutation
.
Also, ensures mutation
is a member of superclasses
Default function to collect statistics from an applied mutation.
This function will calculate the improvements to the fitness of software
as the result of crossover and mutation using ‘evaluate’ and test
.
Each crossover and mutation will be paired with one of the following tags;
:dead, :same, :worse, or :better. Calculated stats will be added to the
*crossover-stats* and *mutation-stats* variables for analysis.
Apply mutation
to the first n
targets in software
.
Returns the resulting software objects. Returns a list of the applied
mutations as an optional second value.
Apply mutation
to n
randomly selected targets in software
.
Returns the resulting software objects. Returns a list of the applied
mutations as an optional second value.
Return a copy of mutation
with ‘targets’ set to targets
.
Create a super-mutant populated with variant
. rest-variants
Creates a super-mutant
and populates variants. Returns the super-mutant.
Creates a asm-super-mutant
and populates it with single variant.
Define a new ‘software’ class name
including a deep ‘copy’ method.
Arguments name
direct-superclasses
and options
are passed through to
‘defclass’ unmodified. Additional optional :copier
property on each
slot in direct-slots
may be one of the following:
:none
this slot is not copied and will be nil in the new object
:direct
this slot is copied by direct reference to the slot value
skipping the accessor
:copier
is nil (default) then the slot is
copied through its accessor, otherwise the value is
assumed to be a function (e.g., ‘copy-tree’) which is used
to copy the slot.
Evaluate the software returning a numerical fitness.
Evaluate super-mutant
, setting fitness for all variants.
Create phenome (binary executable) and call it to generate fitness results.
The variants need to already be created (stored in mutants slot) and the io-file
needs to have been loaded, along with the var-table by parse-sanity-file
.
Evaluate all test-cases in test-suite
aggregating their output.
By default, sum the results of applying ‘evaluate’ to each test-case using
‘reduce’. Keyword arguments ‘:function’ and ‘:initial-value’ may be used as in
‘reduce’ to specify an aggregation function and starting value.
Run ‘test-case’ obj
on phenome
and return a fitness score (as
opposed to the output and exit code returned by ‘finish-test‘).
Default behavior is to return 1 if the exit code is 0 and 0 otherwise.
Override this method if you want to use other criteria, such as test output, to determine the fitness score.
phenome
the phenome of the ‘software’ object under test.
obj
the ‘test-case’ to run.
extra-keys
additional keyword arguments to pass to ‘run-test’. See the
‘start-test’ documentation for more information.
Hold extra data returned by the fitness function.
Pass extra data (optionally) returned by the fitness function to the software object.
docfixme
extra-data
docfixme
obj
docfixme
Initialize software
with contents of file
.
docfixme
docfixme
Initialize obj
with the contents of path
.
Reading from a file sets original-genome-string
.
Wrapper around the ‘from-file‘ method to store the file at PATH’s
permissions and modification time when creating obj
.
Reading from a file saves path
.
Initialize obj
with the contents of path
.
docfixme
llvm
docfixme
path
docfixme
Initialize obj
with the contents of path
.
Read forth script from path
setting ‘genome’ and ‘shebang’.
docfixme
docfixme
docfixme
docfixme
Load Coq obj
from file file
, initializing fields in obj
.
Resets the SerAPI process so that imports are loaded but no definitions from the
file have been added.
Set function target after the file loads.
Initialize an ‘asm-heap’ software object from a file.
Initialize an ‘asm-range’ software object from a file. Note this is required as no ‘from-file’ method is defined on the ‘range’ software object class.
Ensure ‘number-genome’ is called on all ASM files. This adds :id fields to genome elements required by ‘homologous-crossover’.
docfixme
obj
docfixme
path
docfixme
Create a Pliny database using the contents of db
Initialize software
with contents of string
.
Initialize obj
with the contents of string
.
Initialize obj
with the contents of string
.
Ensure the fodder database has been initialized prior to creating
a ‘clang-w-fodder’ software obj
from string
.
obj
object to be populated from source in string
string
source code to populate obj
with
docfixme
obj
docfixme
string
docfixme
Parse a database argument in the form "<HOST|FILE>:PORT"
Class precedence list: mutation, oid-object, standard-object, slot-object, t
Slots:
object
— initarg: :object
; reader: software-evolution-library/software-evolution-library:object
; writer: (setf software-evolution-library/software-evolution-library:object)
The software object to be mutated.
targets
— initarg: :targets
; reader: software-evolution-library/software-evolution-library:get-targets
A calculated target set.
The base class of all software mutations.
Define a new mutation named class-name
composing mutations
.
mutations
is a list of the names of mutation classes.
Classify the fitness of new
as :better
, :worse
, :same
, or :dead
when
compared to old
. new
and old
must have fitness populated.
Return the members of group
with most predicate
fitness.
Default selection function for ‘tournament’.
Return true if fitness-a
and fitness-b
are equal
Evolves ‘*population*’ using reproduce
evaluate-pop
and select
.
Required arguments are as follows:
reproduce
-----------
create new individuals from the current population
evaluate-pop
--------
evaluate-pop the entire population
select
--------------
select best individuals from the population
Keyword arguments are as follows:
max-generations
-----
stop after this many generations
max-evals
-----------
stop after this many fitness evaluations
max-time
------------
stop after this many seconds
period
--------------
interval of generations evaluations to run period-fn
period-fn
-----------
function to run every period
generations
every-pre-fn
--------
function to run on each new individual before evaluation
every-post-fn
-------
function to run on each new individual after evaluation
analyze-mutation-fn
-
function to call to analyze mutation results
test
----------------
fitness test function for mutation statistics
filter
--------------
remove individuals for which filter
returns false
The software genotype or “code”, exposed as a simplified data structure. For example an AST genome, e.g., of a ‘cil’ or ‘lisp’ software object my have a tree structure while the genome of an ‘asm’ or ‘llvm’ software object will be a vector.
automatically generated reader method
Lazily parse the genome upon first access.
Lazily parsed AST representation of the code.
Return a genome which combines all variants in super-mutant
.
automatically generated reader method
automatically generated reader method
Build the genome on the fly from DIFF’s ‘reference’ and ‘diffs’.
Return a string of the ‘genome’ of software
.
Returns all genomes joined with separators, optionally writing to stream
.
Return the source code of obj
, optionally writing to stream
Return the ir
code of obj
, optionally writing to stream
Return genome of forth
as a string.
Like ‘(genome-string simple)’ but lines are delimited by spaces
instead of Newlines.
docfixme
Handle errors in ‘phenome’ execution by returning nil as the first value from the ‘phenome’ method.
Incorporate software
into population
, keeping population
size constant.
Return a list with the index of line breaks in ir
.
A list of lines in thing
.
docfixme
docfixme
Return a list of lines of source in obj
Return a list of lines of ir
in obj
docfixme
docfixme
Return the list of text lines of the genome.
Change software in a way amenable to mcmc
.
Specifically every step should be reversible, and the resulting walk
should be ergodic.
docfixme
Key used to organize mutations in *mutation-stats*.
docfixme
obj
docfixme
mutation
docfixme
Return key used to organize mutations in *mutation-stats* hashtable.
obj
object mutation is to be applied to
op
operation to be performed
Return key used to organize mutations in *mutation-stats* hashtable.
obj
object mutation is to be applied to
op
operation to be performed
Return a list of target ASTs in software
from
stmt-pool
for mutation, filtering using filter
, and throwing a
’no-mutation-targets exception if none are available.
Return a list of target ASTs from stmt-pool
for mutation, throwing
a ’no-mutation-targets exception if none are available.
obj
software object to query for mutation targets
filter
filter AST from consideration when this function returns nil
stmt-pool
method on obj
returning a list of ASTs
Return a list of target ASTs from stmt-pool
for mutation, throwing
a ’no-mutation-targets exception if none are available.
clang
software object to query for mutation targets
filter
filter AST from consideration when this function returns nil
stmt-pool
method on clang
returning a list of ASTs
Generate a new individual from *population*
.
Crossover at a single point.
docfixme
docfixme
Phenotype of the software.
This method will link, compile or serialize the software object as
necessary returning an executable version of the software suitable for
testing and evaluation. Returns multiple values holding in order; (1)
the binary path to which the executable was compiled, (2) the errno,
or a numeric indication of success, of the compilation process, (3)
stderr
of the compilation process, or a string holding error output
relevant to phenome generation, (4) stdout
of the compilation process,
or a string holding non-error output relevant to phenome
generation, (5) the source file name used during compilation.
Build the software project obj
and copy build artifact(s) to bin
.
Compile obj
to create an executable version of the software
on the filesystem at bin
.
Phenotype of the software.
This method will link, compile or serialize the software object as
necessary returning an executable version of the software suitable for
testing and evaluation. Returns multiple values holding in order; (1)
the binary path to which the executable was compiled, (2) the errno,
or a numeric indication of success, of the compilation process, (3)
stderr
of the compilation process, or a string holding error output
relevant to phenome generation, (4) stdout
of the compilation process,
or a string holding non-error output relevant to phenome
generation, (5) the source file name used during compilation.
docfixme
llvm
docfixme
bin
docfixme
Write forth
to an executable script suitable for evaluation.
docfixme
Create ASM file, assemble it, and link to create binary bin
.
Runs the ‘linker’ for asm-heap
, using the specified ‘flags’ for ASM and returns
multiple values holding in order: (1) the binary path bin
to which the
executable was compiled, (2) the errno, or a numeric indication of success, of
the linking process, (3) stderr
of the linking process, (4) stdout
of the
linking process, (5) the source file name used during linking.
Runs the ‘linker’ for ASM, using the specified ‘flags’ for ASM and returns
multiple values holding in order: (1) the binary path bin
to which the
executable was compiled, (2) the errno, or a numeric indication of success, of
the linking process, (3) stderr
of the linking process, (4) stdout
of the
linking process, (5) the source file name used during linking.
Create a phenotype of the lisp-project
.
As lisp is not a compiled language do nothing.
Create a phenotype of the python-project
. In this case,
as python is not a compiled language, override the phenome method
to return where the genome of obj
is written to -
bin
.
obj
object to create a phenome for
bin
location where the phenome will be created on the filesystem
Bind *build-dir* to bin
ensuring the genome of obj
in written to bin
.
Create a phenotype of the javascript-project
. In this case,
override the phenome method to return bin
where the genome of obj
is output. JavaScript is not a compiled language, so we return the
genome instead of a binary.
obj
object to create a phenome for
bin
location where the phenome will be created on the filesystem
Class precedence list: phenome, error, serious-condition, condition, slot-object, t
docfixme
Evolves ‘*population*’ using ‘new-individual’ and test
.
super-mutant-count
evaluate this number of mutants at once in a
combined genome.
Other keyword arguments are used as defined in the ‘-search’ function.
Return non-nil if software
has a phenotype.
Pick an element of genome
based on key
of each element.
key
is passed to ‘proportional-pick’ to return an index. Optional
argument func
processes the index to return a result.
Pick a ’bad’ index into a software object. Used to target mutation.
Pick a ’bad’ index into a software object. Used to target mutation.
Pick a random AST in clang
from the ‘bad-stmt’ pool.
docfixme
Return a randomly selected index of a bad statement in obj
.
Remove statements containing Coq location info from consideration.
If none exist, raise a ‘no-mutation-targets’ error.
Pick two ’bad’ indexes into a software object. Used to target mutation.
Pick two ASTs from software
, both from the ‘bad-asts’ pool,
excluding those ASTs removed by filter
.
software
object to perform picks for
filter
function taking two AST parameters and returning non-nil if the
second should be included as a possible pick
* bad-pool
function returning a pool of ’bad’ ASTs in software
Pick two ASTs from clang
, both from the ‘bad-asts’ pool,
excluding those ASTs removed by filter
.
clang
object to perform picks for
filter
function taking two AST parameters and returning non-nil if the
second should be included as a possible pick
* bad-pool
function returning a pool of ’bad’ ASTs in software
Pick a ’bad’ and a ’good’ indexes into a software object. Used to target mutation.
Pick two ASTs from software
, first from ‘bad-pool’ followed
by ‘good-pool’, excluding those ASTs removed by filter
.
software
object to perform picks for
filter
function taking two AST parameters and returning non-nil if the
second should be included as a possible pick
bad-pool
function returning a pool of ’bad’ ASTs in software
good-pool
function returning a pool of ’good’ ASTs in software
Pick two ASTs from clang
, both from the ‘bad-asts’ pool,
excluding those ASTs removed by filter
.
clang
object to perform picks for
filter
function taking two AST parameters and returning non-nil if the
second should be included as a possible pick
bad-pool
function returning a pool of ’bad’ ASTs in software
good-pool
function returning a pool of ’good’ ASTs in software
Pick a single ’bad’ index into a software object. Used to target mutation.
Pick a single AST from software
from ‘bad-pool’,
excluding those ASTs removed by filter
.
software
object to perform picks for
filter
function taking two AST parameters and returning non-nil if the
second should be included as a possible pick
* bad-pool
function returning a pool of ’bad’ ASTs in software
Pick a single AST from clang
from ‘bad-pool’,
excluding those ASTs removed by filter
.
clang
object to perform picks for
filter
function taking two AST parameters and returning non-nil if the
second should be included as a possible pick
* bad-pool
function returning a pool of ’bad’ ASTs in software
Pick a ’good’ index into a software object. Used to target mutation.
Pick a ’good’ index into a software object. Used to target mutation.
Pick a random AST in clang
from the ‘good-stmt’ pool.
docfixme
Return a randomly selected index of a good statement in obj
.
Remove statements containing Coq location info from consideration.
If none exist, raise a ‘no-mutation-targets’ error.
Reader for the picker
slot of mutation objects
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
A function from software ->
random target.
Class precedence list: software, oid-object, standard-object, slot-object, t
Base class for all software objects.
mcmc
search from original
using ‘mcmc-step’ and test
.
If keyword argument accept-fn
is given it is used to determine when a
newly found candidate replaces the current candidate. If accept-fn
is
not supplied mcmc
defaults to using Metropolis Hastings.
Other keyword arguments are used as defined in the ‘-search’ function.
Mutate the software. May throw a ‘mutate’ error.
Randomly pick one file to mutate.
Select a random mutation and mutate obj
.
Select a random mutation and mutate clang
.
docfixme
Apply a mutation to obj
Randomly mutate elf
.
Define a new mutation named class-name
sequencing mut-a
and mut-b
.
mut-a
and mut-b
are instances of mutations. Instead of collecting
targets for A and then targets for b
and then applying A and b
as done
by ‘compose-mutations’, ‘sequence-mutations’ first targets and applies A and then targets and applied b
.
Generate a new individual from *population*
using crossover.
Choose a random winner from group
.
Check if fitness-a
is strictly better than fitness-b
.
Generate a new mutant from a *population*
.
Select a type of mutation to apply to software
.
Select type of mutation to apply to obj
.
Select type of mutation to apply to obj
.
docfixme
Randomly select a mutation that may be performed on obj
.
Select type of mutation to apply to obj
.
Return a symbol naming a randomly selected ASM mutation.
Evaluate new-children
using test
assigning each a fitness.
Reproduce using every individual in population
.
Return a list of the resulting children and as optional extra value a
list of the mutations applied to produce those children.
docfixme
* results
docfixme
Reader for the targeter
slot of mutation objects
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
A function from software ->
targets.
Return all possible targets of mutation
.
Write software
to file
.
Wrapper around the ‘to-file‘ method to preserve permissions and
modification time when writing obj
to path
.
Look up source strings for Coq obj
ASTs and write to path
.
Save the assembly for ASM to file
.
If any rip-relative addresses have been converted to
absolute, for evaluation, restore them to the original
instructions.
Save the assembly for ASM to file
.
Select an individual from *population*
with a tournament.
Crossover between two points.
docfixme
docfixme