<s> from logpy . unification import unify , reify , _unify , _reify <EOL> from logpy import var <EOL> def test_reify ( ) : <EOL> x , y , z = var ( ) , var ( ) , var ( ) <EOL> s = { x : <NUM_LIT:1> , y : <NUM_LIT:2> , z : ( x , y ) } <EOL> assert reify ( x , s ) == <NUM_LIT:1> <EOL> assert reify ( <NUM_LIT:10> , s ) == <NUM_LIT:10> <EOL> assert reify ( ( <NUM_LIT:1> , y ) , s ) == ( <NUM_LIT:1> , <NUM_LIT:2> ) <EOL> assert reify ( ( <NUM_LIT:1> , ( x , ( y , <NUM_LIT:2> ) ) ) , s ) == ( <NUM_LIT:1> , ( <NUM_LIT:1> , ( <NUM_LIT:2> , <NUM_LIT:2> ) ) ) <EOL> assert reify ( z , s ) == ( <NUM_LIT:1> , <NUM_LIT:2> ) <EOL> def test_reify_dict ( ) : <EOL> x , y = var ( ) , var ( ) <EOL> s = { x : <NUM_LIT:2> , y : <NUM_LIT:4> } <EOL> e = { <NUM_LIT:1> : x , <NUM_LIT:3> : { <NUM_LIT:5> : y } } <EOL> assert reify ( e , s ) == { <NUM_LIT:1> : <NUM_LIT:2> , <NUM_LIT:3> : { <NUM_LIT:5> : <NUM_LIT:4> } } <EOL> def test_reify_list ( ) : <EOL> x , y = var ( ) , var ( ) <EOL> s = { x : <NUM_LIT:2> , y : <NUM_LIT:4> } <EOL> e = [ <NUM_LIT:1> , [ x , <NUM_LIT:3> ] , y ] <EOL> assert reify ( e , s ) == [ <NUM_LIT:1> , [ <NUM_LIT:2> , <NUM_LIT:3> ] , <NUM_LIT:4> ] <EOL> def test_reify_complex ( ) : <EOL> x , y = var ( ) , var ( ) <EOL> s = { x : <NUM_LIT:2> , y : <NUM_LIT:4> } <EOL> e = { <NUM_LIT:1> : [ x ] , <NUM_LIT:3> : ( y , <NUM_LIT:5> ) } <EOL> assert reify ( e , s ) == { <NUM_LIT:1> : [ <NUM_LIT:2> ] , <NUM_LIT:3> : ( <NUM_LIT:4> , <NUM_LIT:5> ) } <EOL> def test_unify ( ) : <EOL> assert unify ( <NUM_LIT:1> , <NUM_LIT:1> , { } ) == { } <EOL> assert unify ( <NUM_LIT:1> , <NUM_LIT:2> , { } ) == False <EOL> assert unify ( var ( <NUM_LIT:1> ) , <NUM_LIT:2> , { } ) == { var ( <NUM_LIT:1> ) : <NUM_LIT:2> } <EOL> assert unify ( <NUM_LIT:2> , var ( <NUM_LIT:1> ) , { } ) == { var ( <NUM_LIT:1> ) : <NUM_LIT:2> } <EOL> def test_unify_seq ( ) : <EOL> assert unify ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) , { } ) == { } <EOL> assert unify ( [ <NUM_LIT:1> , <NUM_LIT:2> ] , [ <NUM_LIT:1> , <NUM_LIT:2> ] , { } ) == { } <EOL> assert unify ( ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ) , { } ) == False <EOL> assert unify ( ( <NUM_LIT:1> , var ( <NUM_LIT:1> ) ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) , { } ) == { var ( <NUM_LIT:1> ) : <NUM_LIT:2> } <EOL> assert unify ( ( <NUM_LIT:1> , var ( <NUM_LIT:1> ) ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) , { var ( <NUM_LIT:1> ) : <NUM_LIT:3> } ) == False <EOL> def test_unify_dict ( ) : <EOL> assert unify ( { <NUM_LIT:1> : <NUM_LIT:2> } , { <NUM_LIT:1> : <NUM_LIT:2> } , { } ) == { } <EOL> assert unify ( { <NUM_LIT:1> : <NUM_LIT:2> } , { <NUM_LIT:1> : <NUM_LIT:3> } , { } ) == False <EOL> assert unify ( { <NUM_LIT:2> : <NUM_LIT:2> } , { <NUM_LIT:1> : <NUM_LIT:2> } , { } ) == False <EOL> assert unify ( { <NUM_LIT:1> : var ( <NUM_LIT:5> ) } , { <NUM_LIT:1> : <NUM_LIT:2> } , { } ) == { var ( <NUM_LIT:5> ) : <NUM_LIT:2> } <EOL> def test_unify_complex ( ) : <EOL> assert unify ( ( <NUM_LIT:1> , { <NUM_LIT:2> : <NUM_LIT:3> } ) , ( <NUM_LIT:1> , { <NUM_LIT:2> : <NUM_LIT:3> } ) , { } ) == { } <EOL> assert unify ( ( <NUM_LIT:1> , { <NUM_LIT:2> : <NUM_LIT:3> } ) , ( <NUM_LIT:1> , { <NUM_LIT:2> : <NUM_LIT:4> } ) , { } ) == False <EOL> assert unify ( ( <NUM_LIT:1> , { <NUM_LIT:2> : var ( <NUM_LIT:5> ) } ) , ( <NUM_LIT:1> , { <NUM_LIT:2> : <NUM_LIT:4> } ) , { } ) == { var ( <NUM_LIT:5> ) : <NUM_LIT:4> } <EOL> assert unify ( { <NUM_LIT:1> : ( <NUM_LIT:2> , <NUM_LIT:3> ) } , { <NUM_LIT:1> : ( <NUM_LIT:2> , var ( <NUM_LIT:5> ) ) } , { } ) == { var ( <NUM_LIT:5> ) : <NUM_LIT:3> } <EOL> assert unify ( { <NUM_LIT:1> : [ <NUM_LIT:2> , <NUM_LIT:3> ] } , { <NUM_LIT:1> : [ <NUM_LIT:2> , var ( <NUM_LIT:5> ) ] } , { } ) == { var ( <NUM_LIT:5> ) : <NUM_LIT:3> } </s>
