
    g                        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+d$S )&    )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_moduleFc                 |   t          | t                    s%t                      }|                    |            |} t          d          }|t	          d          t          | |          }t          |                                          }|dk    rdS |dk    r"t          |	                                |           S d S )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         ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/logic/algorithms/z3_wrapper.pyz3_satisfiabler0      s    dJ'' t	t		B	z/000 r**A
aggii..C
g~~u	&qwwyy$777t    c                 j     d |j                                         D              fd D             S )Nc                     i | ]\  }}||	S  r4   ).0keyvalues      r/   
<dictcomp>z+z3_model_to_sympy_model.<locals>.<dictcomp>&   s    FFFzsEusFFFr1   c                     i | ]E}t          |                                d d                            t          |                   FS )   N)intnamebool)r5   varrev_encz3_models     r/   r8   z+z3_model_to_sympy_model.<locals>.<dictcomp>'   sD    SSS3GC

122''(4+>+>SSSr1   )encodingitems)r@   enc_cnfr?   s   ` @r/   r(   r(   %   sC    FFW-=-C-C-E-EFFFGSSSSS(SSSSr1   c                 P    d | D             }dd                     |          z   dz   S )Nc                 d    g | ]-}|d k    rdt          |           ndt          |           d.S )r   dz(not d))abs)r5   lits     r/   
<listcomp>z'clause_to_assertion.<locals>.<listcomp>+   sB    \\\can#c((nnn5Ic#hh5I5I5I\\\r1   z(assert (or  z)))join)clauseclause_stringss     r/   clause_to_assertionrO   *   s2    \\U[\\\NCHH^444t;;r1   c                    d }|                                 }d | j        D             }d | j        D             }t                      }| j                                        D ]+\  }}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          j        t          j        t          j        t          j        fvrt7          |ddt8                    }	||j        z  }|	}d| d| d}
d	|
z   dz   }|                    |           -|D ]}|                    d
| d           d                    |          }d                    |          }|                     |           |                     |           |S )Nc                     dS )NF)r"   r   functionr   positivenegativezero)preds    r/   dummify_boolz.encoded_cnf_to_z3_solver.<locals>.dummify_bool0   s    ur1   c                     g | ]}d | d	S )z(declare-const dz Bool)r4   )r5   r>   s     r/   rJ   z,encoded_cnf_to_z3_solver.<locals>.<listcomp>;   s$    PPPs2s222PPPr1   c                 ,    g | ]}t          |          S r4   )rO   )r5   rM   s     r/   rJ   z,encoded_cnf_to_z3_solver.<locals>.<listcomp><   s!    III&%f--IIIr1   F)auto_declareauto_assertknown_functionsz
(implies drK   rG   z(assert z(declare-const z Real)
)!Solver	variablesdatasetrA   rB   r"   r   rR   r   gtltgeleneeqrS   rT   extended_negativeextended_positiverU   nonzerononnegativenonpositiveextended_nonzeroextended_nonnegativeextended_nonpositiver   r\   free_symbolsappendrL   from_string)rC   r   rW   r-   declarations
assertionssymbolsrV   encpred_strrM   	assertionsyms                r/   r%   r%   /   s      			APPg>OPPPLIIGLIIIJeeG%++-- % %	c$ 011 	=qtQT14qtQZQRQ[]^]prs  sF  HI  HN  PQ  PY  [\  [h  jk  jw  yz  yK  MN  Mc  ef  e{  !|  |  |t%U\klll4$$+c++D+++'#-	)$$$$ ; ;9c999::::99\**L:&&JMM,MM*Hr1   +*=z<=z>=<>rH   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(   rO   r%   r\   r4   r1   r/   <module>r      s   - - - - - - 5 5 5 5 5 5 , , , , , , # # # # # #         d d d d d d d d d d d d d d 4 4 4 4 4 4 6 6 6 6 6 6 = = = = = = = = 5 5 5 5 5 5 5 5 5 5 5 5 ( ( ( ( ( ( ( ( `  `  `  `  `  `  `  `  `  `  `  `  `  ` ( ( ( ( ( (   *T T T
< < <
& & &R


 c	

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