K i>dZddlmZddlmZddlmZddlmZm Z m Z m Z m Z m Z ddlmZmZmZmZmZmZddlmZmZmZmZmZmZmZmZddlmZdd l m!Z!dd l"m#Z#m$Z$dd l%m&Z&dd l'm(Z(dd l)m*Z*m+Z+ddl,m-Z-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZd Z?d!Z@d"ZAd#ZBd$ZCd%ZDd&ZEd'ZFy())z1For more tests on satisfiability, see test_dimacs)Q)symbols) Unequality)AndOrImplies Equivalenttruefalse)literal_symbolpl_true satisfiablevalidentailsPropKB)dplldpll_satisfiablefind_pure_symbolfind_unit_clauseunit_propagatefind_pure_symbol_int_reprfind_unit_clause_int_reprunit_propagate_int_repr)r)z3_satisfiable)CNF EncodedCNF)make_random_problem)randint)raisesskip) import_modulectd\}}tddusJtddusJt||usJt||usJy)NzA,BTF)rr ABs f/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/logic/tests/test_inference.py test_literalr's] 5>DAq $ 4 '' ' % E )) ) !  !! ! 1"  "" "ctd\}}}t|g|g|dfk(sJt||g||z||zgdk(sJt|||g||z||z||zg|dfk(sJt|||g||z||z||zg|dfk(sJt|||g||z||z||zg|dfk(sJt|||g||z||z||zgdk(sJy)NA,B,CTNNF)rrr$r%Cs r&test_find_pure_symbolr. s?gGAq! QC! %!T 22 2 QFaR!VaR!V$4 5 EE E Q1IaR!qb!a%'@ AaY NN N Q1IQQBA'> ?At9 LL L Q1IaR!qb!a%'@ AaZ OO O  Aq QBFQB!GQU+ -0< == =r(c>tdgdhgdk(sJtddgddhddhgdk(sJtgdddhddhd dhgdk(sJtgdddhddhd dhgd k(sJtgdddhddhd dhgd k(sJtgdddhddhd dhgdk(sJy) Nr0Tr+r0r2r6r2Tr2F)rr(r&test_find_pure_symbol_int_reprr;+s $aSA3% 0I == = $aVa2q'" $'3 44 4 $YR2r(QF+ -09 :: : $Ya1b'Aq6* ,/8 99 9 $YbB8aV, .1; << < $Ya2r(QF+ -0< == =r(ctd\}}}t|gi|dfk(sJt||gi|dfk(sJt||zg|di|dfk(sJt||zg|di|dfk(sJt||z|z||z||zg|di|dfk(sJt||z|z||z||zg|di|dfk(sJt||z|z||z|gi|dfk(sJyNr*TF)rrr,s r&test_unit_clauser>9s8gGAq! QC $D 11 1 QGR (QI 55 5 QUGaY /At9 << < QUGaY /At9 << <  QAFAF#aY 045u: >> > QUQYQBA6D Bq$i OO O QUQYQB3R 8QI EE Er(c tttdggidk(sJtttdgdggidk(sJtddhgddidk(sJtddhgddidk(sJtttgdddgdd ggddid k(sJtttgdd dgddggddidk(sJtd \}}}t ||z|z||z|gi|dfk(sJy) Nr0r1r3r2Tr8r5r7r4r9r6r*)rmapsetrrr,s r&test_unit_clause_int_reprrBEs> $Sse_b 9Y FF F $SsRDk%:B ?9 LL L $q!fX4y 9Y FF F $q!fX4y 9Y FF F $S QGaW%&')*D  36@ AA A $S QGaV$&&()4y 25> ?? ?gGAq! QUQYQB3R 8QI EE Er(ctd\}}}t||zg|gk(sJt||z||z||z|g||||z|gk(sJy)Nr*)rrr,s r&test_unit_propagaterDSsggGAq! 1q5'1 % ++ + 1q51"q&1"q&!4a 8QQN JJ Jr(c tddhgdgk(sJtttddgddgddgdggddhddhgk(sJy)Nr0r2r3r6r7)rr@rAr:r(r&test_unit_propagate_int_reprrFYsg "QF8Q /2 55 5 "3s Q"a2q'A3'$)*+ -23r1g ?? ?r(cbtd\}}}t||zg||g|d|di|d|dik(sJy)z"This is also tested in test_dimacsr*TN)rrr,s r& test_dpllrH_sEgGAq! Q!Q!T1d!3 4D!T8J JJ Jr(c>td\}}}t||zdusJt||z|d|dik(sJt||z|di|di|d|difvsJt||z||zz|d|di|d|difvsJt||z||zz|d|di|d|di|d|difvsJt||z|z|d|d|dik(sJt||z||z z|dik(sJtt|||z|d|dik(sJtt|||z|d|dik(sJyNr*FT)rrr r,s r&test_dpll_satisfiablerKesgGAq! Q!V % .. . Q!V %!T1e)< << <  A I4y1dAt*<= >> >  aQBF #$dAt"4q%E6J!K LL L a!eQ/ 1q$56I a D!T 264 44 4 QUQY )aq$4-H HH H a!eQ/ 1aY >> > Z1-1 34D7I II I Z1-2 4E1e8L LL Lr(cJtd\}}}t||zdusJt||z|d|dik(sJt||z|di|di|d|difvsJt||z||zz|d|di|d|difvsJt||z||zz|d|d|di|d|d|difvsJt||z|z|d|d|dik(sJt||z||z z|d|di|d|difvsJtt|||z|d|dik(sJtt|||z|d|dik(sJyrJ)rdpll2_satisfiabler r,s r&test_dpll2_satisfiablerNusgGAq! a1"f &% // / a1"f &1dAu*= == =  A I4y1dAt*<= >> >  aQBF #$dAt"4q%E6J!K LL L q1u!a0 24E1d7S D!T1d#7% %% % a!eai *q$4D.I II I q1ua0 24E7J D!T7   jA.2 4D!T8J JJ J jA.!3 5!UAu9M MM Mr(c Jtd\}}}d}|||zdusJ|||z|d|dik(sJ|||z|di|di|d|di|d|di|d|difvsJ|||z||zz|d|di|d|difvsJ|||z||zz|d|d|di|d|d|di|d|d|di|d|d|difvsJ|||z|z|d|d|dik(sJ|||z||z z|d|di|d|difvsJ|t|||z|d|dik(sJ|t|||z|d|dik(sJy)Nr*ct|dS)N minisat22 algorithmr)exprs r&z,test_minisat22_satisfiable..s T[)Qr(FT)rr )r$r%r-minisat22_satisfiables r&test_minisat22_satisfiablerXsgGAq!Q !qb& *e 33 3 !qb& *q$5.A AA A  A I5zAua+>D!T@RUVX\^_afTgh ii i aQBF #$dAt"4q%E6J!K LL L 1q5aR!V"4 6AtQqRV;W D!T1d#a4D%AAtQPUWXZ_C`;b bb b !a%!) .1dAtQ2M MM M 1q5Q!V"4 6AtQ;N D!T;   *Q"2Q"6 8Qa.s{4S^hl7mr(FrQ)rSr[ all_models)T)rr rnextitems) r$r%r-rWgsolkeyvaluefirst_solutionsecond_solutionthird_solutions r&"test_minisat22_minimal_satisfiablerfsgGAq!m !qb& *e 33 3 !qb& *q$5.A AA A  A I5zAua+>D!T@RUVX\^_afTgh ii i aQBF #$dAt"4q%E6J!K LL L 1q5aR!V"4 6AtQqRV;W D!T1d#a4D%AAtQPUWXZ_C`;b bb b !a%!) .1dAtQ2M MM M 1q5Q!V"4 6AtQ;N D!T;   *Q"2Q"6 8QaU "" " AEAua/ 0E 99 9 AEAu: &% // / AEAu: &% // / AEAua/ 0E 99 9 1q$i (( ( AEAtQ- . 66 6 AFQa. / 77 7 :a#aY / 77 7 :a#aq$%7 8 @@ @ 1q51e*4 0 88 8 A27QJT 2 :: : 1q51eQ.T :e CC C 1q5QB!G$q$id ;u DD D AFQ'!T >$ FF Fr(c|ddlmttdttfdttdy)NrpictdS)Nz John Cleeser r:r(r&rVz*test_pl_true_wrong_input..s w}5r(c,tdzdzzS)N*r2rrrosr&rVz*test_pl_true_wrong_input..swrBwq'89r(ctdS)Nrtrrr:r(r&rVz*test_pl_true_wrong_input..s wr{r()sympy.core.numbersrpr ValueErrorros@r&test_pl_true_wrong_inputrxs'% :56 :9: :*+r(ctd\}}}t|||z |gdusJt|t|||gdusJt||z ||z z dusJt||z ||z z dusJy)NzA, B, CFT)rrr r,s r& test_entailsrzsi GAq! 1qAvrl #u ,, , 1z!Q'+ , 44 4 AFqb) *e 33 3 AFqb) *d 22 2r(c6td\}}}t}|j||z dusJ|j|||z z dusJ|j||z |j||z |j|dusJ|j|dusJ|j|dusJ|j|dusJ|j|dusJ|j|dusJ|j||z dusJ|j||j|dusJ|j|dusJ|j|dusJ|j|dusJ|j ||j|dusJyrJ)rrasktellretract)r$r%r-kbs r& test_PropKBrsgGAq! B 66!q&>U "" " 66!Q- D (( (GGAFOGGAFO 66!9   66!9   66!9   661":   661":   661":   66!q&>T !! !GGAJ 66!9   66!9   66!9   661":  JJqM 66!9  r(c`t}td\}}}|j|dusJy)z"tolerant to bad inputr*FN)rrr|)rr$r%r-s r&test_propKB_tolerantrs/ BgGAq! 66!9  r(c jtd\}}tj||z}ttj||ztj|tj|z}tj|tj|z}tj|dtj||zditj|dtj||zditj|dtj|dtj||zditj|dtj|dtj||zditj|dtj|dtj||zdig}t t |||drJt t |||d|vsJt t |||drJt t |||d|vsJy)Nzx yTFrrRdpll2)rrzerorrr)xy assumptionsfactsquery refutationss r&test_satisfiable_non_symbolsr s 5>DAq&&1+K AFF1Q3KQVVAY!6 7E VVAYJ!&&) #E D!&&1+t, D!&&1+t, D!&&)T166!A#;= D!&&)UAFF1Q3K> E166!9dAFF1Q3K> @K 3{E59VLL L s;v6& I[ XX X3{E59WMM M s;v6' Jk YY Yr(cddlm}ttttik(sJt|jttik(sJttdusJt|jdusJy)NrSF)sympy.core.singletonrrr r rs r&test_satisfiable_boolrsa& t t ,, , qvv 4, .. . u  && & qww 5 (( (r(cJ ddlm}m}tt dddusJt t ||z |zddgk(sJt t ddt t igk(sJ|d|di|d|dig}t ||z d |jt |jt tt fd|rJt t t||d|d|di|d|digk(sJ|d|di|d|di|d|dig}t ||z dD]}|j||rJddl m }ddl m}|}td Dcgc] }t|}}t ||d td D]}t rJycc}w) Nrr#FT)r\ctSN)r])resultsr&rVz-test_satisfiable_all_models../s $v,r()numbered_symbols)rd ) sympy.abcr$r%r]rlistr remover StopIterationr sympy.utilities.iterablesrsympy.logic.boolalgrrange) r$r%modelsmodelrrsymiXrs @r&test_satisfiable_all_modelsr%s  Ed3 4 == =  Q1"WMd; < GG G  DT2 3t ~ EE E$5!Aua#6 7F Q4 0F MM$v, MM$v, =./:  Jq!,> ?5AtQ-. // /%E"Qq$$7!T1d9K LFQ!V5 e: ;&  C!#J'qc'A' QD 1F 2YF|| (sF cbtd}|s tdtd\}}}td\}}}t|dk\|dkzdusJt||zdusJt|||z|zz}t |dusJ||dusJt|dzdk\|dkz|d kDzdusJy) Nz3z3 not installed.r*zx,y,zr2r0FTr3)r!r rrbool)rr$r%r-rrzrs r&test_z3rFs t B  !gGAq!gGAq! 16a!e, - 66 6 1r6 #u ,, , 1Q + ,E ;$   8t   16Q;1q51QV< = FF Fr(ctd}| tddd fd }d}tdD]*}|dd d } t|}||d u}||k(r*Jy#|jj $rYIwxYw) Nrrcftj|}t}|j||Sr)r from_proprfrom_cnf)bfcnfencs r&boolean_formula_to_encoded_cnfz.boolean_formula_to_encoded_cnf]s(mmBl S r(rr2c2||ksJt||d}|d|Dcgc]}|g}}||dD]8}t|tr|}td|dz }||j |:|Dcgc] }t | }}t |} |Scc}wcc}w)NF) num_variablesnum_constraintsrationalrr0)r isinstancerrappendrr) num_clausesrnum_var constraintsconsclausesrclauserrs r&make_random_cnfz-test_z3_vs_lra_dpll2..make_random_cnfcso---)Q`kpq &1,;&?@dD6@@ - $D$ +u;q=)A AJ  d #  $ .5562v;557m-c22A6s B.Bct|dS)NTuse_lra_theory)rM)rs r&rVz&test_z3_vs_lra_dpll2..qs&7$&Or(2)rrrF)rr2)r!r rrz3types Z3Exception)rrlra_dpll2_satisfiable_rz3_sat lra_dpll2_satrs @r&test_z3_vs_lra_dpll2rXs t B z ! 3P 2Y '"b!L #C(F.c2%? &&& ' zz%%   s AA;:A;ctd\}}gdgdgdgdgdgdgdgd gd d d ggd gdgdgdgdgdgdgddd ggdgdgdgdgdd gdgg}tddDcic]%}|dk7s |d k7stj|||'}}d|tj|d<d |tj|d<t ||}t |d !d"usJycc}w)#Nzx,y)r0r7r4)ri)r r)i )r rrr)i)rrrr)rrrr)r2r7r3i )rr6r)irr)rrrrr)r3r4)iii)rrrr)rrrr)rri)rrrrr)ii)rrir)rirr)iirr0rrTrF)rrrgtltrr)rrrrencodingrs r&test_issue_27733rs 5>DAq.0E}Vj&(8:JKZ]_aYbdq"$8,YjRy:NP^`s!>B4" ?G (-Q|K!qBw17Q A KHKHQTT!QZHQTT!QZ Wh 'C s4 0E 99 9 Ls+ C'6C'<C'N)G__doc__sympy.assumptions.askrsympy.core.symbolrsympy.core.relationalrrrrrr r r sympy.logic.inferencer r rrrrsympy.logic.algorithms.dpllrrrrrrrrsympy.logic.algorithms.dpll2rM!sympy.logic.algorithms.z3_wrapperrsympy.assumptions.cnfrr!sympy.logic.tests.test_lra_theoryrsympy.core.randomrsympy.testing.pytestrr sympy.externalr!r'r.r;r>rBrDrFrHrKrNrXrfrhrjrmrxrzrrrrrrrrr:r(r&rs7#%,II22O<1A%-(#= = F FK ? K M N"R"063 "GB,3. Z )BG$%'N :r(