synox

Crates.iosynox
lib.rssynox
version0.1.0
sourcesrc
created_at2021-06-29 01:19:58.502774
updated_at2021-06-29 01:19:58.502774
descriptionProgram synthesis of string transformations from input-output examples.
homepagehttps://github.com/anishathalye/synox
repositoryhttps://github.com/anishathalye/synox.git
max_upload_size
id415989
size77,125
Anish Athalye (anishathalye)

documentation

README

Synox Build Status Crates.io Documentation

Synox implements program synthesis of string transformations from input-output examples. Perhaps the most well-known use of string program synthesis in end-user programs is the Flash Fill feature in Excel. These string transformations are learned from input-output examples.

Synox currently implements BlinkFill (Singh '16, in Proc. VLDB), an algorithm similar to Flash Fill.

Usage

Add this to your Cargo.toml:

[dependencies]
synox = "0.1"

Example

Consider the following table, with a missing entry in an output column.

Name Graduation Year Output
Alyssa P. Hacker 1985 A. Hacker '85
Ben Bitdiddle 2002 B. Bitdiddle '02
Cy D. Fect 2017 ?

Synox can infer a program that automatically fills in the missing entry with "C. Fect '17".

use synox::StringProgram;
use synox::blinkfill;

let unpaired: &[Vec<&str>] = &[];
let examples = &[(vec!["Alyssa P. Hacker", "1985"], "A. Hacker '85"   ),
                 (vec!["Ben Bitdiddle",    "2002"], "B. Bitdiddle '02")];

let prog = blinkfill::learn(unpaired, examples)?;

let result = prog.run(&["Cy D. Fect", "2017"])?;
assert_eq!(result, "C. Fect '17");

License

Copyright (c) 2021 Anish Athalye. Released under the MIT License. See LICENSE.md for details.

Commit count: 16

cargo fmt