?- prove(shuffle([a,b],[1,2],S), Proof).

S = [1,2,a,b],
Proof = shuffle([a,b],[1,2],[1,2,a,b]):-
          (conc([],[a,b],[a,b]):-
             true),
          (shuffle([a,b],[2],[2,a,b]):-
             (conc([],[a,b],[a,b]):-
                true),
             (shuffle([a,b],[],[a,b]):-
                true),
             (conc([],[2,a,b],[2,a,b]):-
                true)),
          (conc([],[1,2,a,b],[1,2,a,b]):-
             true) ;

S = [1,a,2,b],
Proof = shuffle([a,b],[1,2],[1,a,2,b]):-
          (conc([],[a,b],[a,b]):-
             true),
          (shuffle([a,b],[2],[a,2,b]):-
             (conc([a],[b],[a,b]):-
                (conc([],[b],[b]):-
                   true)),
             (shuffle([b],[],[b]):-
                true),
             (conc([a],[2,b],[a,2,b]):-
                (conc([],[2,b],[2,b]):-
                   true))),
          (conc([],[1,a,2,b],[1,a,2,b]):-
             true) 

yes
