# Theory Argo_Examples

theory Argo_Examples
imports Complex_Main
```(*  Title:      HOL/ex/Argo_Examples.thy
Author:     Sascha Boehme
*)

section ‹Argo›

theory Argo_Examples
imports Complex_Main
begin

text ‹
This theory is intended to showcase and test different features of the ‹argo› proof method.

The ‹argo› proof method can be applied to propositional problems, problems involving equality
reasoning and problems of linear real arithmetic.

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

declare[[argo_trace = full]]

subsection ‹Propositional logic›

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 ‹Equality, congruence and predicates›

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 ¬True then a else b) = b" by argo
next
fix a b :: "'a"
have "(if ¬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 ≠ b" and "b = c"
then have "a ≠ c" by argo
next
fix a b c :: "'a"
assume "a ≠ b" and "a = c"
then have "c ≠ b" by argo
next
fix a b c d :: "'a"
assume "a = b" and "c = d" and "b ≠ d"
then have "a ≠ c" by argo
next
fix a b c d :: "'a"
assume "a = b" and "c = d" and "d ≠ b"
then have "a ≠ c" by argo
next
fix a b c d :: "'a"
assume "a = b" and "c = d" and "b ≠ d"
then have "c ≠ a" by argo
next
fix a b c d :: "'a"
assume "a = b" and "c = d" and "d ≠ b"
then have "c ≠ a" by argo
next
fix a b c d e f :: "'a"
assume "a ≠ b" and "b = c" and "b = d" and "d = e" and "a = f"
then have "f ≠ e" by argo
next
fix a b :: "'a" and f :: "'a ⇒ 'a"
assume "a = b"
then have "f a = f b" by argo
next
fix a b c :: "'a" and f :: "'a ⇒ 'a"
assume "f a = f b" and "b = c"
then have "f a = f c" by argo
next
fix a :: "'a" and f :: "'a ⇒ 'a"
assume "f a = a"
then have "f (f a) = a" by argo
next
fix a b :: "'a" and f g :: "'a ⇒ 'a"
assume "a = b"
then have "g (f a) = g (f b)" by argo
next
fix a b :: "'a" and f g :: "'a ⇒ '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 ⇒ 'a ⇒ 'a"
assume "a = b"
then have "g a b = g b a" by argo
next
fix a b :: "'a" and f :: "'a ⇒ 'a" and g :: "'a ⇒ 'a ⇒ '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 ⇒ 'a ⇒ '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 ⇒ bool"
assume "P a" and "a = b"
then have "P b" by argo
next
fix a b :: "'a" and P :: "'a ⇒ bool"
assume "~ P a" and "a = b"
then have "~ P b" by argo
next
fix a b c d :: "'a" and P :: "'a ⇒ 'a ⇒ 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 ⇒ 'a ⇒ bool"
assume "~ P a b" and "a = c" and "b = d"
then have "~ P c d" by argo
end

subsection ‹Linear real arithmetic›

subsubsection ‹Negation and subtraction›

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

subsubsection ‹Multiplication›

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 ‹Division›

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

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 ‹Minimum and maximum›

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 ≤ b ⟶ min a b = a"
"a > b ⟶ min a b = b"
"min a b ≤ a"
"min a b ≤ 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 ≤ b ⟶ max a b = b"
"a > b ⟶ max a b = a"
"a ≤ max a b"
"b ≤ max a b"
"max a b = max b a"
by argo+
next
fix a b :: real
have
"min a b ≤ max a b"
"min a b + max a b = a + b"
"a < b ⟶ min a b < max a b"
by argo+
end

subsubsection ‹Absolute value›

begin
fix a :: real
have
"abs (3::real) = 3"
"abs (-3::real) = 3"
"0 ≤ abs a"
"a ≤ abs a"
"a ≥ 0 ⟶ abs a = a"
"a < 0 ⟶ abs a = -a"
"abs (abs a) = abs a"
by argo+
end

subsubsection ‹Equality›

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 ‹Less-equal›

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 ‹Less›

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 ‹Other examples›

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 ≤ b"
then have "0 ≤ b" 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 ≤ b"
then have "0 ≤ b" by argo
next
fix a b c :: real
assume "2 ≤ a" and "3 ≤ b" and "c ≤ 5"
then have "-2 * a + -3 * b + 5 * c < 13" by argo
next
fix a b c :: real
assume "2 ≤ a" and "3 ≤ b" and "c ≤ 5"
then have "-2 * a + -3 * b + 5 * c ≤ 12" by argo
next
fix a b :: real
assume "a = 2" and "b = 3"
then have "a + b > 5 ∨ 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 ∧ 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 ‹Larger examples›

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

text ‹Translated from TPTP problem library: PUZ015-2.006.dimacs›

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 ‹Translated from TPTP problem library: MSC007-1.008.dimacs›

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