src/HOL/ex/Argo_Examples.thy
author wenzelm
Fri, 23 Nov 2018 16:43:11 +0100
changeset 69334 6b49700da068
parent 69015 5eb493b51bf6
child 74735 0580ae467ecb
permissions -rw-r--r--
clarified font_domain: strict excludes e.g. space character;

(*  Title:      HOL/ex/Argo_Examples.thy
    Author:     Sascha Boehme
*)

section \<open>Argo\<close>

theory Argo_Examples
imports Complex_Main
begin

text \<open>
  This theory is intended to showcase and test different features of the \<open>argo\<close> proof method.

  The \<open>argo\<close> proof method can be applied to propositional problems, problems involving equality
  reasoning and problems of linear real arithmetic.

  The \<open>argo\<close> proof method provides two options. To specify an upper limit of the proof methods
  run time in seconds, use the option \<open>argo_timeout\<close>. To specify the amount of output, use the
  option \<open>argo_trace\<close> with value \<open>none\<close> for no tracing output, value \<open>basic\<close> for viewing the
  underlying propositions and some timings, and value \<open>full\<close> for additionally inspecting the
  proof replay steps.
\<close>

declare[[argo_trace = full]]

subsection \<open>Propositional logic\<close>

notepad
begin
  have "True" by argo
next
  have "~False" by argo
next
  fix P :: bool
  assume "False"
  then have "P" by argo
next
  fix P :: bool
  assume "~True"
  then have "P" by argo
next
  fix P :: bool
  assume "P"
  then have "P" by argo
next
  fix P :: bool
  assume "~~P"
  then have "P" by argo
next
  fix P Q R :: bool
  assume "P & Q & R"
  then have "R & P & Q" by argo
next
  fix P Q R :: bool
  assume "P & (Q & True & R) & (Q & P) & True"
  then have "R & P & Q" by argo
next
  fix P Q1 Q2 Q3 Q4 Q5 :: bool
  assume "Q1 & (Q2 & P & Q3) & (Q4 & ~P & Q5)"
  then have "~True" by argo
next
  fix P Q1 Q2 Q3  :: bool
  assume "(Q1 & False) & Q2 & Q3"
  then have "P::bool" by argo
next
  fix P Q R :: bool
  assume "P | Q | R"
  then have "R | P | Q" by argo
next
  fix P Q R :: bool
  assume "P | (Q | False | R) | (Q | P) | False"
  then have "R | P | Q" by argo
next
  fix P Q1 Q2 Q3 Q4 :: bool
  have "(Q1 & P & Q2) --> False | (Q3 | (Q4 | P) | False)" by argo
next
  fix Q1 Q2 Q3 Q4 :: bool
  have "Q1 | (Q2 | True | Q3) | Q4" by argo
next
  fix P Q R :: bool
  assume "(P & Q) | (P & ~Q) | (P & R) | (P & ~R)"
  then have "P" by argo
next
  fix P :: bool
  assume "P = True"
  then have "P" by argo
next
  fix P :: bool
  assume "False = P"
  then have "~P" by argo
next
  fix P Q :: bool
  assume "P = (~P)"
  then have "Q" by argo
next
  fix P :: bool
  have "(~P) = (~P)" by argo
next
  fix P Q :: bool
  assume "P" and "~Q"
  then have "P = (~Q)" by argo
next
  fix P Q :: bool
  assume "((P::bool) = Q) | (Q = P)"
  then have "(P --> Q) & (Q --> P)" by argo
next
  fix P Q :: bool
  assume "(P::bool) = Q"
  then have "Q = P" by argo
next
  fix P Q R :: bool
  assume "if P then Q else R"
  then have "Q | R" by argo
next
  fix P Q :: bool
  assume "P | Q"
     and "P | ~Q"
     and "~P | Q"
     and "~P | ~Q"
  then have "False" by argo
next
  fix P Q R :: bool
  assume "P | Q | R"
     and "P | Q | ~R"
     and "P | ~Q | R"
     and "P | ~Q | ~R"
     and "~P | Q | R"
     and "~P | Q | ~R"
     and "~P | ~Q | R"
     and "~P | ~Q | ~R"
  then have "False" by argo
next
  fix a b c d e f g h i j k l m n p q :: bool
  assume "(a & b | c & d) & (e & f | g & h) | (i & j | k & l) & (m & n | p & q)"
  then have "(a & b | c & d) & (e & f | g & h) | (i & j | k & l) & (m & n | p & q)" by argo
next
  fix P :: bool
  have "P=P=P=P=P=P=P=P=P=P" by argo
next
  fix a b c d e f p q x :: bool
  assume "a | b | c | d"
     and "e | f | (a & d)"
     and "~(a | (c & ~c)) | b"
     and "~(b & (x | ~x)) | c"
     and "~(d | False) | c"
     and "~(c | (~p & (p | (q & ~q))))"
  then have "False" by argo
next
  have "(True & True & True) = True" by argo
next
  have "(False | False | False) = False" by argo
end


subsection \<open>Equality, congruence and predicates\<close>

notepad
begin
  fix t :: "'a"
  have "t = t" by argo
next
  fix t u :: "'a"
  assume "t = u"
  then have "u = t" by argo
next
  fix s t u :: "'a"
  assume "s = t" and "t = u"
  then have "s = u" by argo
next
  fix s t u v :: "'a"
  assume "s = t" and "t = u" and "u = v" and "u = s"
  then have "s = v" by argo
next
  fix s t u v w :: "'a"
  assume "s = t" and "t = u" and "s = v" and "v = w"
  then have "w = u" by argo
next
  fix s t u a b c :: "'a"
  assume "s = t" and "t = u" and "a = b" and "b = c"
  then have "s = a --> c = u" by argo
next
  fix a b c d :: "'a"
  assume "(a = b & b = c) | (a = d & d = c)"
  then have "a = c" by argo
next
  fix a b1 b2 b3 b4 c d :: "'a"
  assume "(a = b1 & ((b1 = b2 & b2 = b3) | (b1 = b4 & b4 = b3)) & b3 = c) | (a = d & d = c)"
  then have "a = c" by argo
next
  fix a b :: "'a"
  have "(if True then a else b) = a" by argo
next
  fix a b :: "'a"
  have "(if False then a else b) = b" by argo
next
  fix a b :: "'a"
  have "(if \<not>True then a else b) = b" by argo
next
  fix a b :: "'a"
  have "(if \<not>False then a else b) = a" by argo
next
  fix P :: "bool"
  fix a :: "'a"
  have "(if P then a else a) = a" by argo
next
  fix P :: "bool"
  fix a b c :: "'a"
  assume "P" and "a = c"
  then have "(if P then a else b) = c" by argo
next
  fix P :: "bool"
  fix a b c :: "'a"
  assume "~P" and "b = c"
  then have "(if P then a else b) = c" by argo
next
  fix P Q :: "bool"
  fix a b c d :: "'a"
  assume "P" and "Q" and "a = d"
  then have "(if P then (if Q then a else b) else c) = d" by argo
next
  fix a b c :: "'a"
  assume "a \<noteq> b" and "b = c"
  then have "a \<noteq> c" by argo
next
  fix a b c :: "'a"
  assume "a \<noteq> b" and "a = c"
  then have "c \<noteq> b" by argo
next
  fix a b c d :: "'a"
  assume "a = b" and "c = d" and "b \<noteq> d"
  then have "a \<noteq> c" by argo
