1use std::io::Write;
2
3use flussab::DeferredWriter;
4
5use flussab_aiger::{
6 aig::{Renumber, RenumberConfig},
7 ascii, binary, Error,
8};
9
10fn main() {
11 if let Err(err) = main_err() {
12 eprintln!("error: {err}");
13 }
14}
15
16fn main_err() -> Result<(), Error<u32>> {
17 let stdin = std::io::stdin();
18 let stdout = std::io::stdout();
19
20 let aag_reader = ascii::Parser::<u32>::from_read(stdin.lock(), ascii::Config::default())?;
21
22 let aag = aag_reader.parse()?;
23
24 let (aig, _) = Renumber::renumber_aig(
25 RenumberConfig::default()
26 .trim(true)
27 .structural_hash(true)
28 .const_fold(true),
29 &aag,
30 )?;
31
32 let aig_writer = DeferredWriter::from_write(stdout.lock());
33 let mut aag_writer = binary::Writer::<u32>::new(aig_writer);
34
35 aag_writer.write_ordered_aig(&aig);
36
37 aag_writer.flush()?;
38 Ok(())
39}