
    nik                        S SK rS SKrS r\R                  R
                  \R                  R                  S/ SQ5      S 5       5       r\R                  R
                  \R                  R                  S/ SQ5      S 5       5       r\R                  R
                  \R                  R                  S/ SQ5      S 5       5       r	\R                  R
                  \R                  R                  S/ SQ5      S 5       5       r
g)	    Nc                    [         R                  " 5         [         R                  " 5         [         R                  " 5         S[         R                  l        S[         R                  l        S[         R                  l        S[         R                  l        S[         R                  l	        S[         R                  l
        S[         R                  l        S[         R                  l        S[         R                  l        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.TFfpparallelN)prresetreset_rulesreset_settingssettingsverbose
atom_tracememory_profile	canonicalinconsistency_checkstatic_graph_factsoutput_to_filestore_interpretation_changessave_graph_attributes_to_traceparallel_computing
fp_version)modes    ^/home/james-whalen/.local/lib/python3.13/site-packages/tests/functional/test_edge_inference.py
setup_moder      s    HHJNN BKK!BKK!&BKK BKK&+BKK#%*BKK"!&BKK/3BKK,15BKK.%*BKK"t|!%		)-& 
    r   )regularr   r   c                 N   Sn[        U 5        [        R                  " U5        [        R                  " [        R                  " SSSS95        [        R
                  " SS9n[        R                  " US/5      n[        U5       H(  u  pE[        S	U 35        [        U5        [        5         M*     [        U5      S
:X  d   S5       e[        US   5      S:X  d   S5       eSUS   S   R                  R                  5       ;   a  US   S   R                  S   SS/:X  d   S5       eg)zTest anyBurl rule 1: isConnectedTo(A, Y) <- isConnectedTo(Y, B), Amsterdam_Airport_Schiphol(B), Vnukovo_International_Airport(A)6./tests/functional/knowledge_graph_test_subset.graphmlzmisConnectedTo(A, Y) <-1  isConnectedTo(Y, B), Amsterdam_Airport_Schiphol(B), Vnukovo_International_Airport(A)connected_rule_1Tinfer_edges   	timestepsisConnectedToTIMESTEP -    1Pyreason should run exactly 2 fixpoint operations4At t=1 there should be only 1 new isConnectedTo atom)Vnukovo_International_AirportRiga_International_Airport	componentr   zt(Vnukovo_International_Airport, Riga_International_Airport) should have isConnectedTo bounds [1,1] for t=1 timestepsNr   r   load_graphmladd_ruleRulereasonfilter_and_sort_edges	enumerateprintlenvaluestolistilocr   
graph_pathinterpretation
dataframestdfs         r   test_anyBurl_rule_1r=      t    JJt OOJKK  H  J\  jn  o  p YY+N )).?:KLJ:&A3 b	 ' z?aT!TTz!}"Z$ZZ"JjYZm\gNhNoNoNvNvNxx  ~H  IJ  ~K  L[  ~\  ~a  ~a  bc  ~d  ij  lm  hn  ~n  f  pf  f  n  ~nr   c                 N   Sn[        U 5        [        R                  " U5        [        R                  " [        R                  " SSSS95        [        R
                  " SS9n[        R                  " US/5      n[        U5       H(  u  pE[        S	U 35        [        U5        [        5         M*     [        U5      S
:X  d   S5       e[        US   5      S:X  d   S5       eSUS   S   R                  R                  5       ;   a  US   S   R                  S   SS/:X  d   S5       eg)zTest anyBurl rule 2: isConnectedTo(Y, A) <- isConnectedTo(Y, B), Amsterdam_Airport_Schiphol(B), Vnukovo_International_Airport(A)r   zmisConnectedTo(Y, A) <-1  isConnectedTo(Y, B), Amsterdam_Airport_Schiphol(B), Vnukovo_International_Airport(A)connected_rule_2Tr   r    r!   r#   r$   r%   r&   r'   )r)   r(   r*   r   zt(Riga_International_Airport, Vnukovo_International_Airport) should have isConnectedTo bounds [1,1] for t=1 timestepsNr+   r7   s         r   test_anyBurl_rule_2rA   7   r>   r   c                 N   Sn[        U 5        [        R                  " U5        [        R                  " [        R                  " SSSS95        [        R
                  " SS9n[        R                  " US/5      n[        U5       H(  u  pE[        S	U 35        [        U5        [        5         M*     [        U5      S
:X  d   S5       e[        US   5      S:X  d   S5       eSUS   S   R                  R                  5       ;   a  US   S   R                  S   SS/:X  d   S5       eg)zTest anyBurl rule 3: isConnectedTo(A, Y) <- isConnectedTo(B, Y), Amsterdam_Airport_Schiphol(B), Vnukovo_International_Airport(A)r   zmisConnectedTo(A, Y) <-1  isConnectedTo(B, Y), Amsterdam_Airport_Schiphol(B), Vnukovo_International_Airport(A)connected_rule_3Tr   r    r!   r#   r$   r%   1Pyreason should run exactly 1 fixpoint operationsr'   )r(   Yalir*   r   z^(Vnukovo_International_Airport, Yali) should have isConnectedTo bounds [1,1] for t=1 timestepsNr+   r7   s         r   test_anyBurl_rule_3rF   P   f    JJt OOJKK  H  J\  jn  o  p YY+N )).?:KLJ:&A3 b	 ' z?aT!TTz!}"Z$ZZ"4
1k8R8Y8Y8`8`8bbgqrsgt  vE  hF  hK  hK  LM  hN  ST  VW  RX  hX  z  Zz  z  X  hXr   c                 N   Sn[        U 5        [        R                  " U5        [        R                  " [        R                  " SSSS95        [        R
                  " SS9n[        R                  " US/5      n[        U5       H(  u  pE[        S	U 35        [        U5        [        5         M*     [        U5      S
:X  d   S5       e[        US   5      S:X  d   S5       eSUS   S   R                  R                  5       ;   a  US   S   R                  S   SS/:X  d   S5       eg)zTest anyBurl rule 4: isConnectedTo(Y, A) <- isConnectedTo(B, Y), Amsterdam_Airport_Schiphol(B), Vnukovo_International_Airport(A)r   zmisConnectedTo(Y, A) <-1  isConnectedTo(B, Y), Amsterdam_Airport_Schiphol(B), Vnukovo_International_Airport(A)connected_rule_4Tr   r    r!   r#   r$   r%   rD   r'   )rE   r(   r*   r   z^(Yali, Vnukovo_International_Airport) should have isConnectedTo bounds [1,1] for t=1 timestepsNr+   r7   s         r   test_anyBurl_rule_4rJ   i   rG   r   )pyreasonr   pytestr   markslowparametrizer=   rA   rF   rJ    r   r   <module>rQ      s     .0 !>?f @ f. !>?f @ f. !>?z @ z. !>?z @ zr   