next
  fix a b c d :: "'a"
  assume "a = b" and "c = d" and "d \<noteq> b"
  then have "a \<noteq> c" by argo
next
  fix a b c d :: "'a"
  assume "a = b" and "c = d" and "b \<noteq> d"
  then have "c \<noteq> a" by argo
next
  fix a b c d :: "'a"
  assume "a = b" and "c = d" and "d \<noteq> b"
  then have "c \<noteq> a" by argo
next
  fix a b c d e f :: "'a"
  assume "a \<noteq> b" and "b = c" and "b = d" and "d = e" and "a = f"
  then have "f \<noteq> e" by argo
next
  fix a b :: "'a" and f :: "'a \<Rightarrow> 'a"
  assume "a = b"
  then have "f a = f b" by argo
next
  fix a b c :: "'a" and f :: "'a \<Rightarrow> 'a"
  assume "f a = f b" and "b = c"
  then have "f a = f c" by argo
next
  fix a :: "'a" and f :: "'a \<Rightarrow> 'a"
  assume "f a = a"
  then have "f (f a) = a" by argo
next
  fix a b :: "'a" and f g :: "'a \<Rightarrow> 'a"
  assume "a = b"
  then have "g (f a) = g (f b)" by argo
next
  fix a b :: "'a" and f g :: "'a \<Rightarrow> 'a"
  assume "f a = b" and "g b = a"
  then have "f (g (f a)) = b" by argo
next
  fix a b :: "'a" and g :: "'a \<Rightarrow> 'a \<Rightarrow> 'a"
  assume "a = b"
  then have "g a b = g b a" by argo
next
  fix a b :: "'a" and f :: "'a \<Rightarrow> 'a" and g :: "'a \<Rightarrow> 'a \<Rightarrow> 'a"
  assume "f a = b"
  then have "g (f a) b = g b (f a)" by argo
next
  fix a b c d e g h :: "'a" and f :: "'a \<Rightarrow> 'a \<Rightarrow> 'a"
  assume "c = d" and "e = c" and "e = b" and "b = h" and "f g h = d" and "f g d = a"
  then have "a = b" by argo
next
  fix a b :: "'a" and P :: "'a \<Rightarrow> bool"
  assume "P a" and "a = b"
  then have "P b" by argo
next
  fix a b :: "'a" and P :: "'a \<Rightarrow> bool"
  assume "~ P a" and "a = b"
  then have "~ P b" by argo
next
  fix a b c d :: "'a" and P :: "'a \<Rightarrow> 'a \<Rightarrow> bool"
  assume "P a b" and "a = c" and "b = d"
  then have "P c d" by argo
next
  fix a b c d :: "'a" and P :: "'a \<Rightarrow> 'a \<Rightarrow> bool"
  assume "~ P a b" and "a = c" and "b = d"
  then have "~ P c d" by argo
end


subsection \<open>Linear real arithmetic\<close>

subsubsection \<open>Negation and subtraction\<close>

notepad
begin
  fix a b :: real
  have
    "-a = -1 * a"
    "-(-a) = a"
    "a - b = a + -1 * b"
    "a - (-b) = a + b"
    by argo+
end


subsubsection \<open>Multiplication\<close>

notepad
begin
  fix a b c d :: real
  have
    "(2::real) * 3 = 6"
    "0 * a = 0"
    "a * 0 = 0"
    "1 * a = a"
    "a * 1 = a"
    "2 * a = a * 2"
    "2 * a * 3 = 6 * a"
    "2 * a * 3 * 5 = 30 * a"
    "2 * (a * (3 * 5)) = 30 * a"
    "a * 0 * b = 0"
    "a * (0 * b) = 0"
    "a * b = b * a"
    "a * b * a = b * a * a"
    "a * (b * c) = (a * b) * c"
    "a * (b * (c * d)) = ((a * b) * c) * d"
    "a * (b * (c * d)) = ((d * c) * b) * a"
    "a * (b + c + d) = a * b + a * c + a * d"
    "(a + b + c) * d = a * d + b * d + c * d"
    by argo+
end


subsubsection \<open>Division\<close>

notepad
begin
  fix a b c d :: real
  have
    "(6::real) / 2 = 3"
    "a / 0 = a / 0"
    "a / 0 <= a / 0"
    "~(a / 0 < a / 0)"
    "0 / a = 0"
    "a / 1 = a"
    "a / 3 = 1/3 * a"
    "6 * a / 2 = 3 * a"
    "(6 * a) / 2 = 3 * a"
    "a / ((5 * b) / 2) = 2/5 * a / b"
    "a / (5 * (b / 2)) = 2/5 * a / b"
    "(a / 5) * (b / 2) = 1/10 * a * b"
    "a / (3 * b) = 1/3 * a / b"
    "(a + b) / 5 = 1/5 * a + 1/5 * b"
    "a / (5 * 1/5) = a"
    "a * (b / c) = (b * a) / c"
    "(a / b) * c = (c * a) / b"
    "(a / b) / (c / d) = (a * d) / (c * b)"
    "1 / (a * b) = 1 / (b * a)"
    "a / (3 * b) = 1 / 3 * a / b"
    "(a + b + c) / d = a / d + b / d + c / d"
    by argo+
end


subsubsection \<open>Addition\<close>

notepad
begin
  fix a b c d :: real
  have
    "a + b = b + a"
    "a + b + c = c + b + a"
    "a + b + c + d = d + c + b + a"
    "a + (b + (c + d)) = ((a + b) + c) + d"
    "(5::real) + -3 = 2"
    "(3::real) + 5 + -1 = 7"
    "2 + a = a + 2"
    "a + b + a = b + 2 * a"
    "-1 + a + -1 + 2 + b + 5/3 + b + 1/3 + 5 * b + 2/3 = 8/3 + a + 7 * b"
    "1 + b + b + 5 * b + 3 * a + 7 + a + 2 = 10 + 4 * a + 7 * b"
    by argo+
end


subsubsection \<open>Minimum and maximum\<close>

notepad
begin
  fix a b :: real
  have
    "min (3::real) 5 = 3"
    "min (5::real) 3 = 3"
    "min (3::real) (-5) = -5"
    "min (-5::real) 3 = -5"
    "min a a = a"
    "a \<le> b \<longrightarrow> min a b = a"
    "a > b \<longrightarrow> min a b = b"
    "min a b \<le> a"
    "min a b \<le> b"
    "min a b = min b a"
    by argo+
next
  fix a b :: real
  have
    "max (3::real) 5 = 5"
    "max (5::real) 3 = 5"
    "max (3::real) (-5) = 3"
    "max (-5::real) 3 = 3"
    "max a a = a"
    "a \<le> b \<longrightarrow> max a b = b"
    "a > b \<longrightarrow> max a b = a"
    "a \<le> max a b"
    "b \<le> max a b"
    "max a b = max b a"
    by argo+
next
  fix a b :: real
  have
    "min a b \<le> max a b"
    "min a b + max a b = a + b"
    "a < b \<longrightarrow> min a b < max a b"
    by argo+
end


subsubsection \<open>Absolute value\<close>

notepad
begin
  fix a :: real
  have
    "abs (3::real) = 3"
    "abs (-3::real) = 3"
    "0 \<le> abs a"
    "a \<le> abs a"
    "a \<ge> 0 \<longrightarrow> abs a = a"
    "a < 0 \<longrightarrow> abs a = -a"
    "abs (abs a) = abs a"
    by argo+
