@@ -218,7 +218,9 @@ def check_program(
218218 is_list_constant = True
219219 my_outputs = []
220220 candidates = set (all_sol .keys ())
221- is_identity = [len (program .used_variables ()) == 1 for _ in program .type .arguments ()]
221+ is_identity = [
222+ set ([i ]) == arg .used_variables () for i , arg in enumerate (program .arguments )
223+ ]
222224 for i , inp in enumerate (inputs ):
223225 out = our_eval (program , inp )
224226 # Update candidates
@@ -280,6 +282,9 @@ def check_symmetries() -> None:
280282 if current_prog in programs_done :
281283 continue
282284 programs_done .add (current_prog )
285+ used = current_prog .used_variables ()
286+ if len (used ) == 1 and 0 not in used :
287+ continue
283288 is_constant , is_identity , candidates , my_outputs = check_program (
284289 current_prog , inputs , all_sol
285290 )
@@ -313,6 +318,9 @@ def check_equivalent() -> None:
313318 for done , program in enumerate (get_enumerator (cfg )):
314319 if program in programs_done :
315320 continue
321+ used = program .used_variables ()
322+ if len (used ) == 1 and 0 not in used :
323+ continue
316324 is_constant , is_identity , candidates , my_outputs = check_program (
317325 program , inputs , all_sol
318326 )
@@ -349,7 +357,7 @@ def update_filter(
349357 builder = equivalence_classes_to_filters (commutatives , classes , dsl )
350358 if verbose :
351359 print (
352- f"\t found { F .YELLOW } { builder .stats ['constraints.successes' ]} { F .RESET } ({ F .YELLOW } { builder .stats ['constraints.successes' ]/ builder .stats ['constraints.total' ]:.1%} { F .RESET } ) constraints"
360+ f"\t found { F .YELLOW } { builder .stats ['constraints.successes' ]} { F .RESET } ({ F .YELLOW } { builder .stats ['constraints.successes' ] / builder .stats ['constraints.total' ]:.1%} { F .RESET } ) constraints"
353361 )
354362 return (lambda t : builder .get_filter (t , set ())), builder .stats
355363
0 commit comments