
    niV                       S SK JrJr  S SKJs  Js  Js  Jr  S SK	Js  Js  Js  J
r  S SKJs  Js  Js  Jr  S SKJr  S SKrS SKJrJr  \R(                  R*                  r\R(                  R/                  \R(                  R*                  S5      r\R(                  R3                  \5      r\R(                  R3                  \5      r\R(                  R                  \R(                  R*                  \R                  \R(                  R3                  \R(                  R*                  5      45      r\R(                  R                  \R(                  R*                  \R(                  R*                  \R(                  R:                  45      r\R(                  R                  \R(                  R>                  \\R                  \R                  \R(                  R@                  \R(                  R@                  45      r!\R(                  R                  \R(                  R>                  \\R                  \R                  \R(                  R@                  \R(                  R@                  45      r"\R(                  R                  \\R(                  R3                  \R(                  R3                  \R                  5      5      \R(                  R3                  \R(                  R3                  \5      5      \R(                  R3                  \R(                  R3                  \5      5      \R(                  R                  \R(                  R3                  \5      \R(                  R3                  \5      \R                  45      45      r#\R(                  R                  \\R(                  R3                  \R(                  R3                  \R                  5      5      \R(                  R3                  \R(                  R3                  \5      5      \R(                  R3                  \R(                  R3                  \5      5      \R(                  R                  \R(                  R3                  \5      \R(                  R3                  \5      \R                  45      45      r$\R(                  R                  \R(                  R>                  \\R                  \R                  \R(                  R@                  45      r%\R(                  R                  \R(                  R>                  \\R                  \R                  \R(                  R@                  45      r&\R(                  R                  \R(                  R3                  \R(                  R3                  \5      5      \R(                  R3                  \R(                  R3                  \5      5      \R(                  R*                  45      r'\R(                  R                  \R(                  R3                  \5      \R(                  R3                  \5      \R                  45      r( " S S5      r)\RT                  " SS	9S
 5       r+\RT                  " SS	9S 5       r,\RT                  " SS	9S 5       r-\RT                  " SS	9S 5       r.\RT                  " SS	9S 5       r/\RT                  " SS	9S 5       r0\RT                  " SS	9S 5       r1\RT                  " SS	9S 5       r2\RT                  " SS	9S 5       r3\RT                  " SS	9S 5       r4\RT                  " SS	9S-S j5       r5\RT                  " SS	9S-S j5       r6\RT                  " SS	9S 5       r7\RT                  " SS	9S 5       r8\RT                  " SS	9S 5       r9\RT                  " SS	9S 5       r:\RT                  " SS	9S 5       r;\RT                  " SS	9S 5       r<\RT                  " SS	9S 5       r=\RT                  " SS	9S 5       r>\RT                  " SS	9S 5       r?\RT                  " SS	9S 5       r@\RT                  " SS	9S  5       rA\RT                  " SS	9S! 5       rB\RT                  " SS	9S" 5       rC\RT                  " SS	9S# 5       rD\RT                  " SS	9S$ 5       rE\RT                  " SS	9S% 5       rF\RT                  " SS	9S& 5       rG\RT                  " SS	9S' 5       rH\RT                  " SS	9S( 5       rI\RT                  " SS	9S) 5       rJ\RT                  " SS	9S* 5       rK\RT                  " SS	9S+ 5       rL\RT                  " SS	9S, 5       rMg).    )UnionTupleN)InterpretationDict)objmodeprange   c                      \ rS rSr\R
                  R                  R                  \R                  \R                  R                  \5      S9r\R
                  R                  R                  \R                  \R                  R                  \5      S9rS r\\R$                  " SS9S 5       5       r\\R$                  " SS9S 5       5       r\\R$                  " SS9S 5       5       r\\R$                  " SS9S	 5       5       rSS
 jr\\R$                  " SS9S 5       5       rS r\\R$                  " SSS9S 5       5       rS rS rS rS rS rS r S r!SS\"\#\$\%\%4   4   4S jjr&Sr'g)Interpretation6   key_type
value_typec           
         Xl         X l        X0l        X@l        XPl        X`l        Xpl        Xl        Xl        Xl	        Xl
        Xl        [        R                  R                  R                  [        R                   R"                  5      U l        U R$                  R'                  S5        SU l        [        R                  R                  SS/5      U l        [        R                  R                  R                  [,        5      U l        [        R                  R                  R                  [,        5      U l        [        R                  R                  R                  [        R                   R2                  5      U l        [        R                  R                  R                  [        R                   R2                  5      U l        [        R                  R                  R                  [8        5      U l        [        R                  R                  R                  [<        5      U l        [        R                  R                  R                  [@        5      U l!        [        R                  R                  R                  [D        5      U l#        [        R                  R                  R                  [        R                   RI                  [        R                   RK                  [L        5      [        R                   RK                  [L        5      [N        RP                  45      5      U l)        [        R                  R                  R                  [        R                   RI                  [        R                   RK                  [L        5      [        R                   RK                  [L        5      [N        RP                  45      5      U l*        [        R                  R                  R                  [        R                   RI                  [        R                   RK                  [        R                   RK                  [L        5      5      [        R                   RK                  [        R                   RK                  [V        5      5      [X        RZ                  [        R                   R2                  45      5      U l.        [        R                  R                  R                  [        R                   RI                  [        R                   RK                  [        R                   RK                  [L        5      5      [        R                   RK                  [        R                   RK                  [V        5      5      [X        RZ                  [        R                   R2                  45      5      U l/        [        R                  R                  R                  [        R                   RI                  [        R                   R`                  [        R                   R`                  [L        [N        RP                  [X        RZ                  45      5      U l1        [        R                  R                  R                  [        R                   RI                  [        R                   R`                  [        R                   R`                  [V        [N        RP                  [X        RZ                  45      5      U l2        [        R                  R                  R                  [L        5      U l3        [        R                  R                  R                  [V        5      U l4        U Rf                  Rk                  [        R                  R                  U R                   Rg                  5       5      5        U Rh                  Rk                  [        R                  R                  U R                   Ri                  5       5      5        U Rm                  U Rf                  U Rn                  U R$                  5      u  U l8        U l9        U Ru                  U Rh                  U Rv                  U R$                  5      u  U l<        U l=        [        R                  R|                  R                  [L        [        R                   RK                  [L        5      S9U l@        U R                   Rg                  5        Hw  n[        R                  R                  R                  [L        5      nU R                   R                  U5       Vs/ s H  oR'                  U5      PM       nXR                  U'   My     U R                  U R                  5      U lB        g s  snf )Nr   r   )Cgraphiplannotation_functionshead_functionsreverse_graph
atom_trace#save_graph_attributes_to_rule_trace
persistentinconsistency_checkstore_interpretation_changesupdate_modeallow_ground_rulesnumbatypedList
empty_listtypesint64num_gaappendtimeprev_reasoning_datarules_to_be_applied_trace_typerules_to_be_applied_node_tracerules_to_be_applied_edge_tracestringfacts_to_be_applied_node_tracefacts_to_be_applied_edge_tracerules_to_be_applied_node_typerules_to_be_applied_noderules_to_be_applied_edge_typerules_to_be_applied_edgefacts_to_be_applied_node_typefacts_to_be_applied_nodefacts_to_be_applied_edge_typefacts_to_be_applied_edger   ListType	node_typelabel
label_typeedges_to_be_added_node_ruleedges_to_be_added_edge_rule	edge_typeintervalinterval_typerule_trace_node_atomsrule_trace_edge_atomsuint16rule_trace_noderule_trace_edgenodesedgesextend_init_interpretations_nodespecific_node_labelsinterpretations_nodepredicate_map_node_init_interpretations_edgespecific_edge_labelsinterpretations_edgepredicate_map_edgeDictempty	neighbors_init_reverse_neighborsreverse_neighbors)selfr   r   r   r   r   r   r   r   r   r   r   r   nlneighs                   q/home/james-whalen/.local/lib/python3.13/site-packages/pyreason/scripts/interpretation/interpretation_parallel.py__init__Interpretation.__init__:   s   *(2&$/-P*/0&B# .   ++EKK,=,=>$+++Q $)"[[--q!f5$ ).(8(8(C(CDb(c$%(-(8(8(C(CDb(c$%(-(8(8(C(CEKKDVDV(W$%(-(8(8(C(CEKKDVDV(W$%"'++"2"2"="=>["\$"'++"2"2"="=>["\$"'++"2"2"="=>["\$"'++"2"2"="=>["\$%*[[%5%5%@%@ARARTYT_T_ThThirTsuz  vA  vA  vJ  vJ  KT  vU  W\  Wg  Wg  Th  Bi  &j$"%*[[%5%5%@%@ARARTYT_T_ThThirTsuz  vA  vA  vJ  vJ  KT  vU  W\  Wg  Wg  Th  Bi  &j$"  %{{//::5;;;L;LekkNbNbchcncncwcw  yB  dC  OD  FK  FQ  FQ  FZ  FZ  [`  [f  [f  [o  [o  py  [z  F{  }E  }S  }S  UZ  U`  U`  Ug  Ug  Nh  <i   j$${{//::5;;;L;LekkNbNbchcncncwcw  yB  dC  OD  FK  FQ  FQ  FZ  FZ  [`  [f  [f  [o  [o  py  [z  F{  }E  }S  }S  UZ  U`  U`  Ug  Ug  Nh  <i   j$))44U[[5F5FHZHZ\a\g\g\n\npy  |A  |L  |L  NV  Nd  Nd  He  6f  g$))44U[[5F5FHZHZ\a\g\g\n\npy  |A  |L  |L  NV  Nd  Nd  He  6f  g$ {{**95$*{{**95$***EKK$$TZZ%5%5%789**EKK$$TZZ%5%5%7897;7V7VW[WaWacgc|c|  C  J  J  8K4$T47;7V7VW[WaWacgc|c|  C  J  J  8K4$T4 ;;##))9I]I]^gIh)i$.::a{{""9-1!%!5!5a!89!8HHUO!89>>! 
  77G$ :s   &e5Tcachec                    [         R                  R                  R                  [        [
        S9nU R                  5        H  u  p#U HG  nXA;   a  X!U   ;  a  X   R                  U5        M%  [         R                  R                  U/5      X'   MI     X!;  d  MY  [         R                  R                  R                  [        5      X'   M     U$ )Nr   )
r   r   rM   rN   r5   list_of_nodesitemsr#   r   r   )rO   rQ   rS   neighbor_nodesneighbor_nodes        rV   rP   &Interpretation._init_reverse_neighborst   s     kk&&,,iM,Z$??,a&})a7W.W%,,Q/(-(8(8!(=%	 '   ;;++66yA - 
    c                    [         R                  R                  R                  [        [
        R                  S9n[         R                  R                  R                  [        R                  [        S9nU  HP  n[
        R                  " [         R                  R                  R                  [        R                  5      5      X5'   MR     UR                  5        Hb  u  pg[         R                  R                  U5      XF'   U H6  n[        R                  " SS5      X5   R
                  U'   US==   S-  ss'   M8     Md     X44$ Nr   g        g      ?r      )r   r   rM   rN   r5   world
world_typer6   r7   r\   Worldr   r   r]   r;   closed)rB   specific_labelsr"   interpretationspredicate_maprS   rT   nss           rV   rE   )Interpretation._init_interpretations_node        KK$$**I%JZJZ*[/++""((%2B2B}(]- aEKK$4$4$?$?@P@P$QR?  $$&eakk&&r*=q"*//#s";OQ
1INI  ' 
	''ra   c                    [         R                  R                  R                  [        [
        R                  S9n[         R                  R                  R                  [        R                  [        S9nU  HP  n[
        R                  " [         R                  R                  R                  [        R                  5      5      X5'   MR     UR                  5        Hb  u  pg[         R                  R                  U5      XF'   U H6  n[        R                  " SS5      X8   R
                  U'   US==   S-  ss'   M8     Md     X44$ rc   )r   r   rM   rN   r:   re   rf   r6   r7   list_of_edgesrg   r   r   r]   r;   rh   )	rC   ri   r"   rj   rk   rS   rT   eses	            rV   rI   )Interpretation._init_interpretations_edge   rn   ra   c                 P    U S:X  a  US:X  a  SnSnX#4$ U S:X  a  SnUnX#4$ SnU nX#4$ )Nperfect_convergencer   delta_interpretationdelta_bound )convergence_bound_thresholdconvergence_thresholdconvergence_modeconvergence_deltas       rV   _init_convergence Interpretation._init_convergence   sc     !"$)>)B+ 
	,, #B&,, 
	,, $2		,,ra   c
           	         Xl         U R                  Xv5      u  U l        U l        U R	                  X#U R
                  U R                  U R                  U R                  U R                  5      n
U R                  XJXXU	5        g N)tmaxr~   _convergence_mode_convergence_delta_init_factsr1   r3   r*   r+   r   	_start_fp)rR   r   
facts_node
facts_edgerulesverboser{   rz   againrestartmax_facts_times              rV   start_fpInterpretation.start_fp   s    )484J4JKf4~1$$1##JD<Y<Y[_[x[xz~  {^  {^  `d  `C  `C  EI  ET  ET  U...@ra   c           
         SnU  H  n[        UR                  5       UR                  5       S-   5       H  n	[        Xy5      nUR	                  5       n
U
S:X  a  SOSnUR                  [        R                  R                  U	5      UR                  5       UR                  5       UR                  5       UR                  U45        U(       d  M  UR                  UR	                  5       5        M     M     U H  n[        UR                  5       UR                  5       S-   5       H  n	[        Xy5      nUR	                  5       n
U
S:X  a  SOSnUR                  [        R                  R                  U	5      UR                  5       UR                  5       UR                  5       UR                  U45        U(       d  M  UR                  UR	                  5       5        M     M     U$ )Nr   rd   graph-attribute-factTF)rangeget_time_lowerget_time_uppermaxget_namer#   r   r    r?   get_component	get_label	get_boundstatic)r   r   r1   r3   r*   r+   r   max_timefacttnamegraph_attributes               rV   r   Interpretation._init_facts   s    (d$%%')<)<)>)BCq8H==?D"$::dO##U[[%7%7%:D<N<N<PRVR`R`Rbdhdrdrdtvz  wB  wB  DS  %T  Uz#**4==?; D  d$%%')<)<)>)BCq8H==?D"$::dO##U[[%7%7%:D<N<N<PRVR`R`Rbdhdrdrdtvz  wB  wB  DS  %T  Uz#**4==?; D  
/ra   c                    U(       aE  U R                   R                  U R                   S   5        U(       a  SU l        SU R                  S'   U R                  " / U R
                  PU R                  PU R                  PU R                  PU R                  PU R                  PUPU R                  PU R                  PU R                  PU R                  PU R                  PU R                  PU R                   PU R"                  PU R$                  PU R&                  PU R(                  PU R*                  PU R,                  PU R.                  PU R0                  PU R2                  PU R4                  PU R6                  PU R8                  PU R:                  PU R<                  PU R>                  PU R@                  PU RB                  PU RD                  PU RF                  PU RH                  PUPU RJ                  PU RL                  PU RN                  PU RP                  PU R                   PUPUP76 u  pgUS-
  U l        XpR                  S'   X`R                  S'   U(       a  [S        SU5        g g )Nru   r   rd   zFixed Point iterations:)*r"   r#   r$   r%   reasonrG   rK   rH   rL   r   rB   rC   rO   rQ   r-   r/   r8   r9   r'   r(   r1   r3   r*   r+   r   r@   rA   r=   r>   r   r   r   r   r   r   r   r   r   r   r   r   print)rR   r   r   r   r   r   fp_cntr   s           rV   r   Interpretation._start_fp   s   
;;dkk"o&DI"#DQkk  F$33  FT5N5N  FPTPgPg  Fim  jA  jA  F  CG  CL  CL  F  NR  Nf  Nf  F  hm  F  os  oy  oy  F  {  {E  {E  F  GK  GU  GU  F  W[  Wm  Wm  F  os  oL  oL  F  NR  Nk  Nk  F  mq  mM  mM  F  OS  Oo  Oo  F  qu  qT  qT  F  VZ  Vy  Vy  F  {  {X  {X  F  Z^  Zw  Zw  F  y}  y\  y\  F  ^b  ^A	  ^A	  F  C	G	  C	K	  C	K	  F  M	Q	  M	a	  M	a	  F  c	g	  c	w	  c	w	  F  y	}	  y	S
  y	S
  F  U
Y
  U
o
  U
o
  F  q
u
  q
C  q
C  F  EI  ET  ET  F  VZ  V~  V~  F  @D  @O  @O  F  QU  Qi  Qi  F  ko  kL  kL  F  NR  N^  N^  F  `d  `w  `w  F  yG  F  IM  Ib  Ib  F  dh  dw  dw  F  y}  yO  yO  F  QU  Qh  Qh  F  jn  ju  ju  F  w~  F  @E  F)&!e$) !1 &1	"F+ ra   )rZ   parallelc*                 @9   US   n*US   n+Sn,Sn-[         R                  R                  R                  [        5      n.[         R                  R                  R                  [
        5      n/[         R                  R                  R                  [         R                  R                  5      n0[         R                  R                  R                  [         R                  R                  5      n1[        5       n2U2R                  S5        U-(       GaE  U*U:X  a  Sn-U((       a  [        5          [        SU*SS9  S S S 5        U*S:  a  U(       d  U HH  n3U U3   R                  n4U4 H0  n5U4U5   R                  5       (       a  M  U4U5   R                  5         M2     MJ     U HH  n6UU6   R                  n4U4 H0  n5U4U5   R                  5       (       a  M  U4U5   R                  5         M2     MJ     Sn7Sn8Sn9U.R                  5         U0R                  5         [        U5      n:[!        [#        U5      5       GH  n;UU;   S   U*:X  Gar  UU;   S   UU;   S   UU;   S	   UU;   S
   UU;   S   4u  n<n5n=n>n?U<U:;  a  [%        U<XXp5        U:R                  U<5        U5U U<   R                  ;   Ga  U U<   R                  U5   R                  5       (       Ga  U(       d  U?(       Gd  U(       Ga  UR'                  [         R                  R)                  U*5      [         R                  R)                  U+5      U<U5U=45        U(       a  [+        U[         R                  R                  R                  [         R                  R                  R                  [,        5      5      [         R                  R                  R                  [         R                  R                  R                  [.        5      5      U=UU;   5        U GHz  u  n@nAU@U5:X  Ga3  UR'                  [         R                  R)                  U*5      [         R                  R)                  U+5      U<WAU U<   R                  UA   45        U(       a  [+        U[         R                  R                  R                  [         R                  R                  R                  [,        5      5      [         R                  R                  R                  [         R                  R                  R                  [.        5      5      U U<   R                  WA   UU;   5        GM>  GMA  WAU5:X  d  GMJ  UR'                  [         R                  R)                  U*5      [         R                  R)                  U+5      U<W@U U<   R                  U@   45        U(       d  GM  [+        U[         R                  R                  R                  [         R                  R                  R                  [,        5      5      [         R                  R                  R                  [         R                  R                  R                  [.        5      5      U U<   R                  W@   UU;   5        GM}     O[1        U U<U5U=45      (       aY  U?(       a  SOSnBU S:X  a  SOSnC[3        XU<U5U=4UUU+U*U>U%UUUU;UUUU'WBUCS9u  nDnEUD=(       d    U9n9U%S:X  a  [5        U8WE5      n8OtU7WE-  n7OnU?(       a  SOSnBU(       a  [7        U U<U5U=4UU*U+U;UUUUUUWBS9  OC[3        XU<U5U=4UUU+U*U>U%UUUU;UUUU'WBSS9u  nDnEUD=(       d    U9n9U%S:X  a  [5        U8WE5      n8OU7WE-  n7U>(       a^  U.R'                  [         R                  R)                  UU;   S   S-   5      U<U5U=U>U?45        U(       a  U0R'                  UU;   5        GM}  GM  GM  U.R'                  UU;   5        U(       d  GM  U0R'                  UU;   5        GM     U.R9                  5       US S & U(       a  U0R9                  5       US S & U.R                  5         U0R                  5         U/R                  5         U1R                  5         [        U5      nF[!        [#        U5      5       GH  n;UU;   S   U*:X  Ga  UU;   S   UU;   S   UU;   S	   UU;   S
   UU;   S   4u  n<n5n=n>n?U<WF;  a>  [;        U<S   U<S   XXx[<        R>                  " S5      XUU'U*5        WFR                  U<5        U5UU<   R                  ;   Ga  UU<   R                  U5   R                  5       (       Ga  U(       d  U?(       Gd  U(       Ga  UR'                  [         R                  R)                  U*5      [         R                  R)                  U+5      U<U5UU<   R                  U5   45        U(       a  [+        U[         R                  R                  R                  [         R                  R                  R                  [,        5      5      [         R                  R                  R                  [         R                  R                  R                  [.        5      5      U=UU;   5        U GHz  u  n@nAU@U5:X  Ga3  UR'                  [         R                  R)                  U*5      [         R                  R)                  U+5      U<WAUU<   R                  UA   45        U(       a  [+        U[         R                  R                  R                  [         R                  R                  R                  [,        5      5      [         R                  R                  R                  [         R                  R                  R                  [.        5      5      UU<   R                  WA   UU;   5        GM>  GMA  WAU5:X  d  GMJ  UR'                  [         R                  R)                  U*5      [         R                  R)                  U+5      U<W@UU<   R                  U@   45        U(       d  GM  [+        U[         R                  R                  R                  [         R                  R                  R                  [,        5      5      [         R                  R                  R                  [         R                  R                  R                  [.        5      5      UU<   R                  W@   UU;   5        GM}     O[A        UU<U5U=45      (       aY  U?(       a  SOSnBU S:X  a  SOSnC[C        XU<U5U=4UUU+U*U>U%UUUU;UUUU'WBUCS9u  nDnEUD=(       d    U9n9U%S:X  a  [5        U8WE5      n8OtU7WE-  n7OnU?(       a  SOSnBU(       a  [E        UU<U5U=4UU*U+U;UUUUUUWBS9  OC[C        XU<U5U=4UUU+U*U>U%UUUU;UUUU'WBSS9u  nDnEUD=(       d    U9n9U%S:X  a  [5        U8WE5      n8OU7WE-  n7U>(       a^  U/R'                  [         R                  R)                  UU;   S   S-   5      U<U5U=U>U?45        U(       a  U1R'                  UU;   5        GM  GM  GM  U/R'                  UU;   5        U(       d  GM  U1R'                  UU;   5        GM     U/R9                  5       US S & U(       a  U1R9                  5       US S & U/R                  5         U1R                  5         SnGUG(       Ga  SnGU2R                  5         [G        U5       H  u  nHn;U;S   U*:X  d  M  U;S   U;S   U;S	   U;S
   4u  n<n5n=nI[1        U U<U5U=45      (       aN  U S:X  a  SOSnC[3        XU<U5U=4UUU+U*WIU%UUUWHUUUU'SUCS9u  nDnEUD=(       d    U9n9U%S:X  a  [5        U8WE5      n8OiU7WE-  n7OcU(       a  [7        U U<U5U=4UU*U+WHUUUUUUSS9  OC[3        XU<U5U=4UUU+U*WIU%UUUWHUUUU'SSS9u  nDnEUD=(       d    U9n9U%S:X  a  [5        U8WE5      n8OU7WE-  n7U2R                  WH5        GM     [         R                  R                  [!        [#        U5      5       V;s/ s H  n;U;U2;  d  M  UU;   PM     sn;5      US S & [         R                  R                  [!        [#        U5      5       V;s/ s H  n;U;U2;  d  M  UU;   PM     sn;5      US S & U(       aP  [         R                  R                  [!        [#        U5      5       V;s/ s H  n;U;U2;  d  M  UU;   PM     sn;5      US S & U2R                  5         [G        U5       GH-  u  nHn;U;S   U*:X  d  M  U;S   U;S   U;S	   U;S
   4u  n<n5n=nIUWH   u  nJnKnL[I        UJUKXXxULXUU'U*5      u  nMnEU7UE-  n7ULRJ                  S:w  a  WM H  n6UU6   R                  WL   R                  5       (       a  M*  [A        UU6WLU=45      (       aP  U S:X  a  SOSnC[C        XU6WLU=4UUU+U*WIU%UUUWHUUUU'SUCS9u  nDnEUD=(       d    U9n9U%S:X  a  [5        U8WE5      n8M  U7WE-  n7M  U(       a  [E        UU6WLU=4UU*U+WHUUUUUUSS9  M  [C        XU6WLU=4UUU+U*WIU%UUUWHUUUU'SSS9u  nDnEUD=(       d    U9n9U%S:X  a  [5        U8WE5      n8M  U7WE-  n7M     O[A        UU<U5U=45      (       aN  U S:X  a  SOSnC[C        XU<U5U=4UUU+U*WIU%UUUWHUUUU'SUCS9u  nDnEUD=(       d    U9n9U%S:X  a  [5        U8WE5      n8OiU7WE-  n7OcU(       a  [E        UU<U5U=4UU*U+WHUUUUUUSS9  OC[C        XU<U5U=4UUU+U*WIU%UUUWHUUUU'SSS9u  nDnEUD=(       d    U9n9U%S:X  a  [5        U8WE5      n8OU7WE-  n7U2R                  WH5        GM0     [         R                  R                  [!        [#        U5      5       V;s/ s H  n;U;U2;  d  M  UU;   PM     sn;5      US S & [         R                  R                  [!        [#        U5      5       V;s/ s H  n;U;U2;  d  M  UU;   PM     sn;5      US S & U(       aP  [         R                  R                  [!        [#        U5      5       V;s/ s H  n;U;U2;  d  M  UU;   PM     sn;5      US S & U9(       Gap  U+S-  n+[         R                  R                  [!        [#        U5      5       VNs/ s H0  nN[         R                  R                  R                  [L        5      PM2     snN5      nO[         R                  R                  [!        [#        U5      5       VNs/ s H0  nN[         R                  R                  R                  [N        5      PM2     snN5      nPU(       a  [         R                  R                  [!        [#        U5      5       VNs/ s H0  nN[         R                  R                  R                  [P        5      PM2     snN5      nQ[         R                  R                  [!        [#        U5      5       VNs/ s H0  nN[         R                  R                  R                  [P        5      PM2     snN5      nR[         R                  R                  [!        [#        U5      5       VNs/ s H0  nN[         R                  R                  R                  [R        5      PM2     snN5      nS[         R                  R                  R                  [         R                  RT                  5      nT[         R                  R                  R                  [         R                  RT                  5      nU[!        [#        U5      5       H%  nNWTR'                  S5        WUR'                  S5        M'     [W        [#        U5      5       GHP  n;UU;   nVUVRY                  5       nWU*UW-   U::  d  US:X  d	  U)(       d  M1  [[        WVXX#XxXUU!U'U*U$5      u  nXnYUX GHj  nZUZu  n3n[n\n]nNWVR]                  5       U U3   R                  ;  d5  U U3   R                  WVR]                  5          R                  5       (       a  Mb  [_        U#WVW[UVRa                  5       5      n=[c        [5        U=S   S5      S5      n^[c        [5        U=S   S5      S5      n_[d        Rf                  " U^U_5      n=[5        U,U*WW-   5      n,WOU;   R'                  [         R                  R)                  U*UW-   5      U3UVR]                  5       U=UVRi                  5       45        U(       a%  WQU;   R'                  W\W]WVRk                  5       45        WWS:X  d  GM`  SWTU;'   SWUU;'   GMm     WY GH  nZUZu  n6n[n\n]n`[#        U`S   5      S:  dV  WVR]                  5       UU6   R                  ;  d5  UU6   R                  WVR]                  5          R                  5       (       a  Mt  [_        U#WVW[UVRa                  5       5      n=[c        [5        U=S   S5      S5      n^[c        [5        U=S   S5      S5      n_[d        Rf                  " U^U_5      n=[5        U,U*WW-   5      n,WSU;   R'                  W`5        WPU;   R'                  [         R                  R)                  U*UW-   5      U6UVR]                  5       U=UVRi                  5       45        U(       a%  WRU;   R'                  W\W]WVRk                  5       45        WWS:X  d  GM  SWTU;'   SWUU;'   GM     GMS     [!        [#        U5      5       H  n;[#        WOU;   5      S:  a  URm                  WOU;   5        [#        WPU;   5      S:  a  URm                  WPU;   5        U(       aL  [#        WQU;   5      S:  a  URm                  WQU;   5        [#        WRU;   5      S:  a  URm                  WRU;   5        [#        WSU;   5      S:  d  M  URm                  WSU;   5        M     WGnGU9n9[!        [#        U5      5       H  n;WTU;   (       a  SnGWUU;   (       a  M  Sn9M     WG(       a  GM  U%S:X  a3  U7U&::  a,  U((       a  [        SU* S[o        U75       S35        U*S-  n* U+U*4$ OjU%S:X  a3  U8U&::  a,  U((       a  [        SU* S[q        U85       S35        U*S-  n* U+U*4$ O1U%S:X  a+  U*U":  a%  U*U,:  a  U((       a  [        SU* 35        U*S-  n* U+U*4$ U*S-  n*U'R'                  U'S   5        U-(       a  GME  U+U*4$ ! , (       d  f       GN+= fs  sn;f s  sn;f s  sn;f s  sn;f s  sn;f s  sn;f s  snNf s  snNf s  snNf s  snNf s  snNf )Nr   rd   Tru   Fz	Timestep:)flushr            r   r   override)moder   rx   )r    rulerw   z
Converged at time: z with z) changes from the previous interpretationz= as the maximum bound change from the previous interpretationrv   )9r   r   r   r   r0   r2   r    r)   setaddr   r   re   	is_staticresetclearr   len	_add_noder#   r?   _update_rule_tracer5   r:   check_consistent_node_update_noder   resolve_inconsistency_nodecopy	_add_edger6   Labelcheck_consistent_edge_update_edgeresolve_inconsistency_edge	enumerate
_add_edgesvaluer,   r.   r&   edges_to_be_added_typebooleanr   	get_delta_ground_rule
get_targetannotateget_weightsminr;   rh   is_static_ruler   rD   intfloat_to_str)arG   rK   rH   rL   r   r%   r   rB   rC   rO   rQ   r-   r/   r8   r9   r'   r(   r1   r3   r*   r+   r   r@   rA   r=   r>   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r"   r   r   r   r   max_rules_timetimestep_loopfacts_to_be_applied_node_newfacts_to_be_applied_edge_new"facts_to_be_applied_node_trace_new"facts_to_be_applied_edge_trace_newrules_to_remove_idxrS   wrT   rr   changes_cntbound_deltaupdate	nodes_seticompbndr   r   p1p2r   r   uchanges	edges_setin_loopidx
set_staticsourcestargetsedge_ledges_added_#rules_to_be_applied_node_threadsafe#rules_to_be_applied_edge_threadsafe)rules_to_be_applied_node_trace_threadsafe)rules_to_be_applied_edge_trace_threadsafe&edges_to_be_added_edge_rule_threadsafein_loop_threadsafeupdate_threadsafer   delta_tapplicable_node_rulesapplicable_edge_rulesapplicable_ruleannotationsqualified_nodesqualified_edgesbnd_lbnd_uedges_to_addsa                                                                                                    rV   r   Interpretation.reason   s#    !!q!&.-!&!1!1!<!<=Z![!&!1!1!<!<=Z![',{{'7'7'B'B5;;CUCU'V$',{{'7'7'B'B5;;CUCU'V$"gM	
;& 
 c*	a	 	&	&QqT^^tzz|   	a	 	&	&QqT^^tzz|   ;;6  %%'%++-5z9#./0q"1%*-Ea-H-KMefgMhijMk  nF  GH  nI  JK  nL  Nf  gh  Ni  jk  Nl  nF  GH  nI  JK  nL  .L*T1c6?IiEPmmD 	
!$'---2Ft2L2R2RST2U2_2_2a2a ._Jfu{{11!4ekk6H6H6PRVXY[^_`
0%++2B2B2M2MekkN^N^NiNijsNt2uw|  xC  xC  xH  xH  xS  xS  TY  T_  T_  Td  Td  To  To  py  Tz  x{  }@  B`  ab  Bc  	d62rq5			!3!3A!68J8J68RTXZ\^rsw^x^~^~  @B  _C  !D  
E
2EKK4D4D4O4OPUP[P[P`P`PkPkluPv4wy~  zE  zE  zJ  zJ  zU  zU  V[  Va  Va  Vf  Vf  Vq  Vq  r{  V|  z}  S  TX  Y  _  _  `b  c  eC  DE  eF  G U			!3!3A!68J8J68RTXZ\^rsw^x^~^~  @B  _C  !D  
EJ
2EKK4D4D4O4OPUP[P[P`P`PkPkluPv4wy~  zE  zE  zJ  zJ  zU  zU  V[  Va  Va  Vf  Vf  Vq  Vq  r{  V|  z}  S  TX  Y  _  _  `b  c  eC  DE  eF  G  
3TAs8	D	D(7$Vt%3$x !54RSUXQY[^`oqwyz  }C  EU  Wa  cF  Hf  hi  kI  K`  b~  @F  MQ  \d  ezq'Vv
M
)+w/w )8$Vt
"#73xaQWYZ\fhw  zO  Qo  qO  Qm  tx  	y!"6DSTVYRZ\_aprxz{  ~D  FV  Xb  dG  Ig  ij  lJ  La  c  AG  NR  ]a  b
7f]*;0		"))5;;+=+=>VWX>YZ[>\]^>^+_aeghjmou  xG  +H  I	)001OPQ1RS 
 	 "(()A!)DE
(//0Nq0QR 1D ">!B!B!DA(J(O(O(Q"1%%%'%++-  %%'%++-5z9#./0q"1%q(-Ea-H-KMefgMhijMk  nF  GH  nI  JK  nL  Nf  gh  Ni  jk  Nl  nF  GH  nI  JK  nL  .L*T1c6?IQa)ekkZ\o_s  L^  `f  hi  jmmD 	
!$'---2Ft2L2R2RST2U2_2_2a2a
-_Jfu{{11!4ekk6H6H6PRVXY[opt[u[{[{|}[~  A
0%++2B2B2M2MekkN^N^NiNijsNt2uw|  xC  xC  xH  xH  xS  xS  TY  T_  T_  Td  Td  To  To  py  Tz  x{  }@  B`  ab  Bc  	d62rq5			!3!3A!68J8J68RTXZ\^rsw^x^~^~  @B  _C  !D  
E
2EKK4D4D4O4OPUP[P[P`P`PkPkluPv4wy~  zE  zE  zJ  zJ  zU  zU  V[  Va  Va  Vf  Vf  Vq  Vq  r{  V|  z}  S  TX  Y  _  _  `b  c  eC  DE  eF  G U			!3!3A!68J8J68RTXZ\^rsw^x^~^~  @B  _C  !D  
EJ
2EKK4D4D4O4OPUP[P[P`P`PkPkluPv4wy~  zE  zE  zJ  zJ  zU  zU  V[  Va  Va  Vf  Vf  Vq  Vq  r{  V|  z}  S  TX  Y  _  _  `b  c  eC  DE  eF  G  
3TAs8	D	D(7$Vt%3$x !54RSUXQY[^`oqwyz  }C  EU  Wa  cF  Hf  hi  kI  K`  b~  @F  MQ  \d  ezq'Vv
M
)+w/w )8$Vt
"#73xaQWYZ\fhw  zO  Qo  qO  Qm  tx  	y!"6DSTVYRZ\_aprxz{  ~D  FV  Xb  dG  Ig  ij  lJ  La  c  AG  NR  ]a  b
7f]*;0		"))5;;+=+=>VWX>YZ[>\]^>^+_aeghjmou  xG  +H  I	)001OPQ1RS 
 	 "(()A!)DE
(//0Nq0QR{ 1@ ">!B!B!DA(J(O(O(Q"1%%%'%++-7	G 45Q	!	!"1qtQqT1Q4!7dAsJ	3TAs8	D	D%3$x !54RSUXQY[^`oqwyz  }G  IY  [e  gJ  Lj  lo  qO  Qf  hD  FL  SY  dl  mzq'Vv
M
)+w/w "#73xaQWY\^hjy  |Q  Sq  sQ  So  v|  	}!"6DSTVYRZ\_aprxz{  ~H  JZ  \f  hK  Mk  mp  rP  Rg  iE  GM  TZ  ei  j
7f]*;0		 c"; 6@ #(++"2"2Y^_bc{_|Y}  4_Y}TU  BC  K^  B^4O4LQ4OY}  4_  #`Q%*[[%5%5_deh  jE  fF  `G  7h  `GZ[  KL  Tg  Kg7U7RST7U  `G  7h  &i").)9)9fklo  qO  mP  gQ  ;r  gQab  UV  ^q  Uq;\;YZ[;\  gQ  ;r  *s#A& 45Q	!	!"1qtQqT1Q4!7dAsJ!<S!Agw')X]fl  oC  [m  ou  wx  yk7Wk 
	1"((0::<<	 !5q63-HH':5D5"#7QQWY\P]_bdsu{}~  AK  M]  _i  kN  Pn  ps  uS  Uj  lH  JP  W]  hp  qG+v m+K1+

 +  
$%91vsmSRSU[]`bln}  @U  Wu  wU  Ws  z@  A#$8aRXZ]Q^`cetv|~  BL  N^  `j  lO  Qo  qt  vT  Vk  mI  KQ  X^  im  n*!W;& },['2;'!;5 <   4dQH
E
E&*44%!"6DSTVYRZ\_aprxz{  ~H  JZ  \f  hK  Mk  mp  rP  Rg  iE  GM  TZ  em  n
7f]*;0		 	#$8$C#qRXZ]_ikz  }R  Tr  tR  Tp  w}  
~"#7TTUWZS[]`bqsy{|  I  K[  ]g  iL  Nl  nq  sQ  Sh  jF  HN  U[  fj  kG+vm+K1+

 + c"A 6F #(++"2"2Y^_bc{_|Y}  4_Y}TU  BC  K^  B^4O4LQ4OY}  4_  #`Q%*[[%5%5_deh  jE  fF  `G  7h  `GZ[  KL  Tg  Kg7U7RST7U  `G  7h  &i").)9)9fklo  qO  mP  gQ  ;r  gQab  UV  ^q  Uq;\;YZ[;\  gQ  ;r  *s#A& q[V ,1;;+;+;  BG  HK  LQ  HR  BS  =T  BS|}U[[=M=M=X=XYv=w  BS  =T  ,U(+0;;+;+;  BG  HK  LQ  HR  BS  =T  BS|}U[[=M=M=X=XYv=w  BS  =T  ,U(27++2B2B  JO  PS  TY  PZ  J[  D\  J[  EFEKKDTDTD_D_`~D  J[  D\  3]/27++2B2B  JO  PS  TY  PZ  J[  D\  J[  EFEKKDTDTD_D_`~D  J[  D\  3]/.3kk.>.>  ~C  DG  HM  DN  ~O  @P  ~Oxy@P@P@[@[\r@s  ~O  @P  /Q+++**55ekk6I6IJ))44U[[5H5HICJ&t$   SZ 1Xd  g	
W	
ee6B4I]  vH  ^c  lu  JT  Vh  jp  rs  uC  7D33 4?>M;;!??$8$;$A$AAI]^_I`IfIfgkgvgvgxIy  JD  JD  JF  JF,dKAQAQASTSQ^Q'SQ^Q'ue,na'k:	,Q	/	6	68J8J1w;8WYZ\`\k\k\mortx  uH  uH  uJ  8K  
L
3A
6
=
=P_aeananap>q
r qL"&
Q
!&
A
# 4& 4?IXF;,|A!#t'8@TUV@W@]@]']eyz{e|  fC  fC  DH  DS  DS  DU  fV  f`  f`  fb  fb,dKAQAQASTSQ^Q'SQ^Q'ue,nai8	/	2	9	9,	G	,Q	/	6	68J8J1W98UWXZ^ZiZiZkmprv  sF  sF  sH  8I  
J
3A
6
=
=P_aeananap>q
r qL"&
Q
!&
A
) 49 !f CJ	03	4q	8&&'J1'MN	03	4q	8&&'J1'MN	
7:
;a
?&--.WXY.Z[
7:
;a
?&--.WXY.Z[	3A6	7!	;"))*PQR*ST   WVCJ	A	wq!!v	  Y 
j 00''#A3fS-=,>>ghi!VQ
. 
9 ( 	M)''#A3f\+-F,G  HE  F  G!VQ
  
+ ( 	11.Q.0#A3'(!VQ
 
 61	==G 	J 
C 
l 4_ 7h ;rN 4_ 7h ;r =T =T D\ D\ @Ps   'Aq?
Aq)@	Aq)A
Aq.A	Aq.B&
Aq3B4	Aq3M
Aq8M	Aq8N
Aq=N!	Aq=O*
ArO8	ArQ7ArR47ArT(7ArV7ArX7Arq
Aq&c                     [        US   US   U R                  U R                  U R                  U R                  X R
                  U R                  U R                  U R                  S5        g )Nr   rd   ru   )	r   rO   rQ   rB   rC   rG   rK   rL   r"   )rR   edgerT   s      rV   add_edgeInterpretation.add_edge  s    DGT!Wdnnd.D.DdjjRVR\R\^_azaz  }A  }V  }V  X\  Xo  Xo  qu  q|  q|  ~@  Ara   c                 ,   XR                   ;  a  [        XR                  U R                  U R                   U R                  5        U HH  n[
        R                  " SS5      U R                  U   R                  [        R                  " U5      '   MJ     g g Nr   rd   )
rB   r   rO   rQ   rG   r;   rh   re   r6   r   )rR   nodelabelsrT   s       rV   add_nodeInterpretation.add_node  sk    	T>>4#9#94::tG`G`aq<DOOAq<QDd#))%++a.9  ra   c           	          [        XR                  U R                  U R                  U R                  U R
                  U R                  5        g r   )_delete_edgerO   rQ   rC   rK   rL   r"   )rR   r   s     rV   delete_edgeInterpretation.delete_edge  E    t^^T%;%;TZZIbIbdhd{d{  ~B  ~I  ~I  Jra   c           	          [        XR                  U R                  U R                  U R                  U R
                  U R                  5        g r   )_delete_noderO   rQ   rB   rG   rH   r"   )rR   r  s     rV   delete_nodeInterpretation.delete_node  r  ra   c                 d   0 n[        U R                  S-   5       HK  n0 X'   U R                   H  n[        5       X   U'   M     U R                   H  n[        5       X   U'   M     MM     U R
                   H  nUu  pgp8n	U	R                  U	R                  4X   U   UR                  '   U R                  (       d  MF  [        US-   U R                  S-   5       H-  nU	R                  U	R                  4X   U   UR                  '   M/     M     U R                   H  nUu  pgpHn	U	R                  U	R                  4X   U   UR                  '   U R                  (       d  MF  [        US-   U R                  S-   5       H-  nU	R                  U	R                  4X   U   UR                  '   M/     M     U$ )Nrd   )r   r$   rB   r   rC   r@   lowerupper_valuer   rA   )
rR   rj   r   r  r   changer$   r   rT   r   s
             rV   get_dictInterpretation.get_dict  s   
 /1a?zzt13Ot zzt13Ot 	  $$f!4DS,/IIsyy+A?qxx( 46499Q;'+.99cii*@_ahh' ( % $$f"4DS,/IIsyy+A?qxx( 46499Q;'+.99cii*@_ahh' ( % 
ra   c                     SnU R                    H(  nU R                  U   R                   H  nUS-  nM
     M*     U R                   H(  nU R                  U   R                   H  nUS-  nM
     M*     U$ )z
This function returns the number of ground atoms after the reasoning process, for the final timestep
:return: int: Number of ground atoms in the interpretation after reasoning
r   rd   )rB   rG   re   rC   rK   )rR   ga_cntr  rT   r   s        rV   get_final_num_ground_atoms)Interpretation.get_final_num_ground_atoms  sv    
 &jjd%%d+11q
aKF 2  jjd%%d+11q
aKF 2  
-ra   c                 t    U R                   S   S:X  a  U R                   R                  5         U R                   $ )z
This function returns the number of ground atoms after the reasoning process, for each timestep
:return: list: Number of ground atoms in the interpretation after reasoning for each timestep
ru   r   )r"   pop)rR   s    rV   get_num_ground_atoms#Interpretation.get_num_ground_atoms  s,    
 
[[_;;??	ra   returnc                    UR                  5       nUR                  5       nUR                  5       nUR                  5       nUS:X  a  X@R                  ;  a  U(       a  S$ S$ OX@R
                  ;  a  U(       a  S$ S$ US:X  a(  XPR                  U   R                  ;  a  U(       a  S$ S$ O'XPR                  U   R                  ;  a  U(       a  S$ S$ US:X  a  U R                  U   R                  U   U;   aU  U(       a  S$ U R                  U   R                  U   R                  U R                  U   R                  U   R                  4$ U(       a  S$ S$ U R                  U   R                  U   U;   aU  U(       a  S$ U R                  U   R                  U   R                  U R                  U   R                  U   R                  4$ U(       a  S$ S$ )z
This function is used to query the graph after reasoning
:param query: A PyReason query object
:param return_bool: If True, returns boolean of query, else the bounds associated with it
:return: bool, or bounds
r  F)r   rd   T)r   r   )get_component_typer   get_predicate
get_boundsrB   rC   rG   re   rK   r  r  )rR   queryreturn_bool	comp_type	componentpredr   s          rV   r$  Interpretation.query  s"    &&()!!#)				$# &zz!5+V+ " zz!5+V+ &
++I6<<<5+V+ = ++I6<<<5+V+ &
	*006#=4  UT%>%>y%I%O%OPT%U%[%[]a]v]v  xA  ^B  ^H  ^H  IM  ^N  ^T  ^T  %U  U5+V+
	*006#=4  UT%>%>y%I%O%OPT%U%[%[]a]v]v  xA  ^B  ^H  ^H  IM  ^N  ^T  ^T  %U  U5+V+ra   )(r   r   r   r   r   rC   r9   r8   r3   r+   r1   r*   r   r   r   rK   rG   r   rO   rB   r"   r   rL   rH   r%   r   rQ   rA   r>   r@   r=   r/   r(   r-   r'   r   r   r$   r   r   N)FT)T)(__name__
__module____qualname____firstlineno__r   r   rM   rN   r6   r7   r    r4   r5   rF   r:   rJ   rW   staticmethodnjitrP   rE   rI   r~   r   r   r   r   r   r  r	  r  r  r  r  r   boolr   floatr$  __static_attributes__ry   ra   rV   r
   r
   6   s   ((..8H8HUZU`U`UiUijsUt.u((..8H8HUZU`U`UiUijsUt.u8Ht **4   **4(  (" **4(  (" **4
-  
-A **4  (, **4$'p ( pdARJJ!F ',U4ue|9L3L-M ', ',ra   r
   TrY   c                 2   U R                  5       nU R                  5       nU R                  5       nU R                  5       nU R	                  5       nU R                  5       nU R                  5       nU R                  5       nUS:X  a  US   nO
US   US   nn[        R                  R                  R                  [        5      n[        R                  R                  R                  [        5      n[        R                  R                  R                  [        R                   R"                  [$        S9n[        R                  R                  R                  [&        [(        S9n[        R                  R                  R                  [*        [$        S9n[        R                  R                  R                  [*        [$        S9n[-        U5      n[-        U5      nSn [/        U5       GHk  u  n!n"U"S   n#U"S   n$U"S   n%U"S   n&U"S   n'U#S:X  Ga!  U%S   n(U
(       a'  U(U;   a!  [        R                  R                  U(/5      n)O[1        U(UUU$U5      n)[3        UU)U$U&5      n*U*UU('   [-        U*5      n+U H  u  n,n-U,U(:X  aE  [        R                  R                  UU,U-4    V.s/ s H  n.U.S   U+;   d  M  U.PM     sn.5      UU,U-4'   U-U(:X  d  MY  [        R                  R                  UU,U-4    V.s/ s H  n.U.S   U+;   d  M  U.PM     sn.5      UU,U-4'   M     [5        UU)U*U$UU!   5      =(       a    U n GOU#S	:X  Ga  U%S   U%S   n/n(U
(       a+  U(U/4U;   a#  [        R                  R                  U(U/4/5      n)O[7        U(U/UUXxUU$U5	      n)[9        UU)U$U&5      n*[;        UU)U*U$UU!   5      =(       a    U n [        R                  R                  R                  [*        5      UU('   [        R                  R                  R                  [*        5      UU/'   [-        UU(   5      n0[-        UU/   5      n1U* Hm  n.U.S   U0;  a+  UU(   R=                  U.S   5        U0R?                  U.S   5        U.S   U1;  d  MB  UU/   R=                  U.S   5        U1R?                  U.S   5        Mo     U*UU(U/4'   U(U;  a$  [        R                  R                  U//5      UU('   OU/UU(   ;  a  UU(   R=                  U/5        U/U;  a$  [        R                  R                  U(/5      UU/'   OU(UU/   ;  a  UU/   R=                  U(5        O U (       a  [A        U%UUUU5        U (       a  GMl    O   U (       Ga[  US:X  Ga  [C        UUUU5      u  n2n3U3(       a  U2UU'   UU;   n4S
n5U
(       a+  U4(       a$  [        R                  R                  U/5      UU'   O2UU;  a,  U4(       d  Sn5[        R                  R                  U/5      UU'   UU    GHm  n6[        R                  R                  R                  [        R                  R                  R                  [*        5      5      n7[        R                  R                  R                  [        R                  R                  R                  [&        5      5      n8[        R                  R                  R                  [        R                  R                  R                  [D        RF                  5      5      n9[        R                  R                  R                  [*        5      [        R                  R                  R                  [*        5      US   4n:[I        XUUUU5      n U (       d  GM  [/        U5       GH  u  n!n"U"S   n#U"S   n$U"S   n%U#S:X  GaX  U%S   n(U	(       a  U(U:X  a0  U7R=                  [        R                  R                  U6/5      5        O1U7R=                  [        R                  R                  UU(   5      5        U8R=                  [        R                  R                  R                  [&        5      5        US:w  a  [        R                  R                  R                  [D        RF                  5      n;U(U:X  a"  U;R=                  UU6   RJ                  U$   5        O-UU(    H$  n<U;R=                  UU<   RJ                  U$   5        M&     U9R=                  U;5        GMr  GMu  U#S	:X  Ga6  U%S   U%S   n/n(U	(       Ga  U7R=                  [        R                  R                  R                  [*        5      5        U(U:X  aR  [        R                  R                  UU(U/4    V.s/ s H  n.U.S   U6:X  d  M  U.PM     sn.5      n=U8R=                  U=5        OU/U:X  aR  [        R                  R                  UU(U/4    V.s/ s H  n.U.S   U6:X  d  M  U.PM     sn.5      n=U8R=                  U=5        O3U8R=                  [        R                  R                  UU(U/4   5      5        US:w  a  [        R                  R                  R                  [D        RF                  5      n;U(U:X  a;  UU(U/4    H/  n.U.S   U6:X  d  M  U;R=                  UU.   RJ                  U$   5        M1     OpU/U:X  a;  UU(U/4    H/  n.U.S   U6:X  d  M  U;R=                  UU.   RJ                  U$   5        M1     O/UU(U/4    H$  n>U;R=                  UU>   RJ                  U$   5        M&     U9R=                  U;5        GM  GM  GM     U5(       a  [M        UXxXQ5        UR=                  U6U9U7U8U:45        GMp     UU4$ US	:X  GaJ  US   nUS   n[O        UUUU5      u  n2n3U3S   (       a  U2S   UU'   U3S   (       a  U2S   UU'   UU;   n4UU;   n?S
n@S
nAS
nBU
(       a*  U4(       a#  [        R                  R                  U/5      UU'   U
(       a*  U?(       a#  [        R                  R                  U/5      UU'   UU;  a,  U4(       d  Sn@[        R                  R                  U/5      UU'   UU;  a,  U?(       d  SnA[        R                  R                  U/5      UU'   U4(       d	  U?(       d  SnBUU   nCUU   nDUu  nEnFnGUES:w  a  WFS:w  a  SOS
nH[        R                  R                  R                  [&        5      nIWC HE  nJWD H<  nKWH(       a  WIR=                  WJWK45        M  WJWK4U;   d  M)  WIR=                  WJWK45        M>     MG     WI GH  nLULS   ULS   nNnM[        R                  R                  R                  [        R                  R                  R                  [*        5      5      n7[        R                  R                  R                  [        R                  R                  R                  [&        5      5      n8[        R                  R                  R                  [        R                  R                  R                  [D        RF                  5      5      n9[        R                  R                  R                  [*        5      [        R                  R                  R                  [*        5      US   4n:URQ                  5       nOURQ                  5       nP[        R                  R                  UM/5      UOU'   [        R                  R                  UN/5      UOU'   UPRS                  5        GH  u  n,n-U,U:X  aL  U-U:X  aF  [        R                  R                  WPU,U-4    V.s/ s H  n.U.WMWN4:X  d  M  U.PM     sn.5      WPU,U-4'   MY  U,U:X  aL  U-U:X  aF  [        R                  R                  WPU,U-4    V.s/ s H  n.U.WNWM4:X  d  M  U.PM     sn.5      WPU,U-4'   M  U,U:X  aG  [        R                  R                  WPU,U-4    V.s/ s H  n.U.S   WM:X  d  M  U.PM     sn.5      WPU,U-4'   M  U-U:X  aH  [        R                  R                  WPU,U-4    V.s/ s H  n.U.S   WM:X  d  M  U.PM     sn.5      WPU,U-4'   GMF  U,U:X  aH  [        R                  R                  WPU,U-4    V.s/ s H  n.U.S   WN:X  d  M  U.PM     sn.5      WPU,U-4'   GM  U-U:X  d  GM  [        R                  R                  WPU,U-4    V.s/ s H  n.U.S   WN:X  d  M  U.PM     sn.5      WPU,U-4'   GM     [A        UWOWPUU5        [I        XUUUOUP5      n U (       d  GM  WH(       a7  WEWF:w  a	  WMWN:X  a  GM  U:S   R=                  WM5        U:S   R=                  WN5        [/        U5       GH  u  n!n"U"S   n#U"S   n$U"S   n%U#S:X  Ga  U%S   n(U	(       a  U(U:X  a0  U7R=                  [        R                  R                  WM/5      5        OgU(U:X  a0  U7R=                  [        R                  R                  WN/5      5        O1U7R=                  [        R                  R                  WOU(   5      5        U8R=                  [        R                  R                  R                  [&        5      5        US:w  a  [        R                  R                  R                  [D        RF                  5      n;U(U:X  a"  U;R=                  UWM   RJ                  U$   5        OUU(U:X  a"  U;R=                  UWN   RJ                  U$   5        O-WOU(    H$  n<U;R=                  UU<   RJ                  U$   5        M&     U9R=                  U;5        GM  GM  U#S	:X  d  GM  U%S   U%S   n/n(U	(       Ga  U7R=                  [        R                  R                  R                  [*        5      5        U(U:X  ad  U/U:X  a^  [        R                  R                  WPU(U/4    V.s/ s H  n.U.S   WM:X  d  M  U.S   WN:X  d  M  U.PM     sn.5      n=U8R=                  U=5        GOU(U:X  ad  U/U:X  a^  [        R                  R                  WPU(U/4    V.s/ s H  n.U.S   WN:X  d  M  U.S   WM:X  d  M  U.PM     sn.5      n=U8R=                  U=5        GOU(U:X  aS  [        R                  R                  WPU(U/4    V.s/ s H  n.U.S   WM:X  d  M  U.PM     sn.5      n=U8R=                  U=5        GO;U(U:X  aR  [        R                  R                  WPU(U/4    V.s/ s H  n.U.S   WN:X  d  M  U.PM     sn.5      n=U8R=                  U=5        OU/U:X  aR  [        R                  R                  WPU(U/4    V.s/ s H  n.U.S   WM:X  d  M  U.PM     sn.5      n=U8R=                  U=5        OU/U:X  aR  [        R                  R                  WPU(U/4    V.s/ s H  n.U.S   WN:X  d  M  U.PM     sn.5      n=U8R=                  U=5        O3U8R=                  [        R                  R                  WPU(U/4   5      5        US:w  d  GM  [        R                  R                  R                  [D        RF                  5      n;U(U:X  aM  U/U:X  aG  WPU(U/4    H:  n.U.S   WM:X  d  M  U.S   WN:X  d  M  U;R=                  UU.   RJ                  U$   5        M<     GOU(U:X  aM  U/U:X  aG  WPU(U/4    H:  n.U.S   WN:X  d  M  U.S   WM:X  d  M  U;R=                  UU.   RJ                  U$   5        M<     GO3U(U:X  a;  WPU(U/4    H/  n.U.S   WM:X  d  M  U;R=                  UU.   RJ                  U$   5        M1     OU(U:X  a;  WPU(U/4    H/  n.U.S   WN:X  d  M  U;R=                  UU.   RJ                  U$   5        M1     OU/U:X  a;  WPU(U/4    H/  n.U.S   WM:X  d  M  U;R=                  UU.   RJ                  U$   5        M1     OpU/U:X  a;  WPU(U/4    H/  n.U.S   WN:X  d  M  U;R=                  UU.   RJ                  U$   5        M1     O/WPU(U/4    H$  n>U;R=                  UU>   RJ                  U$   5        M&     U9R=                  U;5        GM     W@(       a  WMU:X  a  [M        UXxXQ5        WA(       a  WNU:X  a  [M        UXxXQ5        WB(       a0  UU4WMWN4:X  a&  [U        UUXxXV[V        RX                  " S5      XXKU5        WMWN4n.UR=                  U.U9U7U8U:45        GM     UU4$ s  sn.f s  sn.f s  sn.f s  sn.f s  sn.f s  sn.f s  sn.f s  sn.f s  sn.f s  sn.f s  sn.f s  sn.f s  sn.f s  sn.f s  sn.f s  sn.f )Nr  r   rd   r   Tr   r   r   r   Fru   r   )-get_typeget_head_variablesget_head_functionget_head_function_varsget_clausesget_thresholdsget_annotation_function	get_edgesr   r   r   r   node_applicable_rule_typeedge_applicable_rule_typerM   rN   r    r)   r\   r:   rp   r5   r   r   get_rule_node_clause_groundingget_qualified_node_groundings+check_node_grounding_threshold_satisfactionget_rule_edge_clause_groundingget_qualified_edge_groundings+check_edge_grounding_threshold_satisfactionr#   r   refine_groundings_determine_node_head_varsr;   r<   check_all_clause_satisfactionre   r   _determine_edge_head_varsr   keysr   r6   r   )Qr   rG   rK   rH   rL   rB   rC   rO   rQ   r   r   r"   r   r   	rule_typehead_variableshead_fnshead_fns_varsclauses
thresholdsann_fn
rule_edges
head_var_1
head_var_2applicable_rules_nodeapplicable_rules_edge
groundingsgroundings_edgesdependency_graph_neighbors"dependency_graph_reverse_neighborsr   r   satisfactionr   clauseclause_typeclause_labelclause_variables
clause_bnd_clause_operatorclause_var_1	groundingqualified_groundingsqualified_groundings_setc1c2rr   clause_var_2groundings_clause_1_setgroundings_clause_2_sethead_var_groundingsis_funchead_var_1_in_nodesadd_head_var_node_to_graphhead_groundingr   r   r   edges_to_be_addedaqnrq   qehead_var_2_in_nodesadd_head_var_1_node_to_graphadd_head_var_2_node_to_graphadd_head_edge_to_graphhead_var_1_groundingshead_var_2_groundingssourcetargetr   infer_edgesvalid_edge_groundingsg1g2valid_ehead_var_1_groundinghead_var_2_groundingtemp_groundingstemp_groundings_edgessQ                                                                                    rV   r   r     s    ]]_))+""$,,.!!#

&
&
(nna *)!,nQ.?j* ))445NO))445NO kk$$ekk.@.@]$[KK$$**I-*X $kk..44iTa4b&+kk&6&6&<&<i\i&<&j#ZZG$YQq	+,AYay*AY F"1%< \Y6  ,0I.|ZI[]ikpqI 88LiYegqr2:l!"67!vr2	\"'++"2"2?OQSUWPX?Y3~?Y!]^_`]ae}]}A?Y3~"r2h	\"'++"2"2?OQSUWPX?Y3~?Y!]^_`]ae}]}A?Y3~"r2h	 " >>RT]_s  vB  DN  OP  DQ  R  c  Wc< f 0 35Ea5H< lL9YF  <">!?@I.|\:Wgir  HZ  \h  jo  pI 88LiYegqr >>RT]_s  vB  DN  OP  DQ  R  c  Wc< $kk..99)D:l#kk..99)D:l L!9: L!9: qt**$$QqT*  1&t**$$QqT*  1& ! 5I\<01 44/4{{/?/?/O|,6|DD|,33LA<<7<{{7G7G7W&|4>|LL&|4;;LI  %z3CE_  bD  E 
y %B  &
 #<HmU_ao"p0Jz $u, %0"[[--zl;Jz*$"&"[[--zl;Jz#J/~kk&&11%++2B2B2M2Mi2XYOkk&&11%++2B2B2M2Mi2XYO++""--ekk.>.>.I.I(J`J`.abK))44Y?AQAQA\A\]fAgistviwx 11E]dfpr|  O  PLw'	6!9[1I\q	v%a(l 

*
$u{{//0@ABu{{//
<0HIJekk..99)DE	2;;&&x'='=>q
*
$	%n5;;LIJ\*B	
&r*00>	? +! 
 
#3A#68H8KLl	ekk..99)DE
*
$[[*:L,;W*Xs*XQ\]^_\`dr\rq*Xstr"J&[[*:L,;W*Xs*XQ\]^_\`dr\rq*Xstr"u{{//0@,P\A]0^_`	2;;&&x'='=>q
*
$!<">?AaDN"
(('*00>
? @ J&!<">?AaDN"
(('*00>
? @ #L,#?@B	
&r*00>	? A! 
  q (v "z9U   .+P_ar!stU 0r 	444[ Fq!:q!: #<HmU_ao"paj03Jzaj03Jz $u,#u,"'"'!0"[[--zl;Jz0"[[--zl;Jz
"$(!"[[--zl;Jz
"$(!"[[--zl;Jz &9!%j1%j1!6612&B,E;
 !;;++66yA"r#""B8,
bY	##RH- $ # (w18WQZ.kk&&11%++2B2B2M2Mi2XYOkk&&11%++2B2B2M2Mi2XYO++""--ekk.>.>.I.I(J`J`.abK))44Y?AQAQA\A\]fAgistviwx !oo'O,113 #(++"2"24H3I"JOJ"'++"2"24H3I"JOJ',,.B
jR:-(-(8(8EZ\^`b[cEd  :[Edhi  oC  EY  nZ  iZ!Ed  :[  )\RH%


rZ/(-(8(8EZ\^`b[cEd  :[Edhi  oC  EY  nZ  iZ!Ed  :[  )\RH%


(-(8(8EZ\^`b[cEd  :FEdhijkhl  qE  iE!Ed  :F  )GRH%


(-(8(8EZ\^`b[cEd  :FEdhijkhl  qE  iE!Ed  :F  )GRH%


(-(8(8EZ\^`b[cEd  :FEdhijkhl  qE  iE!Ed  :F  )GRH%


(-(8(8EZ\^`b[cEd  :FEdhijkhl  qE  iE!Ed  :F  )GRH% / no7LNh  kM  N 11E]dfp  sB  DY  ZL&15IIq  !56q  !56w'	6!9[1I\q	v%a(l	
*
$u{{//1E0FGHJ&u{{//1E0FGHu{{//0MNOekk..99)DE	2;;&&x'='=>q
*
$	%&:;AA,OPJ&	%&:;AA,OP!,/B	
&r*00>	? 0! 
 
#3A#68H8KLl	
 ekk..99)DE
*
$)C[[*?|@\*]  `*]Qabcdaei}a}q  CD  EF  CG  K_  C_q*]  `  ar"J&<:+E[[*?|@\*]  `*]Qabcdaei}a}q  CD  EF  CG  K_  C_q*]  `  ar"J&[[*?|@\*]~*]Qabcdaei}a}q*]~r"J&[[*?|@\*]~*]Qabcdaei}a}q*]~r"J&[[*?|@\*]~*]Qabcdaei}a}q*]~r"J&[[*?|@\*]~*]Qabcdaei}a}q*]~r"u{{//0E|UaFb0cde 
2;;&&x'='=>q
*
$)C&l'CDAaD((QqT5I-I
(('*00>
? E J&<:+E&l'CDAaD((QqT5I-I
(('*00>
? E J&&l'CDAaD((
(('*00>
? E J&&l'CDAaD((
(('*00>
? E J&&l'CDAaD((
(('*00>
? E J&&l'CDAaD((
(('*00>
? E (|(DEB	
&r*00>	? F!q (v $(<
(Jz9U#(<
(Jz9U:z":?SUi>j"jz:yUSXS^S^_aSbdx  Qc  mn  o
 
34A  ![/?Te!fgi (n 	444u 43~T t tL :[ :[ :F :F :F :Fp ` `    s  Ab?0Ab?,Ac=Ac2Ac	Ac	
AcAcAcAcAc/Ac+Ac<Ac@8Ac"A	Ac"BAc'BAc'CAc,C(Ac,OAc1OAc1O$Ac1P2Ac6QAc6QAc6RAc;R'Ac;S/Ad T Ad UAdUAdVAd
V0Ad
c           	      
   Sn[        U5       Hq  u  pxUS   n	US   n
US   nU	S:X  a%  US   n[        XU   XL   XU   5      =(       a    UnM?  U	S:X  d  MG  US   US   p[        XX4   X\U4   XU   5      =(       a    UnMs     U$ )NTr   rd   r   r  r   )r   r@  rC  )rG   rK   rM  rN  rU  rV  rY  r   rZ  r[  r\  r]  r`  rf  s                 rV   rF  rF    s    G$YQq	+,AYF"1%<=>R_kTlnx  oG  IU  bc  Wd  e  v  jv<f 0 35Ea5H=>Rfr  fB  UC  EU  eq  Vr  Es  uA  NO  CP  Q  b  Vb< % 	ra   c           	         [         R                  R                  U 5      n[         R                  R                  U 5      n[         R                  R                  R                  [         R                  R
                  5      n[        U5      S:  GaA  U GH  nX;   a  X8    H  n	X(U	4   n
X   nX	 [         R                  R                  R                  [        5      X'   [         R                  R                  U
 Vs/ s H  oS   U;   d  M  UPM     sn5      n[        X   5      nU H8  nUS   U;  d  M  X   R                  US   5        UR                  US   5        M:     XX4'   X;  d  M  UR                  U	5        M     X;   d  M  XH    H  nUUU4   n
X   nUU	 [         R                  R                  R                  [        5      UU'   [         R                  R                  U
 Vs/ s H  oS   U;   d  M  UPM     sn5      n[        UU   5      nU H9  nUS   U;  d  M  UU   R                  US   5        UR                  US   5        M;     XUU4'   UU;  d  M  UR                  U5        M     GM     [         R                  R                  U5      nUR                  U5        UR                  5         [        U5      S:  a  GM@  g g s  snf s  snf r  )r   r   r   r   r    r)   r   r5   r   r#   r   rD   r   )r]  rU  rV  rW  rX  all_variables_refinedvariables_just_refinednew_variables_refinedrefined_variableneighborold_edge_groundingsnew_node_groundingsr   rb  groundings_neighbor_setrr   reverse_neighborgroundings_reverse_neighbor_sets                     rV   rD  rD    s    ))*:;++**+;<))44U[[5G5GH
!"Q&04.@+x,HI%7 
	!KK,,77	BZ "KK,,?R-u?Rt[\V]atVtd?R-uv":#78"	
1,	,""1Q4(""1Q4( # 7K'23 	-""8,' A* <>P+-=?O,PQ%7 
$	%$)KK$4$4$?$?	$JZ ! "KK,,?R-u?Rt[\V]atVtd?R-uv'*:6F+G'H$"	
14	4"#**1Q40&**1Q40 # ?S')9:; 	 55""#34' Q3 1\ !;;++,AB45c !"Q&& .v, .vs   :K
K,K<Kc                     US   S   nUS:X  a  [        U5      nO1US:X  a+  [        [        XU[        R                  " SS5      5      5      n[        U5      n[	        WXt5      nU$ Nrd   total	availabler   )r   r?  r;   rh   _satisfies_threshold)	rG   ra  qualified_groundingr\  	thresholdthreshold_quantifier_type	neigh_lenqualified_neigh_lenrY  s	            rV   r@  r@    p    &q\!_()n)  ;./0DQ]_g_n_noprs_tuv)./$Y0COra   c                     US   S   nUS:X  a  [        U5      nO1US:X  a+  [        [        XU[        R                  " SS5      5      5      n[        U5      n[	        WXt5      nU$ r  )r   rB  r;   rh   r  )	rK   ra  r  r\  r  r  r  r  rY  s	            rV   rC  rC  '  r  ra   c                 H    X2;   a  X;  a  X#   nU$ X   nU$ X;  a  UOX   nU$ r   ry   )r`  rU  rk   rT   rB   ra  s         rV   r>  r>  6  sJ     "."@m) 	 GQF^) 	 $5e:;S)ra   c	                    [         R                  R                  R                  [        5      n	X;  a  X;  a  Xv;   a  Xg   n	U	$ Un	 U	$ X;  aV  X;   aQ  X!    HG  n
[         R                  R                  XZ    Vs/ s H  oU
4PM     sn5      nU	R                  U5        MI     U	$ X;   aV  X;  aQ  X     HG  n
[         R                  R                  XJ    Vs/ s H  oU4PM     sn5      nU	R                  U5        MI     U	$ X4U;   a  X0U4   n	U	$ [        X!   5      nX     HN  n
[         R                  R                  XJ    Vs/ s H  oU;   d  M
  X4PM     sn5      nU	R                  U5        MP     U	$ s  snf s  snf s  snf r   )r   r   r   r   r:   rD   r   )r`  rf  rU  rV  rO   rQ   rk   rT   rC   edge_groundingsrS   nnrq   groundings_clause_var_2_sets                 rV   rA  rA  @  s    ;;##..y9 "|'E"%?> 	; ?: 	3 $)C#a,=,@A,@bq',@AB2" $0 	%  \%C#aIL9Lbb'L9:2" $" 	 !%55%\&BC? 	 "%Z%=!>$q			Y\_\rC^=^7A7\_	`B2 % 	/ B : `s   8E2
E7
 	E<
E<
c                     [         R                  R                  R                  [        5      nU H(  n[        XX#45      (       d  M  UR                  U5        M*     U$ r   )r   r   r   r   r5   is_satisfied_noder#   )rG   ra  clause_lr^  rb  rS   s         rV   r?  r?  o  P     ((33I>
Q+0FGGq!  	ra   c                     [         R                  R                  R                  [        5      nU H(  n[        XX#45      (       d  M  UR                  U5        M*     U$ r   )r   r   r   r   r:   is_satisfied_edger#   )rK   ra  r  r^  rb  rr   s         rV   rB  rB  z  r  ra   c                 ^   US   S   S:X  as  US   S:X  a  XS   :  a  SOSnU$ US   S:X  a  XS   :  a  SOSnU$ US   S	:X  a  XS   ::  a  SOSnU$ US   S
:X  a  XS   :  a  SOSnU$ US   S:X  a  XS   :X  a  SOSnW$ US   S   S:X  a  U S:X  a  SnU$ US   S:X  a  X-  US   S-  :  a  SnU$ SnU$ US   S:X  a  X-  US   S-  :  a  SnU$ SnU$ US   S	:X  a  X-  US   S-  ::  a  SnU$ SnU$ US   S
:X  a  X-  US   S-  :  a  SnU$ SnU$ US   S:X  a  X-  US   S-  :X  a  SOSnW$ )Nrd   r   numbergreater_equalr   TFgreater
less_equallessequalpercentg{Gz?ry   )	num_neighnum_qualified_componentr  results       rV   r  r    s    aLOXq\?"+|;D60 	/ |Y+l:D6, 	+ |\!+|;D6( 	' |V+l:D6$ 	# |W+|;D6  	 l1oy \6 	 |_$+51d9JJD6 	 QV6 	 |Y+5	!T8IID6 	 PU6 	 |\!+51d9JJD6 	 QV6 	 |V+5	!T8IID6 		 PU6 	 |W+51d9JJDPU6ra   c                 @   Sn X   nUu  nn[         R                  R                  R                  [        R
                  5      nUUR                  ;  ao  [        R                  " SS5      UR                  U'   UU==   S-  ss'   UU;   a  UU   R                  U5        O#[         R                  R                  U/5      UU'   UR                  U   R                  5       nU(       a4  UR                  U   R                  UR                  UR                  5        OUR                  " UU5        UR                  U   R                  U5        UR                  U   U:w  Ga  SnUR                  UR                  U   5        U(       d  US:X  Gd_  U(       GaW  UR                  [         R                  R!                  U5      [         R                  R!                  U5      UUUR                  U   R                  5       45        U
(       a  US:X  d  US:X  a  [         R                  R                  R                  [         R                  R                  R                  ["        5      5      n[         R                  R                  R                  [         R                  R                  R                  [$        5      5      nX   n['        UUUUU5        OUS:X  a  X   u  nnn['        UUUUU5        U(       GaC  SnU GH:  u  nnUU:X  Ga  UUR                  ;  ab  [        R                  " SS5      UR                  U'   UU;   a  UU   R                  U5        O#[         R                  R                  U/5      UU'   U
(       a  ['        U[         R                  R                  R                  [         R                  R                  R                  ["        5      5      [         R                  R                  R                  [         R                  R                  R                  [$        5      5      UR                  U   SUR)                  5        35        [+        UR                  U   R                  SUR                  U   R                  -
  5      n [-        UR                  U   R                  SUR                  U   R                  -
  5      n!UR                  U   R                  U U!5        UR                  U   R                  U5        US-  nUR                  UR                  U   5        U(       ae  UR                  [         R                  R!                  U5      [         R                  R!                  U5      UU[        R                  " U U!5      45        UU:X  d  GM  UUR                  ;  ab  [        R                  " SS5      UR                  U'   UU;   a  UU   R                  U5        O#[         R                  R                  U/5      UU'   U
(       a  ['        U[         R                  R                  R                  [         R                  R                  R                  ["        5      5      [         R                  R                  R                  [         R                  R                  R                  [$        5      5      UR                  U   SUR)                  5        35        [+        UR                  U   R                  SUR                  U   R                  -
  5      n [-        UR                  U   R                  SUR                  U   R                  -
  5      n!UR                  U   R                  U U!5        UR                  U   R                  U5        US-  nUR                  UR                  U   5        U(       d  GM  UR                  [         R                  R!                  U5      [         R                  R!                  U5      UU[        R                  " U U!5      45        GM=     Sn"U(       a  UR                  U   n#[        R                  " UR                  U   R.                  UR                  U   R0                  5      n$U#U$:w  aq  U	S	:X  af  U H_  n%[3        U%R                  U$R                  -
  5      n&[3        U%R                  U$R                  -
  5      n'[+        U&U'5      n([+        U"U(5      n"Ma     OSW-   n"UU"4$ ! [4         a     g
f = fNFr   rd   Tr   r   r   zIPL: rx   )Fr   r   r   r   r   r;   r<   re   rh   r#   r   set_lower_upperr  r  r   r   r    r?   r5   r:   r   	get_valuer   r   
prev_lower
prev_upperabs	Exception)rj   rk   r   nar   
rule_tracer   t_cntr   r|   r   r   rules_to_be_applied_tracer   facts_to_be_applied_tracerule_trace_atomsr   r"   r   r   updatedre   rT   r   updated_bndsprev_bndrp  rq  r   ip_update_cntr   r   r  r  r  current_bnd
prev_t_bndr   lower_deltaupper_delta	max_deltas)                                            rV   r   r     s   c

%&!S!!,,X-C-CD, ekkOOAq)5;;q>	%=A==!D!{{''/M! [[^  "( ;;q>!!#))SYY7<<3++a.F#
[[^X7u{{1~& +$8N2NTpu{{))%0%++2D2DV2LdTUW\WbWbcdWeWjWjWlmnf44;;&&u{{'7'7'B'B9'MNb;;&&u{{'7'7'B'B9'MNb&+d)2r8TB
,.3lb"d)2r8TB =vr2	Qw
%++ 1-ekk"o	}	R% ;;++TF3}R)5;;+;+;+F+Fu{{GWGWGbGbclGm+npup{p{  qA  qA  qL  qL  MR  MX  MX  M]  M]  Mh  Mh  ir  Ms  qt  v{  vA  vA  BD  vE  IN  OP  OZ  OZ  O\  N]  G^  _R&&EKKO,A,A(ABUR&&EKKO,A,A(ABU
[[_$$UE2
[[_'a]R)$++E2EKK4F4Fv4NPTVXZbZiZijoqvZwxy	Qw
%++ 1-ekk"o	}	R% ;;++TF3}R)5;;+;+;+F+Fu{{GWGWGbGbclGm+npup{p{  qA  qA  qL  qL  MR  MX  MX  M]  M]  Mh  Mh  ir  Ms  qt  v{  vA  vA  BD  vE  IN  OP  OZ  OZ  O\  N]  G^  _R&&EKKO,A,A(ABUR&&EKKO,A,A(ABU
[[_$$UE2
[[_'a]R)$$++E2EKK4F4Fv4NPTVXZbZiZijoqvZwxyE J &Q;A 9 95;;q>;T;TU:Z&
 0 001k
 0 001kk;/i69%f	  -V
6	 	    Vd  H)d Ed 
ddc                 @   Sn X   nUu  nn[         R                  R                  R                  [        R
                  5      nUUR                  ;  ao  [        R                  " SS5      UR                  U'   UU==   S-  ss'   UU;   a  UU   R                  U5        O#[         R                  R                  U/5      UU'   UR                  U   R                  5       nU(       a4  UR                  U   R                  UR                  UR                  5        OUR                  " UU5        UR                  U   R                  U5        UR                  U   U:w  Ga  SnUR                  UR                  U   5        U(       d  US:X  Gd_  U(       GaW  UR                  [         R                  R!                  U5      [         R                  R!                  U5      UUUR                  U   R                  5       45        U
(       a  US:X  d  US:X  a  [         R                  R                  R                  [         R                  R                  R                  ["        5      5      n[         R                  R                  R                  [         R                  R                  R                  [$        5      5      nX   n['        UUUUU5        OUS:X  a  X   u  nnn['        UUUUU5        U(       GaC  SnU GH:  u  nnUU:X  Ga  UUR                  ;  ab  [        R                  " SS5      UR                  U'   UU;   a  UU   R                  U5        O#[         R                  R                  U/5      UU'   U
(       a  ['        U[         R                  R                  R                  [         R                  R                  R                  ["        5      5      [         R                  R                  R                  [         R                  R                  R                  [$        5      5      UR                  U   SUR)                  5        35        [+        UR                  U   R                  SUR                  U   R                  -
  5      n [-        UR                  U   R                  SUR                  U   R                  -
  5      n!UR                  U   R                  U U!5        UR                  U   R                  U5        US-  nUR                  UR                  U   5        U(       ae  UR                  [         R                  R!                  U5      [         R                  R!                  U5      UU[        R                  " U U!5      45        UU:X  d  GM  UUR                  ;  ab  [        R                  " SS5      UR                  U'   UU;   a  UU   R                  U5        O#[         R                  R                  U/5      UU'   U
(       a  ['        U[         R                  R                  R                  [         R                  R                  R                  ["        5      5      [         R                  R                  R                  [         R                  R                  R                  [$        5      5      UR                  U   SUR)                  5        35        [+        UR                  U   R                  SUR                  U   R                  -
  5      n [-        UR                  U   R                  SUR                  U   R                  -
  5      n!UR                  U   R                  U U!5        UR                  U   R                  U5        US-  nUR                  UR                  U   5        U(       d  GM  UR                  [         R                  R!                  U5      [         R                  R!                  U5      UU[        R                  " U U!5      45        GM=     Sn"U(       a  UR                  U   n#[        R                  " UR                  U   R.                  UR                  U   R0                  5      n$U#U$:w  aq  U	S	:X  af  U H_  n%[3        U%R                  U$R                  -
  5      n&[3        U%R                  U$R                  -
  5      n'[+        U&U'5      n([+        U"U(5      n"Ma     OSW-   n"UU"4$ ! [4         a     g
f = fr  r  r  s)                                            rV   r   r     s   b

%&!S!!,,X-C-CD, ekkOOAq)5;;q>	%=A==!D!{{''/M! [[^  "( ;;q>!!#))SYY7<<3++a.F#
[[^X7u{{1~& +$8N2NTpu{{))%0%++2D2DV2LdTUW\WbWbcdWeWjWjWlmnf44;;&&u{{'7'7'B'B9'MNb;;&&u{{'7'7'B'B9'MNb&+d)2r8TB
,.3lb"d)2r8TB =vr2	Qw
%++ 1-ekk"o	}	R% ;;++TF3}R)5;;+;+;+F+Fu{{GWGWGbGbclGm+npup{p{  qA  qA  qL  qL  MR  MX  MX  M]  M]  Mh  Mh  ir  Ms  qt  v{  vA  vA  BD  vE  IN  OP  OZ  OZ  O\  N]  G^  _R&&EKKO,A,A(ABUR&&EKKO,A,A(ABU
[[_$$UE2
[[_'a]R)$++E2EKK4F4Fv4NPTVXZbZiZijoqvZwxy	Qw
%++ 1-ekk"o	}	R% ;;++TF3}R)5;;+;+;+F+Fu{{GWGWGbGbclGm+npup{p{  qA  qA  qL  qL  MR  MX  MX  M]  M]  Mh  Mh  ir  Ms  qt  v{  vA  vA  BD  vE  IN  OP  OZ  OZ  O\  N]  G^  _R&&EKKO,A,A(ABUR&&EKKO,A,A(ABU
[[_$$UE2
[[_'a]R)$$++E2EKK4F4Fv4NPTVXZbZiZijoqvZwxyE J &Q;A 9 95;;q>;T;TU:Z&
 0 001k
 0 001kk;/i69%f	  -V
6	 	r  c                 H    U R                  XUR                  5       U45        g r   )r#   r   )r  rp  rq  r  r   s        rV   r   r   x  s    BHMMOT23ra   c                 L    SnU H  u  pEU=(       a    [        XXE45      nM     U$ NT)r  rj   r   nasr  rT   r   s         rV   are_satisfied_noder  }  ,    
XaH'xH& ra   c                     SnUS   b&  US   b    X   nUR                   " US   US   5      nU$ SnU$ ! [         a    Sn U$ f = fNFr   rd   Tis_satisfiedr  rj   r   r  r  re   s        rV   r  r    o    
	A"Q%- 5r!ube,6
 	 &	 
 6 		   3 AAc                    SnSnUu  pVUR                   nUb  Ub   X   nUR                  R                  5        H  n	U	R                   n
Xz;   d  M  U
[        U5      S-   S  R	                  SS5      R	                  SS5      R                  5       (       d  M\  UR                  " XS   5      n[        U
[        U5      S-   S  5      n  O    X44$  X44$ SnX44$ ! [         a    Sn X44$ f = fNFr   rd   .r   -T	r   re   rH  r   replaceisdigitr  str_to_floatr  rj   r   r  r  r  rT   r   l_strre   world_lworld_l_strs              rV   is_satisfied_node_comparisonr    	   


	
	
ck 5++""$w--KCJqLM : B B3 K S STWY[ \ d d f f  Q%0V;s5z!|}56V
 % 	  	 &	 
 6 		$   0C AC 0C C C'&C'c                 L    SnU H  u  pEU=(       a    [        XXE45      nM     U$ r  )r  r  s         rV   are_satisfied_edger    r  ra   c                     SnUS   b&  US   b    X   nUR                   " US   US   5      nU$ SnU$ ! [         a    Sn U$ f = fr  r  r  s        rV   r  r    r  r  c                    SnSnUu  pVUR                   nUb  Ub   X   nUR                  R                  5        H  n	U	R                   n
Xz;   d  M  U
[        U5      S-   S  R	                  SS5      R	                  SS5      R                  5       (       d  M\  UR                  " XS   5      n[        U
[        U5      S-   S  5      n  O    X44$  X44$ SnX44$ ! [         a    Sn X44$ f = fr  r  r  s              rV   is_satisfied_edge_comparisonr    r  r  c                 >   UR                  5       nUS:X  a4  UR                  5       R                  UR                  5       R                  4$ [        R
                  " SS9   U  H  nUR                  U:X  d  M  U" X#5      nM     S S S 5        W$ ! , (       d  f       W$ = f)Nr   zTuple((float64, float64)))
annotation)r:  get_bndr  r  r   r   r*  )r   r   r   weights	func_namefuncr  s          rV   r   r     s    ))+O			t||~33	33}} ;<#t}}	!{,Z $ = 
	 =< 
s   B7B
Bc                     X   nUS   UR                   ;   a  UR                   US      nO[        R                  " SS5      nUS   R                  UR                  :  d  UR                  US   R                  :  a  ggNr   rd   FTre   r;   rh   r  r  rj   r   r  re   r   s        rV   r   r     i    		qEU[[BqE#1#U[[399#))bekk"9		ra   c                     X   nUS   UR                   ;   a  UR                   US      nO[        R                  " SS5      nUS   R                  UR                  :  d  UR                  US   R                  :  a  ggr  r  r  s        rV   r   r     r  ra   c                 	   X   nU(       Gac  UR                  [        R                  R                  U5      [        R                  R                  U5      XS   [        R
                  " SS5      45        US:X  d  US:X  a  U(       a  X   nOUS:X  a  U(       a  X   S   nOSnU(       a  [        U	[        R                  R                  R                  [        R                  R                  R                  [        5      5      [        R                  R                  R                  [        R                  R                  R                  [        5      5      UR                  US      SU 35        UR                  US      R                  SS5        UR                  US      R                  S	5        U GH  u  nnUUS   :X  Gas  U(       a  [        U	[        R                  R                  R                  [        R                  R                  R                  [        5      5      [        R                  R                  R                  [        R                  R                  R                  [        5      5      UR                  U   SW 35        UR                  U   R                  SS5        UR                  U   R                  S	5        U(       ae  UR                  [        R                  R                  U5      [        R                  R                  U5      UU[        R
                  " SS5      45        UUS   :X  d  GM  U(       a  [        U	[        R                  R                  R                  [        R                  R                  R                  [        5      5      [        R                  R                  R                  [        R                  R                  R                  [        5      5      UR                  U   SW 35        UR                  U   R                  SS5        UR                  U   R                  S	5        U(       d  GM  UR                  [        R                  R                  U5      [        R                  R                  U5      UU[        R
                  " SS5      45        GM	     g 
Nr   rd   r   r   r   r   r  zInconsistency due to Tr#   r   r    r?   r;   rh   r   r   r   r   r5   r:   re   r  r   )rj   r   r  r   r  r   r   r   r  r  r  r  r   r   re   r   r   r   s                     rV   r   r     s   		 U[[''.0B0B60JDUVRWYaYhYhijklYmno	V^t55*
#
(4v~*
#
(
+4
4&(8(8(C(CEKKDTDTD_D_`iDj(kmrmxmxm}m}  nI  nI  JO  JU  JU  JZ  JZ  Je  Je  fo  Jp  nq  sx  s~  s~  A  BC  D  sE  I^  _c  ^d  Ge  fRU##Aq)RUt$VRAY')9)9)D)DU[[EUEUE`E`ajEk)lnsnynyn~n~  oJ  oJ  KP  KV  KV  K[  K[  Kf  Kf  gp  Kq  or  ty  t  t  @B  tC  G\  ]a  \b  Ec  d;;r?""1a(;;r?d#"u{{))%0%++2D2DV2LdTVX`XgXghijkXlmnAY')9)9)D)DU[[EUEUE`E`ajEk)lnsnynyn~n~  oJ  oJ  KP  KV  KV  K[  K[  Kf  Kf  gp  Kq  or  ty  t  t  @B  tC  G\  ]a  \b  Ec  d;;r?""1a(;;r?d#""u{{))%0%++2D2DV2LdTVX`XgXghijkXlmn ra   c                 	   X   nU(       Gac  UR                  [        R                  R                  U5      [        R                  R                  U5      XS   [        R
                  " SS5      45        US:X  d  US:X  a  U(       a  X   nOUS:X  a  U(       a  X   S   nOSnU(       a  [        U	[        R                  R                  R                  [        R                  R                  R                  [        5      5      [        R                  R                  R                  [        R                  R                  R                  [        5      5      UR                  US      SU 35        UR                  US      R                  SS5        UR                  US      R                  S	5        U GH  u  nnUUS   :X  Gas  U(       a  [        U	[        R                  R                  R                  [        R                  R                  R                  [        5      5      [        R                  R                  R                  [        R                  R                  R                  [        5      5      UR                  U   SW 35        UR                  U   R                  SS5        UR                  U   R                  S	5        U(       ae  UR                  [        R                  R                  U5      [        R                  R                  U5      UU[        R
                  " SS5      45        UUS   :X  d  GM  U(       a  [        U	[        R                  R                  R                  [        R                  R                  R                  [        5      5      [        R                  R                  R                  [        R                  R                  R                  [        5      5      UR                  U   SW 35        UR                  U   R                  SS5        UR                  U   R                  S	5        U(       d  GM  UR                  [        R                  R                  U5      [        R                  R                  U5      UU[        R
                  " SS5      45        GM	     g r  r  )rj   r   r  r   r  r   r   r   r  r  r  r  r   r   r   r   r   r   s                     rV   r   r   +  s    U[[''.0B0B60JDUVRWYaYhYhijklYmno	V^t55*
#
(4v~*
#
(
+4
4&(8(8(C(CEKKDTDTD_D_`iDj(kmrmxmxm}m}  nI  nI  JO  JU  JU  JZ  JZ  Je  Je  fo  Jp  nq  st  sz  sz  {}  ~  {@  sA  EZ  [_  Z`  Ca  bA1%A4 VRAY')9)9)D)DU[[EUEUE`E`ajEk)lnsnynyn~n~  oJ  oJ  KP  KV  KV  K[  K[  Kf  Kf  gp  Kq  or  tu  t{  t{  |~  t  CX  Y]  X^  A_  `772;q!$772;$"u{{))%0%++2D2DV2LdTVX`XgXghijkXlmnAY')9)9)D)DU[[EUEUE`E`ajEk)lnsnynyn~n~  oJ  oJ  KP  KV  KV  K[  K[  Kf  Kf  gp  Kq  or  tu  t{  t{  |~  t  CX  Y]  X^  A_  `772;q!$772;$""u{{))%0%++2D2DV2LdTVX`XgXghijkXlmn ra   c                 |   UR                  U 5        [        R                  R                  R	                  [
        5      X'   [        R                  R                  R	                  [
        5      X '   [        R                  " [        R                  R                  R	                  [        R                  5      5      X@'   g r   )
r#   r   r   r   r   r5   re   rg   r6   r7   )r  rO   rQ   rB   rG   s        rV   r   r   M  su    d;;##..y9 ;;++66yA#kk%++*:*:*E*EeFVFV*WXra   c                    X;  a  [        XX4U5        X;  a  [        XX4U5        X4nSnX;  Ga  SnUR                  U5        X    R                  U5        X1   R                  U 5        UR                  S:w  a  [        R                  " [
        R                  R                  U/5      5      X'   X==   S-  ss'   Xi;   a  X   R                  U5        Os[
        R                  R                  U/5      X'    X4$ [        R                  " [
        R                  R                  R                  [        R                  5      5      X'   X4$ XhU   R                  ;  a  UR                  S:w  aq  Sn[        R                  " SS5      X   R                  U'   X==   S-  ss'   Xi;   a  X   R                  U5        X4$ [
        R                  R                  U/5      X'   X4$ )NFTr   rd   r   )r   r#   r   re   rg   r   r   r   r   r6   r7   r;   rh   )rx  ry  rO   rQ   rB   rC   rT   rG   rK   rk   r"   r   r   new_edges                 rV   r   r   U  s    F09MN
F09MN
 
(,,t6"""6*WWb[ %EKK,<,<aS,A B	9>9D!{{''/M 	 !&EKK,<,<,G,GHXHX,Y Z 	 4(...177B;8)1A)>##A&	9>9D! 	 {{''/Mra   c                     Sn[         R                  R                  R                  [        5      nU  H>  nU H5  n[        XX#XEXgXX5      u  nnUR                  U5        U(       a  US-   OUnM7     M@     X4$ r  )r   r   r   r   r:   r   r#   )r   r   rO   rQ   rB   rC   rT   rG   rK   rk   r"   r   r   r   rx  ry  r   r   s                     rV   r   r     s    {{**95VffiEZ[  tH  Y_  c>4d"WQY7  
 	ra   c                    U u  pxUR                  U 5        US==   [        X@   R                  5      -  ss'   X@	 U H   n	XU	   ;   d  M  XY   R                  U 5        M"     X   R                  U5        X(   R                  U5        g Nru   )remover   re   )
r   rO   rQ   rC   rK   rk   r"   rx  ry  rT   s
             rV   r  r    s    ds'-3344
Q	14   &!!!&)ra   c                    UR                  U 5        US==   [        X@   R                  5      -  ss'   X@	 X	 X 	 U H   nXU   ;   d  M  XW   R                  U 5        M"     UR                  5        H   nXU   ;   d  M  X   R                  U 5        M"     UR                  5        H   nXU   ;   d  M  X(   R                  U 5        M"     g r  )r  r   re   rH  )	r  rO   rQ   rB   rG   rk   r"   rT   rS   s	            rV   r  r    s    ds'-3344_
Q	14  
 ..
Q	q\<t  
 
 
"Q	q!!t$ #ra   c                 L    [        U 5      n[        U S-  S-  5      nU SU 3nU$ )Nrd   i  r  )r   )r   r  decimal	float_strs       rV   r   r     s4    
e*uqy4 xq	"ra   c                     U R                  S5      nUS:w  a  [        XS-   S  5      nOSnU R                  SS5      n [        U 5      n U SU-  -  n U $ )Nr  ru   rd   r   r   
   )findr   r  
str_to_int)r   decimal_posafter_decimal_lens      rV   r  r    s`    zz#2%A/0	sB		E		&&	&ra   c                     U S   S:X  a  SnU R                  SS5      n OSn[        U 5      S-
  Sp2[        U 5       H  u  pEU[        U5      S-
  SX$-
  -  -  -  nM      U(       a  U* nU$ UnU$ )	Nr   r  Tr   Frd   0   r
  )r  r   r   ord)r   negativefinal_indexr  r   vs         rV   r  r    s    	!HO(
--B
%(5zA~qfuTQSVb[RKO455& 6' $*ra   c                    [         R                  R                  R                  [        5      nSnU S   nUS   nUS:w  a  [        U5      S:  a  [         R                  R                  R                  [        5      nU HL  n	X;   a  UR                  X)   5        M  UR                  [         R                  R                  U	/5      5        MN     [        XhU5      nSnXE4$ )  
Determine the actual head groundings by applying head functions if needed.

Args:
        head_fns: List of function names for each head variable (empty string if no function)
        head_fns_vars: List of variable names that are arguments to each function
        groundings: Dictionary mapping variable names to their grounded node values
        head_functions: Tuple of available head functions

Returns:
        List of head groundings
Fr   r   T)	r   r   r   r   r5   r   r\   r#   _call_head_function)
rK  rL  rU  r   head_groundingsrj  fn_namefn_varsfn_arg_valuesfn_vars
             rV   rE  rE    s     ;;##..y9 A; rMc'lQ& ++""--m<-f+, ))6(34  (O/'  ra   c                     [         R                  R                  R                  [        5      nUR                  [         R                  R                  R                  [        5      5        UR                  [         R                  R                  R                  [        5      5        [         R                  R                  SS/5      n[        S5       H  nX   nX   nUS:w  d  M  [        U5      S:  d  M$  [         R                  R                  R                  [        5      n	U HL  n
X;   a  U	R                  X*   5        M  U	R                  [         R                  R                  U
/5      5        MN     [        XyU5      nXU'   SXV'   M     XE4$ )r  Fr   r   r   T)
r   r   r   r   r\   r#   r5   r   r   r  )rK  rL  rU  r   r  rj  r   r  r  r  r  rm  s               rV   rG  rG    s5    ;;##..}=((33I>?((33I>?;;UEN+ (QK'' ]s7|a' ;;##..}==v*,- %++**F845  (O>&17:' * 	  ra   c                 *   [         R                  R                  R                  [        5      n[         R
                  " SS9   U H0  n[        US5      (       d  M  UR                  U :X  d  M(  U" U5      n  O   SSS5        U$ ! , (       d  f       U$ = f)a3  
Call a head function with the given arguments.

Args:
        fn_name: Name of the function to call
        fn_arg_values: List of arguments (each is a list of node strings)
        head_functions: Tuple of available head functions

Returns:
        Flattened list of node strings from the function result
z"types.ListType(types.unicode_type))func_resultr*  N)r   r   r   r   r5   r   hasattrr*  )r  r  r   r  r  s        rV   r  r  $  sz     {{**95mm DEddJDMMW$<}%K	  F 	 FE 	s   BB-B
B)F)Ntypingr   r   5pyreason.scripts.numba_wrapper.numba_types.world_typescriptsnumba_wrappernumba_typesrf   re   5pyreason.scripts.numba_wrapper.numba_types.label_typer7   r6   8pyreason.scripts.numba_wrapper.numba_types.interval_typer<   r;   3pyreason.scripts.interpretation.interpretation_dictr   r   r   r   r    r)   r5   UniTupler:   r4   r\   rp   clause_dataint8refine_datar?   r   r0   r2   r<  r=  r,   r.   r&   r   r
   r/  r   rF  rD  r@  rC  r>  rA  r?  rB  r  r   r   r   r  r  r  r  r  r  r   r   r   r   r   r   r   r   r  r  r   r  r  rE  rG  r  ry   ra   rV   <module>r-     sZ	    E E E E K K R  ! KK	KK  !3!3Q7	 $$Y/$$Y/ kk!3!3U5E5Eu{{G[G[\a\g\g\n\nGo pq kk!3!3U[[5G5GIYIY Z[ !& 1 15;;3E3EyRWRbRbdldzdz  }B  }H  }H  }P  }P  RW  R]  R]  Re  Re  3f  !g  % 1 15;;3E3EyRWRbRbdldzdz  }B  }H  }H  }P  }P  RW  R]  R]  Re  Re  3f  !g  "KK--
ekk**8+A+ABCekk**956ekk**956EKK((3U[[5I5I)5TV[VfVfgh/   "KK--
ekk**8+A+ABCekk**956ekk**956EKK((3U[[5I5I)5TV[VfVfgh/   !& 1 15;;3E3EyRWRbRbdldzdz  }B  }H  }H  }P  }P  3Q  !R  % 1 15;;3E3EyRWRbRbdldzdz  }B  }H  }H  }P  }P  3Q  !R !&!2!2EKK4H4HI]I]^gIh4ikpkvkvkk  AF  AL  AL  AU  AU  V_  A`  la  ch  cn  cn  cu  cu  4v  "w **EKK,@,@,KU[[MaMabkMlnsn~n~+  A V, V,r $x5 x5v $ $ $6  6 r $  $  $  $+ +\ $  $  $ > $f fR $e eP $4 4 $  $  $ 4 $  $  $ 4 $	 	 $	 	 $	 	 $o oD $o oB $Y Y $& &R $  $	* 	* $% %& $  $	 	 $
 
 $%! %!P $(! (!V $ ra   