K iXddlZddlZddlZddlZddlmZddlmZddlZddlmZm Z m Z ddl m Z m Z ddl mZmZmZmZmZmZmZmZmZmZmZmZmZddlmZmZmZmZddl m!Z!dd l"m#Z#dd l$m%Z%m&Z&ed \Z'Z(Z)Gd d eZ*ejVdejXe*fdZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ9B>c|ttjgdz5}tt d|dk(sJtt d|dk(sJ dddtg5}tt ddk(sJtt ddk(sJ dddy#1swYQxYw#1swYyxYw)NCr<67z-1)rAr!r*rrr?s r- test_IntegerrI-s r))*Q. /<172;3t;;;72;3t;;;< b 0Q72;'4///72;'4///00<<00s7B&)3B2&B/2B;c\ttjgdz5}tt dd|dk(sJtt dd|dk(sJtt dd |d k(sJtt d d |dk(sJ dddttj tjgd z5}tt t ddzd |dk(sJtt ddt z|dk(sJ dddy#1swYxYw#1swYyxYw)NrEz(/ 3 7) 2iz(/ -3 7)rCF auto_declarer<z (+ (/ 3 7) x)z$(declare-const x Real) (* (/ 3 7) x))rAr!r*rrr(xrHs r- test_RationalrU6s1 r))*Q. /F18Aq>A6)CCC8B?Q73>>>8Ar?Q7:EEE8B+a8IEEE F r--r/A/ABQF GN11x1~-EANRaaaa8Aq>A-:?NN NNNN FF NNsA1DAD"D"D+c&ttjgdz5}tt t t d|dk(sJttt t d|dk(sJttt t d|dk(sJttt t d|dk(sJttt t d|dk(sJttt t d|d k(sJ dddy#1swYyxYw) N FrR(assert (= x y))(assert (not (= x y)))(assert (<= x y))(assert (< x y))(assert (> x y))(assert (>= x y))) rAr!r(rrrTyrrrrrrHs r-test_Relationalr_Cs r--.3 4\2a8%!DHZZZZ2a8%!DH````2a8%!DH[[[[2a8%!DHZZZZ2a8%!DHZZZZ2a8%!DH[[[[ \\\s CDDcttjgdz5tt j t tddk(sJtt jt tddk(sJtt jt tddk(sJtt jt tddk(sJtt jt tddk(sJtt jt tdd k(sJ dddttfd y#1swYxYw) NrWFrRrXrYr[rZr\r]cLttjtSNrE)rrcomplexrTrHsr-z,test_AppliedBinaryRelation..Vs{199Q x 0))z(assert (< x 0))z(assert (= x 0))z(assert (<= x 0))z(assert (>= x 0))z(assert (not (= x 0)))) rAr!r(rrpositiverTnegativezero nonpositive nonnegativenonzerorHs r-test_AppliedPredicateruYs r--.2 3eq1::a=uqIM____1::a=uqIM____166!951EI[[[[1==+%!LPcccc1==+%!LPcccc199Q? ' ' '' wq!}a !8S$K,=#>?$nb$?  2 2 22'2: r--.2 32q wq!}a $nb$? 2 2 2222ihh%%22:22s=1I5>A J92J?C J29J(5I?J JJ%(J1cttjtjg5}t t dzd|dk(sJ dddttjtjtjg5}t t t dzzd|dk(sJ dddttjtjg5}t t tddzd|dk(sJtdd }td d }td }d}d||dz|||zz zz |dz|zz }dddtg5}t tdkt|kD||d ztdtddzg|dk(sJ dddttjtjg5}t tdtt|dddd|dk(sJ dddy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)NrLFrRz (pow x 3)z(pow x (pow y 3))rCz(pow x (/ 2 3))aTintegerbrealcc d|zS)NrCr+)rTs r-gztest_Pow..gs Q,r,g @rEz(declare-const a Int) (declare-const b Real) (declare-const c Bool) (assert (= (< a 2) c)) (assert (= (> b a) c)) (assert c) (assert (= (* (pow (* 7.0 a) (+ (pow b a) (* -1 a))) (pow (+ b (pow a 2)) -1)) (/ 7 3)))evaluaterGzG(declare-const b Real) (declare-const c Real) (* -2 c (pow (* b b) -1))) rAr!r(r*rrTr^rrrrr )r?rrrrexprs r-test_PowrsH r--r/A/AB CRq16BkQQQR r--r/E/ErGYGYZ [a_`1a=uqIM````a r--r/A/AB C ?q1A.UQOSdddd 3 % 3T " 3KAaD3JAQJ//16A:> ? b Q1q5! 1q5! D4Xa^+,      ( r--r/A/AB C)q As3q!e4b5ITY Z )) ))))IRRaa ? ?())s=H"H&A-H3A H?8I H#&H03H<?I Icbttjtjtjg5}t t t zd|dk(sJ dddttjtjtjg5}t t t zd|dk(sJ dddttjtjg5}t t d|dk(sJ dddy#1swYxYw#1swYaxYw#1swYyxYw)NFrRz(* x y)z(+ x y)z(* -1 x))rAr!r(r*rrTr^rHs r-test_basic_opsrs  r--r/E/ErGYGYZ [O_`1q5uqAYNNNO r--r/E/ErGYGYZ [O_`1q5uqAYNNNO r--r/A/AB CMqA2EA>*LLLMMOOOOMMs#D D*D% DD"%D.c ddlmddlmmm G fddt d}ttjg5}ttddft|t|t|ttgtfi| d k(sJ dddttjgd z5}ttddftd d ft!tttt|t|t|ttgtfi| dk(sJ dddt#dd}t#dd}t#d}tg5}t|d df|d dft!||kt%||k|z|dk(sJ dddy#1swY%xYw#1swYxYw#1swYyxYw)Nr)Boolean)IntervalTuplesympifycHeZdZfdZedZedZfdZy)*test_quantifier_extensions..ForAllc *|jDcgc]E\}}}|j|j|j|j|||gG}}}}|jd|jd||j gScc}}}w)Nforall)limits_s_exprr7 _known_typesryfunction)selfprintersymstartendbound_symbol_declarationsrs r-_smtlibz2test_quantifier_extensions..ForAll._smtlibs +/++ ))'sE3(()=)=c)BCUC(+) %) ??8$=> .  )sA BcN|jDchc]\}}}| c}}Scc}}wN)r)rs_s r- bound_symbolsz8test_quantifier_extensions..ForAll.bound_symbolss %)[[1'!QA1 11s !c|jDchc]}|j}}|jjDchc]}|j|vr|c}Scc}wcc}wr)rr7r free_symbols)rrbound_symbol_namess r-rz7test_quantifier_extensions..ForAll.free_symbolss]262D2D!EQ!&&!E !E==5566!33 "Fs AAc|Dcgc]}t|tfs |}}|Dcgc]}t|s |}}t|t|zt|k(sJt|dk(sJ|d}t|r,jg||jz|j Sj|}t||gz|_||_||_|Scc}wcc}w)Nrr) isinstancetuplelen__new__rr_args) clsargsrrrinstrForAllrrs r-rz2test_quantifier_extensions..ForAll.__new__s*.PQ*Q2OgajPFP,0KqJq'4J KHKv;X.#d); ;;x=A% %%{H(F+NFNN5 8??255=5F5F5.??3'Dv 23DJ DK$DMKQKsC3 C3C8 C8N)r"r#r$rpropertyrrr)rrrrrsr-rrs:   2  2      r,rfir}z,(assert (forall ( (x Real [-42, 21])) true))rCirLzs(declare-fun f (Real) Real) (assert (forall ( (x Real [-42, 21]) (y Real [-100, 3])) (=> (= x y) (= (f x) (f y)))))rTrrrrdrEzx(declare-const c Bool) (assert (forall ( (a Int [2, 100]) (b Real [2, 100])) (or c (=> (< a b) (< (pow a (/ 1 2)) b))))))sympy.logic.boolalgrrrrrr rAr!r(rrTrrrr^rrr) rr?rrrrrrrrs @@@@@r-test_quantifier_extensionsrs+..'''V  A r--. /<1 AsC="QqT1Q4. 1Xugun56 < < <<< r--.2 3 q C 4|1a"QqT1Q4.1 Xugun56       sD!AsAs A b  Q As V3KAE47Q;/!3         3<<  $  s' AGA8G7AGGGG&c ttjg5}tdtz tdi|dk(sJ dddttjg5}tt tdddtz gtdi|dk(sJ dddttjg5}tt tjtjtjtjtjtjtjdtjd tjd tjd it d td id|dk(sJ dddttjg5}tt tjtjtjtjtjtjtjdtjd it d td id|dk(sJ dddttjg5}tt tjtjtjtjtjtjtjdt d id|dk(sJ dddttjg5}tt tjtjtjtjtjtjtjdtjd it d id|dk(sJ dddy#1swYxYw#1swY;xYw#1swY`xYw#1swYxYw#1swYxYw#1swYyxYw)NrMY_PI)known_constantsr<z(pow MY_PI -1)gQ @Frz&(assert (= MY_PI 3.14)) (pow MY_PI -1)prr@plusrrL)rr{ precisionr<z!(plus 0 1 -1 (/ 1 2) (exp 1) p g)z$(plus 0 1 -1 (/ 1 2) (exp 1) p 1.62))r{rr<z$(plus 0 1 -1 (/ 1 2) 2.72 3.14 1.62)z!(plus 0 1 -1 (/ 1 2) e 3.14 1.62))rAr!r*rr rrr ZeroOne NegativeOneHalfExp1Pi GoldenRatiorrHs r-test_mix_number_mult_symbolsr7s; r))* +q FM    r))* + q2te,B  M     r))* +1q q}}affamme =c1==# VU  1 1 1 11 r))* + 4q q}}affamme =cVU  4 4 4 4 4 r))* +4q q}}affamme = &M  4 4 444 r))* +1q q}}affamme =VVSM &M  11 1111u  11 4 44411sK!N?3O 5COB%O&%BO3BP?O  OO#&O03O=P ctg5}tttz|dk(sJtttz|dk(sJtt|dk(sJtttztz|dk(sJ dddtt j g5}tttztdkDz|dk(sJ dddtd}td }td }tt j g5}tt|tttt|tg|ttgtf|ttgtfi| d k(sJ dddtg5}tt|tttt|tg|ttgtf|ttgtfi| d k(sJ dddtg5}tt|ttt||ttt|||ttg|ttgtf|ttgtf|ttgtfi| dk(sJ dddy#1swYLxYw#1swY xYw#1swYhxYw#1swYxYw#1swYyxYw)NrEz@(declare-const x Bool) (declare-const y Bool) (assert (and x y))z?(declare-const x Bool) (declare-const y Bool) (assert (or x y))z'(declare-const x Bool) (assert (not x))zY(declare-const x Bool) (declare-const y Bool) (declare-const z Bool) (assert (and x y z))rLzj(declare-const x Bool) (declare-const y Bool) (declare-const z Real) (assert (or (> z 3) (and x (not y))))rrhr}z(declare-const x Bool) (declare-const y Real) (declare-const z Bool) (declare-fun f (Bool) Int) (declare-fun g (Bool) Int) (assert (> (f x) y)) (assert (< y (g z)))z(declare-const x Bool) (declare-const y Int) (declare-const z Bool) (declare-fun f (Bool) Int) (declare-fun g (Bool) Int) (assert (= (f x) y)) (assert (< y (g z)))z(declare-const x Real) (declare-const y Int) (declare-const z Bool) (declare-fun f (Real) Int) (declare-fun g (Int) Bool) (declare-fun h (Bool) Real) (assert (= (f x) y)) (assert (= (g (f x)) z)) (assert (= (h (g (f x))) x)))rArrTr^rr!r(r rrrrrrr)r?rrrs r- test_booleanr}s b  LQ1q51-2FF FF1q51-2EE EEA2*/AA AA1q519q16LL LL L r--. /f1AFq1u-:?ff fff  A A A r--. / $1 !a[ 1Q4[ 8TFCK(!Xtfck-B  $ $ $ $ $ b  $Q !a[ 1Q4[ 8TFCK(!Xtfck-B  $ $ $ $ $ b ,Q !a[ !A$^ !AaD' A  8UGSL)8SE4K(8TFEM*   ,, ,,,,k L Lff $ $ $ $,,s?A6K %)KA.K'A.K4B-L KK$'K14K=L c @ttjtjg5t t t t dkft dzdfddk(sJ dddttjtjg5t t t dzt dkft dzt dkft dzt dkft d zdfdd k(sJ dddt t t dkft dzt dkDftt t d kDfttjtjg5ttfd dddy#1swYxYw#1swYxYw#1swYyxYw) NrrCTFrRz(ite (< x 1) x (pow x 2))rLrKzQ(ite (< x 1) (pow x 2) (ite (< x 2) (pow x 3) (ite (< x 3) (pow x 4) (pow x 5))))rctSrbrrr?sr-rdz'test_smtlib_piecewise..s{4!'Dr,) rAr!r(r*rrrTrrAssertionErrorrs@@r-test_smtlib_piecewisers| r--r/A/AB C)q q!a%jAvtn &  ) ) ))) r--r/A/AB C q qAvq1uoAvq1uoAvq1uoAvtn &       aQZ!q&!a%3q61q5/ BD r--r/A/AB CFq~DEFF/))  FFs$4E;AFF;FFFc&tttdkftdzdf}ttjtj g5}t d|z|dk(sJ dddttjtj g5}t |tz |dk(sJ dddttjtjtj g5}t |ttzz |dk(sJ dddttjtj g5}t |dz |d k(sJ dddy#1swYxYw#1swYxYw#1swYkxYw#1swYyxYw) NrrCTrEz6(declare-const x Real) (* 2 (ite (< x 1) x (pow x 2)))z?(declare-const x Real) (* (pow x -1) (ite (< x 1) x (pow x 2)))za(declare-const x Real) (declare-const y Real) (* (pow x -1) (pow y -1) (ite (< x 1) x (pow x 2)))rLz<(declare-const x Real) (* (/ 1 3) (ite (< x 1) x (pow x 2))))rrTrAr!r(r*rr^)pwr?s r-!test_smtlib_piecewise_times_constrsu Aq1u:Q~ .B r--r/A/AB Clq1r6A.2kkkkl r--r/A/AB Cuq26A.2ttttu r--r/E/ErGYGYZ [^_`2Q.!s1QqTYYq\HV[U\^cUcLdHepq!rr,c:ttjSrb)rr ComplexInfinityrHsr-rdz$test_not_supported..#sQ->->!Kr,)r rAr!r(r*rKeyErrorrs@@r-test_not_supportedrs A r--r/A/AB Ctqxrst r))* +MqxKLMMttMMsB .B BB cdtddk(sJtddk(sJtddk(sJy)Ngz0.0geK contextlibr5r%typingenumrrrrrr sympy.corerr r r r r rrrrrrrrrsympy.functionsrrrrsympy.assumptions.askrsympy.printing.smtlibrsympy.testing.pytestrrrTr^rr!contextmanagerIterablerArIrUr_rlrurrrrrrrrrrrr+r,r-rs  $$888844#-/ ' 1aDD  /6??2.//"0 N\ Fe=2@+)\ MUpC1LI,pF8 rFLM%r,