Deterministic campaign, oracle, and reduction algorithms for MoonSmith
pub(all) enum CandidateOutcome {
Accepted
Invalid
Disallowed
Rejected(PredicateStatus)
} derive(Eq, Debug)pub struct Enumeration[P] {
// private fields
}pub(all) enum Offer[P] {
Evaluate(ReductionRequest[P])
Declined(CandidateOutcome)
Pending
Stopped(ReductionStop)
}pub struct OperationSchedule[P] {
// private fields
}pub struct Reducer[P] {
// private fields
}fn[P] Reducer::new(initial : P, evidence : Assessment, predicate : FailurePredicate, id~ : String, limit~ : Int, better~ : (P, P) -> Bool, valid~ : (P) -> Bool, operations~ : Array[(P) -> Array[P]]) -> Result[Reducer[P], ReductionStartError]pub(all) enum ReductionEvent[P] {
Started(P, Assessment)
Proposed(ReductionRequest[P])
Decided(CandidateId, CandidateOutcome, Assessment?)
Finished(ReductionStop)
}pub struct ReductionSession[P] {
// private fields
}fn[P] ReductionSession::new(initial : P, evidence : Assessment, id~ : String, limit~ : Int, valid~ : (P) -> Bool, accepts~ : (P, P) -> Bool, better~ : (P, P) -> Bool, predicate~ : (Assessment) -> PredicateStatus) -> Result[ReductionSession[P], ReductionStartError]fn[P] ReductionSession::observe(self : ReductionSession[P], id : CandidateId, evidence : Assessment) -> CandidateOutcome?pub(all) enum ReductionStartError {
InvalidBudget
InvalidInitial
UnestablishedFailure(PredicateStatus)
} derive(Eq, Debug)fn comparable_results(configurations : Array[String], observations : Array[Observation], normalize~ : (String) -> String?) -> Array[(String, String)]fn compare(configurations : Array[String], observations : Array[Observation], normalize~ : (String) -> String?) -> Comparisonfn differential_assessment(configurations : Array[String], observations : Array[Observation], normalize~ : (String) -> String?) -> Assessmentfn judge(expected : String, configurations : Array[String], observations : Array[Observation]) -> Verdictfn reference_assessment(expected : String, configurations : Array[String], observations : Array[Observation]) -> Assessment