Uniquely removable subsequences Introduction

Consider a sequence of integers and one of its subsequences, say A = [4 2 2 4 4 6 5] and B = [2 4 5].
We want to remove the elements of B from A in order, and there are several ways of doing that:

A = 4 2 2 4 4 6 5
B =   2   4     5
 -&gt; 4   2   4 6

A = 4 2 2 4 4 6 5
B =     2 4     5
 -&gt; 4 2     4 6

A = 4 2 2 4 4 6 5
B =   2     4   5
 -&gt; 4   2 4   6

A = 4 2 2 4 4 6 5
B =     2   4   5
 -&gt; 4 2   4   6


In all cases, the remaining sequence is the same, [4 2 4 6].
If this happens, we say that B is uniquely removable from A.

The task

Your inputs are two sequences of nonnegative integers, A and B, where B is guaranteed to be a subsequence of A.
The inputs may be equal, and they may be empty.
You can take them in any order you want, in any reasonable format.

Your output shall be a truthy value if B is uniquely removable from A, and a falsy value if not.

Rules and scoring

You can write a full program or a function.
The lowest byte count wins.

Test cases

[] [] -&gt; True
[0,3] [] -&gt; True
[1,0,1] [1] -&gt; False
[0,2] [0,2] -&gt; True
[2,2,1,1,2,2,2] [2,1] -&gt; True
[4,2,2,4,4,6,5] [4,5] -&gt; False
[10,5,10,10,5,10] [10,5,10] -&gt; False
[4,2,2,4,4,6,5] [2,4,5] -&gt; True
[1,1,1,0,0,0,1,1,1,0] [1,0,1,1] -&gt; True
[0,1,0,0,0,0,1,1,0,1] [1,0,1,1] -&gt; False
[0,4,0,0,4,1,4,2,2] [0,0,0,1,4] -&gt; True
[0,2,2,25,0,2,2,26,0,0,2] [2,0,0,0,2] -&gt; True
[1,1,1,3,2,1,3,2,2,3,3,2] [1,1,2,3,2] -&gt; False
[0,3,2,0,1,3,2,0,0,0,3,2] [0,1,2,0,3] -&gt; False
[5,7,2,7,7,1,7,7,5,2,7,7,5,2,2,7,5] [2,7,5,7,7,2] -&gt; False
[5,4,0,5,4,5,4,1,0,4,2,1,1,2,4,4,0,2,2,1] [4,0,1,1,2,1] -&gt; False
[0,1,4,0,1,4,0,1,5,1,4,4,2,0,0,1,1,1,2,4] [0,1,0,0,2,0,1,4] -&gt; True
Haskell, 90 84 bytes

a%[]=[a]
(t:z)%x@(s:y)=[a|a&lt;-z%y,t==s]++[t:s|s&lt;-z%x]
_%_=[]
((all=&lt;&lt;(==).head).).(%)


Construct the list of all possible subtracted sequences nondeterministically and checks whether they are all equal.

Usage: 

*Main&gt; mapM_(\(a,b)-&gt;let r=(((all=&lt;&lt;(==).head).).(%)) a b in putStrLn$concat[show a," ",show b," -&gt; ",show r]) [([],[]), ([0,3],[]), ([1,0,1],[1]), ([0,2],[0,2]), ([2,2,1,1,2,2,2],[2,1]), ([4,2,2,4,4,6,5],[4,5]), ([10,5,10,10,5,10],[10,5,10]), ([4,2,2,4,4,6,5],[2,4,5]), ([1,1,1,0,0,0,1,1,1,0],[1,0,1,1]), ([0,1,0,0,0,0,1,1,0,1],[1,0,1,1]), ([0,4,0,0,4,1,4,2,2],[0,0,0,1,4]), ([0,2,2,25,0,2,2,26,0,0,2],[2,0,0,0,2]), ([1,1,1,3,2,1,3,2,2,3,3,2],[1,1,2,3,2]), ([0,3,2,0,1,3,2,0,0,0,3,2],[0,1,2,0,3]), ([5,7,2,7,7,1,7,7,5,2,7,7,5,2,2,7,5],[2,7,5,7,7,2]), ([5,4,0,5,4,5,4,1,0,4,2,1,1,2,4,4,0,2,2,1],[4,0,1,1,2,1]), ([0,1,4,0,1,4,0,1,5,1,4,4,2,0,0,1,1,1,2,4],[0,1,0,0,2,0,1,4])]
[] [] -&gt; True
[0,3] [] -&gt; True
[1,0,1] [1] -&gt; False
[0,2] [0,2] -&gt; True
[2,2,1,1,2,2,2] [2,1] -&gt; True
[4,2,2,4,4,6,5] [4,5] -&gt; False
[10,5,10,10,5,10] [10,5,10] -&gt; False
[4,2,2,4,4,6,5] [2,4,5] -&gt; True
[1,1,1,0,0,0,1,1,1,0] [1,0,1,1] -&gt; True
[0,1,0,0,0,0,1,1,0,1] [1,0,1,1] -&gt; False
[0,4,0,0,4,1,4,2,2] [0,0,0,1,4] -&gt; True
[0,2,2,25,0,2,2,26,0,0,2] [2,0,0,0,2] -&gt; True
[1,1,1,3,2,1,3,2,2,3,3,2] [1,1,2,3,2] -&gt; False
[0,3,2,0,1,3,2,0,0,0,3,2] [0,1,2,0,3] -&gt; False
[5,7,2,7,7,1,7,7,5,2,7,7,5,2,2,7,5] [2,7,5,7,7,2] -&gt; False
[5,4,0,5,4,5,4,1,0,4,2,1,1,2,4,4,0,2,2,1] [4,0,1,1,2,1] -&gt; False
[0,1,4,0,1,4,0,1,5,1,4,4,2,0,0,1,1,1,2,4] [0,1,0,0,2,0,1,4] -&gt; True


Thanks to @Zgarb for saving 6 bytes!