end


subsubsection \<open>Equality\<close>

notepad
begin
  fix a b c d :: real
  have
    "(3::real) = 3"
    "~((3::real) = 4)"
    "~((4::real) = 3)"
    "3 * a = 5 --> a = 5/3"
    "-3 * a = 5 --> -5/3 = a"
    "5 = 3 * a --> 5/3  = a "
    "5 = -3 * a --> a = -5/3"
    "2 + 3 * a = 4 --> a = 2/3"
    "4 = 2 + 3 * a --> 2/3 = a"
    "2 + 3 * a + 5 * b + c = 4 --> 3 * a + 5 * b + c = 2"
    "4 = 2 + 3 * a + 5 * b + c --> 2 = 3 * a + 5 * b + c"
    "-2 * a + b + -3 * c = 7 --> -7 = 2 * a + -1 * b + 3 * c"
    "7 = -2 * a + b + -3 * c --> 2 * a + -1 * b + 3 * c = -7"
    "-2 * a + b + -3 * c + 4 * d = 7 --> -7 = 2 * a + -1 * b + 3 * c + -4 * d"
    "7 = -2 * a + b + -3 * c + 4 * d --> 2 * a + -1 * b + 3 * c + -4 * d = -7"
    "a + 3 * b = 5 * c + b --> a + 2 * b + -5 * c = 0"
    by argo+
end


subsubsection \<open>Less-equal\<close>

notepad
begin
  fix a b c d :: real
  have
    "(3::real) <= 3"
    "(3::real) <= 4"
    "~((4::real) <= 3)"
    "3 * a <= 5 --> a <= 5/3"
    "-3 * a <= 5 --> -5/3 <= a"
    "5 <= 3 * a --> 5/3  <= a "
    "5 <= -3 * a --> a <= -5/3"
    "2 + 3 * a <= 4 --> a <= 2/3"
    "4 <= 2 + 3 * a --> 2/3 <= a"
    "2 + 3 * a + 5 * b + c <= 4 --> 3 * a + 5 * b + c <= 2"
    "4 <= 2 + 3 * a + 5 * b + c --> 2 <= 3 * a + 5 * b + c"
    "-2 * a + b + -3 * c <= 7 --> -7 <= 2 * a + -1 * b + 3 * c"
    "7 <= -2 * a + b + -3 * c --> 2 * a + -1 * b + 3 * c <= -7"
    "-2 * a + b + -3 * c + 4 * d <= 7 --> -7 <= 2 * a + -1 * b + 3 * c + -4 * d"
    "7 <= -2 * a + b + -3 * c + 4 * d --> 2 * a + -1 * b + 3 * c + -4 * d <= -7"
    "a + 3 * b <= 5 * c + b --> a + 2 * b + -5 * c <= 0"
    by argo+
end

subsubsection \<open>Less\<close>

notepad
begin
  fix a b c d :: real
  have
    "(3::real) < 4"
    "~((3::real) < 3)"
    "~((4::real) < 3)"
    "3 * a < 5 --> a < 5/3"
    "-3 * a < 5 --> -5/3 < a"
    "5 < 3 * a --> 5/3  < a "
    "5 < -3 * a --> a < -5/3"
    "2 + 3 * a < 4 --> a < 2/3"
    "4 < 2 + 3 * a --> 2/3 < a"
    "2 + 3 * a + 5 * b + c < 4 --> 3 * a + 5 * b + c < 2"
    "4 < 2 + 3 * a + 5 * b + c --> 2 < 3 * a + 5 * b + c"
    "-2 * a + b + -3 * c < 7 --> -7 < 2 * a + -1 * b + 3 * c"
    "7 < -2 * a + b + -3 * c --> 2 * a + -1 * b + 3 * c < -7"
    "-2 * a + b + -3 * c + 4 * d < 7 --> -7 < 2 * a + -1 * b + 3 * c + -4 * d"
    "7 < -2 * a + b + -3 * c + 4 * d --> 2 * a + -1 * b + 3 * c + -4 * d < -7"
    "a + 3 * b < 5 * c + b --> a + 2 * b + -5 * c < 0"
    by argo+
end


subsubsection \<open>Other examples\<close>

notepad
begin
  fix a b :: real
  have "f (a + b) = f (b + a)" by argo
next
  have
    "(0::real) < 1"
    "(47::real) + 11 < 8 * 15"
    by argo+
next
  fix a :: real
  assume "a < 3"
  then have "a < 5" "a <= 5" "~(5 < a)" "~(5 <= a)" by argo+
next
  fix a :: real
  assume "a <= 3"
  then have "a < 5" "a <= 5" "~(5 < a)" "~(5 <= a)" by argo+
next
  fix a :: real
  assume "~(3 < a)"
  then have "a < 5" "a <= 5" "~(5 < a)" "~(5 <= a)" by argo+
next
  fix a :: real
  assume "~(3 <= a)"
  then have "a < 5" "a <= 5" "~(5 < a)" "~(5 <= a)" by argo+
next
  fix a :: real
  have "a < 3 | a = 3 | a > 3" by argo
next
  fix a b :: real
  assume "0 < a" and "a < b"
  then have "0 < b" by argo
next
  fix a b :: real
  assume "0 < a" and "a \<le> b"
  then have "0 \<le> b" by argo
next
  fix a b :: real
  assume "0 \<le> a" and "a < b"
  then have "0 \<le> b" by argo
next
  fix a b :: real
  assume "0 \<le> a" and "a \<le> b"
  then have "0 \<le> b" by argo
next
  fix a b c :: real
  assume "2 \<le> a" and "3 \<le> b" and "c \<le> 5"
  then have "-2 * a + -3 * b + 5 * c < 13" by argo
next
  fix a b c :: real
  assume "2 \<le> a" and "3 \<le> b" and "c \<le> 5"
  then have "-2 * a + -3 * b + 5 * c \<le> 12" by argo
next
  fix a b :: real
  assume "a = 2" and "b = 3"
  then have "a + b > 5 \<or> a < b" by argo
next
  fix a b c :: real
  assume "5 < b + c" and "a + c < 0" and "a > 0"
  then have "b > 0" by argo
next
  fix a b c :: real
  assume "a + b < 7" and "5 < b + c" and "a + c < 0" and "a > 0"
  then have "0 < b \<and> b < 7" by argo
next
  fix a b c :: real
  assume "a < b" and "b < c" and "c < a"
  then have "False" by argo
next
  fix a b :: real
  assume "a - 5 > b"
  then have "b < a" by argo
next
  fix a b :: real
  have "(a - b) - a = (a - a) - b" by argo
