Suppose we have the goal:
  ~(l:(*)list = []) ?- (LENGTH l) > 0
 
then we can get rid of the universal quantifier from the
inbuilt list theorem list_CASES:
   list_CASES = !l. (l = []) \/ (?t h. l = CONS h t)
 
and then use FULL_STRUCT_CASES_TAC. This amounts to applying the
following tactic:
   FULL_STRUCT_CASES_TAC (SPEC_ALL list_CASES)
 
which results in the following two subgoals:
   ~(CONS h t = []) ?- (LENGTH(CONS h t)) > 0
   ~([] = []) ?- (LENGTH[]) > 0
 
Note that this is a rather simple case, since there are no
constraints, and therefore the resulting subgoals have no extra assumptions.