
    sg                        d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZmZmZmZ d dlmZmZ d dlm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& d$dZ'd Z(d Z)d Z*i e	de
dededededed e$       d e#       d e"       d e!       d e        dedededededededed ed!ed"iZ+y#)%    )smtlib_code)AppliedPredicate)
EncodedCNF)Q)AddMul)EqualityLessThanGreaterThanStrictLessThanStrictGreaterThan)Abs)Pow)MinMax)AndOrXorImplies)NotITE)StrictGreaterThanPredicateStrictLessThanPredicateGreaterThanPredicateLessThanPredicateEqualityPredicate)import_modulec                 "   t        | t              st               }|j                  |        |} t        d      }|t	        d      t        | |      }t        |j                               }|dk(  ry|dk(  rt        |j                         |       S y )Nz3zz3 is not installedunsatFsat)

isinstancer   add_propr   ImportErrorencoded_cnf_to_z3_solverstrcheckz3_model_to_sympy_modelmodel)expr
all_modelsexprsr   sress         T/var/www/html/venv/lib/python3.12/site-packages/sympy/logic/algorithms/z3_wrapper.pyz3_satisfiabler0      s    dJ't	t	B	z/00 r*A
aggi.C
g~	&qwwy$77    c           	          |j                   j                         D ci c]  \  }}||
 }}}| D ci c].  }|t        |j                         dd           t	        | |         0 c}S c c}}w c c}w )N   )encodingitemsintnamebool)z3_modelenc_cnfkeyvaluerev_encvars         r/   r(   r(   %   sj    -4-=-=-C-C-EFzsEus{FGFJRS3GC
12'(4+>>SS GSs
   A(3A.c                     | D cg c]$  }|dkD  rdt        |       ndt        |       d& }}ddj                  |      z   dz   S c c}w )Nr   dz(not d)z(assert (or  z)))absjoin)clauselitclause_stringss      r/   clause_to_assertionrH   *   sV    U[\ca#c(nvc#hZq5II\N\CHH^44t;; ]s   )Ac                    d }|j                         }| j                  D cg c]  }d| d
 }}| j                  D cg c]  }t        |       }}t	               }| j
                  j                         D ]l  \  }	}
t        |	t              s|	j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                   t        j"                  t        j$                  t        j&                  t        j(                  t        j*                  t        j,                  t        j.                  t        j0                  t        j2                  t        j4                  t        j6                  fvr't9        |	ddt:              }||	j<                  z  }|}	d|
 d|	 d}d	|z   dz   }|j?                  |       o |D ]  }|j?                  d
| d        djA                  |      }djA                  |      }|jC                  |       |jC                  |       |S c c}w c c}w )Nc                      y)NF)r"   r   functionr   positivenegativezero)preds    r/   dummify_boolz.encoded_cnf_to_z3_solver.<locals>.dummify_bool0   s    r1   z(declare-const dz Bool)F)auto_declareauto_assertknown_functionsz
(implies drB   rA   z(assert z(declare-const z Real)
)"Solver	variablesdatarH   setr4   r5   r"   r   rK   r   gtltgeleneeqrL   rM   extended_negativeextended_positiverN   nonzerononnegativenonpositiveextended_nonzeroextended_nonnegativeextended_nonpositiver   rS   free_symbolsappendrD   from_string)r:   r   rP   r-   r>   declarationsrE   
assertionssymbolsrO   encpred_str	assertionsyms                 r/   r%   r%   /   sD    			A>E>O>OPs&se62PLP<CLLI&%f-IJIeG%%++- %	c$ 01==qttQTT144qttQZZQRQ[Q[]^]p]prs  sF  sF  HI  HN  HN  PQ  PY  PY  [\  [h  [h  jk  jw  jw  yz  yK  yK  MN  Mc  Mc  ef  e{  e{  !|  |t%U\kl4$$$cU!D6+'#-	)$%  ;ocU&9:; 99\*L:&JMM,MM*H5 QIs
   I	I+*=z<=z>=<>rC   minmax^andorxornotitez=>N)F),sympy.printing.smtlibr   sympy.assumptions.assumer   sympy.assumptions.cnfr   sympy.assumptions.askr   
sympy.corer   r   sympy.core.relationalr	   r
   r   r   r   $sympy.functions.elementary.complexesr   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr   r   sympy.logic.boolalgr   r   r   r   r   r   #sympy.assumptions.relation.equalityr   r   r   r   r   sympy.externalr   r0   r(   rH   r%   rS    r1   r/   <module>r      sO   - 5 , #  d d 4 6 = 5 5 ( `  ` (*T
<
&R


 c	

 d
 
 C
 s
 
 
 !"D
 $%s
 '(#
  !
" #
$ %
& '
* +
, T5
r1   