+
    i>                        R t ^ RIHt ^ RIHt ^ RIHt ^ RIHtH	t	H
t
HtHtHt ^ RIHtHtHtHtHtHt ^ RIHtHtHtHtHtHtHtHt ^ RIHt ^ RI H!t! ^ R	I"H#t#H$t$ ^ R
I%H&t& ^ RI'H(t( ^ RI)H*t*H+t+ ^ RI,H-t- R t.R t/R t0R t1R t2R t3R t4R t5R t6R t7R t8R t9R t:R t;R t<R t=R t>R t?R  t@R! tAR" tBR# tCR$ tDR% tER& tFR'# )(z1For more tests on satisfiability, see test_dimacs)Q)symbols)
Unequality)AndOrImplies
Equivalenttruefalse)literal_symbolpl_truesatisfiablevalidentailsPropKB)dplldpll_satisfiablefind_pure_symbolfind_unit_clauseunit_propagatefind_pure_symbol_int_reprfind_unit_clause_int_reprunit_propagate_int_repr)r   )z3_satisfiable)CNF
EncodedCNF)make_random_problem)randint)raisesskip)import_modulec                      \        R 4      w  r\        R4      RJ g   Q h\        R4      RJ g   Q h\        V 4      V J g   Q h\        V ( 4      V J g   Q hR# )zA,BTFN)r   r   ABs     ^/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/logic/tests/test_inference.pytest_literalr&      s[    5>DA$4'''% E)))!!!!1""""    c                     \        R 4      w  rp\        V .V .4      V R38X  g   Q h\        W.V ( V,          V( V ,          .4      R8X  g   Q h\        WV.W( ,          V( V( ,          W ,          .4      V R38X  g   Q h\        WV.V ( V,          W( ,          W ,          .4      VR38X  g   Q h\        WV.V ( V( ,          V( V( ,          W ,          .4      VR38X  g   Q h\        WV.V ( V,          V( V( ,          W ,          .4      R8X  g   Q hR# )A,B,CTNFNN)r   r   r#   r$   Cs      r%   test_find_pure_symbolr-       s'   gGA!QC!%!T222QFaR!VaR!V$45EEEQ1IR!qb!%'@AaYNNNQ1IQB'>?At9LLLQ1IaR!qb!%'@AaZOOO	
q	QBFQB!GQU+-0<= = =r'   c                  X   \        ^.^0.4      R8X  g   Q h\        ^^.R^0R^0.4      R8X  g   Q h\        . RO^R0RR0^^0.4      R8X  g   Q h\        . ROR^0^R0^^0.4      R8X  g   Q h\        . RORR0RR0^^0.4      R	8X  g   Q h\        . ROR^0RR0^^0.4      R8X  g   Q hR# )
   Nr/   Tr*   r/         r4   Tr4   F)r    r'   r%   test_find_pure_symbol_int_reprr:   +   s   $aSA3%0I===$aVa2q'"$'34 4 4$YR2r(QF+-09: : :$Ya1b'Aq6*,/89 9 9$YbB8aV,.1;< < <$Ya2r(QF+-0<= = =r'   c                     \        R 4      w  rp\        V ./ 4      V R38X  g   Q h\        W ( ./ 4      V R38X  g   Q h\        W,          .V R/4      VR38X  g   Q h\        W,          .VR/4      V R38X  g   Q h\        W,          V,          W( ,          W( ,          .V R/4      VR38X  g   Q h\        W,          V,          W( ,          W,          .V R/4      VR38X  g   Q h\        W,          V,          W( ,          V ./ 4      V R38X  g   Q hR# r)   TFN)r   r   r+   s      r%   test_unit_clauser=   9   s    gGA!QC$D	111QGR(QI555QUGaY/At9<<<QUGaY/At9<<<	
