@@ -6,71 +6,3 @@ ruler::impl_bv!(64);
66
77#[ path = "./recipes/bv4_fancy.rs" ]
88pub mod bv4_fancy;
9-
10- #[ cfg( test) ]
11- pub mod test {
12- use std:: time:: { Duration , Instant } ;
13-
14- use crate :: bv4_fancy:: bv4_fancy_rules;
15-
16- use ruler:: {
17- enumo:: { self , Filter , Ruleset , Workload } ,
18- logger,
19- recipe_utils:: { base_lang, iter_metric, recursive_rules, run_workload, Lang } ,
20- Limits ,
21- } ;
22-
23- use crate :: Bv ;
24-
25- fn gen ( ) -> ( Ruleset < Bv > , Duration ) {
26- let start = Instant :: now ( ) ;
27- let mut rules: Ruleset < Bv > = Ruleset :: default ( ) ;
28- let lang = Lang :: new (
29- & [ "0" , "1" ] ,
30- & [ "a" , "b" , "c" ] ,
31- & [ & [ "~" , "-" ] , & [ "&" , "|" , "*" , "--" , "+" , "<<" , ">>" ] ] ,
32- ) ;
33- rules. extend ( recursive_rules (
34- enumo:: Metric :: Atoms ,
35- 5 ,
36- lang. clone ( ) ,
37- Ruleset :: default ( ) ,
38- ) ) ;
39-
40- let a6_canon = iter_metric ( base_lang ( 2 ) , "EXPR" , enumo:: Metric :: Atoms , 6 )
41- . plug ( "VAR" , & Workload :: new ( lang. vars ) )
42- . plug ( "VAL" , & Workload :: empty ( ) )
43- . plug ( "OP1" , & Workload :: new ( lang. ops [ 0 ] . clone ( ) ) )
44- . plug ( "OP2" , & Workload :: new ( lang. ops [ 1 ] . clone ( ) ) )
45- . filter ( Filter :: Canon ( vec ! [
46- "a" . to_string( ) ,
47- "b" . to_string( ) ,
48- "c" . to_string( ) ,
49- ] ) ) ;
50- let consts = Workload :: new ( [ "0" , "1" ] ) ;
51- let wkld = Workload :: Append ( vec ! [ a6_canon, consts] ) ;
52- rules. extend ( run_workload (
53- wkld,
54- rules. clone ( ) ,
55- Limits :: synthesis ( ) ,
56- Limits :: minimize ( ) ,
57- true ,
58- ) ) ;
59-
60- let duration = start. elapsed ( ) ;
61- ( rules, duration)
62- }
63-
64- #[ test]
65- fn compare ( ) {
66- let domain = "BV64" ;
67- // Port the bv4 rules into domain
68- let actual_bv4_rules: Ruleset < _ > = bv4_fancy_rules ( ) ;
69- let ported_bv4_rules: Ruleset < Bv > = Ruleset :: new ( actual_bv4_rules. to_str_vec ( ) ) ;
70-
71- // Generate the rules directly
72- let ( gen, gen_time) : ( Ruleset < Bv > , Duration ) = gen ( ) ;
73-
74- logger:: write_bv_derivability ( domain, gen, gen_time, ported_bv4_rules)
75- }
76- }
0 commit comments