ó
¡¼™\c           @   s”  d  Z  d d l m Z m Z d d l m Z d d l m Z m Z m	 Z	 m
 Z
 m Z d d l m Z m Z m Z m Z m Z m Z d d l m Z m Z m Z m Z m Z m Z m Z m Z d d l m Z d d l m Z d	 „  Z  d
 „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 d „  Z1 d „  Z2 d „  Z3 d S(   s1   For more tests on satisfiability, see test_dimacsiÿÿÿÿ(   t   symbolst   Q(   t   range(   t   Andt   Impliest
   Equivalentt   truet   false(   t   literal_symbolt   pl_truet   satisfiablet   validt   entailst   PropKB(   t   dpllt   dpll_satisfiablet   find_pure_symbolt   find_unit_clauset   unit_propagatet   find_pure_symbol_int_reprt   find_unit_clause_int_reprt   unit_propagate_int_repr(   R   (   t   raisesc          C   sw   t  d ƒ \ }  } t t ƒ t k s* t ‚ t t ƒ t k sB t ‚ t |  ƒ |  k sZ t ‚ t |  ƒ |  k ss t ‚ d  S(   Ns   A,B(   R    R   t   Truet   AssertionErrort   False(   t   At   B(    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_literal   s
    c          C   ss  t  d ƒ \ }  } } t |  g |  g ƒ |  t f k s< t ‚ t |  | g |  | B| |  Bg ƒ d k sm t ‚ t |  | | g |  | B| | B| |  Bg ƒ |  t f k s¯ t ‚ t |  | | g |  | B| | B| |  Bg ƒ | t f k sð t ‚ t |  | | g |  | B| | B| |  Bg ƒ | t f k s3t ‚ t |  | | g |  | B| | B| |  Bg ƒ d k sot ‚ d  S(   Ns   A,B,C(   NN(   NN(   R    R   R   R   t   NoneR   (   R   R   t   C(    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_find_pure_symbol   s    '1BACc           C   sÉ  t  d g t d g ƒ g ƒ d t f k s0 t ‚ t  d d g t d d g ƒ t d d g ƒ g ƒ d k so t ‚ t  d d d g t d d g ƒ t d d g ƒ t d d g ƒ g ƒ d t f k sÆ t ‚ t  d d d g t d d g ƒ t d d g ƒ t d d g ƒ g ƒ d t f k st ‚ t  d d d g t d d g ƒ t d d g ƒ t d d g ƒ g ƒ d t f k stt ‚ t  d d d g t d d g ƒ t d d g ƒ t d d g ƒ g ƒ d k sÅt ‚ d  S(	   Ni   i   iÿÿÿÿiþÿÿÿi   iýÿÿÿ(   NN(   NN(   R   t   setR   R   R   R   (    (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_find_pure_symbol_int_repr#   s    03HHHc          C   s  t  d ƒ \ }  } } t |  g i  ƒ |  t f k s9 t ‚ t |  |  g i  ƒ |  t f k sa t ‚ t |  | Bg i t |  6ƒ | t f k s t ‚ t |  | Bg i t | 6ƒ |  t f k s¿ t ‚ t |  | B| B| | B|  | Bg i t |  6ƒ | t f k st ‚ t |  | B| B| | B|  | Bg i t |  6ƒ | t f k sDt ‚ t |  | B| B| | B|  g i  ƒ |  t f k s{t ‚ d  S(   Ns   A,B,C(   R    R   R   R   R   (   R   R   R   (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_unit_clause1   s    $(//@Bc          C   sÂ  t  t t d g g ƒ i  ƒ d t f k s0 t ‚ t  t t d g d g g ƒ i  ƒ d t f k sf t ‚ t  t d d g ƒ g i t d 6ƒ d t f k s t ‚ t  t d d g ƒ g i t d 6ƒ d t f k sÔ t ‚ t  t t d d d g d d g d d g g ƒ i t d 6ƒ d t f k s#t ‚ t  t t d d d g d d g d d g g ƒ i t d 6ƒ d t f k srt ‚ t d ƒ \ }  } } t |  | B| B| | B|  g i  ƒ |  t f k s¾t ‚ d  S(   Ni   iÿÿÿÿi   i   iýÿÿÿiþÿÿÿs   A,B,C(   R   t   mapR    R   R   R   R    R   (   R   R   R   (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_unit_clause_int_repr=   s    0677	F	Fc          C   s~   t  d ƒ \ }  } } t |  | Bg |  ƒ g  k s7 t ‚ t |  | B|  | B| | B|  g |  ƒ | | | B|  g k sz t ‚ d  S(   Ns   A,B,C(   R    R   R   (   R   R   R   (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_unit_propagateK   s    "c           C   sŽ   t  t d d g ƒ g d ƒ g  k s* t ‚ t  t t d d g d d g d d g d g g ƒ d ƒ t d g ƒ t d d g ƒ g k sŠ t ‚ d  S(   Ni   i   iÿÿÿÿi   iýÿÿÿ(   R   R    R   R#   (    (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_unit_propagate_int_reprQ   s    *	c          C   s`   t  d ƒ \ }  } } t |  | Bg |  | g i t |  6t | 6ƒ i t |  6t | 6k s\ t ‚ d S(   s"   This is also tested in test_dimacss   A,B,CN(   R    R   R   R   (   R   R   R   (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt	   test_dpllW   s    c          C   s	  t  d ƒ \ }  } } t |  |  @ƒ t k s2 t ‚ t |  | @ƒ i t |  6t | 6k s] t ‚ t |  | Bƒ i t |  6i t | 6i t |  6t | 6f k sž t ‚ t |  | B| |  B@ƒ i t |  6t | 6i t |  6t | 6f k sæ t ‚ t |  | B| | B@ƒ i t |  6t | 6i t |  6t | 6i t | 6t | 6f k s>t ‚ t |  | @| @ƒ i t |  6t | 6t | 6k sst ‚ t |  | B|  | ?@ƒ i t | 6k sžt ‚ t t |  | ƒ |  @ƒ i t |  6t | 6k sÑt ‚ t t |  | ƒ |  @ƒ i t |  6t | 6k st ‚ d  S(   Ns   A,B,C(   R    R   R   R   R   R   (   R   R   R   (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_dpll_satisfiable]   s    +>E'15+3c          C   s!  t  d ƒ \ }  } } t |  |  @ƒ t k s2 t ‚ t |  | @ƒ i t |  6t | 6k s] t ‚ t |  | Bƒ i t |  6i t | 6i t |  6t | 6f k sž t ‚ t |  | B| |  B@ƒ i t |  6t | 6i t |  6t | 6f k sæ t ‚ t |  | B| | B@ƒ i t |  6t | 6t | 6i t |  6t | 6t | 6f k s;t ‚ t |  | @| @ƒ i t |  6t | 6t | 6k spt ‚ t |  | B|  | ?@ƒ i t | 6t |  6i t | 6t |  6f k s¶t ‚ t t |  | ƒ |  @ƒ i t |  6t | 6k sét ‚ t t |  | ƒ |  @ƒ i t |  6t | 6k st ‚ d  S(   Ns   A,B,C(   R    t   dpll2_satisfiableR   R   R   R   (   R   R   R   (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_dpll2_satisfiablem   s    +>E.'5& 3c          C   s>   t  d ƒ \ }  } } t |  |  | ?@| @ƒ t k s: t ‚ d  S(   Ns   A,B,C(   R    R
   R   R   (   R   R   R   (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_satisfiable~   s    c          C   sË   t  d ƒ \ }  } } t |  | |  ??ƒ t k s5 t ‚ t |  | | ??|  | ?|  | ???ƒ t k se t ‚ t | |  ?|  | ??ƒ t k s‹ t ‚ t |  | B| Bƒ t k s« t ‚ t |  | ?ƒ t k sÇ t ‚ d  S(   Ns   A,B,C(   R    R   R   R   R   (   R   R   R   (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt
   test_validƒ   s     0& c          C   sö  t  d ƒ \ }  } } t t ƒ t k s- t ‚ t |  | @i t |  6t | 6ƒ t k sZ t ‚ t |  | Bi t |  6ƒ t k s€ t ‚ t |  | Bi t | 6ƒ t k s¦ t ‚ t |  | Bi d  |  6t | 6ƒ t k sÓ t ‚ t |  | ?i t |  6ƒ t k sù t ‚ t |  | B| Bi t |  6t | 6t | 6ƒ t k s2t ‚ t t |  | ƒ i t |  6t | 6ƒ t k sdt ‚ t t ƒ t k s|t ‚ t |  | @i t |  6t | 6ƒ t k s©t ‚ t |  | @i t |  6ƒ t k sÏt ‚ t |  | @i t | 6ƒ t k sõt ‚ t |  | Bi t |  6t | 6ƒ t k s"t ‚ t | i d  | 6ƒ d  k sDt ‚ t |  | @i t |  6d  | 6ƒ d  k sqt ‚ t |  | ?i t |  6d  | 6ƒ d  k sžt ‚ t t |  | ƒ i d  |  6ƒ d  k sÉt ‚ t t |  | ƒ i t |  6d  | 6ƒ d  k sût ‚ t |  | Bi t |  6d t ƒd  k s't ‚ t |  | @i t |  6d t ƒd  k sUt ‚ t |  | Bi t |  6t | 6d t ƒt k sˆt ‚ t |  | @|  | B@i t |  6d t ƒt k s¾t ‚ t | |  ?| |  ??i t | 6d t ƒt k sòt ‚ d  S(   Ns   A,B,Ct   deep(   R    R	   R   R   R   R   R   (   R   R   R   (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_pl_trueŒ   s0    -&&-&92-&&-"--+2,.36c              sJ   d d l  m ‰  t t d „  ƒ t t ‡  f d †  ƒ t t d „  ƒ d  S(   Niÿÿÿÿ(   t   pic           S   s
   t  d ƒ S(   Ns   John Cleese(   R	   (    (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   <lambda>¯   t    c              s   t  d ˆ  ˆ  d ƒ S(   Ni*   i   (   R	   (    (   R/   (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyR0   °   R1   c           S   s
   t  d ƒ S(   Ni*   (   R	   (    (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyR0   ±   R1   (   t   sympyR/   R   t
   ValueError(    (    (   R/   s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_pl_true_wrong_input­   s    c          C   sµ   t  d ƒ \ }  } } t |  |  | ?| g ƒ t k s; t ‚ t | t |  | ƒ |  g ƒ t k se t ‚ t |  | ?|  | ??ƒ t k s‹ t ‚ t |  | ?| |  ??ƒ t k s± t ‚ d  S(   Ns   A, B, C(   R    R   R   R   R   R   (   R   R   R   (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_entails´   s
    &*&c          C   sì  t  d ƒ \ }  } } t ƒ  } | j |  | ?ƒ t k s= t ‚ | j |  | |  ??ƒ t k s` t ‚ | j |  | ?ƒ | j | | ?ƒ | j |  ƒ t k s t ‚ | j | ƒ t k s¸ t ‚ | j | ƒ t k sÓ t ‚ | j |  ƒ t k sï t ‚ | j | ƒ t k st ‚ | j | ƒ t k s't ‚ | j |  | ?ƒ t k sFt ‚ | j |  ƒ | j |  ƒ t k snt ‚ | j | ƒ t k s‰t ‚ | j | ƒ t k s¤t ‚ | j | ƒ t k sÀt ‚ | j |  ƒ | j | ƒ t k sèt ‚ d  S(   Ns   A,B,C(   R    R   t   askR   R   R   t   tellt   retract(   R   R   R   t   kb(    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_PropKB¼   s(    	#c          C   s=   t  ƒ  }  t d ƒ \ } } } |  j | ƒ t k s9 t ‚ d S(   s   "tolerant to bad inputs   A,B,CN(   R   R    R6   R   R   (   R9   R   R   R   (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_propKB_tolerantÓ   s    	c       	   C   s  t  d ƒ \ }  } t j |  | ƒ } t t j |  | ƒ t j |  ƒ t j | ƒ Bƒ } t j |  ƒ t j | ƒ @} i t t j |  ƒ 6t t j |  | ƒ 6i t t j | ƒ 6t t j |  | ƒ 6i t t j |  ƒ 6t t j | ƒ 6t t j |  | ƒ 6i t t j |  ƒ 6t t j | ƒ 6t t j |  | ƒ 6i t t j |  ƒ 6t t j | ƒ 6t t j |  | ƒ 6g } t t | | | ƒ d d ƒs“t ‚ t t | | | ƒ d d ƒ| k s¾t ‚ t t | | | ƒ d d ƒsãt ‚ t t | | | ƒ d d ƒ| k st ‚ d  S(   Ns   x yt	   algorithmR   t   dpll2(	   R    R   t   zeroR   R   R   R
   R   R   (   t   xt   yt   assumptionst   factst   queryt   refutations(    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_satisfiable_non_symbolsÙ   s    2''77=%+%c          C   sˆ   d d l  m }  t t ƒ i t t 6k s/ t ‚ t |  j ƒ i t t 6k sQ t ‚ t t ƒ t k si t ‚ t |  j ƒ t k s„ t ‚ d  S(   Niÿÿÿÿ(   t   S(   t   sympy.core.singletonRF   R
   R   R   R   R   (   RF   (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_satisfiable_boolé   s
    "c    	         su  d d l  m }  m } t t t d t ƒƒ t k s: t ‚ t t |  |  ?|  @d t ƒƒ t g k sj t ‚ t t t d t ƒƒ i t	 t	 6g k s˜ t ‚ i t |  6t | 6i t |  6t | 6g } t |  | Ad t ƒ‰  | j
 t ˆ  ƒ ƒ | j
 t ˆ  ƒ ƒ t t ‡  f d †  ƒ | st ‚ t t t |  | ƒ d t ƒƒ i t |  6t | 6i t |  6t | 6g k snt ‚ i t |  6t | 6i t |  6t | 6i t |  6t | 6g } x+ t |  | ?d t ƒD] } | j
 | ƒ q¾W| sât ‚ d d l m } d d l m } | ƒ  } g  t d ƒ D] } t | ƒ ^ q} t | | Œ  d t ƒ‰  x& t d ƒ D] } t ˆ  ƒ sUt ‚ qUWd  S(	   Niÿÿÿÿ(   R   R   t
   all_modelsc              s
   t  ˆ  ƒ S(   N(   t   next(    (   t   result(    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyR0   û   R1   (   t   numbered_symbols(   t   Orid   i
   (   t	   sympy.abcR   R   RJ   R
   R   R   R   t   listR   t   removeR   t   StopIterationR   R2   RL   t   sympy.logic.boolalgRM   R   (	   R   R   t   modelst   modelRL   RM   t   symt   it   X(    (   RK   s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   test_satisfiable_all_modelsñ   s.    $0.(19	%N(4   t   __doc__R2   R    R   t   sympy.core.compatibilityR   RR   R   R   R   R   R   t   sympy.logic.inferenceR   R	   R
   R   R   R   t   sympy.logic.algorithms.dpllR   R   R   R   R   R   R   R   t   sympy.logic.algorithms.dpll2R)   t   sympy.utilities.pytestR   R   R   R!   R"   R$   R%   R&   R'   R(   R*   R+   R,   R.   R4   R5   R:   R;   RE   RH   RX   (    (    (    s?   lib/python2.7/site-packages/sympy/logic/tests/test_inference.pyt   <module>   s6   (.:														!						