AFAF#aY045u:> > >QUQYB6D	Bq$iOOOQUQYB3R8QIEEEr'   c            	         \        \        \        ^..4      / 4      R8X  g   Q h\        \        \        ^.R..4      / 4      R8X  g   Q h\        ^^0.^R/4      R8X  g   Q h\        ^^0.^R/4      R8X  g   Q h\        \        \        . RO^R.^R	..4      ^R/4      R
8X  g   Q h\        \        \        . RO^R.^^..4      ^R/4      R8X  g   Q h\        R4      w  rp\	        W,          V,          W( ,          V ./ 4      V R38X  g   Q hR# )r/   Tr)   Nr0   r1   r7   r3   r6   r2   r8   )r   mapsetr   r   r+   s      r%   test_unit_clause_int_reprrA   E   s8   $Sse_b9YFFF$SsRDk%:B?9LLL$q!fX4y9YFFF$q!fX4y9YFFF$S	QGaW%&')*D	36@A A A$S	QGaV$&&()4y25>? ? ? gGA!QUQYB3R8QIEEEr'   c                      \        R 4      w  rp\        W,          .V 4      . 8X  g   Q h\        W,          V ( V,          V( V,          V .V 4      W"( V,          V .8X  g   Q hR# )r)   N)r   r   r+   s      r%   test_unit_propagaterC   S   s_    gGA!15'1%+++151"q&1"q&!4a8QQNJJJr'   c            	          \        ^^0.^4      . 8X  g   Q h\        \        \        ^^.R^.R^.^..4      ^4      ^0R^0.8X  g   Q hR# )r/   Nr1   r6   )r   r?   r@   r9   r'   r%   test_unit_propagate_int_reprrE   Y   sg    "QF8Q/2555"3s
Q"a2q'A3'$)*+-23r1g? ? ?r'   c                 j    \        R4      w  rp\        W,          .W.V RVR/4      V RVR/8X  g   Q hR# )z"This is also tested in test_dimacsr)   TN)r   r   r+   s      r%   	test_dpllrG   _   s?    gGA!!!T1d!34D!T8JJJJr'   c                     \        R 4      w  rp\        W ( ,          4      RJ g   Q h\        W( ,          4      V RVR/8X  g   Q h\        W,          4      V R/VR/V RVR/39   g   Q h\        V ( V,          V( V ,          ,          4      V RVR/V RVR/39   g   Q h\        W,          V( V,          ,          4      V RVR/V RVR/VRVR/39   g   Q h\        W,          V,          4      V RVRVR/8X  g   Q h\        W,          W,	          ,          4      VR/8X  g   Q h\        \        W4      V ,          4      V RVR/8X  g   Q h\        \        W4      V ( ,          4      V RVR/8X  g   Q hR# r)   FTN)r   r   r   r+   s      r%   test_dpll_satisfiablerJ   e   s   gGA!QV%...QV%!T1e)<<<<	I4y1dAt*<=> > >
aQBF#$dAt"4q%E6J!KL L LaeQ/1q$56IaD!T 264 4 4 4QUQY)aq$4-HHHHae/1aY>>>Z-134D7IIIIZ-24E1e8LLLLr'   c                     \        R 4      w  rp\        W ( ,          4      RJ g   Q h\        W( ,          4      V RVR/8X  g   Q h\        W,          4      V R/VR/V RVR/39   g   Q h\        V ( V,          V( V ,          ,          4      V RVR/V RVR/39   g   Q h\        W,          V( V,          ,          4      V RVRVR/V RVRVR/39   g   Q h\        W,          V,          4      V RVRVR/8X  g   Q h\        W,          W,	          ,          4      VRV R/VRV R/39   g   Q h\        \        W4      V ,          4      V RVR/8X  g   Q h\        \        W4      V ( ,          4      V RVR/8X  g   Q hR# rI   )r   dpll2_satisfiabler   r+   s      r%   test_dpll2_satisfiablerM   u   s   gGA!a"f&%///a"f&1dAu*====	I4y1dAt*<=> > >
aQBF#$dAt"4q%E6J!KL L Lqu!a024E1d7S	
D!T1d#7% % % %aeai*q$4D.IIIIqu024E7J	
D!T7   j.24D!T8JJJJj.!35!UAu9MMMMr'   c            
         \        R 4      w  rpR pV! W ( ,          4      RJ g   Q hV! W( ,          4      V RVR/8X  g   Q hV! W,          4      V R/VR/V RVR/V RVR/V RVR/39   g   Q hV! V ( V,          V( V ,          ,          4      V RVR/V RVR/39   g   Q hV! W,          V( V,          ,          4      V RVRVR/V RVRVR/V RVRVR/V RVRVR/39   g   Q hV! W,          V,          4      V RVRVR/8X  g   Q hV! W,          W,	          ,          4      VRV R/VRV R/39   g   Q hV! \        W4      V ,          4      V RVR/8X  g   Q hV! \        W4      V ( ,          4      V RVR/8X  g   Q hR# )r)   c                     \        V R R7      # )	minisat22	algorithmr   )exprs   &r%   <lambda>,test_minisat22_satisfiable.<locals>.<lambda>   s    T[)Qr'   FTN)r   r   )r#   r$   r,   minisat22_satisfiables       r%   test_minisat22_satisfiablerX      s   gGA!Q !b&*e333 !b&*q$5.AAAA 	I5zAua+>D!T@RUVX\^_afTghi i i 
aQBF#$dAt"4q%E6J!KL L L 15aR!V"46AtQqRV;W	
D!T1d#a4D%AAtQPUWXZ_C`;b b b b !%!).1dAtQ2MMMM 15QV"46AtQ;N	
D!T;    *Q"2Q"68Qa<NNNN *Q"2aR"79a5=QQQQr'   c            
         \        R 4      w  rpRR lpV! W ( ,          4      RJ g   Q hV! W( ,          4      V RVR/8X  g   Q hV! W,          4      V R/VR/V RVR/V RVR/V RVR/39   g   Q hV! V ( V,          V( V ,          ,          4      V RVR/V RVR/39   g   Q hV! W,          V( V,          ,          4      V RVRVR/V RVRVR/V RVRVR/V RVRVR/39   g   Q hV! W,          V,          4      V RVRVR/8X  g   Q hV! W,          W,	          ,          4      VRV R/VRV R/39   g   Q hV! \        W4      V ,          4      V RVR/8X  g   Q hV! \        W4      V ( ,          4      V RVR/8X  g   Q h\        W,          V,          RRRR7      p\        V4      pVP	                  4        UUu0 uF  w  rgV'       g   K  VkK  	  ppp\        V4      pVP	                  4        UUu0 uF  w  rgV'       g   K  VkK  	  p	pp\        V4      pVP	                  4        UUu0 uF  w  rgV'       g   K  VkK  	  p
ppW8:  d   Q hW8:  d   Q hW8:  d   Q hR# u uppi u uppi u uppi )r)   Tc                     \        V R RR7      # )rP   T)rR   minimalrS   )rT   r[   s   &&r%   rU   4test_minisat22_minimal_satisfiable.<locals>.<lambda>   s    {4S^hl7mr'   FrP   )rR   r[   
all_modelsN)T)r   r   r   nextitems)r#   r$   r,   rW   gsolkeyvaluefirst_solutionsecond_solutionthird_solutions              r%   "test_minisat22_minimal_satisfiablerg      s   gGA!m !b&*e333 !b&*q$5.AAAA 	I5zAua+>D!T@RUVX\^_afTghi i i 
aQBF#$dAt"4q%E6J!KL L L 15aR!V"46AtQqRV;W	
D!T1d#a4D%AAtQPUWXZ_C`;b b b b !%!).1dAtQ2MMMM 15QV"46AtQ;N	
D!T;    *Q"2Q"68Qa<NNNN *Q"2aR"79a5=QQQQQUQY+ddSA
q'C,/IIKAKjc5ccKNAQC-0YY[B[zsEss[OBQC,/IIKAKjc5ccKNA000000//// BBAs$   ,I=I$I5II-Ic                  n    \        R 4      w  rp\        W V,	          ,          V( ,          4      RJ g   Q hR# )r)   FN)r   r   r+   s      r%   test_satisfiableri      s0    gGA!qF|qb()U222r'   c                     \        R 4      w  rp\        WV ,	          ,	          4      RJ g   Q h\        WV,	          ,	          W,	          W,	          ,	          ,	          4      RJ g   Q h\        V( V ( ,	          W,	          ,	          4      RJ g   Q h\        W,          V,          4      RJ g   Q h\        W,	          4      RJ g   Q hR# r<   )r   r   r+   s      r%   
test_validrk      s    gGA!Av4'''!Q-af!&%9:;tCCC1"('(D000u$$$=E!!!r'   c            	      "   \        R 4      w  rp\        R4      RJ g   Q h\        W,          V RVR/4      RJ g   Q h\        W,          V R/4      RJ g   Q h\        W,          VR/4      RJ g   Q h\        W,          V RVR/4      RJ g   Q h\        W,	          V R/4      RJ g   Q h\        W,          V( ,          V RVRVR/4      RJ g   Q h\        \        W4      V RVR/4      RJ g   Q h\        R4      RJ g   Q h\        W,          V RVR/4      RJ g   Q h\        W,          V R/4      RJ g   Q h\        W,          VR/4      RJ g   Q h\        W,          V RVR/4      RJ g   Q h\        WR/4      e   Q h\        W,          V RVR/4      e   Q h\        W,	          V RVR/4      e   Q h\        \        W4      V R/4      e   Q h\        \        W4      V RVR/4      e   Q h\        W,          V R/RR7      e   Q h\        V ( V( ,          V R/RR7      e   Q h\        W,          V RVR/RR7      RJ g   Q h\        W,          V ( V( ,          ,          V R/RR7      RJ g   Q h\        W ,	          W,	          ,	          VR/RR7      RJ g   Q hR# )r)   TNF)deep)r   r   r   r+   s      r%   test_pl_truern      s   gGA!4=D   AEAtQ-.$666AEAt9%---AEAt9%---AEAtQ-.$666AFQJ'4///AEQBJE1dAt <=EEE:a#a5%9:dBBB 5>U"""AEAua/0E999AEAu:&%///AEAu:&%///AEAua/0E999 1$i (((AEAtQ-.666AFQa./777:a#aY/777:a#aq$%78@@@ 151e*40888A27QJT2:::151eQ.T:eCCC15QB!G$q$id;uDDDAF'!T>$FFFr'   c                     a  ^ RI Ho  \        \        R 4       \        \        V 3R l4       \        \        R 4       R# )    pic                      \        R 4      # )zJohn Cleeser   r9   r'   r%   rU   *test_pl_true_wrong_input.<locals>.<lambda>   s	    w}5r'   c                  D   < \        ^*S ,           S ^,          ,           4      # *   rt   rq   s   r%   rU   ru      s    wrBwq'89r'   c                      \        ^*4      # rw   rt   r9   r'   r%   rU   ru      s    wr{r'   N)sympy.core.numbersrr   r   
ValueErrorrq   s   @r%   test_pl_true_wrong_inputr|      s'    %
:56
:9:
:*+r'   c                  .   \        R 4      w  rp\        W V,	          V( .4      RJ g   Q h\        V\        W4      V .4      RJ g   Q h\        W,	          V ( V( ,	          ,	          4      RJ g   Q h\        W,	          V( V ( ,	          ,	          4      RJ g   Q hR# )zA, B, CFTN)r   r   r   r+   s      r%   test_entailsr~      s    i GA!1Avrl#u,,,1z!'+,444AFqb)*e333AFqb)*d222r'   c                     \        R 4      w  rp\        4       pVP                  W,	          4      RJ g   Q hVP                  WV ,	          ,	          4      RJ g   Q hVP                  W,	          4       VP                  W,	          4       VP                  V 4      RJ g   Q hVP                  V4      RJ g   Q hVP                  V4      RJ g   Q hVP                  V ( 4      RJ g   Q hVP                  V( 4      RJ g   Q hVP                  V( 4      RJ g   Q hVP                  W,	          4      RJ g   Q hVP                  V 4       VP                  V 4      RJ g   Q hVP                  V4      RJ g   Q hVP                  V4      RJ g   Q hVP                  V( 4      RJ g   Q hVP	                  V 4       VP                  V4      RJ g   Q hR# rI   )r   r   asktellretract)r#   r$   r,   kbs       r%   test_PropKBr      s   gGA!	B66!&>U"""66!Q- D(((GGAFOGGAFO66!966!966!9661":661":661":66!&>T!!!GGAJ66!966!966!9661":JJqM66!9r'   c                 d    \        4       p \        R4      w  rpV P                  V4      RJ g   Q hR# )z"tolerant to bad inputr)   FN)r   r   r   )r   r#   r$   r,   s       r%   test_propKB_tolerantr     s-    	BgGA!66!9r'   c                     \        R 4      w  r\        P                  ! W,          4      p\        \        P                  ! W,          4      \        P                  ! V 4      \        P                  ! V4      ,          4      p\        P                  ! V 4      ( \        P                  ! V4      ( ,          p\        P                  ! V 4      R\        P                  ! W,          4      R/\        P                  ! V4      R\        P                  ! W,          4      R/\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! W,          4      R/\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! W,          4      R/\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! W,          4      R/.p\	        \        W#V4      RR7      '       d   Q h\	        \        W#V( 4      RR7      V9   g   Q h\	        \        W#V4      RR7      '       d   Q h\	        \        W#V( 4      RR7      V9   g   Q hR# )zx yTFr   rQ   dpll2N)r   r   zeror   r   r   )xyassumptionsfactsqueryrefutationss         r%   test_satisfiable_non_symbolsr     s   5>DA&&+KAFF13KQVVAY!67EVVAYJ!&&)#E	
D!&&+t,	
D!&&+t,	
D!&&)T166!#;=	
D!&&)UAFF13K>	
E166!9dAFF13K>@K 3{59VLLLLs;v6&I[XXX3{59WMMMMs;v6'JkYYYr'   c                      ^ RI Hp  \        \        4      \        \        /8X  g   Q h\        V P                  4      \        \        /8X  g   Q h\        \        4      RJ g   Q h\        V P                  4      RJ g   Q hR# )rp   SFN)sympy.core.singletonr   r   r	   r
   r   s    r%   test_satisfiable_boolr     sa    &tt,,,qvv4,...u&&&qww5(((r'   c                    a	 ^ RI Hp Hp \        \	        RRR7      4      RJ g   Q h\        \	        W ( ,	          V ,          RR7      4      R.8X  g   Q h\        \	        RRR7      4      \        \        /.8X  g   Q hV RVR/V RVR/.p\	        W,          RR7      o	VP                  \        S	4      4       VP                  \        S	4      4       \        \        V	3R l4       V'       d   Q h\        \	        \        W4      RR7      4      V RVR/V RVR/.8X  g   Q hV RVR/V RVR/V RVR/.p\	        W,	          RR7       F  pVP                  V4       K  	  V'       d   Q h^ RIHp ^ RIHp V! 4       p\        ^d4       Uu. uF  p\        V4      NK  	  pp\	        V! V!  RR7      o	\        ^
4       F  p\        S	4      '       d   K  Q h	  R# u upi )	rp   r"   FT)r]   c                     < \        S 4      # N)r^   )results   r%   rU   -test_satisfiable_all_models.<locals>.<lambda>/  s	    $v,r'   )numbered_symbols)r   N)	sympy.abcr#   r$   r^   r   listr	   remover   StopIterationr   sympy.utilities.iterablesr   sympy.logic.boolalgr   range)
r#   r$   modelsmodelr   r   symiXr   s
            @r%   test_satisfiable_all_modelsr   %  s   Ed34===Q"WMd;<GGGDT23t~EEE$5!Aua#67F40F
MM$v,
MM$v,
=./:Jq,>?5AtQ-./ / / %E"Qq$$7!T1d9KLFQV5e 6:
 ;&

C!#J'JqcJA'QD1F2YF|||  	(s   Gc                     \        R 4      p V '       g   \        R4       \        R4      w  rp\        R4      w  rEp\        V^8  V^8  ,          4      RJ g   Q h\        W( ,          4      RJ g   Q h\        W( V,          V,          ,          4      p\	        V4      RJ g   Q hWq,          RJ g   Q h\        V^,          ^8  V^8  ,          VR8  ,          4      RJ g   Q hR# )z3z3 not installed.r)   zx,y,zFTNr1   )r    r   r   r   bool)r   r#   r$   r,   r   r   zr   s           r%   test_z3r   F  s    	t	B !gGA!gGA!16a!e,-6661r6#u,,,1Q
+,E;$8t 16Q;1q51QV<=FFFr'   c                    a \        R 4      p V f   \        R4       R oRV3R llpR p\        ^24       F,  pV! ^
^^R7      p \        V4      pT! T4      RJpYV8X  d   K,  Q h	  R#   T P                  P
                   d     KP  i ; i)	r   Nr   c                 h    \         P                  ! V 4      p\        4       pVP                  V4       V# r   )r   	from_propr   from_cnf)bfcnfencs   &  r%   boolean_formula_to_encoded_cnf<test_z3_vs_lra_dpll2.<locals>.boolean_formula_to_encoded_cnf]  s(    mmBlS
r'   c                 X  < W8:  g   Q h\        W!R R7      pVRV   Uu. uF  qD.NK  	  ppW0R  FF  p\        V\        4      '       d   V( p\        ^ V ^,
          4      pWV,          P	                  V4       KH  	  V Uu. uF  p\        V!  NK  	  pp\        V!  pS	! V4      # u upi u upi )F)num_variablesnum_constraintsrationalN)r   
isinstancer   r   appendr   r   )
num_clausesr   num_varconstraintsconsclausesr   clauser   r   s
   &&&      r%   make_random_cnf-test_z3_vs_lra_dpll2.<locals>.make_random_cnfc  s    ---)kpq&1,;&?@&?d6&?@-D$
++u;q=)AJd#	 . .55W62v;W57m-c22 A 6s   B"=B'c                     \        V R R7      # )Tuse_lra_theory)rL   )r   s   &r%   rU   &test_z3_vs_lra_dpll2.<locals>.<lambda>q  s    &7$&Or'   )r   r   r   F)   
   r4   )r    r   r   r   z3typesZ3Exception)r   r   lra_dpll2_satisfiable_r   z3_satlra_dpll2_satr   s          @r%   test_z3_vs_lra_dpll2r   X  s    	t	B	z !3 P2Y"b!L	#C(F .c2%?&&& 
 zz%% 		s   A''BBc                     \        R 4      w  r. RO. RO. RO. RO. R	O. R
O. RO. RO. ROR^.. RO. RO. RO. RO. RO. RO. RO. ROR^.. RO. RO. RO. RO. RO^.^..p\        ^^4       Uu/ uF+  q3^8w  g   K  V^8w  g   K  \        P                  ! W4      VbK-  	  pp^V\        P                  ! V ^ 4      &   ^V\        P                  ! V ^ 4      &   \        W$4      p\        VRR7      RJ g   Q hR# u upi )zx,yTr   FN)r/   r6   r2   )r      i)r      r   )i      )r   	   r   r   r   )      i)r   r   r   r   )r   r   r   r   )r4   r6   r1   i)r   r5   r   )ir      r   )r   r   r   r   r   )   r1   r2   )iii)r   r   r   r   )r   r   r   r   )   r   r   i)r   r   r   r   r   )   ii)r   r   ir   )r      ir   r   )ii   )r   r   r   gtltr   r   )r   r   r   r   encodingr   s         r%   test_issue_27733r     s    5>DA.0E}Vj&(8:JKZ]_aYbdq"$8,YjRy:NP^`s!>B4"	?G (-Q|K|!Bw17Q
A|HKHQTT!QZHQTT!QZ
W
'Cs40E999 Ls   *C17C1 C1N)G__doc__sympy.assumptions.askr   sympy.core.symbolr   sympy.core.relationalr   r   r   r   r   r   r	   r
   sympy.logic.inferencer   r   r   r   r   r   sympy.logic.algorithms.dpllr   r   r   r   r   r   r   r   sympy.logic.algorithms.dpll2rL   !sympy.logic.algorithms.z3_wrapperr   sympy.assumptions.cnfr   r   !sympy.logic.tests.test_lra_theoryr   sympy.core.randomr   sympy.testing.pytestr   r   sympy.externalr    r&   r-   r:   r=   rA   rC   rE   rG   rJ   rM   rX   rg   ri   rk   rn   r|   r~   r   r   r   r   r   r   r   r   r9   r'   r%   <module>r      s    7 # % , I I2 2   O < 1 A % - (#==	FFK?KM N"R"063
"GB,3.Z )BG$%'N:r'   