
    ni                         S SK rS SKrS r\R                  R                  SSS9\R                  R                  SS/5      S 5       5       r\R                  R                  S/ S	Q5      S
 5       rg)    Nc                    [         R                  " 5         [         R                  " 5         [         R                  " 5         S[         R                  l        U S:X  a  S[         R                  l        gU S:X  a  S[         R                  l        gg)z3Configure PyReason settings for the specified mode.TfpparallelN)prresetreset_rulesreset_settingssettingsverbose
fp_versionparallel_computing)modes    Y/home/james-whalen/.local/lib/python3.13/site-packages/tests/functional/test_utilities.py
setup_moder      sY    HHJNNBKKt|!%		)-& 
    TzNot implemented for FP version)reasonr   regularc                    Sn[        U 5        S[        R                  l        S[        R                  l        S[        R                  l        S[        R                  l        S[        R                  l        S[        R                  l        S[        R                  l	        [        R                  " U5        [        R                  " [        R                  " SSSS95        [        R                  " SS9n/ nUR                  5       nUR                  5        HD  u  pVUR!                  S	5        UR                  5        H  u  pxX5==   [#        U5      -  ss'   M     MF     U[%        UR'                  5       5      :X  d   S
5       eg)z(Test ground atom counting functionality.z6./tests/functional/knowledge_graph_test_subset.graphmlTFzlisConnectedTo(A, Y) <-1 isConnectedTo(Y, B), Amsterdam_Airport_Schiphol(B), Vnukovo_International_Airport(A)connected_rule_1)infer_edges   )	timestepsr   zPNumber of ground atoms should be the same as the computed number of ground atomsN)r   r   r
   
atom_trace	canonicalinconsistency_checkstatic_graph_factsoutput_to_filestore_interpretation_changessave_graph_attributes_to_traceload_graphmladd_ruleRuler   get_dictitemsappendlenlistget_num_ground_atoms)	r   
graph_pathinterpretationga_cntdtimeatomscomp
label_bndss	            r   test_num_gar1      s7    JJt "BKK BKK&+BKK#%*BKK"!&BKK/3BKK,15BKK. OOJKK  G  I[  im  n  o YY+N F!Awwya %DLC
O+L !. ! T.==?@@  U  CU  U@r   )r   r   r   c                    [        U 5        SnS[        R                  l        [        R                  " U5        [        R
                  " [        R                  " SS5      5        [        R
                  " [        R                  " SS5      5        [        R
                  " [        R                  " SS5      5        [        R
                  " [        R                  " S	S
5      5        [        R
                  " [        R                  " SS5      5        [        R                  " S5      n[        R                  R                  U/[        R                  " 5       5      nU Vs/ s H  oDR                  5       PM     nnSU;   d   S5       eSU;   d   S5       eS
U;   d   S5       eSU;   d   S5       eSU;  d   S5       egs  snf )z"Test rule filtering functionality.z(./tests/functional/friends_graph.graphmlTz0head1(x) <-1 pred1(x,y), pred2(y,z), pred3(z, w)rule1z0head1(x) <-1 pred1(x,y), pred4(y,z), pred3(z, w)rule2z0head2(x) <-1 pred1(x,y), pred2(y,z), pred3(z, w)rule3zpred1(x,y) <-1 pred2(x,y)rule4zpred2(x,y) <-1 pred3(x,y)rule5zhead1(x)z&Rule 1 should be in the filtered rulesz&Rule 2 should be in the filtered rulesz&Rule 4 should be in the filtered rulesz&Rule 5 should be in the filtered rulesz*Rule 3 should not be in the filtered rulesN)r   r   r
   r   r    r!   r"   Queryruleset_filterfilter_ruleset	get_rulesget_rule_name)r   r)   queryfiltered_rulesrfiltered_rule_namess         r   test_rule_filteringrA   6   sd    t <J "BKK OOJKKJGTUKKJGTUKKJGTU KK3W=>KK3W=> HHZ E &&55ugr||~NN6DEn??,nE))S+SS)))S+SS)))S+SS)))S+SS)--[/[[- Fs   F;)	pyreasonr   pytestr   markskipifparametrizer1   rA    r   r   <module>rH      s     
. D!AB)-U . CUB !>?\ @\r   