[STATEMENT]
lemma separate_aEval :
  assumes "separateAtoms L = (a,b,c,d)"
  shows "(\<forall>l\<in>set L. aEvalUni l x) =
      ((\<forall>(a,b,c)\<in>set a. a*x^2+b*x+c=0) \<and> (\<forall>(a,b,c)\<in>set b. a*x^2+b*x+c<0) \<and>
      (\<forall>(a,b,c)\<in>set c. a*x^2+b*x+c\<le>0) \<and> (\<forall>(a,b,c)\<in>set d. a*x^2+b*x+c\<noteq>0))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>(a, b, c)\<in>set a. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0))
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
separateAtoms L = (a, b, c, d)

goal (1 subgoal):
 1. (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>(a, b, c)\<in>set a. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0))
[PROOF STEP]
proof(induction L arbitrary :a b c d)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>a b c d. separateAtoms [] = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set []. aEvalUni l x) = ((\<forall>(a, b, c)\<in>set a. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0))
 2. \<And>a L aa b c d. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>(a, b, c)\<in>set a. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0)); separateAtoms (a # L) = (aa, b, c, d)\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (a # L). aEvalUni l x) = ((\<forall>(a, b, c)\<in>set aa. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0))
[PROOF STEP]
case Nil
[PROOF STATE]
proof (state)
this:
separateAtoms [] = (a, b, c, d)

goal (2 subgoals):
 1. \<And>a b c d. separateAtoms [] = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set []. aEvalUni l x) = ((\<forall>(a, b, c)\<in>set a. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0))
 2. \<And>a L aa b c d. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>(a, b, c)\<in>set a. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0)); separateAtoms (a # L) = (aa, b, c, d)\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (a # L). aEvalUni l x) = ((\<forall>(a, b, c)\<in>set aa. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
separateAtoms [] = (a, b, c, d)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
separateAtoms [] = (a, b, c, d)

goal (1 subgoal):
 1. (\<forall>l\<in>set []. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set []. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (1 subgoal):
 1. \<And>a L aa b c d. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>(a, b, c)\<in>set a. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0)); separateAtoms (a # L) = (aa, b, c, d)\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (a # L). aEvalUni l x) = ((\<forall>(a, b, c)\<in>set aa. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a L aa b c d. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>(a, b, c)\<in>set a. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0)); separateAtoms (a # L) = (aa, b, c, d)\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (a # L). aEvalUni l x) = ((\<forall>(a, b, c)\<in>set aa. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0))
[PROOF STEP]
case (Cons At L)
[PROOF STATE]
proof (state)
this:
separateAtoms L = (?a, ?b, ?c, ?d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set ?a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set ?b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set ?c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set ?d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. \<And>a L aa b c d. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>(a, b, c)\<in>set a. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0)); separateAtoms (a # L) = (aa, b, c, d)\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (a # L). aEvalUni l x) = ((\<forall>(a, b, c)\<in>set aa. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
separateAtoms L = (?a, ?b, ?c, ?d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set ?a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set ?b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set ?c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set ?d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
separateAtoms (At # L) = (a, b, c, d)
[PROOF STEP]
have Cons1 : "\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow>
    (\<forall>l\<in>set L. aEvalUni l x) =
    ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and>
     (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0)\<and>
     (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and>
     (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))" "
    separateAtoms (At # L) = (a, b,c,d)"
[PROOF STATE]
proof (prove)
using this:
separateAtoms L = (?a, ?b, ?c, ?d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set ?a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set ?b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set ?c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set ?d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. (\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))) &&& separateAtoms (At # L) = (a, b, c, d)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
separateAtoms L = (?a, ?b, ?c, ?d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set ?a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set ?b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set ?c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set ?d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. \<And>a L aa b c d. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>(a, b, c)\<in>set a. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0)); separateAtoms (a # L) = (aa, b, c, d)\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (a # L). aEvalUni l x) = ((\<forall>(a, b, c)\<in>set aa. a * x\<^sup>2 + b * x + c = 0) \<and> (\<forall>(a, b, c)\<in>set b. a * x\<^sup>2 + b * x + c < 0) \<and> (\<forall>(a, b, c)\<in>set c. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set d. a * x\<^sup>2 + b * x + c \<noteq> 0))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
separateAtoms L = (?a, ?b, ?c, ?d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set ?a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set ?b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set ?c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set ?d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
separateAtoms (At # L) = (a, b, c, d)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
separateAtoms L = (?a, ?b, ?c, ?d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set ?a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set ?b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set ?c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set ?d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
proof(cases At)
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>x1. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = LessUni x1\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>x2. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = EqUni x2\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 3. \<And>x3. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = LeqUni x3\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 4. \<And>x4. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = NeqUni x4\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
case (LessUni p)
[PROOF STATE]
proof (state)
this:
At = LessUni p

goal (4 subgoals):
 1. \<And>x1. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = LessUni x1\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>x2. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = EqUni x2\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 3. \<And>x3. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = LeqUni x3\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 4. \<And>x4. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = NeqUni x4\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
proof(cases b)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. b = [] \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>a list. b = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
case Nil
[PROOF STATE]
proof (state)
this:
b = []

goal (2 subgoals):
 1. b = [] \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>a list. b = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
using Cons(2)
[PROOF STATE]
proof (prove)
using this:
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
unfolding LessUni separateAtoms.simps Nil
[PROOF STATE]
proof (prove)
using this:
(let (a, b, c, d) = separateAtoms L in (a, p # b, c, d)) = (a, [], c, d)

goal (1 subgoal):
 1. (\<forall>l\<in>set (LessUni p # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set []. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
apply(cases "separateAtoms L")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b c d. \<lbrakk>(let (a, b, c, d) = separateAtoms L in (a, p # b, c, d)) = (a, [], c, d); separateAtoms L = (a, b, c, d)\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (LessUni p # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set []. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (1 subgoal):
 1. \<And>a list. b = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a list. b = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
case (Cons p' b')
[PROOF STATE]
proof (state)
this:
b = p' # b'

goal (1 subgoal):
 1. \<And>a list. b = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
b = p' # b'
[PROOF STEP]
have p_def : "p' = p"
[PROOF STATE]
proof (prove)
using this:
b = p' # b'

goal (1 subgoal):
 1. p' = p
[PROOF STEP]
using Cons1(2)
[PROOF STATE]
proof (prove)
using this:
b = p' # b'
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. p' = p
[PROOF STEP]
unfolding LessUni separateAtoms.simps
[PROOF STATE]
proof (prove)
using this:
b = p' # b'
(let (a, b, c, d) = separateAtoms L in (a, p # b, c, d)) = (a, b, c, d)

goal (1 subgoal):
 1. p' = p
[PROOF STEP]
apply(cases "separateAtoms L")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b c d. \<lbrakk>b = p' # b'; (let (a, b, c, d) = separateAtoms L in (a, p # b, c, d)) = (a, b, c, d); separateAtoms L = (a, b, c, d)\<rbrakk> \<Longrightarrow> p' = p
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
p' = p

goal (1 subgoal):
 1. \<And>a list. b = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
have h1 :  "separateAtoms L = (a,b',c,d)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. separateAtoms L = (a, b', c, d)
[PROOF STEP]
using Cons Cons1(2)
[PROOF STATE]
proof (prove)
using this:
b = p' # b'
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. separateAtoms L = (a, b', c, d)
[PROOF STEP]
unfolding LessUni separateAtoms.simps
[PROOF STATE]
proof (prove)
using this:
b = p' # b'
(let (a, b, c, d) = separateAtoms L in (a, p # b, c, d)) = (a, b, c, d)

goal (1 subgoal):
 1. separateAtoms L = (a, b', c, d)
[PROOF STEP]
apply(cases "separateAtoms L")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b c d. \<lbrakk>b = p' # b'; (let (a, b, c, d) = separateAtoms L in (a, p # b, c, d)) = (a, b, c, d); separateAtoms L = (a, b, c, d)\<rbrakk> \<Longrightarrow> separateAtoms L = (a, b', c, d)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
separateAtoms L = (a, b', c, d)

goal (1 subgoal):
 1. \<And>a list. b = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
have h2 : "(\<forall>a\<in>set (p # b'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) = (
          (\<forall>a\<in>set (b'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0)\<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>a\<in>set (p # b'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) = ((\<forall>a\<in>set b'. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>a\<in>set (p # b'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) = ((\<forall>a\<in>set b'. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0))

goal (1 subgoal):
 1. \<And>a list. b = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
have h3 : "(\<forall>l\<in>set (LessUni p # L). aEvalUni l x) = ((\<forall>l\<in>set (L). aEvalUni l x)\<and>(case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (LessUni p # L). aEvalUni l x) = ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (LessUni p # L). aEvalUni l x) = ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0))

goal (1 subgoal):
 1. \<And>a list. b = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
unfolding Cons LessUni p_def h2 h3
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0)) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> ((\<forall>(a, b, c)\<in>set b'. a * x\<^sup>2 + b * x + c < 0) \<and> (case p of (a, b, c) \<Rightarrow> a * x\<^sup>2 + b * x + c < 0)) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
using Cons1(1)[OF h1]
[PROOF STATE]
proof (prove)
using this:
(\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b'. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (1 subgoal):
 1. ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0)) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> ((\<forall>(a, b, c)\<in>set b'. a * x\<^sup>2 + b * x + c < 0) \<and> (case p of (a, b, c) \<Rightarrow> a * x\<^sup>2 + b * x + c < 0)) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (3 subgoals):
 1. \<And>x2. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = EqUni x2\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>x3. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = LeqUni x3\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 3. \<And>x4. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = NeqUni x4\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>x2. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = EqUni x2\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>x3. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = LeqUni x3\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 3. \<And>x4. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = NeqUni x4\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
case (EqUni p)
[PROOF STATE]
proof (state)
this:
At = EqUni p

goal (3 subgoals):
 1. \<And>x2. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = EqUni x2\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>x3. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = LeqUni x3\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 3. \<And>x4. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = NeqUni x4\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
proof(cases a)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. a = [] \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>a list. a = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
case Nil
[PROOF STATE]
proof (state)
this:
a = []

goal (2 subgoals):
 1. a = [] \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>a list. a = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
using Cons(2)
[PROOF STATE]
proof (prove)
using this:
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
unfolding EqUni separateAtoms.simps Nil
[PROOF STATE]
proof (prove)
using this:
(let (a, b, c, d) = separateAtoms L in (p # a, b, c, d)) = ([], b, c, d)

goal (1 subgoal):
 1. (\<forall>l\<in>set (EqUni p # L). aEvalUni l x) = ((\<forall>a\<in>set []. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
apply(cases "separateAtoms L")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b c d. \<lbrakk>(let (a, b, c, d) = separateAtoms L in (p # a, b, c, d)) = ([], b, c, d); separateAtoms L = (a, b, c, d)\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (EqUni p # L). aEvalUni l x) = ((\<forall>a\<in>set []. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (1 subgoal):
 1. \<And>a list. a = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a list. a = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
case (Cons p' a')
[PROOF STATE]
proof (state)
this:
a = p' # a'

goal (1 subgoal):
 1. \<And>a list. a = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
a = p' # a'
[PROOF STEP]
have p_def : "p' = p"
[PROOF STATE]
proof (prove)
using this:
a = p' # a'

goal (1 subgoal):
 1. p' = p
[PROOF STEP]
using Cons1(2)
[PROOF STATE]
proof (prove)
using this:
a = p' # a'
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. p' = p
[PROOF STEP]
unfolding EqUni separateAtoms.simps
[PROOF STATE]
proof (prove)
using this:
a = p' # a'
(let (a, b, c, d) = separateAtoms L in (p # a, b, c, d)) = (a, b, c, d)

goal (1 subgoal):
 1. p' = p
[PROOF STEP]
apply(cases "separateAtoms L")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b c d. \<lbrakk>a = p' # a'; (let (a, b, c, d) = separateAtoms L in (p # a, b, c, d)) = (a, b, c, d); separateAtoms L = (a, b, c, d)\<rbrakk> \<Longrightarrow> p' = p
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
p' = p

goal (1 subgoal):
 1. \<And>a list. a = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
have h1 :  "separateAtoms L = (a',b,c,d)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. separateAtoms L = (a', b, c, d)
[PROOF STEP]
using Cons Cons1(2)
[PROOF STATE]
proof (prove)
using this:
a = p' # a'
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. separateAtoms L = (a', b, c, d)
[PROOF STEP]
unfolding EqUni separateAtoms.simps
[PROOF STATE]
proof (prove)
using this:
a = p' # a'
(let (a, b, c, d) = separateAtoms L in (p # a, b, c, d)) = (a, b, c, d)

goal (1 subgoal):
 1. separateAtoms L = (a', b, c, d)
[PROOF STEP]
apply(cases "separateAtoms L")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b c d. \<lbrakk>a = p' # a'; (let (a, b, c, d) = separateAtoms L in (p # a, b, c, d)) = (a, b, c, d); separateAtoms L = (a, b, c, d)\<rbrakk> \<Longrightarrow> separateAtoms L = (a', b, c, d)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
separateAtoms L = (a', b, c, d)

goal (1 subgoal):
 1. \<And>a list. a = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
have h2 : "(\<forall>a\<in>set (p # a'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) = (
          (\<forall>a\<in>set (a'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0)\<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>a\<in>set (p # a'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) = ((\<forall>a\<in>set a'. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>a\<in>set (p # a'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) = ((\<forall>a\<in>set a'. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0))

goal (1 subgoal):
 1. \<And>a list. a = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
have h3 : "(\<forall>l\<in>set (EqUni p # L). aEvalUni l x) = ((\<forall>l\<in>set (L). aEvalUni l x)\<and>(case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (EqUni p # L). aEvalUni l x) = ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (EqUni p # L). aEvalUni l x) = ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0))

goal (1 subgoal):
 1. \<And>a list. a = a # list \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
unfolding Cons EqUni p_def h2 h3
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0)) = (((\<forall>(a, b, c)\<in>set a'. a * x\<^sup>2 + b * x + c = 0) \<and> (case p of (a, b, c) \<Rightarrow> a * x\<^sup>2 + b * x + c = 0)) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
using Cons1(1)[OF h1]
[PROOF STATE]
proof (prove)
using this:
(\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a'. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (1 subgoal):
 1. ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0)) = (((\<forall>(a, b, c)\<in>set a'. a * x\<^sup>2 + b * x + c = 0) \<and> (case p of (a, b, c) \<Rightarrow> a * x\<^sup>2 + b * x + c = 0)) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (2 subgoals):
 1. \<And>x3. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = LeqUni x3\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>x4. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = NeqUni x4\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x3. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = LeqUni x3\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>x4. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = NeqUni x4\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
case (LeqUni p)
[PROOF STATE]
proof (state)
this:
At = LeqUni p

goal (2 subgoals):
 1. \<And>x3. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = LeqUni x3\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>x4. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = NeqUni x4\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
At = LeqUni p
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
At = LeqUni p

goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
proof(cases c)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>At = LeqUni p; c = []\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>a list. \<lbrakk>At = LeqUni p; c = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
case Nil
[PROOF STATE]
proof (state)
this:
c = []

goal (2 subgoals):
 1. \<lbrakk>At = LeqUni p; c = []\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>a list. \<lbrakk>At = LeqUni p; c = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
using Cons(2)
[PROOF STATE]
proof (prove)
using this:
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
unfolding LeqUni separateAtoms.simps Nil
[PROOF STATE]
proof (prove)
using this:
(let (a, b, c, d) = separateAtoms L in (a, b, p # c, d)) = (a, b, [], d)

goal (1 subgoal):
 1. (\<forall>l\<in>set (LeqUni p # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set []. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
apply(cases "separateAtoms L")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b c d. \<lbrakk>(let (a, b, c, d) = separateAtoms L in (a, b, p # c, d)) = (a, b, [], d); separateAtoms L = (a, b, c, d)\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (LeqUni p # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set []. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = LeqUni p; c = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = LeqUni p; c = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
case (Cons p' a')
[PROOF STATE]
proof (state)
this:
c = p' # a'

goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = LeqUni p; c = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
c = p' # a'
[PROOF STEP]
have p_def : "p' = p"
[PROOF STATE]
proof (prove)
using this:
c = p' # a'

goal (1 subgoal):
 1. p' = p
[PROOF STEP]
using Cons1(2)
[PROOF STATE]
proof (prove)
using this:
c = p' # a'
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. p' = p
[PROOF STEP]
unfolding LeqUni separateAtoms.simps
[PROOF STATE]
proof (prove)
using this:
c = p' # a'
(let (a, b, c, d) = separateAtoms L in (a, b, p # c, d)) = (a, b, c, d)

goal (1 subgoal):
 1. p' = p
[PROOF STEP]
apply(cases "separateAtoms L")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b c d. \<lbrakk>c = p' # a'; (let (a, b, c, d) = separateAtoms L in (a, b, p # c, d)) = (a, b, c, d); separateAtoms L = (a, b, c, d)\<rbrakk> \<Longrightarrow> p' = p
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
p' = p

goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = LeqUni p; c = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
have h1 :  "separateAtoms L = (a,b,a',d)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. separateAtoms L = (a, b, a', d)
[PROOF STEP]
using Cons Cons1(2)
[PROOF STATE]
proof (prove)
using this:
c = p' # a'
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. separateAtoms L = (a, b, a', d)
[PROOF STEP]
unfolding LeqUni separateAtoms.simps
[PROOF STATE]
proof (prove)
using this:
c = p' # a'
(let (a, b, c, d) = separateAtoms L in (a, b, p # c, d)) = (a, b, c, d)

goal (1 subgoal):
 1. separateAtoms L = (a, b, a', d)
[PROOF STEP]
apply(cases "separateAtoms L")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b c d. \<lbrakk>c = p' # a'; (let (a, b, c, d) = separateAtoms L in (a, b, p # c, d)) = (a, b, c, d); separateAtoms L = (a, b, c, d)\<rbrakk> \<Longrightarrow> separateAtoms L = (a, b, a', d)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
separateAtoms L = (a, b, a', d)

goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = LeqUni p; c = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
have h2 : "(\<forall>a\<in>set (p # a'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) = (
          (\<forall>a\<in>set (a'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0)\<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>a\<in>set (p # a'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) = ((\<forall>a\<in>set a'. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>a\<in>set (p # a'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) = ((\<forall>a\<in>set a'. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0))

goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = LeqUni p; c = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
have h3 : "(\<forall>l\<in>set (LeqUni p # L). aEvalUni l x) = ((\<forall>l\<in>set (L). aEvalUni l x)\<and>(case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (LeqUni p # L). aEvalUni l x) = ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (LeqUni p # L). aEvalUni l x) = ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0))

goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = LeqUni p; c = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
unfolding Cons LeqUni p_def h2 h3
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0)) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> ((\<forall>(a, b, c)\<in>set a'. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (case p of (a, b, c) \<Rightarrow> a * x\<^sup>2 + b * x + c \<le> 0)) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
using Cons1(1)[OF h1]
[PROOF STATE]
proof (prove)
using this:
(\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set a'. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (1 subgoal):
 1. ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0)) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> ((\<forall>(a, b, c)\<in>set a'. a * x\<^sup>2 + b * x + c \<le> 0) \<and> (case p of (a, b, c) \<Rightarrow> a * x\<^sup>2 + b * x + c \<le> 0)) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (1 subgoal):
 1. \<And>x4. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = NeqUni x4\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x4. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = NeqUni x4\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
case (NeqUni p)
[PROOF STATE]
proof (state)
this:
At = NeqUni p

goal (1 subgoal):
 1. \<And>x4. \<lbrakk>\<And>a b c d. separateAtoms L = (a, b, c, d) \<Longrightarrow> (\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)); separateAtoms (At # L) = (a, b, c, d); At = NeqUni x4\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
At = NeqUni p
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
At = NeqUni p

goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
proof(cases d)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>At = NeqUni p; d = []\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>a list. \<lbrakk>At = NeqUni p; d = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
case Nil
[PROOF STATE]
proof (state)
this:
d = []

goal (2 subgoals):
 1. \<lbrakk>At = NeqUni p; d = []\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
 2. \<And>a list. \<lbrakk>At = NeqUni p; d = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
using Cons(2)
[PROOF STATE]
proof (prove)
using this:
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
unfolding NeqUni separateAtoms.simps Nil
[PROOF STATE]
proof (prove)
using this:
(let (a, b, c, d) = separateAtoms L in (a, b, c, p # d)) = (a, b, c, [])

goal (1 subgoal):
 1. (\<forall>l\<in>set (NeqUni p # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set []. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
apply(cases "separateAtoms L")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b c d. \<lbrakk>(let (a, b, c, d) = separateAtoms L in (a, b, c, p # d)) = (a, b, c, []); separateAtoms L = (a, b, c, d)\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (NeqUni p # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set []. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = NeqUni p; d = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = NeqUni p; d = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
case (Cons p' a')
[PROOF STATE]
proof (state)
this:
d = p' # a'

goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = NeqUni p; d = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
d = p' # a'
[PROOF STEP]
have p_def : "p' = p"
[PROOF STATE]
proof (prove)
using this:
d = p' # a'

goal (1 subgoal):
 1. p' = p
[PROOF STEP]
using Cons1(2)
[PROOF STATE]
proof (prove)
using this:
d = p' # a'
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. p' = p
[PROOF STEP]
unfolding NeqUni separateAtoms.simps
[PROOF STATE]
proof (prove)
using this:
d = p' # a'
(let (a, b, c, d) = separateAtoms L in (a, b, c, p # d)) = (a, b, c, d)

goal (1 subgoal):
 1. p' = p
[PROOF STEP]
apply(cases "separateAtoms L")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b c d. \<lbrakk>d = p' # a'; (let (a, b, c, d) = separateAtoms L in (a, b, c, p # d)) = (a, b, c, d); separateAtoms L = (a, b, c, d)\<rbrakk> \<Longrightarrow> p' = p
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
p' = p

goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = NeqUni p; d = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
have h1 :  "separateAtoms L = (a,b,c,a')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. separateAtoms L = (a, b, c, a')
[PROOF STEP]
using Cons Cons1(2)
[PROOF STATE]
proof (prove)
using this:
d = p' # a'
separateAtoms (At # L) = (a, b, c, d)

goal (1 subgoal):
 1. separateAtoms L = (a, b, c, a')
[PROOF STEP]
unfolding NeqUni separateAtoms.simps
[PROOF STATE]
proof (prove)
using this:
d = p' # a'
(let (a, b, c, d) = separateAtoms L in (a, b, c, p # d)) = (a, b, c, d)

goal (1 subgoal):
 1. separateAtoms L = (a, b, c, a')
[PROOF STEP]
apply(cases "separateAtoms L")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b c d. \<lbrakk>d = p' # a'; (let (a, b, c, d) = separateAtoms L in (a, b, c, p # d)) = (a, b, c, d); separateAtoms L = (a, b, c, d)\<rbrakk> \<Longrightarrow> separateAtoms L = (a, b, c, a')
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
separateAtoms L = (a, b, c, a')

goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = NeqUni p; d = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
have h2 : "(\<forall>a\<in>set (p # a'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0) = (
          (\<forall>a\<in>set (a'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)\<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>a\<in>set (p # a'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0) = ((\<forall>a\<in>set a'. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>a\<in>set (p # a'). case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0) = ((\<forall>a\<in>set a'. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = NeqUni p; d = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
have h3 : "(\<forall>l\<in>set (NeqUni p # L). aEvalUni l x) = ((\<forall>l\<in>set (L). aEvalUni l x)\<and>(case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (NeqUni p # L). aEvalUni l x) = ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (NeqUni p # L). aEvalUni l x) = ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (1 subgoal):
 1. \<And>a list. \<lbrakk>At = NeqUni p; d = a # list\<rbrakk> \<Longrightarrow> (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))
[PROOF STEP]
unfolding Cons NeqUni p_def h2 h3
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set a'. a * x\<^sup>2 + b * x + c \<noteq> 0) \<and> (case p of (a, b, c) \<Rightarrow> a * x\<^sup>2 + b * x + c \<noteq> 0))
[PROOF STEP]
using Cons1(1)[OF h1]
[PROOF STATE]
proof (prove)
using this:
(\<forall>l\<in>set L. aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set a'. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal (1 subgoal):
 1. ((\<forall>l\<in>set L. aEvalUni l x) \<and> (case p of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0)) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>(a, b, c)\<in>set a'. a * x\<^sup>2 + b * x + c \<noteq> 0) \<and> (case p of (a, b, c) \<Rightarrow> a * x\<^sup>2 + b * x + c \<noteq> 0))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(\<forall>l\<in>set (At # L). aEvalUni l x) = ((\<forall>a\<in>set a. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c = 0) \<and> (\<forall>a\<in>set b. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c < 0) \<and> (\<forall>a\<in>set c. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<le> 0) \<and> (\<forall>a\<in>set d. case a of (a, ba, c) \<Rightarrow> a * x\<^sup>2 + ba * x + c \<noteq> 0))

goal:
No subgoals!
[PROOF STEP]
qed