next
  fix n m n' m' :: real
  have "
    (n < m & m < n') | (n < m & m = n') | (n < n' & n' < m) |
    (n = n' & n' < m) | (n = m & m < n') |
    (n' < m & m < n) | (n' < m & m = n) |
    (n' < n & n < m) | (n' = n & n < m) | (n' = m & m < n) |
    (m < n & n < n') | (m < n & n' = n) | (m < n' & n' < n) |
    (m = n & n < n') | (m = n' & n' < n) |
    (n' = m & m = n)"
    by argo
end


subsection \<open>Larger examples\<close>

declare[[argo_trace = basic, argo_timeout = 120]]


text \<open>Translated from TPTP problem library: PUZ015-2.006.dimacs\<close>

lemma assumes 1: "~x0"
  and 2: "~x30"
  and 3: "~x29"
  and 4: "~x59"
  and 5: "x1 | x31 | x0"
  and 6: "x2 | x32 | x1"
  and 7: "x3 | x33 | x2"
  and 8: "x4 | x34 | x3"
  and 9: "x35 | x4"
  and 10: "x5 | x36 | x30"
  and 11: "x6 | x37 | x5 | x31"
  and 12: "x7 | x38 | x6 | x32"
  and 13: "x8 | x39 | x7 | x33"
  and 14: "x9 | x40 | x8 | x34"
  and 15: "x41 | x9 | x35"
  and 16: "x10 | x42 | x36"
  and 17: "x11 | x43 | x10 | x37"
  and 18: "x12 | x44 | x11 | x38"
  and 19: "x13 | x45 | x12 | x39"
  and 20: "x14 | x46 | x13 | x40"
  and 21: "x47 | x14 | x41"
  and 22: "x15 | x48 | x42"
  and 23: "x16 | x49 | x15 | x43"
  and 24: "x17 | x50 | x16 | x44"
  and 25: "x18 | x51 | x17 | x45"
  and 26: "x19 | x52 | x18 | x46"
  and 27: "x53 | x19 | x47"
  and 28: "x20 | x54 | x48"
  and 29: "x21 | x55 | x20 | x49"
  and 30: "x22 | x56 | x21 | x50"
  and 31: "x23 | x57 | x22 | x51"
  and 32: "x24 | x58 | x23 | x52"
  and 33: "x59 | x24 | x53"
  and 34: "x25 | x54"
  and 35: "x26 | x25 | x55"
  and 36: "x27 | x26 | x56"
  and 37: "x28 | x27 | x57"
  and 38: "x29 | x28 | x58"
  and 39: "~x1 | ~x31"
  and 40: "~x1 | ~x0"
  and 41: "~x31 | ~x0"
  and 42: "~x2 | ~x32"
  and 43: "~x2 | ~x1"
  and 44: "~x32 | ~x1"
  and 45: "~x3 | ~x33"
  and 46: "~x3 | ~x2"
  and 47: "~x33 | ~x2"
  and 48: "~x4 | ~x34"
  and 49: "~x4 | ~x3"
  and 50: "~x34 | ~x3"
  and 51: "~x35 | ~x4"
  and 52: "~x5 | ~x36"
  and 53: "~x5 | ~x30"
  and 54: "~x36 | ~x30"
  and 55: "~x6 | ~x37"
  and 56: "~x6 | ~x5"
  and 57: "~x6 | ~x31"
  and 58: "~x37 | ~x5"
  and 59: "~x37 | ~x31"
  and 60: "~x5 | ~x31"
  and 61: "~x7 | ~x38"
  and 62: "~x7 | ~x6"
  and 63: "~x7 | ~x32"
  and 64: "~x38 | ~x6"
  and 65: "~x38 | ~x32"
  and 66: "~x6 | ~x32"
  and 67: "~x8 | ~x39"
  and 68: "~x8 | ~x7"
  and 69: "~x8 | ~x33"
  and 70: "~x39 | ~x7"
  and 71: "~x39 | ~x33"
  and 72: "~x7 | ~x33"
  and 73: "~x9 | ~x40"
  and 74: "~x9 | ~x8"
  and 75: "~x9 | ~x34"
  and 76: "~x40 | ~x8"
  and 77: "~x40 | ~x34"
  and 78: "~x8 | ~x34"
  and 79: "~x41 | ~x9"
  and 80: "~x41 | ~x35"
  and 81: "~x9 | ~x35"
  and 82: "~x10 | ~x42"
  and 83: "~x10 | ~x36"
  and 84: "~x42 | ~x36"
  and 85: "~x11 | ~x43"
  and 86: "~x11 | ~x10"
  and 87: "~x11 | ~x37"
  and 88: "~x43 | ~x10"
  and 89: "~x43 | ~x37"
  and 90: "~x10 | ~x37"
  and 91: "~x12 | ~x44"
  and 92: "~x12 | ~x11"
  and 93: "~x12 | ~x38"
  and 94: "~x44 | ~x11"
  and 95: "~x44 | ~x38"
  and 96: "~x11 | ~x38"
  and 97: "~x13 | ~x45"
  and 98: "~x13 | ~x12"
  and 99: "~x13 | ~x39"
  and 100: "~x45 | ~x12"
  and 101: "~x45 | ~x39"
  and 102: "~x12 | ~x39"
  and 103: "~x14 | ~x46"
  and 104: "~x14 | ~x13"
  and 105: "~x14 | ~x40"
  and 106: "~x46 | ~x13"
  and 107: "~x46 | ~x40"
  and 108: "~x13 | ~x40"
  and 109: "~x47 | ~x14"
  and 110: "~x47 | ~x41"
  and 111: "~x14 | ~x41"
  and 112: "~x15 | ~x48"
  and 113: "~x15 | ~x42"
  and 114: "~x48 | ~x42"
  and 115: "~x16 | ~x49"
  and 116: "~x16 | ~x15"
  and 117: "~x16 | ~x43"
  and 118: "~x49 | ~x15"
  and 119: "~x49 | ~x43"
  and 120: "~x15 | ~x43"
  and 121: "~x17 | ~x50"
  and 122: "~x17 | ~x16"
  and 123: "~x17 | ~x44"
  and 124: "~x50 | ~x16"
  and 125: "~x50 | ~x44"
  and 126: "~x16 | ~x44"
  and 127: "~x18 | ~x51"
  and 128: "~x18 | ~x17"
  and 129: "~x18 | ~x45"
  and 130: "~x51 | ~x17"
  and 131: "~x51 | ~x45"
  and 132: "~x17 | ~x45"
  and 133: "~x19 | ~x52"
  and 134: "~x19 | ~x18"
  and 135: "~x19 | ~x46"
  and 136: "~x52 | ~x18"
  and 137: "~x52 | ~x46"
  and 138: "~x18 | ~x46"
  and 139: "~x53 | ~x19"
  and 140: "~x53 | ~x47"
  and 141: "~x19 | ~x47"
  and 142: "~x20 | ~x54"
  and 143: "~x20 | ~x48"
  and 144: "~x54 | ~x48"
  and 145: "~x21 | ~x55"
  and 146: "~x21 | ~x20"
  and 147: "~x21 | ~x49"
  and 148: "~x55 | ~x20"
  and 149: "~x55 | ~x49"
  and 150: "~x20 | ~x49"
  and 151: "~x22 | ~x56"
  and 152: "~x22 | ~x21"
  and 153: "~x22 | ~x50"
  and 154: "~x56 | ~x21"
  and 155: "~x56 | ~x50"
  and 156: "~x21 | ~x50"
  and 157: "~x23 | ~x57"
  and 158: "~x23 | ~x22"
  and 159: "~x23 | ~x51"
  and 160: "~x57 | ~x22"
  and 161: "~x57 | ~x51"
  and 162: "~x22 | ~x51"
  and 163: "~x24 | ~x58"
  and 164: "~x24 | ~x23"
  and 165: "~x24 | ~x52"
  and 166: "~x58 | ~x23"
  and 167: "~x58 | ~x52"
  and 168: "~x23 | ~x52"
  and 169: "~x59 | ~x24"
  and 170: "~x59 | ~x53"
  and 171: "~x24 | ~x53"
  and 172: "~x25 | ~x54"
  and 173: "~x26 | ~x25"
  and 174: "~x26 | ~x55"
  and 175: "~x25 | ~x55"
  and 176: "~x27 | ~x26"
  and 177: "~x27 | ~x56"
  and 178: "~x26 | ~x56"
  and 179: "~x28 | ~x27"
  and 180: "~x28 | ~x57"
  and 181: "~x27 | ~x57"
  and 182: "~x29 | ~x28"
  and 183: "~x29 | ~x58"
  and 184: "~x28 | ~x58"
  shows "False"
    using assms
    by argo


text \<open>Translated from TPTP problem library: MSC007-1.008.dimacs\<close>

lemma assumes 1: "x0 | x1 | x2 | x3 | x4 | x5 | x6"
  and 2: "x7 | x8 | x9 | x10 | x11 | x12 | x13"
  and 3: "x14 | x15 | x16 | x17 | x18 | x19 | x20"
  and 4: "x21 | x22 | x23 | x24 | x25 | x26 | x27"
  and 5: "x28 | x29 | x30 | x31 | x32 | x33 | x34"
  and 6: "x35 | x36 | x37 | x38 | x39 | x40 | x41"
  and 7: "x42 | x43 | x44 | x45 | x46 | x47 | x48"
  and 8: "x49 | x50 | x51 | x52 | x53 | x54 | x55"
  and 9: "~x0 | ~x7"
  and 10: "~x0 | ~x14"
  and 11: "~x0 | ~x21"
  and 12: "~x0 | ~x28"
  and 13: "~x0 | ~x35"
  and 14: "~x0 | ~x42"
  and 15: "~x0 | ~x49"
  and 16: "~x7 | ~x14"
  and 17: "~x7 | ~x21"
  and 18: "~x7 | ~x28"
  and 19: "~x7 | ~x35"
  and 20: "~x7 | ~x42"
  and 21: "~x7 | ~x49"
  and 22: "~x14 | ~x21"
  and 23: "~x14 | ~x28"
  and 24: "~x14 | ~x35"
  and 25: "~x14 | ~x42"
  and 26: "~x14 | ~x49"
  and 27: "~x21 | ~x28"
  and 28: "~x21 | ~x35"
  and 29: "~x21 | ~x42"
  and 30: "~x21 | ~x49"
  and 31: "~x28 | ~x35"
  and 32: "~x28 | ~x42"
  and 33: "~x28 | ~x49"
  and 34: "~x35 | ~x42"
  and 35: "~x35 | ~x49"
  and 36: "~x42 | ~x49"
  and 37: "~x1 | ~x8"
  and 38: "~x1 | ~x15"
  and 39: "~x1 | ~x22"
  and 40: "~x1 | ~x29"
  and 41: "~x1 | ~x36"
  and 42: "~x1 | ~x43"
  and 43: "~x1 | ~x50"
  and 44: "~x8 | ~x15"
  and 45: "~x8 | ~x22"
  and 46: "~x8 | ~x29"
  and 47: "~x8 | ~x36"
  and 48: "~x8 | ~x43"
  and 49: "~x8 | ~x50"
  and 50: "~x15 | ~x22"
  and 51: "~x15 | ~x29"
  and 52: "~x15 | ~x36"
  and 53: "~x15 | ~x43"
  and 54: "~x15 | ~x50"
  and 55: "~x22 | ~x29"
  and 56: "~x22 | ~x36"
  and 57: "~x22 | ~x43"
  and 58: "~x22 | ~x50"
  and 59: "~x29 | ~x36"
  and 60: "~x29 | ~x43"
  and 61: "~x29 | ~x50"
  and 62: "~x36 | ~x43"
  and 63: "~x36 | ~x50"
  and 64: "~x43 | ~x50"
  and 65: "~x2 | ~x9"
  and 66: "~x2 | ~x16"
  and 67: "~x2 | ~x23"
  and 68: "~x2 | ~x30"
  and 69: "~x2 | ~x37"
  and 70: "~x2 | ~x44"
  and 71: "~x2 | ~x51"
  and 72: "~x9 | ~x16"
  and 73: "~x9 | ~x23"
  and 74: "~x9 | ~x30"
  and 75: "~x9 | ~x37"
  and 76: "~x9 | ~x44"
  and 77: "~x9 | ~x51"
  and 78: "~x16 | ~x23"
  and 79: "~x16 | ~x30"
  and 80: "~x16 | ~x37"
  and 81: "~x16 | ~x44"
  and 82: "~x16 | ~x51"
  and 83: "~x23 | ~x30"
  and 84: "~x23 | ~x37"
  and 85: "~x23 | ~x44"
  and 86: "~x23 | ~x51"
  and 87: "~x30 | ~x37"
  and 88: "~x30 | ~x44"
  and 89: "~x30 | ~x51"
  and 90: "~x37 | ~x44"
  and 91: "~x37 | ~x51"
  and 92: "~x44 | ~x51"
  and 93: "~x3 | ~x10"
  and 94: "~x3 | ~x17"
  and 95: "~x3 | ~x24"
  and 96: "~x3 | ~x31"
  and 97: "~x3 | ~x38"
  and 98: "~x3 | ~x45"
  and 99: "~x3 | ~x52"
  and 100: "~x10 | ~x17"
  and 101: "~x10 | ~x24"
  and 102: "~x10 | ~x31"
  and 103: "~x10 | ~x38"
  and 104: "~x10 | ~x45"
  and 105: "~x10 | ~x52"
  and 106: "~x17 | ~x24"
  and 107: "~x17 | ~x31"
  and 108: "~x17 | ~x38"
  and 109: "~x17 | ~x45"
  and 110: "~x17 | ~x52"
  and 111: "~x24 | ~x31"
  and 112: "~x24 | ~x38"
  and 113: "~x24 | ~x45"
  and 114: "~x24 | ~x52"
  and 115: "~x31 | ~x38"
  and 116: "~x31 | ~x45"
  and 117: "~x31 | ~x52"
  and 118: "~x38 | ~x45"
  and 119: "~x38 | ~x52"
  and 120: "~x45 | ~x52"
  and 121: "~x4 | ~x11"
  and 122: "~x4 | ~x18"
  and 123: "~x4 | ~x25"
  and 124: "~x4 | ~x32"
  and 125: "~x4 | ~x39"
  and 126: "~x4 | ~x46"
  and 127: "~x4 | ~x53"
  and 128: "~x11 | ~x18"
  and 129: "~x11 | ~x25"
  and 130: "~x11 | ~x32"
  and 131: "~x11 | ~x39"
  and 132: "~x11 | ~x46"
  and 133: "~x11 | ~x53"
  and 134: "~x18 | ~x25"
  and 135: "~x18 | ~x32"
  and 136: "~x18 | ~x39"
  and 137: "~x18 | ~x46"
  and 138: "~x18 | ~x53"
  and 139: "~x25 | ~x32"
  and 140: "~x25 | ~x39"
  and 141: "~x25 | ~x46"
  and 142: "~x25 | ~x53"
  and 143: "~x32 | ~x39"
  and 144: "~x32 | ~x46"
  and 145: "~x32 | ~x53"
  and 146: "~x39 | ~x46"
  and 147: "~x39 | ~x53"
  and 148: "~x46 | ~x53"
  and 149: "~x5 | ~x12"
  and 150: "~x5 | ~x19"
  and 151: "~x5 | ~x26"
  and 152: "~x5 | ~x33"
  and 153: "~x5 | ~x40"
  and 154: "~x5 | ~x47"
  and 155: "~x5 | ~x54"
  and 156: "~x12 | ~x19"
  and 157: "~x12 | ~x26"
  and 158: "~x12 | ~x33"
  and 159: "~x12 | ~x40"
  and 160: "~x12 | ~x47"
  and 161: "~x12 | ~x54"
  and 162: "~x19 | ~x26"
  and 163: "~x19 | ~x33"
  and 164: "~x19 | ~x40"
  and 165: "~x19 | ~x47"
  and 166: "~x19 | ~x54"
  and 167: "~x26 | ~x33"
  and 168: "~x26 | ~x40"
  and 169: "~x26 | ~x47"
  and 170: "~x26 | ~x54"
  and 171: "~x33 | ~x40"
  and 172: "~x33 | ~x47"
  and 173: "~x33 | ~x54"
  and 174: "~x40 | ~x47"
  and 175: "~x40 | ~x54"
  and 176: "~x47 | ~x54"
  and 177: "~x6 | ~x13"
  and 178: "~x6 | ~x20"
  and 179: "~x6 | ~x27"
  and 180: "~x6 | ~x34"
  and 181: "~x6 | ~x41"
  and 182: "~x6 | ~x48"
  and 183: "~x6 | ~x55"
  and 184: "~x13 | ~x20"
  and 185: "~x13 | ~x27"
  and 186: "~x13 | ~x34"
  and 187: "~x13 | ~x41"
  and 188: "~x13 | ~x48"
  and 189: "~x13 | ~x55"
  and 190: "~x20 | ~x27"
  and 191: "~x20 | ~x34"
  and 192: "~x20 | ~x41"
  and 193: "~x20 | ~x48"
  and 194: "~x20 | ~x55"
  and 195: "~x27 | ~x34"
  and 196: "~x27 | ~x41"
  and 197: "~x27 | ~x48"
  and 198: "~x27 | ~x55"
  and 199: "~x34 | ~x41"
  and 200: "~x34 | ~x48"
  and 201: "~x34 | ~x55"
  and 202: "~x41 | ~x48"
  and 203: "~x41 | ~x55"
  and 204: "~x48 | ~x55"
  shows "False"
    using assms
    by argo


lemma "0 \<le> (yc::real) \<and>
       0 \<le> yd \<and> 0 \<le> yb \<and> 0 \<le> ya \<Longrightarrow>
       0 \<le> yf \<and>
       0 \<le> xh \<and> 0 \<le> ye \<and> 0 \<le> yg \<Longrightarrow>
       0 \<le> yw \<and> 0 \<le> xs \<and> 0 \<le> yu \<Longrightarrow>
       0 \<le> aea \<and> 0 \<le> aee \<and> 0 \<le> aed \<Longrightarrow>
       0 \<le> zy \<and> 0 \<le> xz \<and> 0 \<le> zw \<Longrightarrow>
       0 \<le> zb \<and>
       0 \<le> za \<and> 0 \<le> yy \<and> 0 \<le> yz \<Longrightarrow>
       0 \<le> zp \<and> 0 \<le> zo \<and> 0 \<le> yq \<Longrightarrow>
       0 \<le> adp \<and> 0 \<le> aeb \<and> 0 \<le> aec \<Longrightarrow>
       0 \<le> acm \<and> 0 \<le> aco \<and> 0 \<le> acn \<Longrightarrow>
       0 \<le> abl \<Longrightarrow>
       0 \<le> zr \<and> 0 \<le> zq \<and> 0 \<le> abh \<Longrightarrow>
       0 \<le> abq \<and> 0 \<le> zd \<and> 0 \<le> abo \<Longrightarrow>
       0 \<le> acd \<and>
       0 \<le> acc \<and> 0 \<le> xi \<and> 0 \<le> acb \<Longrightarrow>
       0 \<le> acp \<and> 0 \<le> acr \<and> 0 \<le> acq \<Longrightarrow>
       0 \<le> xw \<and>
       0 \<le> xr \<and> 0 \<le> xv \<and> 0 \<le> xu \<Longrightarrow>
       0 \<le> zc \<and> 0 \<le> acg \<and> 0 \<le> ach \<Longrightarrow>
       0 \<le> zt \<and> 0 \<le> zs \<and> 0 \<le> xy \<Longrightarrow>
       0 \<le> ady \<and> 0 \<le> adw \<and> 0 \<le> zg \<Longrightarrow>
       0 \<le> abd \<and>
       0 \<le> abc \<and> 0 \<le> yr \<and> 0 \<le> abb \<Longrightarrow>
       0 \<le> adi \<and>
       0 \<le> x \<and> 0 \<le> adh \<and> 0 \<le> xa \<Longrightarrow>
       0 \<le> aak \<and> 0 \<le> aai \<and> 0 \<le> aad \<Longrightarrow>
       0 \<le> aba \<and> 0 \<le> zh \<and> 0 \<le> aay \<Longrightarrow>
       0 \<le> abg \<and> 0 \<le> ys \<and> 0 \<le> abe \<Longrightarrow>
       0 \<le> abs1 \<and>
       0 \<le> yt \<and> 0 \<le> abr \<and> 0 \<le> zu \<Longrightarrow>
       0 \<le> abv \<and>
       0 \<le> zn \<and> 0 \<le> abw \<and> 0 \<le> zm \<Longrightarrow>
       0 \<le> adl \<and> 0 \<le> adn \<Longrightarrow>
       0 \<le> acf \<and> 0 \<le> aca \<Longrightarrow>
       0 \<le> ads \<and> 0 \<le> aaq \<Longrightarrow>
       0 \<le> ada \<Longrightarrow>
       0 \<le> aaf \<and> 0 \<le> aac \<and> 0 \<le> aag \<Longrightarrow>
       0 \<le> aal \<and>
       0 \<le> acu \<and> 0 \<le> acs \<and> 0 \<le> act \<Longrightarrow>
       0 \<le> aas \<and> 0 \<le> xb \<and> 0 \<le> aat \<Longrightarrow>
       0 \<le> zk \<and> 0 \<le> zj \<and> 0 \<le> zi \<Longrightarrow>
       0 \<le> ack \<and>
       0 \<le> acj \<and> 0 \<le> xc \<and> 0 \<le> aci \<Longrightarrow>
       0 \<le> aav \<and> 0 \<le> aah \<and> 0 \<le> xd \<Longrightarrow>
       0 \<le> abt \<and>
       0 \<le> xo \<and> 0 \<le> abu \<and> 0 \<le> xn \<Longrightarrow>
       0 \<le> adc \<and>
       0 \<le> abz \<and> 0 \<le> adc \<and> 0 \<le> abz \<Longrightarrow>
       0 \<le> xt \<and>
       0 \<le> zz \<and> 0 \<le> aab \<and> 0 \<le> aaa \<Longrightarrow>
       0 \<le> adq \<and>
       0 \<le> xl \<and> 0 \<le> adr \<and> 0 \<le> adb \<Longrightarrow>
       0 \<le> zf \<and> 0 \<le> yh \<and> 0 \<le> yi \<Longrightarrow>
       0 \<le> aao \<and> 0 \<le> aam \<and> 0 \<le> xe \<Longrightarrow>
       0 \<le> abk \<and>
       0 \<le> aby \<and> 0 \<le> abj \<and> 0 \<le> abx \<Longrightarrow>
       0 \<le> yp \<Longrightarrow>
       0 \<le> yl \<and> 0 \<le> yj \<and> 0 \<le> ym \<Longrightarrow>
       0 \<le> acw \<Longrightarrow>
       0 \<le> adk \<and>
       0 \<le> adg \<and> 0 \<le> adj \<and> 0 \<le> adf \<Longrightarrow>
       0 \<le> adv \<and> 0 \<le> xf \<and> 0 \<le> adu \<Longrightarrow>
       yc + yd + yb + ya = 1 \<Longrightarrow>
       yf + xh + ye + yg = 1 \<Longrightarrow>
       yw + xs + yu = 1 \<Longrightarrow>
       aea + aee + aed = 1 \<Longrightarrow>
       zy + xz + zw = 1 \<Longrightarrow>
       zb + za + yy + yz = 1 \<Longrightarrow>
       zp + zo + yq = 1 \<Longrightarrow>
       adp + aeb + aec = 1 \<Longrightarrow>
       acm + aco + acn = 1 \<Longrightarrow>
       abl + abl = 1 \<Longrightarrow>
       zr + zq + abh = 1 \<Longrightarrow>
       abq + zd + abo = 1 \<Longrightarrow>
       acd + acc + xi + acb = 1 \<Longrightarrow>
       acp + acr + acq = 1 \<Longrightarrow>
       xw + xr + xv + xu = 1 \<Longrightarrow>
       zc + acg + ach = 1 \<Longrightarrow>
       zt + zs + xy = 1 \<Longrightarrow>
       ady + adw + zg = 1 \<Longrightarrow>
       abd + abc + yr + abb = 1 \<Longrightarrow>
       adi + x + adh + xa = 1 \<Longrightarrow>
       aak + aai + aad = 1 \<Longrightarrow>
       aba + zh + aay = 1 \<Longrightarrow>
       abg + ys + abe = 1 \<Longrightarrow>
       abs1 + yt + abr + zu = 1 \<Longrightarrow>
       abv + zn + abw + zm = 1 \<Longrightarrow>
       adl + adn = 1 \<Longrightarrow>
       acf + aca = 1 \<Longrightarrow>
       ads + aaq = 1 \<Longrightarrow>
       ada + ada = 1 \<Longrightarrow>
       aaf + aac + aag = 1 \<Longrightarrow>
       aal + acu + acs + act = 1 \<Longrightarrow>
       aas + xb + aat = 1 \<Longrightarrow>
       zk + zj + zi = 1 \<Longrightarrow>
       ack + acj + xc + aci = 1 \<Longrightarrow>
       aav + aah + xd = 1 \<Longrightarrow>
       abt + xo + abu + xn = 1 \<Longrightarrow>
       adc + abz + adc + abz = 1 \<Longrightarrow>
       xt + zz + aab + aaa = 1 \<Longrightarrow>
       adq + xl + adr + adb = 1 \<Longrightarrow>
       zf + yh + yi = 1 \<Longrightarrow>
       aao + aam + xe = 1 \<Longrightarrow>
       abk + aby + abj + abx = 1 \<Longrightarrow>
       yp + yp = 1 \<Longrightarrow>
       yl + yj + ym = 1 \<Longrightarrow>
       acw + acw + acw + acw = 1 \<Longrightarrow>
       adk + adg + adj + adf = 1 \<Longrightarrow>
       adv + xf + adu = 1 \<Longrightarrow>
       yd = 0 \<or> yb = 0 \<Longrightarrow>
       xh = 0 \<or> ye = 0 \<Longrightarrow>
       yy = 0 \<or> za = 0 \<Longrightarrow>
       acc = 0 \<or> xi = 0 \<Longrightarrow>
       xv = 0 \<or> xr = 0 \<Longrightarrow>
       yr = 0 \<or> abc = 0 \<Longrightarrow>
       zn = 0 \<or> abw = 0 \<Longrightarrow>
       xo = 0 \<or> abu = 0 \<Longrightarrow>
       xl = 0 \<or> adr = 0 \<Longrightarrow>
       (yr + abd < abl \<or>
        yr + (abd + abb) < 1) \<or>
       yr + abd = abl \<and>
       yr + (abd + abb) = 1 \<Longrightarrow>
       adb + adr < xn + abu \<or>
       adb + adr = xn + abu \<Longrightarrow>
       (abl < abt \<or> abl < abt + xo) \<or>
       abl = abt \<and> abl = abt + xo \<Longrightarrow>
       yd + yc < abc + abd \<or>
       yd + yc = abc + abd \<Longrightarrow>
       aca < abb + yr \<or> aca = abb + yr \<Longrightarrow>
       acb + acc < xu + xv \<or>
       acb + acc = xu + xv \<Longrightarrow>
       (yq < xu + xr \<or>
        yq + zp < xu + (xr + xw)) \<or>
       yq = xu + xr \<and>
       yq + zp = xu + (xr + xw) \<Longrightarrow>
       (zw < xw \<or>
        zw < xw + xv \<or>
        zw + zy < xw + (xv + xu)) \<or>
       zw = xw \<and>
       zw = xw + xv \<and>
       zw + zy = xw + (xv + xu) \<Longrightarrow>
       xs + yw < zs + zt \<or>
       xs + yw = zs + zt \<Longrightarrow>
       aab + xt < ye + yf \<or>
       aab + xt = ye + yf \<Longrightarrow>
       (ya + yb < yg + ye \<or>
        ya + (yb + yc) < yg + (ye + yf)) \<or>
       ya + yb = yg + ye \<and>
       ya + (yb + yc) = yg + (ye + yf) \<Longrightarrow>
       (xu + xv < acb + acc \<or>
        xu + (xv + xw) < acb + (acc + acd)) \<or>
       xu + xv = acb + acc \<and>
       xu + (xv + xw) = acb + (acc + acd) \<Longrightarrow>
       (zs < xz + zy \<or>
        zs + xy < xz + (zy + zw)) \<or>
       zs = xz + zy \<and>
       zs + xy = xz + (zy + zw) \<Longrightarrow>
       (zs + zt < xz + zy \<or>
        zs + (zt + xy) < xz + (zy + zw)) \<or>
       zs + zt = xz + zy \<and>
       zs + (zt + xy) = xz + (zy + zw) \<Longrightarrow>
       yg + ye < ya + yb \<or>
       yg + ye = ya + yb \<Longrightarrow>
       (abd < yc \<or> abd + abc < yc + yd) \<or>
       abd = yc \<and> abd + abc = yc + yd \<Longrightarrow>
       (ye + yf < adr + adq \<or>
        ye + (yf + yg) < adr + (adq + adb)) \<or>
       ye + yf = adr + adq \<and>
       ye + (yf + yg) = adr + (adq + adb) \<Longrightarrow>
       yh + yi < ym + yj \<or>
       yh + yi = ym + yj \<Longrightarrow>
       (abq < yl \<or> abq + abo < yl + ym) \<or>
       abq = yl \<and> abq + abo = yl + ym \<Longrightarrow>
       (yp < zp \<or>
        yp < zp + zo \<or> 1 < zp + (zo + yq)) \<or>
       yp = zp \<and>
       yp = zp + zo \<and> 1 = zp + (zo + yq) \<Longrightarrow>
       (abb + yr < aca \<or>
        abb + (yr + abd) < aca + acf) \<or>
       abb + yr = aca \<and>
       abb + (yr + abd) = aca + acf \<Longrightarrow>
       adw + zg < abe + ys \<or>
       adw + zg = abe + ys \<Longrightarrow>
       zd + abq < ys + abg \<or>
       zd + abq = ys + abg \<Longrightarrow>
       yt + abs1 < aby + abk \<or>
       yt + abs1 = aby + abk \<Longrightarrow>
       (yu < abx \<or>
        yu < abx + aby \<or>
        yu + yw < abx + (aby + abk)) \<or>
       yu = abx \<and>
       yu = abx + aby \<and>
       yu + yw = abx + (aby + abk) \<Longrightarrow>
       aaf < adv \<or> aaf = adv \<Longrightarrow>
       abj + abk < yy + zb \<or>
       abj + abk = yy + zb \<Longrightarrow>
       (abb < yz \<or>
        abb + abc < yz + za \<or>
        abb + (abc + abd) < yz + (za + zb)) \<or>
       abb = yz \<and>
       abb + abc = yz + za \<and>
       abb + (abc + abd) = yz + (za + zb) \<Longrightarrow>
       (acg + zc < zd + abq \<or>
        acg + (zc + ach)
        < zd + (abq + abo)) \<or>
       acg + zc = zd + abq \<and>
       acg + (zc + ach) =
       zd + (abq + abo) \<Longrightarrow>
       zf < acm \<or> zf = acm \<Longrightarrow>
       (zg + ady < acn + acm \<or>
        zg + (ady + adw)
        < acn + (acm + aco)) \<or>
       zg + ady = acn + acm \<and>
       zg + (ady + adw) =
       acn + (acm + aco) \<Longrightarrow>
       aay + zh < zi + zj \<or>
       aay + zh = zi + zj \<Longrightarrow>
       zy < zk \<or> zy = zk \<Longrightarrow>
       (adn < zm + zn \<or>
        adn + adl < zm + (zn + abv)) \<or>
       adn = zm + zn \<and>
       adn + adl = zm + (zn + abv) \<Longrightarrow>
       zo + zp < zs + zt \<or>
       zo + zp = zs + zt \<Longrightarrow>
       zq + zr < zs + zt \<or>
       zq + zr = zs + zt \<Longrightarrow>
       (aai < adi \<or> aai < adi + adh) \<or>
       aai = adi \<and> aai = adi + adh \<Longrightarrow>
       (abr < acj \<or>
        abr + (abs1 + zu)
        < acj + (aci + ack)) \<or>
       abr = acj \<and>
       abr + (abs1 + zu) =
       acj + (aci + ack) \<Longrightarrow>
       (abl < zw \<or> 1 < zw + zy) \<or>
       abl = zw \<and> 1 = zw + zy \<Longrightarrow>
       (zz + aaa < act + acu \<or>
        zz + (aaa + aab)
        < act + (acu + aal)) \<or>
       zz + aaa = act + acu \<and>
       zz + (aaa + aab) =
       act + (acu + aal) \<Longrightarrow>
       (aam < aac \<or> aam + aao < aac + aaf) \<or>
       aam = aac \<and> aam + aao = aac + aaf \<Longrightarrow>
       (aak < aaf \<or> aak + aad < aaf + aag) \<or>
       aak = aaf \<and> aak + aad = aaf + aag \<Longrightarrow>
       (aah < aai \<or> aah + aav < aai + aak) \<or>
       aah = aai \<and> aah + aav = aai + aak \<Longrightarrow>
       act + (acu + aal) < aam + aao \<or>
       act + (acu + aal) = aam + aao \<Longrightarrow>
       (ads < aat \<or> 1 < aat + aas) \<or>
       ads = aat \<and> 1 = aat + aas \<Longrightarrow>
       (aba < aas \<or> aba + aay < aas + aat) \<or>
       aba = aas \<and> aba + aay = aas + aat \<Longrightarrow>
       acm < aav \<or> acm = aav \<Longrightarrow>
       (ada < aay \<or> 1 < aay + aba) \<or>
       ada = aay \<and> 1 = aay + aba \<Longrightarrow>
       abb + (abc + abd) < abe + abg \<or>
       abb + (abc + abd) = abe + abg \<Longrightarrow>
       (abh < abj \<or> abh < abj + abk) \<or>
       abh = abj \<and> abh = abj + abk \<Longrightarrow>
       1 < abo + abq \<or> 1 = abo + abq \<Longrightarrow>
       (acj < abr \<or> acj + aci < abr + abs1) \<or>
       acj = abr \<and> acj + aci = abr + abs1 \<Longrightarrow>
       (abt < abv \<or> abt + abu < abv + abw) \<or>
       abt = abv \<and> abt + abu = abv + abw \<Longrightarrow>
       (abx < adc \<or> abx + aby < adc + abz) \<or>
       abx = adc \<and> abx + aby = adc + abz \<Longrightarrow>
       (acf < acd \<or>
        acf < acd + acc \<or>
        1 < acd + (acc + acb)) \<or>
       acf = acd \<and>
       acf = acd + acc \<and>
       1 = acd + (acc + acb) \<Longrightarrow>
       acc + acd < acf \<or> acc + acd = acf \<Longrightarrow>
       (acg < acq \<or> acg + ach < acq + acr) \<or>
       acg = acq \<and> acg + ach = acq + acr \<Longrightarrow>
       aci + (acj + ack) < acr + acp \<or>
       aci + (acj + ack) = acr + acp \<Longrightarrow>
       (acm < acp \<or>
        acm + acn < acp + acq \<or>
        acm + (acn + aco)
        < acp + (acq + acr)) \<or>
       acm = acp \<and>
       acm + acn = acp + acq \<and>
       acm + (acn + aco) =
       acp + (acq + acr) \<Longrightarrow>
       (acs + act < acw + acw \<or>
        acs + (act + acu)
        < acw + (acw + acw)) \<or>
       acs + act = acw + acw \<and>
       acs + (act + acu) =
       acw + (acw + acw) \<Longrightarrow>
       (ada < adb + adr \<or>
        1 < adb + (adr + adq)) \<or>
       ada = adb + adr \<and>
       1 = adb + (adr + adq) \<Longrightarrow>
       (adc + adc < adf + adg \<or>
        adc + (adc + abz)
        < adf + (adg + adk)) \<or>
       adc + adc = adf + adg \<and>
       adc + (adc + abz) =
       adf + (adg + adk) \<Longrightarrow>
       adh + adi < adj + adk \<or>
       adh + adi = adj + adk \<Longrightarrow>
       (adl < aec \<or> 1 < aec + adp) \<or>
       adl = aec \<and> 1 = aec + adp \<Longrightarrow>
       (adq < ads \<or> adq + adr < ads) \<or>
       adq = ads \<and> adq + adr = ads \<Longrightarrow>
       adu + adv < aed + aea \<or>
       adu + adv = aed + aea \<Longrightarrow>
       (adw < aee \<or> adw + ady < aee + aea) \<or>
       adw = aee \<and> adw + ady = aee + aea \<Longrightarrow>
       (aeb < aed \<or> aeb + aec < aed + aee) \<or>
       aeb = aed \<and> aeb + aec = aed + aee \<Longrightarrow>
       False"
       by argo

end