K i[%ddlmZddlmZmZddlmZddlmZddl m Z m Z ddl m Z ddlmZddlmZdd lmZdd lmZd efd Ze ej,ej.ej0ej2ej4ej6ej8ej:ej<ej:ej>ej@ejBh zZ"d Z#dZ$dZ%ej8ej,ej:ej.ej<ej4ej:ej.ej>ej2ej@dejBdiZ&dZ'dZ(y))global_assumptions)CNF EncodedCNF)Q) satisfiable)UnhandledInput ALLOWED_PRED) MatrixKind) NumberKind)AppliedPredicate)Mul)STc.tj|}tj|}tj|}t}|j|t}|r|j |}|j |t |||S)aO Function to evaluate the proposition with assumptions using SAT algorithm in conjunction with an Linear Real Arithmetic theory solver. Used to handle inequalities. Should eventually be depreciated and combined into satask, but infinity handling and other things need to be implemented before that can happen. )r from_proprfrom_cnfextend add_from_cnfcheck_satisfiability) proposition assumptionscontextprops_propscnf context_cnfs b/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/assumptions/lra_satask.py lra_sataskr s| MM+ &E ]]K< (F -- $C,K%K!((1 [) v{ ;;c|j}|j}|j||j|t|\}}|D]A}|jtvs|jt j k7s4td|d|D]K}|jttk(rtd|d|tjk(sBtdt|D]} t|j} | |jvr| dz|j| <|j j#|j| gt|j} | |jvr| dz|j| <|j j#|j| gt%|}t%|}t'|ddu} t'|ddu} | r| ry| r| sy| s| ry| s| s t)d yy) N LRASolver: z is an unhandled predicatez is of MatrixKindzLRASolver: nanT)use_lra_theoryFzInconsistent assumptions)copyr"get_all_pred_and_expr_from_enc_cnffunction WHITE_LISTrnerkindr r rNaNextract_pred_from_old_assumlenencodingdataappend _preprocessr ValueError) prop_propfactbasesat_true sat_falseall_pred all_exprspredexprassmn can_be_true can_be_falses rrr.s}}H I $ 5!eKL|< < |344 ,;rc|j}d}|jjDcic]\}}|| }}}i}g}|jD]}g}|D]} | dk(r|j | d|| < |t | } | dk} | dkD| dkz } t | } t| ts(| |vr ||| <|dz }|| } |j | | z| r;| jtjk(rd} tj| j} | jtjk(r| j\} }| r 3. Also converts all negated Q.ne predicates into equalities. r!rF)r#r,itemsr-r.abs_pred_to_binrel isinstancer r%reqr' argumentsgtltr+r)enc_cnfcur_enckeyvalue rev_encoding new_encodingnew_dataclause new_clauselitr1negatedsignarg1arg2new_propnew_enc new_propss rr/r/`s llnGG181A1A1G1G1IJ:3E3JJLJLH,,7$ 4 7Cax!!#&$) S!C)DAgG!Ga(D"4(Dd$45|+)0L&qLG"4(!!$s(+4==ADD0ttT^^,}}$!^^ d ttD$/H|318 X.1 *84G%%g.!"dD!1144d3C DI$-3#<75>> from sympy.assumptions.lra_satask import extract_pred_from_old_assum >>> from sympy import symbols >>> x, y = symbols("x y", positive=True) >>> extract_pred_from_old_assum([x, y, 2]) [Q.positive(x), Q.positive(y)] free_symbolsrTr z must be realc38K|]}|jduyw)TN)is_real).0args r z.extract_pred_from_old_assum..s(VSD)@(Vsz is an integerFz can't be an integerz is irational)hasattrr+rirkrrBr anyargs is_integeris_zero is_rationalr.rr\ is_positiverZ is_negativer[ is_nonzerorais_nonpositiver]is_nonnegativer_)r7retr9s rr*r*s6 C,t^,  t  !Q &  <rs.71#-J*&5")-6H<6QZZQVVQYY WXWdWd,-,?,?ATATVWVlVl,-,?,?ASASUVUhUh,-,?,?AA /5dRj4AMM <r