Introduction

Below is an html presentation of a formal development in Megalodon (1.12 or later) that includes proofs of 12 of the 100 theorems from the Formalizing 100 Theorems webpage. The foundation is higher-order Tarski-Grothendieck set theory, so the first part of the development is listing the primitives and axioms. After that the first 10 theorems lead up to a proof of excluded middle, so that we can freely use classical logic.

After some basic infrastructure the natural numbers are defined as finite ordinals. This is enough to prove the first of the 100 theorems:

The next 4 of the 100 theorems require injections, bijections, atleastp (when a set has at least the cardinality of another) and equipotence (when a set has the same cardinality as another). We also need the notions of finite (equipotent to a natural number) and infinite (not finite). In addition, we use an axiom of infinity (for the only time in the development) to define a set ω of natural numbers, which in turn allows us to define the set of prime numbers.

The next 3 of the 100 theorems require integers. Instead of simply defining integers, we construct Conway's surreal numbers as ordinal length sequences indicating left and right moves. We construct the linear order of these numbers and define basic operations: (unary) minus, addition and multiplication. Ordinals are nonnegative and are surreal numbers always moving to the right. The nonpositive counterpart of ordinals are surreal numbers always moving to the left. Zero, as the only zero-length sequence, is both nonnegative and nonpositive. The set of integers is the set of finite ordinals closed under minus. The integers are closed under surreal addition and surreal multiplication.


Primitives and Axioms

Primitive. The name Eps_i is a term of type (setprop)set.
Axiom. (Eps_i_ax) We take the following as an axiom:
∀P : setprop, ∀x : set, P xP (Eps_i P)
Definition. We define True to be ∀p : prop, pp of type prop.
Definition. We define False to be ∀p : prop, p of type prop.
Definition. We define not to be λA : propAFalse of type propprop.
Notation. We use ¬ as a prefix operator with priority 700 corresponding to applying term not.
Definition. We define and to be λA B : prop∀p : prop, (ABp)p of type proppropprop.
Notation. We use as an infix operator with priority 780 and which associates to the left corresponding to applying term and.
Definition. We define or to be λA B : prop∀p : prop, (Ap)(Bp)p of type proppropprop.
Notation. We use as an infix operator with priority 785 and which associates to the left corresponding to applying term or.
Definition. We define iff to be λA B : propand (AB) (BA) of type proppropprop.
Notation. We use as an infix operator with priority 805 and no associativity corresponding to applying term iff.
Beginning of Section Eq
Variable A : SType
Definition. We define eq to be λx y : A∀Q : AAprop, Q x yQ y x of type AAprop.
Definition. We define neq to be λx y : A¬ eq x y of type AAprop.
End of Section Eq
Notation. We use = as an infix operator with priority 502 and no associativity corresponding to applying term eq.
Notation. We use as an infix operator with priority 502 and no associativity corresponding to applying term neq.
Beginning of Section FE
Variable A B : SType
Axiom. (func_ext) We take the following as an axiom:
∀f g : AB, (∀x : A, f x = g x)f = g
End of Section FE
Beginning of Section Ex
Variable A : SType
Definition. We define ex to be λQ : Aprop∀P : prop, (∀x : A, Q xP)P of type (Aprop)prop.
End of Section Ex
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using ex.
Axiom. (prop_ext) We take the following as an axiom:
∀p q : prop, iff p qp = q
Primitive. The name In is a term of type setsetprop.
Notation. We use as an infix operator with priority 500 and no associativity corresponding to applying term In. Furthermore, we may write xA, B to mean x : set, xAB.
Definition. We define Subq to be λA B ⇒ xA, x B of type setsetprop.
Notation. We use as an infix operator with priority 500 and no associativity corresponding to applying term Subq. Furthermore, we may write xA, B to mean x : set, xAB.
Axiom. (set_ext) We take the following as an axiom:
∀X Y : set, X YY XX = Y
Axiom. (In_ind) We take the following as an axiom:
∀P : setprop, (∀X : set, (xX, P x)P X)∀X : set, P X
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using ex and handling ∈ or ⊆ ascriptions using and.
Primitive. The name Empty is a term of type set.
Axiom. (EmptyAx) We take the following as an axiom:
¬ x : set, x Empty
Primitive. The name is a term of type setset.
Axiom. (UnionEq) We take the following as an axiom:
∀X x, x X Y, x Y Y X
Primitive. The name 𝒫 is a term of type setset.
Axiom. (PowerEq) We take the following as an axiom:
∀X Y : set, Y 𝒫 X Y X
Primitive. The name Repl is a term of type set(setset)set.
Notation. {B| xA} is notation for Repl Ax . B).
Axiom. (ReplEq) We take the following as an axiom:
∀A : set, ∀F : setset, ∀y : set, y {F x|xA} xA, y = F x
Definition. We define TransSet to be λU : setxU, x U of type setprop.
Definition. We define Union_closed to be λU : set∀X : set, X U X U of type setprop.
Definition. We define Power_closed to be λU : set∀X : set, X U𝒫 X U of type setprop.
Definition. We define Repl_closed to be λU : set∀X : set, X U∀F : setset, (∀x : set, x XF x U){F x|xX} U of type setprop.
Definition. We define ZF_closed to be λU : setUnion_closed U Power_closed U Repl_closed U of type setprop.
Primitive. The name UnivOf is a term of type setset.
Axiom. (UnivOf_In) We take the following as an axiom:
∀N : set, N UnivOf N
Axiom. (UnivOf_TransSet) We take the following as an axiom:
∀N : set, TransSet (UnivOf N)
Axiom. (UnivOf_ZF_closed) We take the following as an axiom:
∀N : set, ZF_closed (UnivOf N)
Axiom. (UnivOf_Min) We take the following as an axiom:
∀N U : set, N UTransSet UZF_closed UUnivOf N U

First Theorems Up To Excluded Middle

Theorem. (andI) The following is provable:
∀A B : prop, ABA B
Proof:
An exact proof term for the current goal is (λA B a b P H ⇒ H a b).
Theorem. (orIL) The following is provable:
∀A B : prop, AA B
Proof:
An exact proof term for the current goal is (λA B a P H1 H2 ⇒ H1 a).
Theorem. (orIR) The following is provable:
∀A B : prop, BA B
Proof:
An exact proof term for the current goal is (λA B b P H1 H2 ⇒ H2 b).
Theorem. (iffI) The following is provable:
∀A B : prop, (AB)(BA)(A B)
Proof:
An exact proof term for the current goal is (λA B ⇒ andI (AB) (BA)).
Theorem. (pred_ext) The following is provable:
∀P Q : setprop, (∀x, P x Q x)P = Q
Proof:
Let P and Q be given.
Assume H1.
Apply func_ext set prop to the current goal.
Let x be given.
Apply prop_ext to the current goal.
We will prove P x Q x.
An exact proof term for the current goal is H1 x.
Definition. We define nIn to be λx X ⇒ ¬ In x X of type setsetprop.
Notation. We use as an infix operator with priority 502 and no associativity corresponding to applying term nIn.
Theorem. (EmptyE) The following is provable:
∀x : set, x Empty
Proof:
Let x be given.
Assume H.
Apply EmptyAx to the current goal.
We use x to witness the existential quantifier.
An exact proof term for the current goal is H.
Theorem. (PowerI) The following is provable:
∀X Y : set, Y XY 𝒫 X
Proof:
Let X and Y be given.
Apply PowerEq X Y to the current goal.
An exact proof term for the current goal is (λ_ H ⇒ H).
Theorem. (Subq_Empty) The following is provable:
∀X : set, Empty X
Proof:
An exact proof term for the current goal is (λ(X x : set)(H : x Empty) ⇒ EmptyE x H (x X)).
Theorem. (Empty_In_Power) The following is provable:
∀X : set, Empty 𝒫 X
Proof:
An exact proof term for the current goal is (λX : setPowerI X Empty (Subq_Empty X)).
Theorem. (xm) The following is provable:
∀P : prop, P ¬ P
Proof:
Let P of type prop be given.
Set p1 to be the term λx : setx = Empty P.
Set p2 to be the term λx : setx Empty P.
We prove the intermediate claim L1: p1 Empty.
We will prove (Empty = Empty P).
Apply orIL to the current goal.
An exact proof term for the current goal is (λq H ⇒ H).
We prove the intermediate claim L2: (Eps_i p1) = Empty P.
An exact proof term for the current goal is (Eps_i_ax p1 Empty L1).
We prove the intermediate claim L3: p2 (𝒫 Empty).
We will prove ¬ (𝒫 Empty = Empty) P.
Apply orIL to the current goal.
Assume H1: 𝒫 Empty = Empty.
Apply EmptyE Empty to the current goal.
We will prove Empty Empty.
rewrite the current goal using H1 (from right to left) at position 2.
Apply Empty_In_Power to the current goal.
We prove the intermediate claim L4: Eps_i p2 Empty P.
An exact proof term for the current goal is (Eps_i_ax p2 (𝒫 Empty) L3).
Apply L2 to the current goal.
Assume H1: Eps_i p1 = Empty.
Apply L4 to the current goal.
Assume H2: Eps_i p2 Empty.
We will prove P ¬ P.
Apply orIR to the current goal.
We will prove ¬ P.
Assume H3: P.
We prove the intermediate claim L5: p1 = p2.
Apply pred_ext to the current goal.
Let x be given.
Apply iffI to the current goal.
Assume H4.
We will prove (¬ (x = Empty) P).
Apply orIR to the current goal.
We will prove P.
An exact proof term for the current goal is H3.
Assume H4.
We will prove (x = Empty P).
Apply orIR to the current goal.
We will prove P.
An exact proof term for the current goal is H3.
Apply H2 to the current goal.
rewrite the current goal using L5 (from right to left).
An exact proof term for the current goal is H1.
Assume H2: P.
We will prove P ¬ P.
Apply orIL to the current goal.
We will prove P.
An exact proof term for the current goal is H2.
Assume H1: P.
We will prove P ¬ P.
Apply orIL to the current goal.
We will prove P.
An exact proof term for the current goal is H1.

The Rest of the Development

Theorem. (FalseE) The following is provable:
False∀p : prop, p
Proof:
An exact proof term for the current goal is (λH ⇒ H).
Theorem. (andEL) The following is provable:
∀A B : prop, A BA
Proof:
An exact proof term for the current goal is (λA B H ⇒ H A (λa b ⇒ a)).
Theorem. (andER) The following is provable:
∀A B : prop, A BB
Proof:
An exact proof term for the current goal is (λA B H ⇒ H B (λa b ⇒ b)).
Beginning of Section PropN
Variable P1 P2 P3 : prop
Theorem. (and3I) The following is provable:
P1P2P3P1 P2 P3
Proof:
An exact proof term for the current goal is (λH1 H2 H3 ⇒ andI (P1 P2) P3 (andI P1 P2 H1 H2) H3).
Theorem. (and3E) The following is provable:
P1 P2 P3(∀p : prop, (P1P2P3p)p)
Proof:
An exact proof term for the current goal is (λu p H ⇒ u p (λu u3 ⇒ u p (λu1 u2 ⇒ H u1 u2 u3))).
Theorem. (or3I1) The following is provable:
P1P1 P2 P3
Proof:
An exact proof term for the current goal is (λu ⇒ orIL (P1 P2) P3 (orIL P1 P2 u)).
Theorem. (or3I2) The following is provable:
P2P1 P2 P3
Proof:
An exact proof term for the current goal is (λu ⇒ orIL (P1 P2) P3 (orIR P1 P2 u)).
Theorem. (or3I3) The following is provable:
P3P1 P2 P3
Proof:
An exact proof term for the current goal is (orIR (P1 P2) P3).
Theorem. (or3E) The following is provable:
P1 P2 P3(∀p : prop, (P1p)(P2p)(P3p)p)
Proof:
An exact proof term for the current goal is (λu p H1 H2 H3 ⇒ u p (λu ⇒ u p H1 H2) H3).
Variable P4 : prop
Theorem. (and4I) The following is provable:
P1P2P3P4P1 P2 P3 P4
Proof:
An exact proof term for the current goal is (λH1 H2 H3 H4 ⇒ andI (P1 P2 P3) P4 (and3I H1 H2 H3) H4).
Variable P5 : prop
Theorem. (and5I) The following is provable:
P1P2P3P4P5P1 P2 P3 P4 P5
Proof:
An exact proof term for the current goal is (λH1 H2 H3 H4 H5 ⇒ andI (P1 P2 P3 P4) P5 (and4I H1 H2 H3 H4) H5).
Variable P6 : prop
Theorem. (and6I) The following is provable:
P1P2P3P4P5P6P1 P2 P3 P4 P5 P6
Proof:
An exact proof term for the current goal is (λH1 H2 H3 H4 H5 H6 ⇒ andI (P1 P2 P3 P4 P5) P6 (and5I H1 H2 H3 H4 H5) H6).
Variable P7 : prop
Theorem. (and7I) The following is provable:
P1P2P3P4P5P6P7P1 P2 P3 P4 P5 P6 P7
Proof:
An exact proof term for the current goal is (λH1 H2 H3 H4 H5 H6 H7 ⇒ andI (P1 P2 P3 P4 P5 P6) P7 (and6I H1 H2 H3 H4 H5 H6) H7).
End of Section PropN
Theorem. (not_or_and_demorgan) The following is provable:
∀A B : prop, ¬ (A B)¬ A ¬ B
Proof:
Let A and B be given.
Assume u: ¬ (A B).
Apply andI to the current goal.
We will prove ¬ A.
Assume a: A.
An exact proof term for the current goal is (u (orIL A B a)).
We will prove ¬ B.
Assume b: B.
An exact proof term for the current goal is (u (orIR A B b)).
Theorem. (not_ex_all_demorgan_i) The following is provable:
∀P : setprop, (¬ x, P x)∀x, ¬ P x
Proof:
Let P be given.
Assume H1.
Let x be given.
Assume H2.
Apply H1 to the current goal.
We use x to witness the existential quantifier.
An exact proof term for the current goal is H2.
Theorem. (iffEL) The following is provable:
∀A B : prop, (A B)AB
Proof:
An exact proof term for the current goal is (λA B ⇒ andEL (AB) (BA)).
Theorem. (iffER) The following is provable:
∀A B : prop, (A B)BA
Proof:
An exact proof term for the current goal is (λA B ⇒ andER (AB) (BA)).
Theorem. (iff_refl) The following is provable:
∀A : prop, A A
Proof:
An exact proof term for the current goal is (λA : propandI (AA) (AA) (λH : AH) (λH : AH)).
Theorem. (iff_sym) The following is provable:
∀A B : prop, (A B)(B A)
Proof:
Let A and B be given.
Assume H1: (AB) (BA).
Apply H1 to the current goal.
Assume H2: AB.
Assume H3: BA.
An exact proof term for the current goal is iffI B A H3 H2.
Theorem. (iff_trans) The following is provable:
∀A B C : prop, (A B)(B C)(A C)
Proof:
Let A, B and C be given.
Assume H1: A B.
Assume H2: B C.
Apply H1 to the current goal.
Assume H3: AB.
Assume H4: BA.
Apply H2 to the current goal.
Assume H5: BC.
Assume H6: CB.
An exact proof term for the current goal is (iffI A C (λH ⇒ H5 (H3 H)) (λH ⇒ H4 (H6 H))).
Theorem. (eq_i_tra) The following is provable:
∀x y z, x = yy = zx = z
Proof:
Let x, y and z be given.
Assume H1 H2.
rewrite the current goal using H2 (from right to left).
An exact proof term for the current goal is H1.
Theorem. (neq_i_sym) The following is provable:
∀x y, x yy x
Proof:
Let x and y be given.
Assume H1 H2.
Apply H1 to the current goal.
Use symmetry.
An exact proof term for the current goal is H2.
Theorem. (Eps_i_ex) The following is provable:
∀P : setprop, (x, P x)P (Eps_i P)
Proof:
Let P be given.
Assume H1.
Apply H1 to the current goal.
Let x be given.
Assume H2.
An exact proof term for the current goal is Eps_i_ax P x H2.
Theorem. (prop_ext_2) The following is provable:
∀p q : prop, (pq)(qp)p = q
Proof:
Let p and q be given.
Assume H1 H2.
Apply prop_ext to the current goal.
Apply iffI to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
Theorem. (Subq_ref) The following is provable:
∀X : set, X X
Proof:
An exact proof term for the current goal is (λ(X x : set)(H : x X) ⇒ H).
Theorem. (Subq_tra) The following is provable:
∀X Y Z : set, X YY ZX Z
Proof:
An exact proof term for the current goal is (λ(X Y Z : set)(H1 : X Y)(H2 : Y Z)(x : set)(H : x X) ⇒ (H2 x (H1 x H))).
Theorem. (Empty_Subq_eq) The following is provable:
∀X : set, X EmptyX = Empty
Proof:
Let X be given.
Assume H1: X Empty.
Apply set_ext to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is (Subq_Empty X).
Theorem. (Empty_eq) The following is provable:
∀X : set, (∀x, x X)X = Empty
Proof:
Let X be given.
Assume H1: ∀x, x X.
Apply Empty_Subq_eq to the current goal.
Let x be given.
Assume H2: x X.
We will prove False.
An exact proof term for the current goal is (H1 x H2).
Theorem. (UnionI) The following is provable:
∀X x Y : set, x YY Xx X
Proof:
Let X, x and Y be given.
Assume H1: x Y.
Assume H2: Y X.
Apply UnionEq X x to the current goal.
Assume _ H3.
Apply H3 to the current goal.
We will prove Y : set, x Y Y X.
We use Y to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
Theorem. (UnionE) The following is provable:
∀X x : set, x XY : set, x Y Y X
Proof:
An exact proof term for the current goal is (λX x : setiffEL (x X) (Y : set, x Y Y X) (UnionEq X x)).
Theorem. (UnionE_impred) The following is provable:
∀X x : set, x X∀p : prop, (∀Y : set, x YY Xp)p
Proof:
Let X and x be given.
Assume H1.
Let p be given.
Assume Hp.
Apply UnionE X x H1 to the current goal.
Let x be given.
Assume H2.
Apply H2 to the current goal.
An exact proof term for the current goal is Hp x.
Theorem. (PowerE) The following is provable:
∀X Y : set, Y 𝒫 XY X
Proof:
Let X and Y be given.
Apply PowerEq X Y to the current goal.
An exact proof term for the current goal is (λH _ ⇒ H).
Theorem. (Self_In_Power) The following is provable:
∀X : set, X 𝒫 X
Proof:
An exact proof term for the current goal is (λX : setPowerI X X (Subq_ref X)).
Theorem. (dneg) The following is provable:
∀P : prop, ¬ ¬ PP
Proof:
Let P be given.
Assume H1.
Apply xm P to the current goal.
An exact proof term for the current goal is (λH ⇒ H).
Assume H2: ¬ P.
We will prove False.
An exact proof term for the current goal is H1 H2.
Theorem. (not_all_ex_demorgan_i) The following is provable:
∀P : setprop, ¬ (∀x, P x)x, ¬ P x
Proof:
Let P be given.
Assume u: ¬ ∀x, P x.
Apply dneg to the current goal.
Assume v: ¬ x, ¬ P x.
Apply u to the current goal.
Let x be given.
Apply dneg to the current goal.
Assume w: ¬ P x.
An exact proof term for the current goal is (not_ex_all_demorgan_i (λx ⇒ ¬ P x) v x w).
Theorem. (eq_or_nand) The following is provable:
or = (λx y : prop¬ (¬ x ¬ y))
Proof:
Apply func_ext prop (propprop) to the current goal.
Let x be given.
Apply func_ext prop prop to the current goal.
Let y be given.
Apply prop_ext_2 to the current goal.
Assume H1: x y.
Assume H2: ¬ x ¬ y.
Apply H2 to the current goal.
Assume H3 H4.
An exact proof term for the current goal is (H1 False H3 H4).
Assume H1: ¬ (¬ x ¬ y).
Apply (xm x) to the current goal.
Assume H2: x.
Apply orIL to the current goal.
An exact proof term for the current goal is H2.
Assume H2: ¬ x.
Apply (xm y) to the current goal.
Assume H3: y.
Apply orIR to the current goal.
An exact proof term for the current goal is H3.
Assume H3: ¬ y.
Apply H1 to the current goal.
An exact proof term for the current goal is (andI (¬ x) (¬ y) H2 H3).
Definition. We define exactly1of2 to be λA B : propA ¬ B ¬ A B of type proppropprop.
Theorem. (exactly1of2_I1) The following is provable:
∀A B : prop, A¬ Bexactly1of2 A B
Proof:
Let A and B be given.
Assume HA: A.
Assume HB: ¬ B.
We will prove A ¬ B ¬ A B.
Apply orIL to the current goal.
We will prove A ¬ B.
An exact proof term for the current goal is (andI A (¬ B) HA HB).
Theorem. (exactly1of2_I2) The following is provable:
∀A B : prop, ¬ ABexactly1of2 A B
Proof:
Let A and B be given.
Assume HA: ¬ A.
Assume HB: B.
We will prove A ¬ B ¬ A B.
Apply orIR to the current goal.
We will prove ¬ A B.
An exact proof term for the current goal is (andI (¬ A) B HA HB).
Theorem. (exactly1of2_E) The following is provable:
∀A B : prop, exactly1of2 A B∀p : prop, (A¬ Bp)(¬ ABp)p
Proof:
Let A and B be given.
Assume H1: exactly1of2 A B.
Let p be given.
Assume H2: A¬ Bp.
Assume H3: ¬ ABp.
Apply (H1 p) to the current goal.
An exact proof term for the current goal is (λH4 : A ¬ BH4 p H2).
An exact proof term for the current goal is (λH4 : ¬ A BH4 p H3).
Theorem. (exactly1of2_or) The following is provable:
∀A B : prop, exactly1of2 A BA B
Proof:
Let A and B be given.
Assume H1: exactly1of2 A B.
Apply (exactly1of2_E A B H1 (A B)) to the current goal.
An exact proof term for the current goal is (λ(HA : A)(_ : ¬ B) ⇒ orIL A B HA).
An exact proof term for the current goal is (λ(_ : ¬ A)(HB : B) ⇒ orIR A B HB).
Theorem. (ReplI) The following is provable:
∀A : set, ∀F : setset, ∀x : set, x AF x {F x|xA}
Proof:
Let A, F and x be given.
Assume H1.
Apply ReplEq A F (F x) to the current goal.
Assume _ H2.
Apply H2 to the current goal.
We will prove x'A, F x = F x'.
We use x to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is (λq H ⇒ H).
Theorem. (ReplE) The following is provable:
∀A : set, ∀F : setset, ∀y : set, y {F x|xA}xA, y = F x
Proof:
Let A, F and y be given.
Apply ReplEq A F y to the current goal.
An exact proof term for the current goal is (λH _ ⇒ H).
Theorem. (ReplE_impred) The following is provable:
∀A : set, ∀F : setset, ∀y : set, y {F x|xA}∀p : prop, (∀x : set, x Ay = F xp)p
Proof:
Let A, F and y be given.
Assume H1.
Apply ReplE A F y H1 to the current goal.
Let x be given.
Assume H2.
Apply H2 to the current goal.
Assume H3 H4.
Let p be given.
Assume Hp.
An exact proof term for the current goal is Hp x H3 H4.
Theorem. (ReplE') The following is provable:
∀X, ∀f : setset, ∀p : setprop, (xX, p (f x))y{f x|xX}, p y
Proof:
Let X, f and p be given.
Assume H1.
Let y be given.
Assume Hy.
Apply ReplE_impred X f y Hy to the current goal.
Let x be given.
Assume Hx: x X.
Assume Hx2: y = f x.
We will prove p y.
rewrite the current goal using Hx2 (from left to right).
An exact proof term for the current goal is H1 x Hx.
Theorem. (Repl_Empty) The following is provable:
∀F : setset, {F x|xEmpty} = Empty
Proof:
Let F be given.
Apply (Empty_eq {F x|xEmpty}) to the current goal.
Let y be given.
Assume H1: y {F x|xEmpty}.
Apply (ReplE_impred Empty F y H1) to the current goal.
Let x be given.
Assume H2: x Empty.
Assume _.
An exact proof term for the current goal is (EmptyE x H2).
Theorem. (ReplEq_ext_sub) The following is provable:
∀X, ∀F G : setset, (xX, F x = G x){F x|xX} {G x|xX}
Proof:
Let X, F and G be given.
Assume H1: xX, F x = G x.
Let y be given.
Assume Hy: y {F x|xX}.
Apply ReplE_impred X F y Hy to the current goal.
Let x be given.
Assume Hx: x X.
Assume H2: y = F x.
We will prove y {G x|xX}.
rewrite the current goal using H2 (from left to right).
We will prove F x {G x|xX}.
rewrite the current goal using H1 x Hx (from left to right).
We will prove G x {G x|xX}.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hx.
Theorem. (ReplEq_ext) The following is provable:
∀X, ∀F G : setset, (xX, F x = G x){F x|xX} = {G x|xX}
Proof:
Let X, F and G be given.
Assume H1: xX, F x = G x.
Apply set_ext to the current goal.
An exact proof term for the current goal is ReplEq_ext_sub X F G H1.
Apply ReplEq_ext_sub X G F to the current goal.
Let x be given.
Assume Hx.
Use symmetry.
An exact proof term for the current goal is H1 x Hx.
Theorem. (Repl_inv_eq) The following is provable:
∀P : setprop, ∀f g : setset, (∀x, P xg (f x) = x)∀X, (xX, P x){g y|y{f x|xX}} = X
Proof:
Let P, f and g be given.
Assume H1.
Let X be given.
Assume HX.
Apply set_ext to the current goal.
Let w be given.
Assume Hw: w {g y|y{f x|xX}}.
Apply ReplE_impred {f x|xX} g w Hw to the current goal.
Let y be given.
Assume Hy: y {f x|xX}.
Assume Hwy: w = g y.
Apply ReplE_impred X f y Hy to the current goal.
Let x be given.
Assume Hx: x X.
Assume Hyx: y = f x.
We will prove w X.
rewrite the current goal using Hwy (from left to right).
rewrite the current goal using Hyx (from left to right).
We will prove g (f x) X.
rewrite the current goal using H1 x (HX x Hx) (from left to right).
An exact proof term for the current goal is Hx.
Let x be given.
Assume Hx: x X.
rewrite the current goal using H1 x (HX x Hx) (from right to left).
We will prove g (f x) {g y|y{f x|xX}}.
Apply ReplI to the current goal.
We will prove f x {f x|xX}.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hx.
Theorem. (Repl_invol_eq) The following is provable:
∀P : setprop, ∀f : setset, (∀x, P xf (f x) = x)∀X, (xX, P x){f y|y{f x|xX}} = X
Proof:
Let P and f be given.
Assume H1.
An exact proof term for the current goal is Repl_inv_eq P f f H1.
Definition. We define If_i to be (λp x y ⇒ Eps_i (λz : setp z = x ¬ p z = y)) of type propsetsetset.
Notation. if cond then T else E is notation corresponding to If_i type cond T E where type is the inferred type of T.
Theorem. (If_i_correct) The following is provable:
∀p : prop, ∀x y : set, p (if p then x else y) = x ¬ p (if p then x else y) = y
Proof:
Let p, x and y be given.
Apply (xm p) to the current goal.
Assume H1: p.
We prove the intermediate claim L1: p x = x ¬ p x = y.
Apply orIL to the current goal.
Apply andI to the current goal.
An exact proof term for the current goal is H1.
Use reflexivity.
An exact proof term for the current goal is (Eps_i_ax (λz : setp z = x ¬ p z = y) x L1).
Assume H1: ¬ p.
We prove the intermediate claim L1: p y = x ¬ p y = y.
Apply orIR to the current goal.
Apply andI to the current goal.
An exact proof term for the current goal is H1.
Use reflexivity.
An exact proof term for the current goal is (Eps_i_ax (λz : setp z = x ¬ p z = y) y L1).
Theorem. (If_i_0) The following is provable:
∀p : prop, ∀x y : set, ¬ p(if p then x else y) = y
Proof:
Let p, x and y be given.
Assume H1: ¬ p.
Apply (If_i_correct p x y) to the current goal.
Assume H2: p (if p then x else y) = x.
An exact proof term for the current goal is (H1 (andEL p ((if p then x else y) = x) H2) ((if p then x else y) = y)).
Assume H2: ¬ p (if p then x else y) = y.
An exact proof term for the current goal is (andER (¬ p) ((if p then x else y) = y) H2).
Theorem. (If_i_1) The following is provable:
∀p : prop, ∀x y : set, p(if p then x else y) = x
Proof:
Let p, x and y be given.
Assume H1: p.
Apply (If_i_correct p x y) to the current goal.
Assume H2: p (if p then x else y) = x.
An exact proof term for the current goal is (andER p ((if p then x else y) = x) H2).
Assume H2: ¬ p (if p then x else y) = y.
An exact proof term for the current goal is (andEL (¬ p) ((if p then x else y) = y) H2 H1 ((if p then x else y) = x)).
Theorem. (If_i_or) The following is provable:
∀p : prop, ∀x y : set, (if p then x else y) = x (if p then x else y) = y
Proof:
Let p, x and y be given.
Apply (xm p) to the current goal.
Assume H1: p.
Apply orIL to the current goal.
An exact proof term for the current goal is (If_i_1 p x y H1).
Assume H1: ¬ p.
Apply orIR to the current goal.
An exact proof term for the current goal is (If_i_0 p x y H1).
Definition. We define UPair to be λy z ⇒ {if Empty X then y else z|X𝒫 (𝒫 Empty)} of type setsetset.
Notation. {x,y} is notation for UPair x y.
Theorem. (UPairE) The following is provable:
∀x y z : set, x {y,z}x = y x = z
Proof:
Let x, y and z be given.
Assume H1: x {y,z}.
Apply (ReplE (𝒫 (𝒫 Empty)) (λX ⇒ if Empty X then y else z) x H1) to the current goal.
Let X be given.
Assume H2: X 𝒫 (𝒫 Empty) x = if Empty X then y else z.
We prove the intermediate claim L1: x = if Empty X then y else z.
An exact proof term for the current goal is (andER (X 𝒫 (𝒫 Empty)) (x = if Empty X then y else z) H2).
Apply (If_i_or (Empty X) y z) to the current goal.
Assume H3: (if Empty X then y else z) = y.
Apply orIL to the current goal.
We will prove x = y.
rewrite the current goal using H3 (from right to left).
An exact proof term for the current goal is L1.
Assume H3: (if Empty X then y else z) = z.
Apply orIR to the current goal.
We will prove x = z.
rewrite the current goal using H3 (from right to left).
An exact proof term for the current goal is L1.
Theorem. (UPairI1) The following is provable:
∀y z : set, y {y,z}
Proof:
Let y and z be given.
We will prove y {y,z}.
rewrite the current goal using (If_i_1 (Empty 𝒫 Empty) y z (Empty_In_Power Empty)) (from right to left) at position 1.
We will prove (if Empty 𝒫 Empty then y else z) {y,z}.
Apply (ReplI (𝒫 (𝒫 Empty)) (λX : setif (Empty X) then y else z) (𝒫 Empty)) to the current goal.
We will prove 𝒫 Empty 𝒫 (𝒫 Empty).
An exact proof term for the current goal is (Self_In_Power (𝒫 Empty)).
Theorem. (UPairI2) The following is provable:
∀y z : set, z {y,z}
Proof:
Let y and z be given.
We will prove z {y,z}.
rewrite the current goal using (If_i_0 (Empty Empty) y z (EmptyE Empty)) (from right to left) at position 1.
We will prove (if Empty Empty then y else z) {y,z}.
Apply (ReplI (𝒫 (𝒫 Empty)) (λX : setif (Empty X) then y else z) Empty) to the current goal.
We will prove Empty 𝒫 (𝒫 Empty).
An exact proof term for the current goal is (Empty_In_Power (𝒫 Empty)).
Definition. We define Sing to be λx ⇒ {x,x} of type setset.
Notation. {x} is notation for Sing x.
Theorem. (SingI) The following is provable:
∀x : set, x {x}
Proof:
An exact proof term for the current goal is (λx : setUPairI1 x x).
Theorem. (SingE) The following is provable:
∀x y : set, y {x}y = x
Proof:
An exact proof term for the current goal is (λx y H ⇒ UPairE y x x H (y = x) (λH ⇒ H) (λH ⇒ H)).
Definition. We define binunion to be λX Y ⇒ {X,Y} of type setsetset.
Notation. We use as an infix operator with priority 345 and which associates to the left corresponding to applying term binunion.
Theorem. (binunionI1) The following is provable:
∀X Y z : set, z Xz X Y
Proof:
Let X, Y and z be given.
Assume H1: z X.
We will prove z X Y.
We will prove z {X,Y}.
Apply (UnionI {X,Y} z X) to the current goal.
We will prove z X.
An exact proof term for the current goal is H1.
We will prove X {X,Y}.
An exact proof term for the current goal is (UPairI1 X Y).
Theorem. (binunionI2) The following is provable:
∀X Y z : set, z Yz X Y
Proof:
Let X, Y and z be given.
Assume H1: z Y.
We will prove z X Y.
We will prove z {X,Y}.
Apply (UnionI {X,Y} z Y) to the current goal.
We will prove z Y.
An exact proof term for the current goal is H1.
We will prove Y {X,Y}.
An exact proof term for the current goal is (UPairI2 X Y).
Theorem. (binunionE) The following is provable:
∀X Y z : set, z X Yz X z Y
Proof:
Let X, Y and z be given.
Assume H1: z X Y.
We will prove z X z Y.
Apply (UnionE_impred {X,Y} z H1) to the current goal.
Let Z be given.
Assume H2: z Z.
Assume H3: Z {X,Y}.
Apply (UPairE Z X Y H3) to the current goal.
Assume H4: Z = X.
Apply orIL to the current goal.
We will prove z X.
rewrite the current goal using H4 (from right to left).
We will prove z Z.
An exact proof term for the current goal is H2.
Assume H4: Z = Y.
Apply orIR to the current goal.
We will prove z Y.
rewrite the current goal using H4 (from right to left).
We will prove z Z.
An exact proof term for the current goal is H2.
Theorem. (binunionE') The following is provable:
∀X Y z, ∀p : prop, (z Xp)(z Yp)(z X Yp)
Proof:
Let X, Y, z and p be given.
Assume H1 H2 Hz.
Apply binunionE X Y z Hz to the current goal.
Assume H3: z X.
An exact proof term for the current goal is H1 H3.
Assume H3: z Y.
An exact proof term for the current goal is H2 H3.
Theorem. (binunion_asso) The following is provable:
∀X Y Z : set, X (Y Z) = (X Y) Z
Proof:
Let X, Y and Z be given.
Apply set_ext to the current goal.
Let w be given.
Assume H1: w X (Y Z).
We will prove w (X Y) Z.
Apply (binunionE X (Y Z) w H1) to the current goal.
Assume H2: w X.
Apply binunionI1 to the current goal.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is H2.
Assume H2: w Y Z.
Apply (binunionE Y Z w H2) to the current goal.
Assume H3: w Y.
Apply binunionI1 to the current goal.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is H3.
Assume H3: w Z.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is H3.
Let w be given.
Assume H1: w (X Y) Z.
We will prove w X (Y Z).
Apply (binunionE (X Y) Z w H1) to the current goal.
Assume H2: w X Y.
Apply (binunionE X Y w H2) to the current goal.
Assume H3: w X.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is H3.
Assume H3: w Y.
Apply binunionI2 to the current goal.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is H3.
Assume H2: w Z.
Apply binunionI2 to the current goal.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is H2.
Theorem. (binunion_com_Subq) The following is provable:
∀X Y : set, X Y Y X
Proof:
Let X, Y and w be given.
Assume H1: w X Y.
We will prove w Y X.
Apply (binunionE X Y w H1) to the current goal.
Assume H2: w X.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is H2.
Assume H2: w Y.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is H2.
Theorem. (binunion_com) The following is provable:
∀X Y : set, X Y = Y X
Proof:
Let X and Y be given.
Apply set_ext to the current goal.
An exact proof term for the current goal is (binunion_com_Subq X Y).
An exact proof term for the current goal is (binunion_com_Subq Y X).
Theorem. (binunion_idl) The following is provable:
∀X : set, Empty X = X
Proof:
Let X be given.
Apply set_ext to the current goal.
Let x be given.
Assume H1: x Empty X.
Apply (binunionE Empty X x H1) to the current goal.
Assume H2: x Empty.
We will prove False.
An exact proof term for the current goal is (EmptyE x H2).
Assume H2: x X.
An exact proof term for the current goal is H2.
Let x be given.
Assume H2: x X.
We will prove x Empty X.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is H2.
Theorem. (binunion_idr) The following is provable:
∀X : set, X Empty = X
Proof:
Let X be given.
rewrite the current goal using (binunion_com X Empty) (from left to right).
An exact proof term for the current goal is (binunion_idl X).
Theorem. (binunion_Subq_1) The following is provable:
∀X Y : set, X X Y
Proof:
An exact proof term for the current goal is binunionI1.
Theorem. (binunion_Subq_2) The following is provable:
∀X Y : set, Y X Y
Proof:
An exact proof term for the current goal is binunionI2.
Theorem. (binunion_Subq_min) The following is provable:
∀X Y Z : set, X ZY ZX Y Z
Proof:
Let X, Y and Z be given.
Assume H1: X Z.
Assume H2: Y Z.
Let w be given.
Assume H3: w X Y.
Apply (binunionE X Y w H3) to the current goal.
Assume H4: w X.
An exact proof term for the current goal is (H1 w H4).
Assume H4: w Y.
An exact proof term for the current goal is (H2 w H4).
Theorem. (Subq_binunion_eq) The following is provable:
∀X Y, (X Y) = (X Y = Y)
Proof:
Let X and Y be given.
Apply prop_ext_2 to the current goal.
Assume H1: X Y.
We will prove X Y = Y.
Apply set_ext to the current goal.
We will prove X Y Y.
Apply (binunion_Subq_min X Y Y) to the current goal.
We will prove X Y.
An exact proof term for the current goal is H1.
We will prove Y Y.
An exact proof term for the current goal is (Subq_ref Y).
We will prove Y X Y.
An exact proof term for the current goal is (binunion_Subq_2 X Y).
Assume H1: X Y = Y.
We will prove X Y.
rewrite the current goal using H1 (from right to left).
We will prove X X Y.
An exact proof term for the current goal is (binunion_Subq_1 X Y).
Definition. We define SetAdjoin to be λX y ⇒ X {y} of type setsetset.
Notation. We now use the set enumeration notation {...,...,...} in general. If 0 elements are given, then Empty is used to form the corresponding term. If 1 element is given, then Sing is used to form the corresponding term. If 2 elements are given, then UPair is used to form the corresponding term. If more than elements are given, then SetAdjoin is used to reduce to the case with one fewer elements.
Definition. We define famunion to be λX F ⇒ {F x|xX} of type set(setset)set.
Notation. We use x [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using famunion.
Theorem. (famunionI) The following is provable:
∀X : set, ∀F : (setset), ∀x y : set, x Xy F xy xXF x
Proof:
An exact proof term for the current goal is (λX F x y H1 H2 ⇒ UnionI (Repl X F) y (F x) H2 (ReplI X F x H1)).
Theorem. (famunionE) The following is provable:
∀X : set, ∀F : (setset), ∀y : set, y (xXF x)xX, y F x
Proof:
Let X, F and y be given.
Assume H1: y (xXF x).
We will prove xX, y F x.
Apply (UnionE_impred {F x|xX} y H1) to the current goal.
Let Y be given.
Assume H2: y Y.
Assume H3: Y {F x|xX}.
Apply (ReplE_impred X F Y H3) to the current goal.
Let x be given.
Assume H4: x X.
Assume H5: Y = F x.
We use x to witness the existential quantifier.
We will prove x X y F x.
Apply andI to the current goal.
An exact proof term for the current goal is H4.
We will prove y F x.
rewrite the current goal using H5 (from right to left).
An exact proof term for the current goal is H2.
Theorem. (famunionE_impred) The following is provable:
∀X : set, ∀F : (setset), ∀y : set, y (xXF x)∀p : prop, (∀x, x Xy F xp)p
Proof:
Let X, F and y be given.
Assume Hy.
Let p be given.
Assume Hp.
Apply famunionE X F y Hy to the current goal.
Let x be given.
Assume H1.
Apply H1 to the current goal.
An exact proof term for the current goal is Hp x.
Theorem. (famunion_Empty) The following is provable:
∀F : setset, (xEmptyF x) = Empty
Proof:
Let F be given.
Apply Empty_Subq_eq to the current goal.
Let y be given.
Assume Hy: y xEmptyF x.
Apply famunionE_impred Empty F y Hy to the current goal.
Let x be given.
Assume Hx: x Empty.
We will prove False.
An exact proof term for the current goal is EmptyE x Hx.
Theorem. (famunion_Subq) The following is provable:
∀X, ∀f g : setset, (xX, f x g x)famunion X f famunion X g
Proof:
Let X, f and g be given.
Assume Hfg.
Let y be given.
Assume Hy.
Apply famunionE_impred X f y Hy to the current goal.
Let x be given.
Assume Hx.
Assume H1: y f x.
Apply famunionI X g x y Hx to the current goal.
We will prove y g x.
An exact proof term for the current goal is Hfg x Hx y H1.
Theorem. (famunion_ext) The following is provable:
∀X, ∀f g : setset, (xX, f x = g x)famunion X f = famunion X g
Proof:
Let X, f and g be given.
Assume Hfg.
Apply set_ext to the current goal.
Apply famunion_Subq to the current goal.
Let x be given.
Assume Hx.
rewrite the current goal using Hfg x Hx (from left to right).
Apply Subq_ref to the current goal.
Apply famunion_Subq to the current goal.
Let x be given.
Assume Hx.
rewrite the current goal using Hfg x Hx (from left to right).
Apply Subq_ref to the current goal.
Beginning of Section SepSec
Variable X : set
Variable P : setprop
Let z : setEps_i (λz ⇒ z X P z)
Let F : setsetλx ⇒ if P x then x else z
Definition. We define Sep to be if (zX, P z) then {F x|xX} else Empty of type set.
End of Section SepSec
Notation. {xA | B} is notation for Sep Ax . B).
Theorem. (SepI) The following is provable:
∀X : set, ∀P : (setprop), ∀x : set, x XP xx {xX|P x}
Proof:
Let X, P and x be given.
Set z to be the term Eps_i (λz ⇒ z X P z) of type set.
Set F to be the term λx ⇒ if P x then x else z of type setset.
Assume H1: x X.
Assume H2: P x.
We prove the intermediate claim L1: zX, P z.
We use x to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
We will prove x {xX|P x}.
We will prove x if (zX, P z) then {F x|xX} else Empty.
We prove the intermediate claim L2: (if (zX, P z) then {F x|xX} else Empty) = {F x|xX}.
An exact proof term for the current goal is (If_i_1 (zX, P z) {F x|xX} Empty L1).
rewrite the current goal using L2 (from left to right).
We will prove x {F x|xX}.
We prove the intermediate claim L3: F x = x.
We will prove (if P x then x else z) = x.
An exact proof term for the current goal is (If_i_1 (P x) x z H2).
rewrite the current goal using L3 (from right to left).
We will prove F x {F x|xX}.
An exact proof term for the current goal is (ReplI X F x H1).
Theorem. (SepE) The following is provable:
∀X : set, ∀P : (setprop), ∀x : set, x {xX|P x}x X P x
Proof:
Let X, P and x be given.
Set z to be the term Eps_i (λz ⇒ z X P z) of type set.
Set F to be the term λx ⇒ if P x then x else z of type setset.
Apply (xm (zX, P z)) to the current goal.
Assume H1: zX, P z.
We will prove (x (if (zX, P z) then {F x|xX} else Empty)x X P x).
We prove the intermediate claim L1: (if (zX, P z) then {F x|xX} else Empty) = {F x|xX}.
An exact proof term for the current goal is (If_i_1 (zX, P z) {F x|xX} Empty H1).
rewrite the current goal using L1 (from left to right).
We will prove x {F x|xX}x X P x.
Assume H2: x {F x|xX}.
Apply (ReplE_impred X F x H2) to the current goal.
Let y be given.
Assume H3: y X.
Assume H4: x = F y.
We will prove x X P x.
Apply (xm (P y)) to the current goal.
Assume H5: P y.
We prove the intermediate claim L2: x = y.
rewrite the current goal using (If_i_1 (P y) y z H5) (from right to left).
An exact proof term for the current goal is H4.
rewrite the current goal using L2 (from left to right).
We will prove y X P y.
Apply andI to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is H5.
Assume H5: ¬ P y.
We prove the intermediate claim L2: x = z.
rewrite the current goal using (If_i_0 (P y) y z H5) (from right to left).
An exact proof term for the current goal is H4.
rewrite the current goal using L2 (from left to right).
We will prove z X P z.
An exact proof term for the current goal is (Eps_i_ex (λz ⇒ z X P z) H1).
Assume H1: ¬ zX, P z.
We will prove (x (if (zX, P z) then {F x|xX} else Empty)x X P x).
We prove the intermediate claim L1: (if (zX, P z) then {F x|xX} else Empty) = Empty.
An exact proof term for the current goal is (If_i_0 (zX, P z) {F x|xX} Empty H1).
rewrite the current goal using L1 (from left to right).
We will prove x Emptyx X P x.
Assume H2: x Empty.
We will prove False.
An exact proof term for the current goal is (EmptyE x H2).
Theorem. (SepE1) The following is provable:
∀X : set, ∀P : (setprop), ∀x : set, x {xX|P x}x X
Proof:
An exact proof term for the current goal is (λX P x H ⇒ SepE X P x H (x X) (λH _ ⇒ H)).
Theorem. (SepE2) The following is provable:
∀X : set, ∀P : (setprop), ∀x : set, x {xX|P x}P x
Proof:
An exact proof term for the current goal is (λX P x H ⇒ SepE X P x H (P x) (λ_ H ⇒ H)).
Theorem. (Sep_Empty) The following is provable:
∀P : setprop, {xEmpty|P x} = Empty
Proof:
Let P be given.
Apply Empty_eq to the current goal.
Let x be given.
Assume Hx.
An exact proof term for the current goal is EmptyE x (SepE1 Empty P x Hx).
Theorem. (Sep_Subq) The following is provable:
∀X : set, ∀P : setprop, {xX|P x} X
Proof:
An exact proof term for the current goal is SepE1.
Theorem. (Sep_In_Power) The following is provable:
∀X : set, ∀P : setprop, {xX|P x} 𝒫 X
Proof:
An exact proof term for the current goal is (λX P ⇒ PowerI X (Sep X P) (Sep_Subq X P)).
Definition. We define ReplSep to be λX P F ⇒ {F x|x{zX|P z}} of type set(setprop)(setset)set.
Notation. {B| xA, C} is notation for ReplSep Ax . C) (λ x . B).
Theorem. (ReplSepI) The following is provable:
∀X : set, ∀P : setprop, ∀F : setset, ∀x : set, x XP xF x {F x|xX, P x}
Proof:
An exact proof term for the current goal is (λX P F x u v ⇒ ReplI (Sep X P) F x (SepI X P x u v)).
Theorem. (ReplSepE) The following is provable:
∀X : set, ∀P : setprop, ∀F : setset, ∀y : set, y {F x|xX, P x}x : set, x X P x y = F x
Proof:
Let X, P, F and y be given.
Assume H1: y {F x|x{zX|P z}}.
Apply (ReplE {zX|P z} F y H1) to the current goal.
Let x be given.
Assume H2: x {zX|P z} y = F x.
Apply H2 to the current goal.
Assume H3: x {zX|P z}.
Assume H4: y = F x.
Apply (SepE X P x H3) to the current goal.
Assume H5: x X.
Assume H6: P x.
We use x to witness the existential quantifier.
Apply and3I to the current goal.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is H6.
An exact proof term for the current goal is H4.
Theorem. (ReplSepE_impred) The following is provable:
∀X : set, ∀P : setprop, ∀F : setset, ∀y : set, y {F x|xX, P x}∀p : prop, (xX, P xy = F xp)p
Proof:
Let X, P, F and y be given.
Assume H1: y {F x|xX, P x}.
Let p be given.
Assume H2: xX, P xy = F xp.
We will prove p.
Apply ReplSepE X P F y H1 to the current goal.
Let x be given.
Assume H3.
Apply H3 to the current goal.
Assume H3.
Apply H3 to the current goal.
An exact proof term for the current goal is H2 x.
Definition. We define binintersect to be λX Y ⇒ {xX|x Y} of type setsetset.
Notation. We use as an infix operator with priority 340 and which associates to the left corresponding to applying term binintersect.
Theorem. (binintersectI) The following is provable:
∀X Y z, z Xz Yz X Y
Proof:
An exact proof term for the current goal is (λX Y z H1 H2 ⇒ SepI X (λx : setx Y) z H1 H2).
Theorem. (binintersectE) The following is provable:
∀X Y z, z X Yz X z Y
Proof:
An exact proof term for the current goal is (λX Y z H1 ⇒ SepE X (λx : setx Y) z H1).
Theorem. (binintersectE1) The following is provable:
∀X Y z, z X Yz X
Proof:
An exact proof term for the current goal is (λX Y z H1 ⇒ SepE1 X (λx : setx Y) z H1).
Theorem. (binintersectE2) The following is provable:
∀X Y z, z X Yz Y
Proof:
An exact proof term for the current goal is (λX Y z H1 ⇒ SepE2 X (λx : setx Y) z H1).
Theorem. (binintersect_Subq_1) The following is provable:
∀X Y : set, X Y X
Proof:
An exact proof term for the current goal is binintersectE1.
Theorem. (binintersect_Subq_2) The following is provable:
∀X Y : set, X Y Y
Proof:
An exact proof term for the current goal is binintersectE2.
Theorem. (binintersect_Subq_eq_1) The following is provable:
∀X Y, X YX Y = X
Proof:
Let X and Y be given.
Assume H1: X Y.
Apply set_ext to the current goal.
Apply binintersect_Subq_1 to the current goal.
Let x be given.
Assume H2: x X.
Apply binintersectI to the current goal.
An exact proof term for the current goal is H2.
Apply H1 to the current goal.
An exact proof term for the current goal is H2.
Theorem. (binintersect_Subq_max) The following is provable:
∀X Y Z : set, Z XZ YZ X Y
Proof:
Let X, Y and Z be given.
Assume H1: Z X.
Assume H2: Z Y.
Let w be given.
Assume H3: w Z.
Apply (binintersectI X Y w) to the current goal.
We will prove w X.
An exact proof term for the current goal is (H1 w H3).
We will prove w Y.
An exact proof term for the current goal is (H2 w H3).
Theorem. (binintersect_com_Subq) The following is provable:
∀X Y : set, X Y Y X
Proof:
Let X and Y be given.
Apply (binintersect_Subq_max Y X (X Y)) to the current goal.
We will prove X Y Y.
Apply binintersect_Subq_2 to the current goal.
We will prove X Y X.
Apply binintersect_Subq_1 to the current goal.
Theorem. (binintersect_com) The following is provable:
∀X Y : set, X Y = Y X
Proof:
Let X and Y be given.
Apply set_ext to the current goal.
An exact proof term for the current goal is (binintersect_com_Subq X Y).
An exact proof term for the current goal is (binintersect_com_Subq Y X).
Definition. We define setminus to be λX Y ⇒ Sep X (λx ⇒ x Y) of type setsetset.
Notation. We use as an infix operator with priority 350 and no associativity corresponding to applying term setminus.
Theorem. (setminusI) The following is provable:
∀X Y z, (z X)(z Y)z X Y
Proof:
An exact proof term for the current goal is (λX Y z H1 H2 ⇒ SepI X (λx : setx Y) z H1 H2).
Theorem. (setminusE) The following is provable:
∀X Y z, (z X Y)z X z Y
Proof:
An exact proof term for the current goal is (λX Y z H ⇒ SepE X (λx : setx Y) z H).
Theorem. (setminusE1) The following is provable:
∀X Y z, (z X Y)z X
Proof:
An exact proof term for the current goal is (λX Y z H ⇒ SepE1 X (λx : setx Y) z H).
Theorem. (setminusE2) The following is provable:
∀X Y z, (z X Y)z Y
Proof:
An exact proof term for the current goal is (λX Y z H ⇒ SepE2 X (λx : setx Y) z H).
Theorem. (setminus_Subq) The following is provable:
∀X Y : set, X Y X
Proof:
An exact proof term for the current goal is setminusE1.
Theorem. (setminus_In_Power) The following is provable:
∀A U, A U 𝒫 A
Proof:
Let A and U be given.
Apply PowerI to the current goal.
Apply setminus_Subq to the current goal.
Theorem. (binunion_remove1_eq) The following is provable:
∀X, xX, X = (X {x}) {x}
Proof:
Let X and x be given.
Assume Hx: x X.
Apply set_ext to the current goal.
Let y be given.
Assume Hy: y X.
We will prove y (X {x}) {x}.
Apply xm (y {x}) to the current goal.
Assume H1: y {x}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is H1.
Assume H1: y {x}.
Apply binunionI1 to the current goal.
Apply setminusI to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is H1.
Let y be given.
Assume Hy: y (X {x}) {x}.
Apply binunionE (X {x}) {x} y Hy to the current goal.
Assume H1: y X {x}.
We will prove y X.
An exact proof term for the current goal is setminusE1 X {x} y H1.
Assume H1: y {x}.
We will prove y X.
rewrite the current goal using SingE x y H1 (from left to right).
We will prove x X.
An exact proof term for the current goal is Hx.
Theorem. (In_irref) The following is provable:
∀x, x x
Proof:
Apply In_ind to the current goal.
We will prove (∀X : set, (∀x : set, x Xx x)X X).
Let X be given.
Assume IH: ∀x : set, x Xx x.
Assume H: X X.
An exact proof term for the current goal is IH X H H.
Theorem. (In_no2cycle) The following is provable:
∀x y, x yy xFalse
Proof:
Apply In_ind to the current goal.
Let x be given.
Assume IH: ∀z, z x∀y, z yy zFalse.
Let y be given.
Assume H1: x y.
Assume H2: y x.
An exact proof term for the current goal is IH y H2 x H2 H1.
Definition. We define ordsucc to be λx : setx {x} of type setset.
Theorem. (ordsuccI1) The following is provable:
∀x : set, x ordsucc x
Proof:
Let x be given.
An exact proof term for the current goal is (λ(y : set)(H1 : y x) ⇒ binunionI1 x {x} y H1).
Theorem. (ordsuccI2) The following is provable:
∀x : set, x ordsucc x
Proof:
An exact proof term for the current goal is (λx : setbinunionI2 x {x} x (SingI x)).
Theorem. (ordsuccE) The following is provable:
∀x y : set, y ordsucc xy x y = x
Proof:
Let x and y be given.
Assume H1: y x {x}.
Apply (binunionE x {x} y H1) to the current goal.
Assume H2: y x.
Apply orIL to the current goal.
An exact proof term for the current goal is H2.
Assume H2: y {x}.
Apply orIR to the current goal.
An exact proof term for the current goal is (SingE x y H2).
Notation. Natural numbers 0,1,2,... are notation for the terms formed using Empty as 0 and forming successors with ordsucc.
Theorem. (neq_0_ordsucc) The following is provable:
∀a : set, 0 ordsucc a
Proof:
Let a be given.
We will prove ¬ (0 = ordsucc a).
Assume H1: 0 = ordsucc a.
We prove the intermediate claim L1: a ordsucc aFalse.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is (EmptyE a).
An exact proof term for the current goal is (L1 (ordsuccI2 a)).
Theorem. (neq_ordsucc_0) The following is provable:
∀a : set, ordsucc a 0
Proof:
Let a be given.
An exact proof term for the current goal is neq_i_sym 0 (ordsucc a) (neq_0_ordsucc a).
Theorem. (ordsucc_inj) The following is provable:
∀a b : set, ordsucc a = ordsucc ba = b
Proof:
Let a and b be given.
Assume H1: ordsucc a = ordsucc b.
We prove the intermediate claim L1: a ordsucc b.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is (ordsuccI2 a).
Apply (ordsuccE b a L1) to the current goal.
Assume H2: a b.
We prove the intermediate claim L2: b ordsucc a.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is (ordsuccI2 b).
Apply (ordsuccE a b L2) to the current goal.
Assume H3: b a.
We will prove False.
An exact proof term for the current goal is (In_no2cycle a b H2 H3).
Assume H3: b = a.
Use symmetry.
An exact proof term for the current goal is H3.
Assume H2: a = b.
An exact proof term for the current goal is H2.
Theorem. (In_0_1) The following is provable:
Proof:
An exact proof term for the current goal is (ordsuccI2 0).
Theorem. (In_0_2) The following is provable:
Proof:
An exact proof term for the current goal is (ordsuccI1 1 0 In_0_1).
Theorem. (In_1_2) The following is provable:
Proof:
An exact proof term for the current goal is (ordsuccI2 1).
Definition. We define nat_p to be λn : set∀p : setprop, p 0(∀x : set, p xp (ordsucc x))p n of type setprop.
Theorem. (nat_0) The following is provable:
Proof:
An exact proof term for the current goal is (λp H _ ⇒ H).
Theorem. (nat_ordsucc) The following is provable:
∀n : set, nat_p nnat_p (ordsucc n)
Proof:
An exact proof term for the current goal is (λn H1 p H2 H3 ⇒ H3 n (H1 p H2 H3)).
Theorem. (nat_1) The following is provable:
Proof:
An exact proof term for the current goal is (nat_ordsucc 0 nat_0).
Theorem. (nat_2) The following is provable:
Proof:
An exact proof term for the current goal is (nat_ordsucc 1 nat_1).
Theorem. (nat_0_in_ordsucc) The following is provable:
∀n, nat_p n0 ordsucc n
Proof:
Let n be given.
Assume H1.
Apply H1 (λn ⇒ 0 ordsucc n) to the current goal.
We will prove 0 ordsucc 0.
An exact proof term for the current goal is In_0_1.
Let n be given.
Assume IH: 0 ordsucc n.
We will prove 0 ordsucc (ordsucc n).
An exact proof term for the current goal is (ordsuccI1 (ordsucc n) 0 IH).
Theorem. (nat_ordsucc_in_ordsucc) The following is provable:
Proof:
Let n be given.
Assume H1.
Apply (H1 (λn ⇒ mn, ordsucc m ordsucc n)) to the current goal.
We will prove m0, ordsucc m ordsucc 0.
Let m be given.
Assume Hm: m 0.
We will prove False.
An exact proof term for the current goal is (EmptyE m Hm).
Let n be given.
Assume IH: mn, ordsucc m ordsucc n.
Let m be given.
Assume H2: m ordsucc n.
We will prove ordsucc m ordsucc (ordsucc n).
Apply (ordsuccE n m H2) to the current goal.
Assume H3: m n.
We prove the intermediate claim L1: ordsucc m ordsucc n.
An exact proof term for the current goal is (IH m H3).
An exact proof term for the current goal is (ordsuccI1 (ordsucc n) (ordsucc m) L1).
Assume H3: m = n.
rewrite the current goal using H3 (from left to right).
We will prove ordsucc n ordsucc (ordsucc n).
An exact proof term for the current goal is (ordsuccI2 (ordsucc n)).
Theorem. (nat_ind) The following is provable:
∀p : setprop, p 0(∀n, nat_p np np (ordsucc n))∀n, nat_p np n
Proof:
Let p be given.
Assume H1: p 0.
Assume H2: ∀n, nat_p np np (ordsucc n).
We prove the intermediate claim L1: nat_p 0 p 0.
An exact proof term for the current goal is (andI (nat_p 0) (p 0) nat_0 H1).
We prove the intermediate claim L2: ∀n, nat_p n p nnat_p (ordsucc n) p (ordsucc n).
Let n be given.
Assume H3: nat_p n p n.
Apply H3 to the current goal.
Assume H4: nat_p n.
Assume H5: p n.
Apply andI to the current goal.
We will prove nat_p (ordsucc n).
An exact proof term for the current goal is (nat_ordsucc n H4).
We will prove p (ordsucc n).
An exact proof term for the current goal is (H2 n H4 H5).
Let n be given.
Assume H3.
We prove the intermediate claim L3: nat_p n p n.
An exact proof term for the current goal is (H3 (λn ⇒ nat_p n p n) L1 L2).
An exact proof term for the current goal is (andER (nat_p n) (p n) L3).
Theorem. (nat_complete_ind) The following is provable:
∀p : setprop, (∀n, nat_p n(mn, p m)p n)∀n, nat_p np n
Proof:
Let p be given.
Assume H1: ∀n, nat_p n(mn, p m)p n.
We prove the intermediate claim L1: ∀n : set, nat_p nmn, p m.
Apply nat_ind to the current goal.
We will prove m0, p m.
Let m be given.
Assume Hm: m 0.
We will prove False.
An exact proof term for the current goal is (EmptyE m Hm).
Let n be given.
Assume Hn: nat_p n.
Assume IHn: mn, p m.
We will prove mordsucc n, p m.
Let m be given.
Assume Hm: m ordsucc n.
We will prove p m.
Apply (ordsuccE n m Hm) to the current goal.
Assume H2: m n.
An exact proof term for the current goal is (IHn m H2).
Assume H2: m = n.
We will prove p m.
rewrite the current goal using H2 (from left to right).
We will prove p n.
An exact proof term for the current goal is (H1 n Hn IHn).
We will prove ∀n, nat_p np n.
An exact proof term for the current goal is (λn Hn ⇒ H1 n Hn (L1 n Hn)).
Theorem. (nat_inv_impred) The following is provable:
∀p : setprop, p 0(∀n, nat_p np (ordsucc n))∀n, nat_p np n
Proof:
Let p be given.
Assume H1 H2.
An exact proof term for the current goal is nat_ind p H1 (λn H _ ⇒ H2 n H).
Theorem. (nat_inv) The following is provable:
∀n, nat_p nn = 0 x, nat_p x n = ordsucc x
Proof:
Apply nat_inv_impred to the current goal.
Apply orIL to the current goal.
Use reflexivity.
Let n be given.
Assume Hn.
Apply orIR to the current goal.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hn.
Use reflexivity.
Theorem. (nat_p_trans) The following is provable:
∀n, nat_p nmn, nat_p m
Proof:
Apply nat_ind to the current goal.
We will prove m0, nat_p m.
Let m be given.
Assume Hm: m 0.
We will prove False.
An exact proof term for the current goal is (EmptyE m Hm).
Let n be given.
Assume Hn: nat_p n.
Assume IHn: mn, nat_p m.
We will prove mordsucc n, nat_p m.
Let m be given.
Assume Hm: m ordsucc n.
Apply (ordsuccE n m Hm) to the current goal.
Assume H1: m n.
An exact proof term for the current goal is (IHn m H1).
Assume H1: m = n.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is Hn.
Theorem. (nat_trans) The following is provable:
∀n, nat_p nmn, m n
Proof:
Apply nat_ind to the current goal.
We will prove m0, m 0.
Let m be given.
Assume Hm: m 0.
We will prove False.
An exact proof term for the current goal is (EmptyE m Hm).
Let n be given.
Assume Hn: nat_p n.
Assume IHn: mn, m n.
We will prove mordsucc n, m ordsucc n.
Let m be given.
Assume Hm: m ordsucc n.
Apply (ordsuccE n m Hm) to the current goal.
Assume H1: m n.
We will prove m ordsucc n.
Apply (Subq_tra m n (ordsucc n)) to the current goal.
An exact proof term for the current goal is (IHn m H1).
An exact proof term for the current goal is (ordsuccI1 n).
Assume H1: m = n.
We will prove m ordsucc n.
rewrite the current goal using H1 (from left to right).
We will prove n ordsucc n.
An exact proof term for the current goal is (ordsuccI1 n).
Theorem. (nat_ordsucc_trans) The following is provable:
∀n, nat_p nmordsucc n, m n
Proof:
Let n be given.
Assume Hn: nat_p n.
Let m be given.
Assume Hm: m ordsucc n.
Let k be given.
Assume Hk: k m.
We will prove k n.
Apply (ordsuccE n m Hm) to the current goal.
Assume H1: m n.
An exact proof term for the current goal is nat_trans n Hn m H1 k Hk.
Assume H1: m = n.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hk.
Definition. We define surj to be λX Y f ⇒ (uX, f u Y) (wY, uX, f u = w) of type setset(setset)prop.
Theorem. (form100_63_surjCantor) The following is provable:
∀A : set, ∀f : setset, ¬ surj A (𝒫 A) f
Proof:
Let A and f be given.
Assume H.
Apply H to the current goal.
Assume H1: uA, f u 𝒫 A.
Assume H2: w𝒫 A, uA, f u = w.
Set D to be the term {xA|x f x}.
We prove the intermediate claim L1: D 𝒫 A.
An exact proof term for the current goal is Sep_In_Power A (λx ⇒ x f x).
Apply H2 D L1 to the current goal.
Let d be given.
Assume H.
Apply H to the current goal.
Assume Hd: d A.
Assume HfdD: f d = D.
We prove the intermediate claim L2: d D.
Assume H3: d D.
Apply SepE2 A (λx ⇒ x f x) d H3 to the current goal.
We will prove d f d.
rewrite the current goal using HfdD (from left to right).
We will prove d D.
An exact proof term for the current goal is H3.
Apply L2 to the current goal.
We will prove d D.
Apply SepI to the current goal.
We will prove d A.
An exact proof term for the current goal is Hd.
We will prove d f d.
rewrite the current goal using HfdD (from left to right).
An exact proof term for the current goal is L2.
Definition. We define inj to be λX Y f ⇒ (uX, f u Y) (u vX, f u = f vu = v) of type setset(setset)prop.
Theorem. (form100_63_injCantor) The following is provable:
∀A : set, ∀f : setset, ¬ inj (𝒫 A) A f
Proof:
Let A and f be given.
Assume H.
Apply H to the current goal.
Assume H1: X𝒫 A, f X A.
Assume H2: X Y𝒫 A, f X = f YX = Y.
Set D to be the term {f X|X𝒫 A, f X X}.
We prove the intermediate claim L1: D 𝒫 A.
Apply PowerI to the current goal.
Let n be given.
Assume H3: n D.
Apply ReplSepE_impred (𝒫 A) (λX ⇒ f X X) f n H3 to the current goal.
Let X be given.
Assume HX: X 𝒫 A.
Assume H4: f X X.
Assume H5: n = f X.
We will prove n A.
rewrite the current goal using H5 (from left to right).
Apply H1 to the current goal.
An exact proof term for the current goal is HX.
We prove the intermediate claim L2: f D D.
Assume H3: f D D.
Apply ReplSepE_impred (𝒫 A) (λX ⇒ f X X) f (f D) H3 to the current goal.
Let X be given.
Assume HX: X 𝒫 A.
Assume H4: f X X.
Assume H5: f D = f X.
We prove the intermediate claim L2a: D = X.
An exact proof term for the current goal is H2 D L1 X HX H5.
Apply H4 to the current goal.
rewrite the current goal using L2a (from right to left).
An exact proof term for the current goal is H3.
Apply L2 to the current goal.
We will prove f D D.
Apply ReplSepI to the current goal.
We will prove D 𝒫 A.
An exact proof term for the current goal is L1.
We will prove f D D.
An exact proof term for the current goal is L2.
Theorem. (injI) The following is provable:
∀X Y, ∀f : setset, (xX, f x Y)(x zX, f x = f zx = z)inj X Y f
Proof:
Let X, Y and f be given.
Assume H1 H2.
We will prove (xX, f x Y) (x zX, f x = f zx = z).
Apply andI to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
Theorem. (inj_comp) The following is provable:
∀X Y Z : set, ∀f g : setset, inj X Y finj Y Z ginj X Z (λx ⇒ g (f x))
Proof:
Let X, Y, Z, f and g be given.
Assume Hf.
Assume Hg.
Apply Hf to the current goal.
Assume Hf1 Hf2.
Apply Hg to the current goal.
Assume Hg1 Hg2.
Apply injI to the current goal.
Let u be given.
Assume Hu: u X.
An exact proof term for the current goal is (Hg1 (f u) (Hf1 u Hu)).
Let u be given.
Assume Hu: u X.
Let v be given.
Assume Hv: v X.
Assume H1: g (f u) = g (f v).
We will prove u = v.
Apply Hf2 u Hu v Hv to the current goal.
We will prove f u = f v.
Apply Hg2 (f u) (Hf1 u Hu) (f v) (Hf1 v Hv) to the current goal.
We will prove g (f u) = g (f v).
An exact proof term for the current goal is H1.
Definition. We define bij to be λX Y f ⇒ (uX, f u Y) (u vX, f u = f vu = v) (wY, uX, f u = w) of type setset(setset)prop.
Theorem. (bijI) The following is provable:
∀X Y, ∀f : setset, (uX, f u Y)(u vX, f u = f vu = v)(wY, uX, f u = w)bij X Y f
Proof:
Let X, Y and f be given.
Assume Hf1 Hf2 Hf3.
We will prove (uX, f u Y) (u vX, f u = f vu = v) (wY, uX, f u = w).
Apply and3I to the current goal.
An exact proof term for the current goal is Hf1.
An exact proof term for the current goal is Hf2.
An exact proof term for the current goal is Hf3.
Theorem. (bijE) The following is provable:
∀X Y, ∀f : setset, bij X Y f∀p : prop, ((uX, f u Y)(u vX, f u = f vu = v)(wY, uX, f u = w)p)p
Proof:
Let X, Y and f be given.
Assume Hf.
Let p be given.
Assume Hp.
Apply Hf to the current goal.
Assume Hf.
Apply Hf to the current goal.
Assume Hf1 Hf2 Hf3.
An exact proof term for the current goal is Hp Hf1 Hf2 Hf3.
Theorem. (bij_inj) The following is provable:
∀X Y, ∀f : setset, bij X Y finj X Y f
Proof:
Let X, Y and f be given.
Assume H1.
Apply H1 to the current goal.
Assume H1 _.
An exact proof term for the current goal is H1.
Theorem. (bij_id) The following is provable:
∀X, bij X X (λx ⇒ x)
Proof:
Let X be given.
We will prove (uX, u X) (u vX, u = vu = v) (wX, uX, u = w).
Apply and3I to the current goal.
An exact proof term for the current goal is (λu Hu ⇒ Hu).
An exact proof term for the current goal is (λu Hu v Hv H1 ⇒ H1).
Let w be given.
Assume Hw.
We use w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw.
Use reflexivity.
Theorem. (bij_comp) The following is provable:
∀X Y Z : set, ∀f g : setset, bij X Y fbij Y Z gbij X Z (λx ⇒ g (f x))
Proof:
Let X, Y, Z, f and g be given.
Assume Hf.
Apply Hf to the current goal.
Assume Hf12 Hf3.
Apply Hf12 to the current goal.
Assume Hf1 Hf2.
Assume Hg.
Apply Hg to the current goal.
Assume Hg12 Hg3.
Apply Hg12 to the current goal.
Assume Hg1 Hg2.
We will prove (uX, g (f u) Z) (u vX, g (f u) = g (f v)u = v) (wZ, uX, g (f u) = w).
Apply and3I to the current goal.
Let u be given.
Assume Hu: u X.
An exact proof term for the current goal is (Hg1 (f u) (Hf1 u Hu)).
Let u be given.
Assume Hu: u X.
Let v be given.
Assume Hv: v X.
Assume H1: g (f u) = g (f v).
We will prove u = v.
Apply Hf2 u Hu v Hv to the current goal.
We will prove f u = f v.
Apply Hg2 (f u) (Hf1 u Hu) (f v) (Hf1 v Hv) to the current goal.
We will prove g (f u) = g (f v).
An exact proof term for the current goal is H1.
Let w be given.
Assume Hw: w Z.
Apply Hg3 w Hw to the current goal.
Let y be given.
Assume Hy12.
Apply Hy12 to the current goal.
Assume Hy1: y Y.
Assume Hy2: g y = w.
Apply Hf3 y Hy1 to the current goal.
Let u be given.
Assume Hu12.
Apply Hu12 to the current goal.
Assume Hu1: u X.
Assume Hu2: f u = y.
We will prove uX, g (f u) = w.
We use u to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hu1.
rewrite the current goal using Hu2 (from left to right).
An exact proof term for the current goal is Hy2.
Theorem. (bij_surj) The following is provable:
∀X Y, ∀f : setset, bij X Y fsurj X Y f
Proof:
Let X, Y and f be given.
Assume H1.
Apply H1 to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1 _ H2.
We will prove (uX, f u Y) (wY, uX, f u = w).
Apply andI to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
Definition. We define inv to be λX f ⇒ λy : setEps_i (λx ⇒ x X f x = y) of type set(setset)setset.
Theorem. (surj_rinv) The following is provable:
∀X Y, ∀f : setset, (wY, uX, f u = w)yY, inv X f y X f (inv X f y) = y
Proof:
Let X, Y and f be given.
Assume H1.
Let y be given.
Assume Hy: y Y.
Apply H1 y Hy to the current goal.
Let x be given.
Assume H2.
An exact proof term for the current goal is Eps_i_ax (λx ⇒ x X f x = y) x H2.
Theorem. (inj_linv) The following is provable:
∀X, ∀f : setset, (u vX, f u = f vu = v)xX, inv X f (f x) = x
Proof:
Let X and f be given.
Assume H1.
Let x be given.
Assume Hx.
We prove the intermediate claim L1: inv X f (f x) X f (inv X f (f x)) = f x.
Apply Eps_i_ax (λx' ⇒ x' X f x' = f x) x to the current goal.
Apply andI to the current goal.
An exact proof term for the current goal is Hx.
Use reflexivity.
Apply L1 to the current goal.
Assume H2 H3.
An exact proof term for the current goal is H1 (inv X f (f x)) H2 x Hx H3.
Theorem. (bij_inv) The following is provable:
∀X Y, ∀f : setset, bij X Y fbij Y X (inv X f)
Proof:
Let X, Y and f be given.
Assume H1.
Apply H1 to the current goal.
Assume H2.
Apply H2 to the current goal.
Assume H3: uX, f u Y.
Assume H4: u vX, f u = f vu = v.
Assume H5: wY, uX, f u = w.
Set g to be the term λy ⇒ Eps_i (λx ⇒ x X f x = y) of type setset.
We prove the intermediate claim L1: yY, g y X f (g y) = y.
An exact proof term for the current goal is surj_rinv X Y f H5.
We will prove (uY, g u X) (u vY, g u = g vu = v) (wX, uY, g u = w).
Apply and3I to the current goal.
We will prove uY, g u X.
Let u be given.
Assume Hu.
Apply L1 u Hu to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We will prove u vY, g u = g vu = v.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv H6.
We will prove u = v.
Apply L1 u Hu to the current goal.
Assume H7: g u X.
Assume H8: f (g u) = u.
Apply L1 v Hv to the current goal.
Assume H9: g v X.
Assume H10: f (g v) = v.
rewrite the current goal using H8 (from right to left).
rewrite the current goal using H10 (from right to left).
rewrite the current goal using H6 (from right to left).
Use reflexivity.
We will prove wX, uY, g u = w.
Let w be given.
Assume Hw.
We prove the intermediate claim Lfw: f w Y.
An exact proof term for the current goal is H3 w Hw.
We use f w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Lfw.
An exact proof term for the current goal is inj_linv X f H4 w Hw.
Definition. We define atleastp to be λX Y : setf : setset, inj X Y f of type setsetprop.
Theorem. (atleastp_tra) The following is provable:
∀X Y Z, atleastp X Yatleastp Y Zatleastp X Z
Proof:
Let X, Y and Z be given.
Assume H1 H2.
Apply H1 to the current goal.
Let f be given.
Assume Hf: inj X Y f.
Apply H2 to the current goal.
Let g be given.
Assume Hg: inj Y Z g.
We will prove h : setset, inj X Z h.
Set h to be the term λx ⇒ g (f x) of type setset.
We use h to witness the existential quantifier.
An exact proof term for the current goal is inj_comp X Y Z f g Hf Hg.
Theorem. (Subq_atleastp) The following is provable:
∀X Y, X Yatleastp X Y
Proof:
Let X and Y be given.
Assume H1: X Y.
Set f to be the term λx ⇒ x of type setset.
We will prove f : setset, inj X Y f.
We use f to witness the existential quantifier.
Apply injI to the current goal.
An exact proof term for the current goal is H1.
Let x be given.
Assume Hx: x X.
Let x' be given.
Assume Hx': x' X.
Assume H2: x = x'.
An exact proof term for the current goal is H2.
Definition. We define equip to be λX Y : setf : setset, bij X Y f of type setsetprop.
Theorem. (equip_atleastp) The following is provable:
∀X Y, equip X Yatleastp X Y
Proof:
Let X and Y be given.
Assume H1.
Apply H1 to the current goal.
Let f be given.
Assume Hf: bij X Y f.
We will prove f : setset, inj X Y f.
We use f to witness the existential quantifier.
An exact proof term for the current goal is bij_inj X Y f Hf.
Theorem. (equip_ref) The following is provable:
∀X, equip X X
Proof:
Let X be given.
We will prove f : setset, bij X X f.
We use (λx : setx) to witness the existential quantifier.
An exact proof term for the current goal is bij_id X.
Theorem. (equip_sym) The following is provable:
∀X Y, equip X Yequip Y X
Proof:
Let X and Y be given.
Assume H1.
Apply H1 to the current goal.
Let f be given.
Assume H2: bij X Y f.
We will prove g : setset, bij Y X g.
We use (inv X f) to witness the existential quantifier.
We will prove bij Y X (inv X f).
An exact proof term for the current goal is bij_inv X Y f H2.
Theorem. (equip_tra) The following is provable:
∀X Y Z, equip X Yequip Y Zequip X Z
Proof:
Let X, Y and Z be given.
Assume H1 H2.
Apply H1 to the current goal.
Let f be given.
Assume H3: bij X Y f.
Apply H2 to the current goal.
Let g be given.
Assume H4: bij Y Z g.
We will prove h : setset, bij X Z h.
We use (λx : setg (f x)) to witness the existential quantifier.
An exact proof term for the current goal is bij_comp X Y Z f g H3 H4.
Theorem. (equip_0_Empty) The following is provable:
∀X, equip X 0X = 0
Proof:
Let X be given.
Assume H1.
Apply Empty_eq to the current goal.
Let x be given.
Assume Hx.
We will prove False.
Apply H1 to the current goal.
Let f be given.
Assume Hf: bij X 0 f.
Apply bijE X 0 f Hf to the current goal.
Assume Hf1: xX, f x 0.
We will prove False.
An exact proof term for the current goal is EmptyE (f x) (Hf1 x Hx).
Theorem. (equip_adjoin_ordsucc) The following is provable:
∀N X y, y Xequip N Xequip (ordsucc N) (X {y})
Proof:
Let N, X and y be given.
Assume H1: y X.
Assume H2: equip N X.
Apply H2 to the current goal.
Let f be given.
Assume Hf: bij N X f.
Apply bijE N X f Hf to the current goal.
Assume Hf1: uN, f u X.
Assume Hf2: u vN, f u = f vu = v.
Assume Hf3: wX, uN, f u = w.
We prove the intermediate claim L1: g : setset, (uN, g u = f u) g N = y.
Set g to be the term λu ⇒ if u N then f u else y of type setset.
We use g to witness the existential quantifier.
Apply andI to the current goal.
Let u be given.
Assume Hu: u N.
We will prove g u = f u.
An exact proof term for the current goal is If_i_1 (u N) (f u) y Hu.
We will prove g N = y.
An exact proof term for the current goal is If_i_0 (N N) (f N) y (In_irref N).
Apply L1 to the current goal.
Let g be given.
Assume H.
Apply H to the current goal.
Assume Hg1: uN, g u = f u.
Assume Hg2: g N = y.
We will prove g : setset, bij (ordsucc N) (X {y}) g.
We use g to witness the existential quantifier.
Apply bijI to the current goal.
Let u be given.
Assume Hu: u ordsucc N.
Apply ordsuccE N u Hu to the current goal.
Assume H3: u N.
We will prove g u X {y}.
Apply binunionI1 to the current goal.
rewrite the current goal using Hg1 u H3 (from left to right).
We will prove f u X.
An exact proof term for the current goal is Hf1 u H3.
Assume H3: u = N.
We will prove g u X {y}.
Apply binunionI2 to the current goal.
We will prove g u {y}.
rewrite the current goal using H3 (from left to right).
rewrite the current goal using Hg2 (from left to right).
We will prove y {y}.
Apply SingI to the current goal.
Let u be given.
Assume Hu: u ordsucc N.
Let v be given.
Assume Hv: v ordsucc N.
We will prove g u = g vu = v.
Apply ordsuccE N u Hu to the current goal.
Assume H3: u N.
rewrite the current goal using Hg1 u H3 (from left to right).
Apply ordsuccE N v Hv to the current goal.
Assume H4: v N.
rewrite the current goal using Hg1 v H4 (from left to right).
We will prove f u = f vu = v.
An exact proof term for the current goal is Hf2 u H3 v H4.
Assume H4: v = N.
rewrite the current goal using H4 (from left to right).
rewrite the current goal using Hg2 (from left to right).
Assume H5: f u = y.
We will prove False.
Apply H1 to the current goal.
We will prove y X.
rewrite the current goal using H5 (from right to left).
An exact proof term for the current goal is Hf1 u H3.
Assume H3: u = N.
Apply ordsuccE N v Hv to the current goal.
Assume H4: v N.
rewrite the current goal using H3 (from left to right).
rewrite the current goal using Hg2 (from left to right).
rewrite the current goal using Hg1 v H4 (from left to right).
Assume H5: y = f v.
We will prove False.
Apply H1 to the current goal.
We will prove y X.
rewrite the current goal using H5 (from left to right).
An exact proof term for the current goal is Hf1 v H4.
Assume H4: v = N.
Assume _.
We will prove u = v.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is H3.
Let w be given.
Assume Hw: w X {y}.
We will prove uordsucc N, g u = w.
Apply binunionE X {y} w Hw to the current goal.
Assume H3: w X.
Apply Hf3 w H3 to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume H4: u N.
Assume H5: f u = w.
We use u to witness the existential quantifier.
Apply andI to the current goal.
We will prove u ordsucc N.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is H4.
We will prove g u = w.
rewrite the current goal using Hg1 u H4 (from left to right).
An exact proof term for the current goal is H5.
Assume H3: w {y}.
We use N to witness the existential quantifier.
Apply andI to the current goal.
We will prove N ordsucc N.
Apply ordsuccI2 to the current goal.
We will prove g N = w.
rewrite the current goal using SingE y w H3 (from left to right).
An exact proof term for the current goal is Hg2.
Theorem. (equip_ordsucc_remove1) The following is provable:
∀X N, xX, equip X (ordsucc N)equip (X {x}) N
Proof:
Let X, N and x be given.
Assume Hx: x X.
Assume H1: equip X (ordsucc N).
Apply equip_sym X (ordsucc N) H1 to the current goal.
Let f be given.
Assume Hf: bij (ordsucc N) X f.
Apply bijE (ordsucc N) X f Hf to the current goal.
Assume Hf1: uordsucc N, f u X.
Assume Hf2: u vordsucc N, f u = f vu = v.
Assume Hf3: yX, uordsucc N, f u = y.
Apply equip_sym to the current goal.
We will prove equip N (X {x}).
Apply Hf3 x Hx to the current goal.
Let w be given.
Assume H.
Apply H to the current goal.
Assume Hw: w ordsucc N.
Assume Hfw: f w = x.
Apply ordsuccE N w Hw to the current goal.
Assume H2: w N.
We prove the intermediate claim L1: f N x.
Assume H3: f N = x.
We prove the intermediate claim L1a: f w = f N.
rewrite the current goal using H3 (from left to right).
An exact proof term for the current goal is Hfw.
Apply In_irref N to the current goal.
We will prove N N.
rewrite the current goal using Hf2 w (ordsuccI1 N w H2) N (ordsuccI2 N) L1a (from right to left) at position 1.
We will prove w N.
An exact proof term for the current goal is H2.
We prove the intermediate claim L2: uN, f u f N.
Let u be given.
Assume Hu: u N.
Assume H3: f u = f N.
Apply In_irref N to the current goal.
We will prove N N.
rewrite the current goal using Hf2 u (ordsuccI1 N u Hu) N (ordsuccI2 N) H3 (from right to left) at position 1.
We will prove u N.
An exact proof term for the current goal is Hu.
We prove the intermediate claim L3: g : setset, (uordsucc N, u wg u = f u) g w = f N.
Set g to be the term λu ⇒ if u = w then f N else f u of type setset.
We use g to witness the existential quantifier.
Apply andI to the current goal.
Let u be given.
Assume Hu: u ordsucc N.
Assume H3: u w.
An exact proof term for the current goal is If_i_0 (u = w) (f N) (f u) H3.
We will prove (if w = w then f N else f w) = f N.
An exact proof term for the current goal is If_i_1 (w = w) (f N) (f w) (λq H ⇒ H).
Apply L3 to the current goal.
Let g be given.
Assume H.
Apply H to the current goal.
Assume Hg1: uordsucc N, u wg u = f u.
Assume Hg2: g w = f N.
We will prove g : setset, bij N (X {x}) g.
We use g to witness the existential quantifier.
Apply bijI to the current goal.
Let u be given.
Assume Hu: u N.
We will prove g u X {x}.
Apply xm (u = w) to the current goal.
Assume H3: u = w.
rewrite the current goal using H3 (from left to right).
rewrite the current goal using Hg2 (from left to right).
We will prove f N X {x}.
Apply setminusI to the current goal.
We will prove f N X.
An exact proof term for the current goal is Hf1 N (ordsuccI2 N).
Assume H4: f N {x}.
Apply L1 to the current goal.
We will prove f N = x.
Apply SingE to the current goal.
An exact proof term for the current goal is H4.
Assume H3: u w.
rewrite the current goal using Hg1 u (ordsuccI1 N u Hu) H3 (from left to right).
We will prove f u X {x}.
Apply setminusI to the current goal.
We will prove f u X.
An exact proof term for the current goal is Hf1 u (ordsuccI1 N u Hu).
Assume H4: f u {x}.
Apply H3 to the current goal.
We will prove u = w.
Apply Hf2 u (ordsuccI1 N u Hu) w Hw to the current goal.
We will prove f u = f w.
rewrite the current goal using Hfw (from left to right).
We will prove f u = x.
Apply SingE to the current goal.
An exact proof term for the current goal is H4.
Let u be given.
Assume Hu: u N.
Let v be given.
Assume Hv: v N.
We will prove g u = g vu = v.
Apply xm (u = w) to the current goal.
Assume H3: u = w.
Apply xm (v = w) to the current goal.
Assume H4: v = w.
Assume _.
We will prove u = v.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is H3.
Assume H4: v w.
rewrite the current goal using H3 (from left to right).
rewrite the current goal using Hg2 (from left to right).
rewrite the current goal using Hg1 v (ordsuccI1 N v Hv) H4 (from left to right).
Assume H5: f N = f v.
We will prove False.
Apply L2 v Hv to the current goal.
We will prove f v = f N.
Use symmetry.
An exact proof term for the current goal is H5.
Assume H3: u w.
rewrite the current goal using Hg1 u (ordsuccI1 N u Hu) H3 (from left to right).
Apply xm (v = w) to the current goal.
Assume H4: v = w.
rewrite the current goal using H4 (from left to right).
rewrite the current goal using Hg2 (from left to right).
Assume H5: f u = f N.
We will prove False.
Apply L2 u Hu to the current goal.
We will prove f u = f N.
An exact proof term for the current goal is H5.
Assume H4: v w.
rewrite the current goal using Hg1 v (ordsuccI1 N v Hv) H4 (from left to right).
We will prove f u = f vu = v.
An exact proof term for the current goal is Hf2 u (ordsuccI1 N u Hu) v (ordsuccI1 N v Hv).
Let y be given.
Assume Hy: y X {x}.
Apply setminusE X {x} y Hy to the current goal.
Assume Hy1: y X.
Assume Hy2: y {x}.
Apply Hf3 y Hy1 to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu1: u ordsucc N.
Assume Hu2: f u = y.
We prove the intermediate claim L4: u w.
Assume H3: u = w.
Apply Hy2 to the current goal.
We will prove y {x}.
rewrite the current goal using Hu2 (from right to left).
rewrite the current goal using Hfw (from right to left).
rewrite the current goal using H3 (from left to right).
Apply SingI to the current goal.
Apply ordsuccE N u Hu1 to the current goal.
Assume H3: u N.
We use u to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H3.
We will prove g u = y.
rewrite the current goal using Hg1 u Hu1 L4 (from left to right).
We will prove f u = y.
An exact proof term for the current goal is Hu2.
Assume H3: u = N.
We use w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H2.
We will prove g w = y.
rewrite the current goal using Hg2 (from left to right).
We will prove f N = y.
rewrite the current goal using H3 (from right to left).
An exact proof term for the current goal is Hu2.
Assume H2: w = N.
We will prove g : setset, bij N (X {x}) g.
We use f to witness the existential quantifier.
Apply bijI to the current goal.
Let u be given.
Assume Hu: u N.
We will prove f u X {x}.
Apply setminusI to the current goal.
An exact proof term for the current goal is Hf1 u (ordsuccI1 N u Hu).
Assume H3: f u {x}.
We prove the intermediate claim L5: u = N.
Apply Hf2 u (ordsuccI1 N u Hu) N (ordsuccI2 N) to the current goal.
We will prove f u = f N.
rewrite the current goal using H2 (from right to left).
rewrite the current goal using Hfw (from left to right).
We will prove f u = x.
Apply SingE to the current goal.
An exact proof term for the current goal is H3.
Apply In_irref N to the current goal.
We will prove N N.
rewrite the current goal using L5 (from right to left) at position 1.
We will prove u N.
An exact proof term for the current goal is Hu.
Let u be given.
Assume Hu: u N.
Let v be given.
Assume Hv: v N.
We will prove f u = f vu = v.
An exact proof term for the current goal is Hf2 u (ordsuccI1 N u Hu) v (ordsuccI1 N v Hv).
Let y be given.
Assume Hy: y X {x}.
Apply setminusE X {x} y Hy to the current goal.
Assume Hy1: y X.
Assume Hy2: y {x}.
Apply Hf3 y Hy1 to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu1: u ordsucc N.
Assume Hu2: f u = y.
We use u to witness the existential quantifier.
Apply andI to the current goal.
We will prove u N.
Apply ordsuccE N u Hu1 to the current goal.
Assume H3: u N.
An exact proof term for the current goal is H3.
Assume H3: u = N.
We will prove False.
Apply Hy2 to the current goal.
We will prove y {x}.
rewrite the current goal using Hu2 (from right to left).
rewrite the current goal using H3 (from left to right).
rewrite the current goal using H2 (from right to left).
We will prove f w {x}.
rewrite the current goal using Hfw (from left to right).
Apply SingI to the current goal.
We will prove f u = y.
An exact proof term for the current goal is Hu2.
Beginning of Section SchroederBernstein
Theorem. (KnasterTarski_set) The following is provable:
∀A, ∀F : setset, (U𝒫 A, F U 𝒫 A)(U V𝒫 A, U VF U F V)Y𝒫 A, F Y = Y
Proof:
Let A and F be given.
Assume H1 H2.
Set Y to be the term {uA|X𝒫 A, F X Xu X} of type set.
We prove the intermediate claim L1: Y 𝒫 A.
Apply Sep_In_Power to the current goal.
We prove the intermediate claim L2: F Y 𝒫 A.
An exact proof term for the current goal is H1 Y L1.
We prove the intermediate claim L3: X𝒫 A, F X XY X.
Let X be given.
Assume HX: X 𝒫 A.
Assume H3: F X X.
Let y be given.
Assume Hy: y Y.
An exact proof term for the current goal is SepE2 A (λu ⇒ X𝒫 A, F X Xu X) y Hy X HX H3.
We prove the intermediate claim L4: F Y Y.
Let u be given.
Assume H3: u F Y.
We will prove u Y.
Apply SepI to the current goal.
We will prove u A.
An exact proof term for the current goal is PowerE A (F Y) L2 u H3.
Let X be given.
Assume HX: X 𝒫 A.
Assume H4: F X X.
We will prove u X.
We prove the intermediate claim L4a: Y X.
An exact proof term for the current goal is L3 X HX H4.
We prove the intermediate claim L4b: F Y F X.
An exact proof term for the current goal is H2 Y L1 X HX L4a.
We will prove u X.
Apply H4 to the current goal.
We will prove u F X.
Apply L4b to the current goal.
An exact proof term for the current goal is H3.
We prove the intermediate claim L5: F (F Y) F Y.
An exact proof term for the current goal is H2 (F Y) L2 Y L1 L4.
We use Y to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is L1.
Apply set_ext to the current goal.
An exact proof term for the current goal is L4.
We will prove Y F Y.
Apply L3 to the current goal.
An exact proof term for the current goal is L2.
An exact proof term for the current goal is L5.
Theorem. (image_In_Power) The following is provable:
∀A B, ∀f : setset, (xA, f x B)U𝒫 A, {f x|xU} 𝒫 B
Proof:
Let A, B and f be given.
Assume Hf.
Let U be given.
Assume HU.
Apply PowerI to the current goal.
Let y be given.
Assume Hy: y {f x|xU}.
Apply ReplE_impred U f y Hy to the current goal.
Let x be given.
Assume Hx: x U.
Assume H1: y = f x.
rewrite the current goal using H1 (from left to right).
Apply Hf to the current goal.
We will prove x A.
Apply PowerE A U HU to the current goal.
An exact proof term for the current goal is Hx.
Theorem. (image_monotone) The following is provable:
∀f : setset, ∀U V, U V{f x|xU} {f x|xV}
Proof:
Let f, U and V be given.
Assume HUV.
Let y be given.
Assume Hy: y {f x|xU}.
Apply ReplE_impred U f y Hy to the current goal.
Let x be given.
Assume Hx: x U.
Assume H1: y = f x.
rewrite the current goal using H1 (from left to right).
We will prove f x {f x|xV}.
Apply ReplI to the current goal.
Apply HUV to the current goal.
An exact proof term for the current goal is Hx.
Theorem. (setminus_antimonotone) The following is provable:
∀A U V, U VA V A U
Proof:
Let A, U and V be given.
Assume HUV.
Let x be given.
Assume Hx.
Apply setminusE A V x Hx to the current goal.
Assume H1 H2.
Apply setminusI to the current goal.
An exact proof term for the current goal is H1.
Assume H3: x U.
Apply H2 to the current goal.
We will prove x V.
An exact proof term for the current goal is HUV x H3.
Theorem. (SchroederBernstein) The following is provable:
∀A B, ∀f g : setset, inj A B finj B A gequip A B
Proof:
Let A, B, f and g be given.
Assume Hf Hg.
Apply Hf to the current goal.
Assume Hf1 Hf2.
Apply Hg to the current goal.
Assume Hg1 Hg2.
Set F to be the term λX ⇒ {g y|yB {f x|xA X}} of type setset.
We prove the intermediate claim L1: U𝒫 A, F U 𝒫 A.
Let U be given.
Assume HU.
We will prove {g y|yB {f x|xA U}} 𝒫 A.
Apply image_In_Power B A g Hg1 to the current goal.
We will prove B {f x|xA U} 𝒫 B.
Apply setminus_In_Power to the current goal.
We prove the intermediate claim L2: U V𝒫 A, U VF U F V.
Let U be given.
Assume HU.
Let V be given.
Assume HV HUV.
We will prove {g y|yB {f x|xA U}} {g y|yB {f x|xA V}}.
Apply image_monotone g to the current goal.
We will prove B {f x|xA U} B {f x|xA V}.
Apply setminus_antimonotone to the current goal.
We will prove {f x|xA V} {f x|xA U}.
Apply image_monotone f to the current goal.
We will prove A V A U.
Apply setminus_antimonotone to the current goal.
An exact proof term for the current goal is HUV.
Apply KnasterTarski_set A F L1 L2 to the current goal.
Let Y be given.
Assume H1.
Apply H1 to the current goal.
Assume H1: Y 𝒫 A.
Assume H2: F Y = Y.
Set h to be the term λx ⇒ if x Y then inv B g x else f x of type setset.
We will prove f : setset, bij A B f.
We use h to witness the existential quantifier.
Apply bijI to the current goal.
Let x be given.
Assume Hx.
We will prove (if x Y then inv B g x else f x) B.
Apply xm (x Y) to the current goal.
Assume H3: x Y.
rewrite the current goal using If_i_1 (x Y) (inv B g x) (f x) H3 (from left to right).
We will prove inv B g x B.
We prove the intermediate claim L1: x F Y.
rewrite the current goal using H2 (from left to right).
An exact proof term for the current goal is H3.
Apply ReplE_impred (B {f x|xA Y}) g x L1 to the current goal.
Let y be given.
Assume H4: y B {f x|xA Y}.
Assume H5: x = g y.
We prove the intermediate claim L2: y B.
An exact proof term for the current goal is setminusE1 B {f x|xA Y} y H4.
rewrite the current goal using H5 (from left to right).
We will prove inv B g (g y) B.
rewrite the current goal using inj_linv B g Hg2 y L2 (from left to right).
We will prove y B.
An exact proof term for the current goal is L2.
Assume H3: x Y.
rewrite the current goal using If_i_0 (x Y) (inv B g x) (f x) H3 (from left to right).
We will prove f x B.
Apply Hf1 to the current goal.
An exact proof term for the current goal is Hx.
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
We will prove (if x Y then inv B g x else f x) = (if y Y then inv B g y else f y)x = y.
Apply xm (x Y) to the current goal.
Assume H3: x Y.
rewrite the current goal using If_i_1 (x Y) (inv B g x) (f x) H3 (from left to right).
We will prove inv B g x = (if y Y then inv B g y else f y)x = y.
We prove the intermediate claim Lx: x F Y.
rewrite the current goal using H2 (from left to right).
An exact proof term for the current goal is H3.
Apply ReplE_impred (B {f x|xA Y}) g x Lx to the current goal.
Let z be given.
Assume Hz1: z B {f x|xA Y}.
Assume Hz2: x = g z.
Apply setminusE B {f x|xA Y} z Hz1 to the current goal.
Assume Hz1a Hz1b.
Apply xm (y Y) to the current goal.
Assume H4: y Y.
rewrite the current goal using If_i_1 (y Y) (inv B g y) (f y) H4 (from left to right).
We will prove inv B g x = inv B g yx = y.
We prove the intermediate claim Ly: y F Y.
rewrite the current goal using H2 (from left to right).
An exact proof term for the current goal is H4.
Apply ReplE_impred (B {f x|xA Y}) g y Ly to the current goal.
Let w be given.
Assume Hw1: w B {f x|xA Y}.
Assume Hw2: y = g w.
rewrite the current goal using Hz2 (from left to right).
rewrite the current goal using Hw2 (from left to right).
rewrite the current goal using inj_linv B g Hg2 z Hz1a (from left to right).
rewrite the current goal using inj_linv B g Hg2 w (setminusE1 B {f x|xA Y} w Hw1) (from left to right).
Assume H5: z = w.
We will prove g z = g w.
Use f_equal.
An exact proof term for the current goal is H5.
Assume H4: y Y.
rewrite the current goal using If_i_0 (y Y) (inv B g y) (f y) H4 (from left to right).
We will prove inv B g x = f yx = y.
rewrite the current goal using Hz2 (from left to right).
rewrite the current goal using inj_linv B g Hg2 z Hz1a (from left to right).
We will prove z = f yg z = y.
Assume H5: z = f y.
We will prove False.
Apply Hz1b to the current goal.
We will prove z {f x|xA Y}.
rewrite the current goal using H5 (from left to right).
Apply ReplI to the current goal.
We will prove y A Y.
Apply setminusI to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is H4.
Assume H3: x Y.
rewrite the current goal using If_i_0 (x Y) (inv B g x) (f x) H3 (from left to right).
We will prove f x = (if y Y then inv B g y else f y)x = y.
Apply xm (y Y) to the current goal.
Assume H4: y Y.
rewrite the current goal using If_i_1 (y Y) (inv B g y) (f y) H4 (from left to right).
We will prove f x = inv B g yx = y.
We prove the intermediate claim Ly: y F Y.
rewrite the current goal using H2 (from left to right).
An exact proof term for the current goal is H4.
Apply ReplE_impred (B {f x|xA Y}) g y Ly to the current goal.
Let w be given.
Assume Hw1: w B {f x|xA Y}.
Assume Hw2: y = g w.
Apply setminusE B {f x|xA Y} w Hw1 to the current goal.
Assume Hw1a Hw1b.
rewrite the current goal using Hw2 (from left to right).
rewrite the current goal using inj_linv B g Hg2 w Hw1a (from left to right).
Assume H5: f x = w.
We will prove False.
Apply Hw1b to the current goal.
We will prove w {f x|xA Y}.
rewrite the current goal using H5 (from right to left).
Apply ReplI to the current goal.
Apply setminusI to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is H3.
Assume H4: y Y.
rewrite the current goal using If_i_0 (y Y) (inv B g y) (f y) H4 (from left to right).
We will prove f x = f yx = y.
An exact proof term for the current goal is Hf2 x Hx y Hy.
Let w be given.
Assume Hw: w B.
Apply xm (w {f x|xA Y}) to the current goal.
Assume H3: w {f x|xA Y}.
Apply ReplE_impred (A Y) f w H3 to the current goal.
Let x be given.
Assume H4: x A Y.
Assume H5: w = f x.
Apply setminusE A Y x H4 to the current goal.
Assume H6: x A.
Assume H7: x Y.
We use x to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H6.
We will prove (if x Y then inv B g x else f x) = w.
rewrite the current goal using If_i_0 (x Y) (inv B g x) (f x) H7 (from left to right).
Use symmetry.
An exact proof term for the current goal is H5.
Assume H3: w {f x|xA Y}.
We prove the intermediate claim Lgw: g w Y.
rewrite the current goal using H2 (from right to left).
We will prove g w F Y.
We will prove g w {g y|yB {f x|xA Y}}.
Apply ReplI to the current goal.
Apply setminusI to the current goal.
We will prove w B.
An exact proof term for the current goal is Hw.
We will prove w {f x|xA Y}.
An exact proof term for the current goal is H3.
We use (g w) to witness the existential quantifier.
Apply andI to the current goal.
We will prove g w A.
Apply Hg1 to the current goal.
An exact proof term for the current goal is Hw.
We will prove (if g w Y then inv B g (g w) else f (g w)) = w.
rewrite the current goal using If_i_1 (g w Y) (inv B g (g w)) (f (g w)) Lgw (from left to right).
An exact proof term for the current goal is inj_linv B g Hg2 w Hw.
Theorem. (atleastp_antisym_equip) The following is provable:
∀A B, atleastp A Batleastp B Aequip A B
Proof:
Let A and B be given.
Assume H1: atleastp A B.
Assume H2: atleastp B A.
Apply H1 to the current goal.
Let f be given.
Assume Hf: inj A B f.
Apply H2 to the current goal.
Let g be given.
Assume Hg: inj B A g.
An exact proof term for the current goal is SchroederBernstein A B f g Hf Hg.
End of Section SchroederBernstein
Beginning of Section PigeonHole
Theorem. (PigeonHole_nat) The following is provable:
∀n, nat_p n∀f : setset, (iordsucc n, f i n)¬ (i jordsucc n, f i = f ji = j)
Proof:
Apply nat_ind (λn ⇒ ∀f : setset, (iordsucc n, f i n)¬ (i jordsucc n, f i = f ji = j)) to the current goal.
We will prove ∀f : setset, (i1, f i 0)¬ (i j1, f i = f ji = j).
Let f be given.
Assume H1.
Apply EmptyE (f 0) (H1 0 In_0_1) to the current goal.
Let n be given.
Assume Hn: nat_p n.
Assume IH: ∀f : setset, (iordsucc n, f i n)¬ (i jordsucc n, f i = f ji = j).
Let f be given.
Assume H1: iordsucc (ordsucc n), f i ordsucc n.
Assume H2: i jordsucc (ordsucc n), f i = f ji = j.
Apply xm (iordsucc (ordsucc n), f i = n) to the current goal.
Assume H3.
Apply H3 to the current goal.
Let k be given.
Assume Hk.
Apply Hk to the current goal.
Assume Hk1: k ordsucc (ordsucc n).
Assume Hk2: f k = n.
Set f' to be the term λi : setif k i then f (ordsucc i) else f i.
Apply IH f' to the current goal.
We will prove iordsucc n, f' i n.
Let i be given.
Assume Hi: i ordsucc n.
Apply xm (k i) to the current goal.
Assume H4: k i.
We will prove (if k i then f (ordsucc i) else f i) n.
rewrite the current goal using If_i_1 (k i) (f (ordsucc i)) (f i) H4 (from left to right).
We will prove f (ordsucc i) n.
We prove the intermediate claim L1: ordsucc i ordsucc (ordsucc n).
Apply nat_ordsucc_in_ordsucc to the current goal.
Apply nat_ordsucc to the current goal.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is Hi.
Apply ordsuccE n (f (ordsucc i)) (H1 (ordsucc i) L1) to the current goal.
Assume H5: f (ordsucc i) n.
An exact proof term for the current goal is H5.
Assume H5: f (ordsucc i) = n.
We will prove False.
Apply In_irref i to the current goal.
We will prove i i.
We prove the intermediate claim L2: k = ordsucc i.
Apply H2 to the current goal.
An exact proof term for the current goal is Hk1.
An exact proof term for the current goal is L1.
rewrite the current goal using H5 (from left to right).
An exact proof term for the current goal is Hk2.
We prove the intermediate claim L3: i k.
rewrite the current goal using L2 (from left to right).
Apply ordsuccI2 to the current goal.
An exact proof term for the current goal is H4 i L3.
Assume H4: ¬ (k i).
We will prove (if k i then f (ordsucc i) else f i) n.
rewrite the current goal using If_i_0 (k i) (f (ordsucc i)) (f i) H4 (from left to right).
We will prove f i n.
Apply ordsuccE n (f i) (H1 i (ordsuccI1 (ordsucc n) i Hi)) to the current goal.
Assume H5: f i n.
An exact proof term for the current goal is H5.
Assume H5: f i = n.
We will prove False.
Apply H4 to the current goal.
We will prove k i.
We prove the intermediate claim L2: k = i.
Apply H2 to the current goal.
An exact proof term for the current goal is Hk1.
An exact proof term for the current goal is ordsuccI1 (ordsucc n) i Hi.
rewrite the current goal using H5 (from left to right).
An exact proof term for the current goal is Hk2.
rewrite the current goal using L2 (from right to left).
An exact proof term for the current goal is (λx Hx ⇒ Hx).
We will prove i jordsucc n, f' i = f' ji = j.
Let i be given.
Assume Hi.
Let j be given.
Assume Hj.
We will prove (if k i then f (ordsucc i) else f i) = (if k j then f (ordsucc j) else f j)i = j.
We prove the intermediate claim Li1: i ordsucc (ordsucc n).
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
We prove the intermediate claim Li2: ordsucc i ordsucc (ordsucc n).
Apply nat_ordsucc_in_ordsucc to the current goal.
Apply nat_ordsucc to the current goal.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is Hi.
We prove the intermediate claim Lj1: j ordsucc (ordsucc n).
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hj.
We prove the intermediate claim Lj2: ordsucc j ordsucc (ordsucc n).
Apply nat_ordsucc_in_ordsucc to the current goal.
Apply nat_ordsucc to the current goal.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is Hj.
Apply xm (k i) to the current goal.
Assume H4: k i.
rewrite the current goal using If_i_1 (k i) (f (ordsucc i)) (f i) H4 (from left to right).
Apply xm (k j) to the current goal.
Assume H5: k j.
rewrite the current goal using If_i_1 (k j) (f (ordsucc j)) (f j) H5 (from left to right).
We will prove f (ordsucc i) = f (ordsucc j)i = j.
Assume H6.
Apply ordsucc_inj to the current goal.
We will prove ordsucc i = ordsucc j.
An exact proof term for the current goal is H2 (ordsucc i) Li2 (ordsucc j) Lj2 H6.
Assume H5: ¬ (k j).
rewrite the current goal using If_i_0 (k j) (f (ordsucc j)) (f j) H5 (from left to right).
We will prove f (ordsucc i) = f ji = j.
Assume H6.
We will prove False.
We prove the intermediate claim L3: ordsucc i = j.
Apply H2 to the current goal.
An exact proof term for the current goal is Li2.
An exact proof term for the current goal is Lj1.
An exact proof term for the current goal is H6.
Apply H5 to the current goal.
rewrite the current goal using L3 (from right to left).
Let x be given.
Assume Hx: x k.
Apply ordsuccI1 to the current goal.
Apply H4 to the current goal.
An exact proof term for the current goal is Hx.
Assume H4: ¬ (k i).
rewrite the current goal using If_i_0 (k i) (f (ordsucc i)) (f i) H4 (from left to right).
Apply xm (k j) to the current goal.
Assume H5: k j.
rewrite the current goal using If_i_1 (k j) (f (ordsucc j)) (f j) H5 (from left to right).
We will prove f i = f (ordsucc j)i = j.
Assume H6.
We will prove False.
We prove the intermediate claim L3: i = ordsucc j.
Apply H2 to the current goal.
An exact proof term for the current goal is Li1.
An exact proof term for the current goal is Lj2.
An exact proof term for the current goal is H6.
Apply H4 to the current goal.
rewrite the current goal using L3 (from left to right).
Let x be given.
Assume Hx: x k.
Apply ordsuccI1 to the current goal.
Apply H5 to the current goal.
An exact proof term for the current goal is Hx.
Assume H5: ¬ (k j).
rewrite the current goal using If_i_0 (k j) (f (ordsucc j)) (f j) H5 (from left to right).
We will prove f i = f ji = j.
Apply H2 to the current goal.
An exact proof term for the current goal is Li1.
An exact proof term for the current goal is Lj1.
Assume H3: ¬ (iordsucc (ordsucc n), f i = n).
Apply IH f to the current goal.
We will prove iordsucc n, f i n.
Let i be given.
Assume Hi: i ordsucc n.
Apply ordsuccE n (f i) (H1 i (ordsuccI1 (ordsucc n) i Hi)) to the current goal.
Assume Hfi: f i n.
An exact proof term for the current goal is Hfi.
Assume Hfi: f i = n.
Apply H3 to the current goal.
We use i to witness the existential quantifier.
Apply andI to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
An exact proof term for the current goal is Hfi.
We will prove i jordsucc n, f i = f ji = j.
Let i be given.
Assume Hi.
Let j be given.
Assume Hj.
Apply H2 to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hj.
Theorem. (Pigeonhole_not_atleastp_ordsucc) The following is provable:
∀n, nat_p n¬ atleastp (ordsucc n) n
Proof:
Let n be given.
Assume Hn.
Assume H1.
Apply H1 to the current goal.
Let f be given.
Assume Hf: inj (ordsucc n) n f.
Apply Hf to the current goal.
Assume Hf1 Hf2.
An exact proof term for the current goal is PigeonHole_nat n Hn f Hf1 Hf2.
End of Section PigeonHole
Theorem. (Union_ordsucc_eq) The following is provable:
∀n, nat_p n (ordsucc n) = n
Proof:
Apply nat_complete_ind to the current goal.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: mn, (ordsucc m) = m.
We will prove (ordsucc n) = n.
Apply set_ext to the current goal.
Let m be given.
Assume Hm: m (ordsucc n).
Apply (UnionE_impred (ordsucc n) m Hm) to the current goal.
Let k be given.
Assume H1: m k.
Assume H2: k ordsucc n.
We will prove m n.
An exact proof term for the current goal is nat_ordsucc_trans n Hn k H2 m H1.
Let m be given.
Assume Hm: m n.
We will prove m (ordsucc n).
Apply (UnionI (ordsucc n) m n) to the current goal.
An exact proof term for the current goal is Hm.
An exact proof term for the current goal is (ordsuccI2 n).
Theorem. (cases_1) The following is provable:
i1, ∀p : setprop, p 0p i
Proof:
Let i be given.
Assume Hi.
Let p be given.
Assume Hp0.
Apply ordsuccE 0 i Hi to the current goal.
Assume Hil: i 0.
Apply EmptyE i Hil to the current goal.
Assume Hie: i = 0.
rewrite the current goal using Hie (from left to right).
An exact proof term for the current goal is Hp0.
Theorem. (cases_2) The following is provable:
i2, ∀p : setprop, p 0p 1p i
Proof:
Let i be given.
Assume Hi.
Let p be given.
Assume Hp0 Hp1.
Apply ordsuccE 1 i Hi to the current goal.
Assume Hil: i 1.
An exact proof term for the current goal is cases_1 i Hil p Hp0.
Assume Hie: i = 1.
rewrite the current goal using Hie (from left to right).
An exact proof term for the current goal is Hp1.
Theorem. (neq_0_1) The following is provable:
Proof:
An exact proof term for the current goal is (neq_0_ordsucc 0).
Theorem. (neq_1_0) The following is provable:
Proof:
An exact proof term for the current goal is (neq_ordsucc_0 0).
Theorem. (neq_0_2) The following is provable:
Proof:
An exact proof term for the current goal is (neq_0_ordsucc 1).
Theorem. (neq_2_0) The following is provable:
Proof:
An exact proof term for the current goal is (neq_ordsucc_0 1).
Definition. We define ordinal to be λalpha : setTransSet alpha betaalpha, TransSet beta of type setprop.
Theorem. (ordinal_TransSet) The following is provable:
∀alpha : set, ordinal alphaTransSet alpha
Proof:
An exact proof term for the current goal is (λalpha H ⇒ andEL (TransSet alpha) (betaalpha, TransSet beta) H).
Theorem. (ordinal_Empty) The following is provable:
Proof:
Apply andI to the current goal.
Let x be given.
Assume Hx: x Empty.
We will prove False.
An exact proof term for the current goal is (EmptyE x Hx).
Let x be given.
Assume Hx: x Empty.
We will prove False.
An exact proof term for the current goal is (EmptyE x Hx).
Theorem. (ordinal_Hered) The following is provable:
∀alpha : set, ordinal alphabetaalpha, ordinal beta
Proof:
Let alpha be given.
Assume H1: TransSet alpha xalpha, TransSet x.
Let beta be given.
Assume H2: beta alpha.
We will prove TransSet beta xbeta, TransSet x.
Apply H1 to the current goal.
Assume H3: TransSet alpha.
Assume H4: xalpha, TransSet x.
Apply andI to the current goal.
An exact proof term for the current goal is (H4 beta H2).
We will prove xbeta, TransSet x.
Let x be given.
Assume Hx: x beta.
We prove the intermediate claim L1: x alpha.
An exact proof term for the current goal is (H3 beta H2 x Hx).
We will prove TransSet x.
An exact proof term for the current goal is (H4 x L1).
Theorem. (TransSet_ordsucc) The following is provable:
∀X : set, TransSet XTransSet (ordsucc X)
Proof:
Let X be given.
Assume H1: TransSet X.
Let x be given.
Assume H2: x ordsucc X.
Let y be given.
Assume H3: y x.
We will prove y ordsucc X.
Apply (ordsuccE X x H2) to the current goal.
Assume H4: x X.
Apply ordsuccI1 to the current goal.
We will prove y X.
An exact proof term for the current goal is (H1 x H4 y H3).
Assume H4: x = X.
Apply ordsuccI1 to the current goal.
We will prove y X.
rewrite the current goal using H4 (from right to left).
We will prove y x.
An exact proof term for the current goal is H3.
Theorem. (ordinal_ordsucc) The following is provable:
∀alpha : set, ordinal alphaordinal (ordsucc alpha)
Proof:
Let alpha be given.
Assume H1: TransSet alpha betaalpha, TransSet beta.
Apply H1 to the current goal.
Assume H2: TransSet alpha.
Assume H3: betaalpha, TransSet beta.
We will prove TransSet (ordsucc alpha) betaordsucc alpha, TransSet beta.
Apply andI to the current goal.
An exact proof term for the current goal is (TransSet_ordsucc alpha H2).
Let beta be given.
Assume H4: beta ordsucc alpha.
We will prove TransSet beta.
Apply (ordsuccE alpha beta H4) to the current goal.
Assume H5: beta alpha.
An exact proof term for the current goal is (H3 beta H5).
Assume H5: beta = alpha.
rewrite the current goal using H5 (from left to right).
An exact proof term for the current goal is H2.
Theorem. (nat_p_ordinal) The following is provable:
∀n : set, nat_p nordinal n
Proof:
Apply nat_ind to the current goal.
We will prove ordinal 0.
An exact proof term for the current goal is ordinal_Empty.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: ordinal n.
We will prove ordinal (ordsucc n).
An exact proof term for the current goal is (ordinal_ordsucc n IHn).
Theorem. (ordinal_1) The following is provable:
Proof:
An exact proof term for the current goal is nat_p_ordinal 1 nat_1.
Theorem. (ordinal_2) The following is provable:
Proof:
An exact proof term for the current goal is nat_p_ordinal 2 nat_2.
Theorem. (TransSet_ordsucc_In_Subq) The following is provable:
∀X : set, TransSet XxX, ordsucc x X
Proof:
Let X be given.
Assume H1: TransSet X.
Let x be given.
Assume H2: x X.
Let y be given.
Assume H3: y ordsucc x.
We will prove y X.
Apply (ordsuccE x y H3) to the current goal.
Assume H4: y x.
An exact proof term for the current goal is (H1 x H2 y H4).
Assume H4: y = x.
rewrite the current goal using H4 (from left to right).
We will prove x X.
An exact proof term for the current goal is H2.
Theorem. (ordinal_ordsucc_In_Subq) The following is provable:
∀alpha, ordinal alphabetaalpha, ordsucc beta alpha
Proof:
Let alpha be given.
Assume H: ordinal alpha.
An exact proof term for the current goal is (TransSet_ordsucc_In_Subq alpha (ordinal_TransSet alpha H)).
Theorem. (ordinal_trichotomy_or) The following is provable:
∀alpha beta : set, ordinal alphaordinal betaalpha beta alpha = beta beta alpha
Proof:
Apply In_ind to the current goal.
Let alpha be given.
Assume IHalpha: gammaalpha, ∀beta : set, ordinal gammaordinal betagamma beta gamma = beta beta gamma.
We will prove ∀beta : set, ordinal alphaordinal betaalpha beta alpha = beta beta alpha.
Apply In_ind to the current goal.
Let beta be given.
Assume IHbeta: deltabeta, ordinal alphaordinal deltaalpha delta alpha = delta delta alpha.
Assume Halpha: ordinal alpha.
Assume Hbeta: ordinal beta.
We will prove alpha beta alpha = beta beta alpha.
Apply (xm (alpha beta)) to the current goal.
Assume H1: alpha beta.
Apply or3I1 to the current goal.
An exact proof term for the current goal is H1.
Assume H1: alpha beta.
Apply (xm (beta alpha)) to the current goal.
Assume H2: beta alpha.
Apply or3I3 to the current goal.
An exact proof term for the current goal is H2.
Assume H2: beta alpha.
Apply or3I2 to the current goal.
We will prove alpha = beta.
Apply set_ext to the current goal.
We will prove alpha beta.
Let gamma be given.
Assume H3: gamma alpha.
We will prove gamma beta.
We prove the intermediate claim Lgamma: ordinal gamma.
An exact proof term for the current goal is (ordinal_Hered alpha Halpha gamma H3).
Apply (or3E (gamma beta) (gamma = beta) (beta gamma) (IHalpha gamma H3 beta Lgamma Hbeta)) to the current goal.
Assume H4: gamma beta.
An exact proof term for the current goal is H4.
Assume H4: gamma = beta.
We will prove False.
Apply H2 to the current goal.
We will prove beta alpha.
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is H3.
Assume H4: beta gamma.
We will prove False.
Apply H2 to the current goal.
We will prove beta alpha.
An exact proof term for the current goal is (ordinal_TransSet alpha Halpha gamma H3 beta H4).
We will prove beta alpha.
Let delta be given.
Assume H3: delta beta.
We will prove delta alpha.
We prove the intermediate claim Ldelta: ordinal delta.
An exact proof term for the current goal is (ordinal_Hered beta Hbeta delta H3).
Apply (or3E (alpha delta) (alpha = delta) (delta alpha) (IHbeta delta H3 Halpha Ldelta)) to the current goal.
Assume H4: alpha delta.
We will prove False.
Apply H1 to the current goal.
We will prove alpha beta.
An exact proof term for the current goal is (ordinal_TransSet beta Hbeta delta H3 alpha H4).
Assume H4: alpha = delta.
We will prove False.
Apply H1 to the current goal.
We will prove alpha beta.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is H3.
Assume H4: delta alpha.
An exact proof term for the current goal is H4.
Theorem. (ordinal_trichotomy_or_impred) The following is provable:
∀alpha beta : set, ordinal alphaordinal beta∀p : prop, (alpha betap)(alpha = betap)(beta alphap)p
Proof:
Let alpha and beta be given.
Assume H1 H2.
An exact proof term for the current goal is (or3E (alpha beta) (alpha = beta) (beta alpha) (ordinal_trichotomy_or alpha beta H1 H2)).
Theorem. (ordinal_In_Or_Subq) The following is provable:
∀alpha beta, ordinal alphaordinal betaalpha beta beta alpha
Proof:
Let alpha and beta be given.
Assume H1: ordinal alpha.
Assume H2: ordinal beta.
Apply (or3E (alpha beta) (alpha = beta) (beta alpha) (ordinal_trichotomy_or alpha beta H1 H2)) to the current goal.
Assume H3: alpha beta.
Apply orIL to the current goal.
An exact proof term for the current goal is H3.
Assume H3: alpha = beta.
Apply orIR to the current goal.
rewrite the current goal using H3 (from left to right).
Apply Subq_ref to the current goal.
Assume H3: beta alpha.
Apply orIR to the current goal.
An exact proof term for the current goal is (ordinal_TransSet alpha H1 beta H3).
Theorem. (ordinal_linear) The following is provable:
∀alpha beta, ordinal alphaordinal betaalpha beta beta alpha
Proof:
Let alpha and beta be given.
Assume H1: ordinal alpha.
Assume H2: ordinal beta.
Apply (ordinal_In_Or_Subq alpha beta H1 H2) to the current goal.
Assume H3: alpha beta.
Apply orIL to the current goal.
An exact proof term for the current goal is (ordinal_TransSet beta H2 alpha H3).
Assume H3: beta alpha.
Apply orIR to the current goal.
An exact proof term for the current goal is H3.
Theorem. (ordinal_ordsucc_In_eq) The following is provable:
∀alpha beta, ordinal alphabeta alphaordsucc beta alpha alpha = ordsucc beta
Proof:
Let alpha and beta be given.
Assume Ha Hb.
We prove the intermediate claim L1: ordinal (ordsucc beta).
An exact proof term for the current goal is ordinal_ordsucc beta (ordinal_Hered alpha Ha beta Hb).
Apply ordinal_trichotomy_or alpha (ordsucc beta) Ha L1 to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H2: alpha ordsucc beta.
We will prove False.
Apply ordsuccE beta alpha H2 to the current goal.
Assume H3: alpha beta.
An exact proof term for the current goal is In_no2cycle alpha beta H3 Hb.
Assume H3: alpha = beta.
Apply In_irref alpha to the current goal.
rewrite the current goal using H3 (from left to right) at position 1.
An exact proof term for the current goal is Hb.
Assume H2: alpha = ordsucc beta.
Apply orIR to the current goal.
An exact proof term for the current goal is H2.
Assume H2: ordsucc beta alpha.
Apply orIL to the current goal.
An exact proof term for the current goal is H2.
Theorem. (ordinal_lim_or_succ) The following is provable:
∀alpha, ordinal alpha(betaalpha, ordsucc beta alpha) (betaalpha, alpha = ordsucc beta)
Proof:
Let alpha be given.
Assume Ha.
Apply xm (betaalpha, alpha = ordsucc beta) to the current goal.
Assume H1.
Apply orIR to the current goal.
An exact proof term for the current goal is H1.
Assume H1: ¬ betaalpha, alpha = ordsucc beta.
Apply orIL to the current goal.
Let beta be given.
Assume H2: beta alpha.
Apply ordinal_ordsucc_In_eq alpha beta Ha H2 to the current goal.
Assume H3: ordsucc beta alpha.
An exact proof term for the current goal is H3.
Assume H3: alpha = ordsucc beta.
We will prove False.
Apply H1 to the current goal.
We use beta to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H2.
An exact proof term for the current goal is H3.
Theorem. (ordinal_ordsucc_In) The following is provable:
∀alpha, ordinal alphabetaalpha, ordsucc beta ordsucc alpha
Proof:
Let alpha be given.
Assume Ha.
Let beta be given.
Assume Hb.
We prove the intermediate claim L1: ordsucc beta alpha.
An exact proof term for the current goal is ordinal_ordsucc_In_Subq alpha Ha beta Hb.
Apply ordinal_In_Or_Subq (ordsucc beta) alpha (ordinal_ordsucc beta (ordinal_Hered alpha Ha beta Hb)) Ha to the current goal.
Assume H1: ordsucc beta alpha.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is H1.
Assume H1: alpha ordsucc beta.
We prove the intermediate claim L2: ordsucc beta = alpha.
Apply set_ext to the current goal.
An exact proof term for the current goal is L1.
An exact proof term for the current goal is H1.
rewrite the current goal using L2 (from left to right).
Apply ordsuccI2 to the current goal.
Theorem. (ordinal_famunion) The following is provable:
∀X, ∀F : setset, (xX, ordinal (F x))ordinal (xXF x)
Proof:
Let X and F be given.
Assume HXF.
We will prove TransSet (xXF x) y(xXF x), TransSet y.
Apply andI to the current goal.
Let y be given.
Assume Hy: y xXF x.
Apply famunionE X F y Hy to the current goal.
Let x be given.
Assume H1.
Apply H1 to the current goal.
Assume Hx: x X.
Assume Hy: y F x.
We will prove y xXF x.
We prove the intermediate claim LFx: ordinal (F x).
An exact proof term for the current goal is HXF x Hx.
Apply LFx to the current goal.
Assume HFx1 _.
Let z be given.
Assume Hz: z y.
We will prove z xXF x.
We prove the intermediate claim LzFx: z F x.
An exact proof term for the current goal is HFx1 y Hy z Hz.
An exact proof term for the current goal is famunionI X F x z Hx LzFx.
Let y be given.
Assume Hy: y xXF x.
We will prove TransSet y.
Apply famunionE X F y Hy to the current goal.
Let x be given.
Assume H1.
Apply H1 to the current goal.
Assume Hx: x X.
Assume Hy: y F x.
We prove the intermediate claim LFx: ordinal (F x).
An exact proof term for the current goal is HXF x Hx.
We prove the intermediate claim Ly: ordinal y.
An exact proof term for the current goal is ordinal_Hered (F x) LFx y Hy.
Apply Ly to the current goal.
Assume Hy1 _.
An exact proof term for the current goal is Hy1.
Theorem. (ordinal_binintersect) The following is provable:
∀alpha beta, ordinal alphaordinal betaordinal (alpha beta)
Proof:
Let alpha and beta be given.
Assume Ha Hb.
Apply Ha to the current goal.
Assume Ha1 _.
Apply Hb to the current goal.
Assume Hb1 _.
Apply ordinal_In_Or_Subq alpha beta Ha Hb to the current goal.
Assume H1: alpha beta.
rewrite the current goal using binintersect_Subq_eq_1 alpha beta (Hb1 alpha H1) (from left to right).
An exact proof term for the current goal is Ha.
Assume H1: beta alpha.
rewrite the current goal using binintersect_com (from left to right).
rewrite the current goal using binintersect_Subq_eq_1 beta alpha H1 (from left to right).
An exact proof term for the current goal is Hb.
Theorem. (ordinal_binunion) The following is provable:
∀alpha beta, ordinal alphaordinal betaordinal (alpha beta)
Proof:
Let alpha and beta be given.
Assume Ha Hb.
Apply Ha to the current goal.
Assume Ha1 _.
Apply Hb to the current goal.
Assume Hb1 _.
Apply ordinal_linear alpha beta Ha Hb to the current goal.
rewrite the current goal using Subq_binunion_eq (from left to right).
Assume H1: alpha beta = beta.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is Hb.
rewrite the current goal using Subq_binunion_eq (from left to right).
rewrite the current goal using binunion_com (from left to right).
Assume H1: alpha beta = alpha.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is Ha.
Theorem. (ordinal_ind) The following is provable:
∀p : setprop, (∀alpha, ordinal alpha(betaalpha, p beta)p alpha)∀alpha, ordinal alphap alpha
Proof:
Let p be given.
Assume H1: ∀alpha, ordinal alpha(betaalpha, p beta)p alpha.
Apply In_ind to the current goal.
Let alpha be given.
Assume IH: betaalpha, ordinal betap beta.
Assume H2: ordinal alpha.
We will prove p alpha.
Apply (H1 alpha H2) to the current goal.
Let beta be given.
Assume H3: beta alpha.
We will prove p beta.
Apply (IH beta H3) to the current goal.
We will prove ordinal beta.
An exact proof term for the current goal is (ordinal_Hered alpha H2 beta H3).
Theorem. (least_ordinal_ex) The following is provable:
∀p : setprop, (alpha, ordinal alpha p alpha)alpha, ordinal alpha p alpha betaalpha, ¬ p beta
Proof:
Let p be given.
Assume H1.
Apply dneg to the current goal.
Assume H2: ¬ alpha, ordinal alpha p alpha betaalpha, ¬ p beta.
We prove the intermediate claim L1: ∀alpha, ordinal alpha¬ p alpha.
Apply ordinal_ind to the current goal.
Let alpha be given.
Assume Ha.
Assume IH: betaalpha, ¬ p beta.
Assume H3: p alpha.
Apply H2 to the current goal.
We use alpha to witness the existential quantifier.
Apply and3I to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is IH.
Apply H1 to the current goal.
Let alpha be given.
Assume H1a.
Apply H1a to the current goal.
Assume Ha: ordinal alpha.
Assume Hp: p alpha.
An exact proof term for the current goal is L1 alpha Ha Hp.
Theorem. (equip_Sing_1) The following is provable:
∀x, equip {x} 1
Proof:
Let x be given.
We will prove f : setset, bij {x} 1 f.
We use (λ_ : set0) to witness the existential quantifier.
Apply bijI {x} 1 (λ_ ⇒ 0) to the current goal.
Let y be given.
Assume _.
We will prove 0 1.
An exact proof term for the current goal is In_0_1.
Let y be given.
Assume Hy.
Let z be given.
Assume Hz _.
We will prove y = z.
rewrite the current goal using SingE x z Hz (from left to right).
We will prove y = x.
An exact proof term for the current goal is SingE x y Hy.
Let w be given.
Assume Hw: w 1.
We will prove y{x}, 0 = w.
We use x to witness the existential quantifier.
Apply andI to the current goal.
Apply SingI to the current goal.
We will prove 0 = w.
Apply cases_1 w Hw (λw ⇒ 0 = w) to the current goal.
We will prove 0 = 0.
Use reflexivity.
Theorem. (TransSet_In_ordsucc_Subq) The following is provable:
∀x y, TransSet yx ordsucc yx y
Proof:
Let x and y be given.
Assume H1 H2.
Apply ordsuccE y x H2 to the current goal.
Assume H3: x y.
An exact proof term for the current goal is H1 x H3.
Assume H3: x = y.
rewrite the current goal using H3 (from left to right).
Apply Subq_ref to the current goal.
Theorem. (exandE_i) The following is provable:
∀P Q : setprop, (x, P x Q x)∀r : prop, (∀x, P xQ xr)r
Proof:
Let P and Q be given.
Assume H1.
Let r be given.
Assume Hr.
Apply H1 to the current goal.
Let x be given.
Assume H2.
Apply H2 to the current goal.
An exact proof term for the current goal is Hr x.
Theorem. (exandE_ii) The following is provable:
∀P Q : (setset)prop, (x : setset, P x Q x)∀p : prop, (∀x : setset, P xQ xp)p
Proof:
Let P and Q be given.
Assume H.
Let p be given.
Assume Hp.
Apply H to the current goal.
Let x be given.
Assume H0.
Apply H0 to the current goal.
Assume H1 H2.
An exact proof term for the current goal is Hp x H1 H2.
Theorem. (exandE_iii) The following is provable:
∀P Q : (setsetset)prop, (x : setsetset, P x Q x)∀p : prop, (∀x : setsetset, P xQ xp)p
Proof:
Let P and Q be given.
Assume H.
Let p be given.
Assume Hp.
Apply H to the current goal.
Let x be given.
Assume H0.
Apply H0 to the current goal.
Assume H1 H2.
An exact proof term for the current goal is Hp x H1 H2.
Theorem. (exandE_iiii) The following is provable:
∀P Q : (setsetsetset)prop, (x : setsetsetset, P x Q x)∀p : prop, (∀x : setsetsetset, P xQ xp)p
Proof:
Let P and Q be given.
Assume H.
Let p be given.
Assume Hp.
Apply H to the current goal.
Let x be given.
Assume H0.
Apply H0 to the current goal.
Assume H1 H2.
An exact proof term for the current goal is Hp x H1 H2.
Beginning of Section Descr_ii
Variable P : (setset)prop
Definition. We define Descr_ii to be λx : setEps_i (λy ⇒ ∀h : setset, P hh x = y) of type setset.
Hypothesis Pex : f : setset, P f
Hypothesis Puniq : ∀f g : setset, P fP gf = g
Theorem. (Descr_ii_prop) The following is provable:
Proof:
Apply Pex to the current goal.
Let f be given.
Assume Hf: P f.
We prove the intermediate claim L1: f = Descr_ii.
Apply func_ext set set to the current goal.
Let x be given.
We will prove f x = Descr_ii x.
We will prove f x = Eps_i (λy ⇒ ∀h : setset, P hh x = y).
We prove the intermediate claim L2: ∀h : setset, P hh x = f x.
Let h be given.
Assume Hh.
rewrite the current goal using Puniq f h Hf Hh (from left to right).
An exact proof term for the current goal is (λq H ⇒ H).
We prove the intermediate claim L3: ∀h : setset, P hh x = Descr_ii x.
An exact proof term for the current goal is Eps_i_ax (λy ⇒ ∀h : setset, P hh x = y) (f x) L2.
An exact proof term for the current goal is L3 f Hf.
rewrite the current goal using L1 (from right to left).
An exact proof term for the current goal is Hf.
End of Section Descr_ii
Beginning of Section Descr_iii
Variable P : (setsetset)prop
Definition. We define Descr_iii to be λx y : setEps_i (λz ⇒ ∀h : setsetset, P hh x y = z) of type setsetset.
Hypothesis Pex : f : setsetset, P f
Hypothesis Puniq : ∀f g : setsetset, P fP gf = g
Theorem. (Descr_iii_prop) The following is provable:
Proof:
Apply Pex to the current goal.
Let f be given.
Assume Hf: P f.
We prove the intermediate claim L1: f = Descr_iii.
Apply func_ext set (setset) to the current goal.
Let x be given.
Apply func_ext set set to the current goal.
Let y be given.
We will prove f x y = Descr_iii x y.
We will prove f x y = Eps_i (λz ⇒ ∀h : setsetset, P hh x y = z).
We prove the intermediate claim L2: ∀h : setsetset, P hh x y = f x y.
Let h be given.
Assume Hh.
rewrite the current goal using Puniq f h Hf Hh (from left to right).
An exact proof term for the current goal is (λq H ⇒ H).
We prove the intermediate claim L3: ∀h : setsetset, P hh x y = Descr_iii x y.
An exact proof term for the current goal is Eps_i_ax (λz ⇒ ∀h : setsetset, P hh x y = z) (f x y) L2.
An exact proof term for the current goal is L3 f Hf.
rewrite the current goal using L1 (from right to left).
An exact proof term for the current goal is Hf.
End of Section Descr_iii
Beginning of Section Descr_Vo1
Variable P : Vo 1prop
Definition. We define Descr_Vo1 to be λx : set∀h : setprop, P hh x of type Vo 1.
Hypothesis Pex : f : Vo 1, P f
Hypothesis Puniq : ∀f g : Vo 1, P fP gf = g
Theorem. (Descr_Vo1_prop) The following is provable:
Proof:
Apply Pex to the current goal.
Let f be given.
Assume Hf: P f.
We prove the intermediate claim L1: f = Descr_Vo1.
Apply func_ext set prop to the current goal.
Let x be given.
We will prove f x = Descr_Vo1 x.
Apply prop_ext_2 to the current goal.
Assume H1: f x.
Let h be given.
Assume Hh: P h.
We will prove h x.
rewrite the current goal using Puniq f h Hf Hh (from right to left).
An exact proof term for the current goal is H1.
Assume H1: Descr_Vo1 x.
An exact proof term for the current goal is H1 f Hf.
rewrite the current goal using L1 (from right to left).
An exact proof term for the current goal is Hf.
End of Section Descr_Vo1
Beginning of Section If_ii
Variable p : prop
Variable f g : setset
Definition. We define If_ii to be λx ⇒ if p then f x else g x of type setset.
Theorem. (If_ii_1) The following is provable:
pIf_ii = f
Proof:
Assume H1.
Apply func_ext set set to the current goal.
Let x be given.
We will prove If_ii x = f x.
An exact proof term for the current goal is If_i_1 p (f x) (g x) H1.
Theorem. (If_ii_0) The following is provable:
¬ pIf_ii = g
Proof:
Assume H1.
Apply func_ext set set to the current goal.
Let x be given.
We will prove If_ii x = g x.
An exact proof term for the current goal is If_i_0 p (f x) (g x) H1.
End of Section If_ii
Beginning of Section If_iii
Variable p : prop
Variable f g : setsetset
Definition. We define If_iii to be λx y ⇒ if p then f x y else g x y of type setsetset.
Theorem. (If_iii_1) The following is provable:
pIf_iii = f
Proof:
Assume H1.
Apply func_ext set (setset) to the current goal.
Let x be given.
Apply func_ext set set to the current goal.
Let y be given.
We will prove If_iii x y = f x y.
An exact proof term for the current goal is If_i_1 p (f x y) (g x y) H1.
Theorem. (If_iii_0) The following is provable:
¬ pIf_iii = g
Proof:
Assume H1.
Apply func_ext set (setset) to the current goal.
Let x be given.
Apply func_ext set set to the current goal.
Let y be given.
We will prove If_iii x y = g x y.
An exact proof term for the current goal is If_i_0 p (f x y) (g x y) H1.
End of Section If_iii
Beginning of Section EpsilonRec_i
Variable F : set(setset)set
Definition. We define In_rec_i_G to be λX Y ⇒ ∀R : setsetprop, (∀X : set, ∀f : setset, (xX, R x (f x))R X (F X f))R X Y of type setsetprop.
Definition. We define In_rec_i to be λX ⇒ Eps_i (In_rec_i_G X) of type setset.
Theorem. (In_rec_i_G_c) The following is provable:
∀X : set, ∀f : setset, (xX, In_rec_i_G x (f x))In_rec_i_G X (F X f)
Proof:
Let X of type set be given.
Let f of type setset be given.
Assume H1: xX, In_rec_i_G x (f x).
We will prove In_rec_i_G X (F X f).
Let R of type setsetprop be given.
Assume H2: ∀X : set, ∀f : setset, (xX, R x (f x))R X (F X f).
We will prove R X (F X f).
Apply (H2 X f) to the current goal.
We will prove xX, R x (f x).
Let x of type set be given.
Assume H3: x X.
We will prove R x (f x).
An exact proof term for the current goal is (H1 x H3 R H2).
Theorem. (In_rec_i_G_inv) The following is provable:
∀X : set, ∀Y : set, In_rec_i_G X Yf : setset, (xX, In_rec_i_G x (f x)) Y = F X f
Proof:
Let X and Y be given.
Assume H1: In_rec_i_G X Y.
Set R to be the term (λX : setλY : setf : setset, (xX, In_rec_i_G x (f x)) Y = F X f).
Apply (H1 R) to the current goal.
We will prove ∀Z : set, ∀g : setset, (zZ, R z (g z))R Z (F Z g).
Let Z and g be given.
Assume IH: zZ, f : setset, (xz, In_rec_i_G x (f x)) g z = F z f.
We will prove f : setset, (xZ, In_rec_i_G x (f x)) F Z g = F Z f.
We use g to witness the existential quantifier.
Apply andI to the current goal.
Let z be given.
Assume H2: z Z.
Apply (exandE_ii (λf ⇒ xz, In_rec_i_G x (f x)) (λf ⇒ g z = F z f) (IH z H2)) to the current goal.
Let f of type setset be given.
Assume H3: xz, In_rec_i_G x (f x).
Assume H4: g z = F z f.
We will prove In_rec_i_G z (g z).
rewrite the current goal using H4 (from left to right).
We will prove In_rec_i_G z (F z f).
An exact proof term for the current goal is (In_rec_i_G_c z f H3).
Use reflexivity.
Hypothesis Fr : ∀X : set, ∀g h : setset, (xX, g x = h x)F X g = F X h
Theorem. (In_rec_i_G_f) The following is provable:
∀X : set, ∀Y Z : set, In_rec_i_G X YIn_rec_i_G X ZY = Z
Proof:
Apply In_ind to the current goal.
Let X be given.
Assume IH: xX, ∀y z : set, In_rec_i_G x yIn_rec_i_G x zy = z.
Let Y and Z be given.
Assume H1: In_rec_i_G X Y.
Assume H2: In_rec_i_G X Z.
We will prove Y = Z.
We prove the intermediate claim L1: f : setset, (xX, In_rec_i_G x (f x)) Y = F X f.
An exact proof term for the current goal is (In_rec_i_G_inv X Y H1).
We prove the intermediate claim L2: f : setset, (xX, In_rec_i_G x (f x)) Z = F X f.
An exact proof term for the current goal is (In_rec_i_G_inv X Z H2).
Apply (exandE_ii (λf ⇒ xX, In_rec_i_G x (f x)) (λf ⇒ Y = F X f) L1) to the current goal.
Let g be given.
Assume H3: xX, In_rec_i_G x (g x).
Assume H4: Y = F X g.
Apply (exandE_ii (λf ⇒ xX, In_rec_i_G x (f x)) (λf ⇒ Z = F X f) L2) to the current goal.
Let h be given.
Assume H5: xX, In_rec_i_G x (h x).
Assume H6: Z = F X h.
We will prove Y = Z.
rewrite the current goal using H4 (from left to right).
rewrite the current goal using H6 (from left to right).
We will prove F X g = F X h.
Apply Fr to the current goal.
We will prove xX, g x = h x.
Let x be given.
Assume H7: x X.
An exact proof term for the current goal is (IH x H7 (g x) (h x) (H3 x H7) (H5 x H7)).
Theorem. (In_rec_i_G_In_rec_i) The following is provable:
∀X : set, In_rec_i_G X (In_rec_i X)
Proof:
Apply In_ind to the current goal.
Let X be given.
Assume IH: xX, In_rec_i_G x (In_rec_i x).
We will prove In_rec_i_G X (In_rec_i X).
We will prove In_rec_i_G X (Eps_i (In_rec_i_G X)).
Apply (Eps_i_ax (In_rec_i_G X) (F X In_rec_i)) to the current goal.
We will prove In_rec_i_G X (F X In_rec_i).
An exact proof term for the current goal is (In_rec_i_G_c X In_rec_i IH).
Theorem. (In_rec_i_G_In_rec_i_d) The following is provable:
∀X : set, In_rec_i_G X (F X In_rec_i)
Proof:
Let X and R be given.
Assume H1: ∀X : set, ∀f : setset, (xX, R x (f x))R X (F X f).
Apply (H1 X In_rec_i) to the current goal.
Let x be given.
Assume _.
An exact proof term for the current goal is (In_rec_i_G_In_rec_i x R H1).
Theorem. (In_rec_i_eq) The following is provable:
∀X : set, In_rec_i X = F X In_rec_i
Proof:
An exact proof term for the current goal is (λX : setIn_rec_i_G_f X (In_rec_i X) (F X In_rec_i) (In_rec_i_G_In_rec_i X) (In_rec_i_G_In_rec_i_d X)).
End of Section EpsilonRec_i
Beginning of Section EpsilonRec_ii
Variable F : set(set(setset))(setset)
Definition. We define In_rec_G_ii to be λX Y ⇒ ∀R : set(setset)prop, (∀X : set, ∀f : set(setset), (xX, R x (f x))R X (F X f))R X Y of type set(setset)prop.
Definition. We define In_rec_ii to be λX ⇒ Descr_ii (In_rec_G_ii X) of type set(setset).
Theorem. (In_rec_G_ii_c) The following is provable:
∀X : set, ∀f : set(setset), (xX, In_rec_G_ii x (f x))In_rec_G_ii X (F X f)
Proof:
Let X of type set be given.
Let f of type set(setset) be given.
Assume H1: xX, In_rec_G_ii x (f x).
We will prove In_rec_G_ii X (F X f).
Let R of type set(setset)prop be given.
Assume H2: ∀X : set, ∀f : set(setset), (xX, R x (f x))R X (F X f).
We will prove R X (F X f).
Apply (H2 X f) to the current goal.
We will prove xX, R x (f x).
Let x of type set be given.
Assume H3: x X.
We will prove R x (f x).
An exact proof term for the current goal is (H1 x H3 R H2).
Theorem. (In_rec_G_ii_inv) The following is provable:
∀X : set, ∀Y : (setset), In_rec_G_ii X Yf : set(setset), (xX, In_rec_G_ii x (f x)) Y = F X f
Proof:
Let X and Y be given.
Assume H1: In_rec_G_ii X Y.
Set R to be the term (λX : setλY : (setset)f : set(setset), (xX, In_rec_G_ii x (f x)) Y = F X f).
Apply (H1 R) to the current goal.
We will prove ∀Z : set, ∀g : set(setset), (zZ, R z (g z))R Z (F Z g).
Let Z and g be given.
Assume IH: zZ, f : set(setset), (xz, In_rec_G_ii x (f x)) g z = F z f.
We will prove f : set(setset), (xZ, In_rec_G_ii x (f x)) F Z g = F Z f.
We use g to witness the existential quantifier.
Apply andI to the current goal.
Let z be given.
Assume H2: z Z.
Apply (exandE_iii (λf ⇒ xz, In_rec_G_ii x (f x)) (λf ⇒ g z = F z f) (IH z H2)) to the current goal.
Let f of type set(setset) be given.
Assume H3: xz, In_rec_G_ii x (f x).
Assume H4: g z = F z f.
We will prove In_rec_G_ii z (g z).
rewrite the current goal using H4 (from left to right).
We will prove In_rec_G_ii z (F z f).
An exact proof term for the current goal is (In_rec_G_ii_c z f H3).
An exact proof term for the current goal is (λq H ⇒ H).
Hypothesis Fr : ∀X : set, ∀g h : set(setset), (xX, g x = h x)F X g = F X h
Theorem. (In_rec_G_ii_f) The following is provable:
∀X : set, ∀Y Z : (setset), In_rec_G_ii X YIn_rec_G_ii X ZY = Z
Proof:
Apply In_ind to the current goal.
Let X be given.
Assume IH: xX, ∀y z : (setset), In_rec_G_ii x yIn_rec_G_ii x zy = z.
Let Y and Z be given.
Assume H1: In_rec_G_ii X Y.
Assume H2: In_rec_G_ii X Z.
We will prove Y = Z.
We prove the intermediate claim L1: f : set(setset), (xX, In_rec_G_ii x (f x)) Y = F X f.
An exact proof term for the current goal is (In_rec_G_ii_inv X Y H1).
We prove the intermediate claim L2: f : set(setset), (xX, In_rec_G_ii x (f x)) Z = F X f.
An exact proof term for the current goal is (In_rec_G_ii_inv X Z H2).
Apply (exandE_iii (λf ⇒ xX, In_rec_G_ii x (f x)) (λf ⇒ Y = F X f) L1) to the current goal.
Let g be given.
Assume H3: xX, In_rec_G_ii x (g x).
Assume H4: Y = F X g.
Apply (exandE_iii (λf ⇒ xX, In_rec_G_ii x (f x)) (λf ⇒ Z = F X f) L2) to the current goal.
Let h be given.
Assume H5: xX, In_rec_G_ii x (h x).
Assume H6: Z = F X h.
We will prove Y = Z.
rewrite the current goal using H4 (from left to right).
rewrite the current goal using H6 (from left to right).
We will prove F X g = F X h.
Apply Fr to the current goal.
We will prove xX, g x = h x.
Let x be given.
Assume H7: x X.
An exact proof term for the current goal is (IH x H7 (g x) (h x) (H3 x H7) (H5 x H7)).
Theorem. (In_rec_G_ii_In_rec_ii) The following is provable:
∀X : set, In_rec_G_ii X (In_rec_ii X)
Proof:
Apply In_ind to the current goal.
Let X be given.
Assume IH: xX, In_rec_G_ii x (In_rec_ii x).
We will prove In_rec_G_ii X (In_rec_ii X).
We will prove In_rec_G_ii X (Descr_ii (In_rec_G_ii X)).
Apply (Descr_ii_prop (In_rec_G_ii X)) to the current goal.
We use (F X In_rec_ii) to witness the existential quantifier.
We will prove In_rec_G_ii X (F X In_rec_ii).
An exact proof term for the current goal is (In_rec_G_ii_c X In_rec_ii IH).
An exact proof term for the current goal is In_rec_G_ii_f X.
Theorem. (In_rec_G_ii_In_rec_ii_d) The following is provable:
∀X : set, In_rec_G_ii X (F X In_rec_ii)
Proof:
Let X and R be given.
Assume H1: ∀X : set, ∀f : set(setset), (xX, R x (f x))R X (F X f).
Apply (H1 X In_rec_ii) to the current goal.
Let x be given.
Assume _.
An exact proof term for the current goal is (In_rec_G_ii_In_rec_ii x R H1).
Theorem. (In_rec_ii_eq) The following is provable:
∀X : set, In_rec_ii X = F X In_rec_ii
Proof:
An exact proof term for the current goal is (λX : setIn_rec_G_ii_f X (In_rec_ii X) (F X In_rec_ii) (In_rec_G_ii_In_rec_ii X) (In_rec_G_ii_In_rec_ii_d X)).
End of Section EpsilonRec_ii
Beginning of Section EpsilonRec_iii
Variable F : set(set(setsetset))(setsetset)
Definition. We define In_rec_G_iii to be λX Y ⇒ ∀R : set(setsetset)prop, (∀X : set, ∀f : set(setsetset), (xX, R x (f x))R X (F X f))R X Y of type set(setsetset)prop.
Definition. We define In_rec_iii to be λX ⇒ Descr_iii (In_rec_G_iii X) of type set(setsetset).
Theorem. (In_rec_G_iii_c) The following is provable:
∀X : set, ∀f : set(setsetset), (xX, In_rec_G_iii x (f x))In_rec_G_iii X (F X f)
Proof:
Let X of type set be given.
Let f of type set(setsetset) be given.
Assume H1: xX, In_rec_G_iii x (f x).
We will prove In_rec_G_iii X (F X f).
Let R of type set(setsetset)prop be given.
Assume H2: ∀X : set, ∀f : set(setsetset), (xX, R x (f x))R X (F X f).
We will prove R X (F X f).
Apply (H2 X f) to the current goal.
We will prove xX, R x (f x).
Let x of type set be given.
Assume H3: x X.
We will prove R x (f x).
An exact proof term for the current goal is (H1 x H3 R H2).
Theorem. (In_rec_G_iii_inv) The following is provable:
∀X : set, ∀Y : (setsetset), In_rec_G_iii X Yf : set(setsetset), (xX, In_rec_G_iii x (f x)) Y = F X f
Proof:
Let X and Y be given.
Assume H1: In_rec_G_iii X Y.
Set R to be the term (λX : setλY : (setsetset)f : set(setsetset), (xX, In_rec_G_iii x (f x)) Y = F X f).
Apply (H1 R) to the current goal.
We will prove ∀Z : set, ∀g : set(setsetset), (zZ, R z (g z))R Z (F Z g).
Let Z and g be given.
Assume IH: zZ, f : set(setsetset), (xz, In_rec_G_iii x (f x)) g z = F z f.
We will prove f : set(setsetset), (xZ, In_rec_G_iii x (f x)) F Z g = F Z f.
We use g to witness the existential quantifier.
Apply andI to the current goal.
Let z be given.
Assume H2: z Z.
Apply (exandE_iiii (λf ⇒ xz, In_rec_G_iii x (f x)) (λf ⇒ g z = F z f) (IH z H2)) to the current goal.
Let f of type set(setsetset) be given.
Assume H3: xz, In_rec_G_iii x (f x).
Assume H4: g z = F z f.
We will prove In_rec_G_iii z (g z).
rewrite the current goal using H4 (from left to right).
We will prove In_rec_G_iii z (F z f).
An exact proof term for the current goal is (In_rec_G_iii_c z f H3).
An exact proof term for the current goal is (λq H ⇒ H).
Hypothesis Fr : ∀X : set, ∀g h : set(setsetset), (xX, g x = h x)F X g = F X h
Theorem. (In_rec_G_iii_f) The following is provable:
∀X : set, ∀Y Z : (setsetset), In_rec_G_iii X YIn_rec_G_iii X ZY = Z
Proof:
Apply In_ind to the current goal.
Let X be given.
Assume IH: xX, ∀y z : (setsetset), In_rec_G_iii x yIn_rec_G_iii x zy = z.
Let Y and Z be given.
Assume H1: In_rec_G_iii X Y.
Assume H2: In_rec_G_iii X Z.
We will prove Y = Z.
We prove the intermediate claim L1: f : set(setsetset), (xX, In_rec_G_iii x (f x)) Y = F X f.
An exact proof term for the current goal is (In_rec_G_iii_inv X Y H1).
We prove the intermediate claim L2: f : set(setsetset), (xX, In_rec_G_iii x (f x)) Z = F X f.
An exact proof term for the current goal is (In_rec_G_iii_inv X Z H2).
Apply (exandE_iiii (λf ⇒ xX, In_rec_G_iii x (f x)) (λf ⇒ Y = F X f) L1) to the current goal.
Let g be given.
Assume H3: xX, In_rec_G_iii x (g x).
Assume H4: Y = F X g.
Apply (exandE_iiii (λf ⇒ xX, In_rec_G_iii x (f x)) (λf ⇒ Z = F X f) L2) to the current goal.
Let h be given.
Assume H5: xX, In_rec_G_iii x (h x).
Assume H6: Z = F X h.
We will prove Y = Z.
rewrite the current goal using H4 (from left to right).
rewrite the current goal using H6 (from left to right).
We will prove F X g = F X h.
Apply Fr to the current goal.
We will prove xX, g x = h x.
Let x be given.
Assume H7: x X.
An exact proof term for the current goal is (IH x H7 (g x) (h x) (H3 x H7) (H5 x H7)).
Theorem. (In_rec_G_iii_In_rec_iii) The following is provable:
∀X : set, In_rec_G_iii X (In_rec_iii X)
Proof:
Apply In_ind to the current goal.
Let X be given.
We will prove In_rec_G_iii X (In_rec_iii X).
We will prove In_rec_G_iii X (Descr_iii (In_rec_G_iii X)).
Apply (Descr_iii_prop (In_rec_G_iii X)) to the current goal.
We use (F X In_rec_iii) to witness the existential quantifier.
We will prove In_rec_G_iii X (F X In_rec_iii).
An exact proof term for the current goal is (In_rec_G_iii_c X In_rec_iii IH).
An exact proof term for the current goal is In_rec_G_iii_f X.
Theorem. (In_rec_G_iii_In_rec_iii_d) The following is provable:
∀X : set, In_rec_G_iii X (F X In_rec_iii)
Proof:
Let X and R be given.
Assume H1: ∀X : set, ∀f : set(setsetset), (xX, R x (f x))R X (F X f).
Apply (H1 X In_rec_iii) to the current goal.
Let x be given.
Assume _.
An exact proof term for the current goal is (In_rec_G_iii_In_rec_iii x R H1).
Theorem. (In_rec_iii_eq) The following is provable:
∀X : set, In_rec_iii X = F X In_rec_iii
Proof:
An exact proof term for the current goal is (λX : setIn_rec_G_iii_f X (In_rec_iii X) (F X In_rec_iii) (In_rec_G_iii_In_rec_iii X) (In_rec_G_iii_In_rec_iii_d X)).
End of Section EpsilonRec_iii
Beginning of Section NatRec
Variable z : set
Variable f : setsetset
Let F : set(setset)setλn g ⇒ if n n then f ( n) (g ( n)) else z
Definition. We define nat_primrec to be In_rec_i F of type setset.
Theorem. (nat_primrec_r) The following is provable:
∀X : set, ∀g h : setset, (xX, g x = h x)F X g = F X h
Proof:
Let X, g and h be given.
Assume H1: xX, g x = h x.
We will prove F X g = F X h.
Apply xm ( X X) to the current goal.
Assume H2: ( X X).
We will prove (if X X then f ( X) (g ( X)) else z) = (if X X then f ( X) (h ( X)) else z).
rewrite the current goal using (H1 ( X) H2) (from left to right).
We will prove (if X X then f ( X) (h ( X)) else z) = (if X X then f ( X) (h ( X)) else z).
An exact proof term for the current goal is (λq H ⇒ H).
Assume H2: ¬ ( X X).
We will prove (if X X then f ( X) (g ( X)) else z) = (if X X then f ( X) (h ( X)) else z).
We prove the intermediate claim L1: (if X X then f ( X) (g ( X)) else z) = z.
An exact proof term for the current goal is (If_i_0 ( X X) (f ( X) (g ( X))) z H2).
We prove the intermediate claim L2: (if X X then f ( X) (h ( X)) else z) = z.
An exact proof term for the current goal is (If_i_0 ( X X) (f ( X) (h ( X))) z H2).
rewrite the current goal using L2 (from left to right).
An exact proof term for the current goal is L1.
Theorem. (nat_primrec_0) The following is provable:
Proof:
We will prove (In_rec_i F 0 = z).
rewrite the current goal using (In_rec_i_eq F nat_primrec_r) (from left to right).
We will prove F 0 (In_rec_i F) = z.
We will prove (if 0 0 then f ( 0) (In_rec_i F ( 0)) else z) = z.
An exact proof term for the current goal is (If_i_0 ( 0 0) (f ( 0) (In_rec_i F ( 0))) z (EmptyE ( 0))).
Theorem. (nat_primrec_S) The following is provable:
∀n : set, nat_p nnat_primrec (ordsucc n) = f n (nat_primrec n)
Proof:
Let n be given.
Assume Hn: nat_p n.
We will prove (In_rec_i F (ordsucc n) = f n (In_rec_i F n)).
rewrite the current goal using (In_rec_i_eq F nat_primrec_r) (from left to right) at position 1.
We will prove F (ordsucc n) (In_rec_i F) = f n (In_rec_i F n).
We will prove (if (ordsucc n) ordsucc n then f ( (ordsucc n)) (In_rec_i F ( (ordsucc n))) else z) = f n (In_rec_i F n).
rewrite the current goal using (Union_ordsucc_eq n Hn) (from left to right).
We will prove (if n ordsucc n then f n (In_rec_i F n) else z) = f n (In_rec_i F n).
An exact proof term for the current goal is (If_i_1 (n ordsucc n) (f n (In_rec_i F n)) z (ordsuccI2 n)).
End of Section NatRec
Beginning of Section NatAdd
Definition. We define add_nat to be λn m : setnat_primrec n (λ_ r ⇒ ordsucc r) m of type setsetset.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_nat.
Theorem. (add_nat_0R) The following is provable:
∀n : set, n + 0 = n
Proof:
Let n be given.
An exact proof term for the current goal is (nat_primrec_0 n (λ_ r ⇒ ordsucc r)).
Theorem. (add_nat_SR) The following is provable:
∀n m : set, nat_p mn + ordsucc m = ordsucc (n + m)
Proof:
Let n and m be given.
Assume Hm.
An exact proof term for the current goal is (nat_primrec_S n (λ_ r ⇒ ordsucc r) m Hm).
Theorem. (add_nat_p) The following is provable:
∀n : set, nat_p n∀m : set, nat_p mnat_p (n + m)
Proof:
Let n be given.
Assume Hn: nat_p n.
Apply nat_ind to the current goal.
We will prove nat_p (n + 0).
rewrite the current goal using (add_nat_0R n) (from left to right).
We will prove nat_p n.
An exact proof term for the current goal is Hn.
Let m be given.
Assume Hm: nat_p m.
Assume IHm: nat_p (n + m).
We will prove nat_p (n + ordsucc m).
rewrite the current goal using (add_nat_SR n m Hm) (from left to right).
We will prove nat_p (ordsucc (n + m)).
Apply nat_ordsucc to the current goal.
We will prove nat_p (n + m).
An exact proof term for the current goal is IHm.
Theorem. (add_nat_1_1_2) The following is provable:
1 + 1 = 2
Proof:
Use symmetry.
We will prove ordsucc 1 = 1 + ordsucc 0.
rewrite the current goal using add_nat_SR 1 0 nat_0 (from left to right).
We will prove ordsucc 1 = ordsucc (1 + 0).
rewrite the current goal using add_nat_0R 1 (from left to right).
An exact proof term for the current goal is (λq H ⇒ H).
Theorem. (add_nat_asso) The following is provable:
∀n : set, nat_p n∀m : set, nat_p m∀k : set, nat_p k(n + m) + k = n + (m + k)
Proof:
Let n be given.
Assume Hn: nat_p n.
Let m be given.
Assume Hm: nat_p m.
Apply nat_ind to the current goal.
We will prove (n + m) + 0 = n + (m + 0).
rewrite the current goal using add_nat_0R (from left to right).
rewrite the current goal using add_nat_0R (from left to right).
Use reflexivity.
Let k be given.
Assume Hk: nat_p k.
Assume IHk: (n + m) + k = n + (m + k).
We will prove (n + m) + ordsucc k = n + (m + ordsucc k).
rewrite the current goal using (add_nat_SR (n + m) k Hk) (from left to right).
rewrite the current goal using (add_nat_SR m k Hk) (from left to right).
We will prove ordsucc ((n + m) + k) = n + ordsucc (m + k).
rewrite the current goal using add_nat_SR (from left to right).
We will prove ordsucc ((n + m) + k) = ordsucc (n + (m + k)).
rewrite the current goal using IHk (from left to right).
Use reflexivity.
We will prove nat_p (m + k).
An exact proof term for the current goal is add_nat_p m Hm k Hk.
Theorem. (add_nat_0L) The following is provable:
∀m : set, nat_p m0 + m = m
Proof:
Apply nat_ind to the current goal.
We will prove 0 + 0 = 0.
Apply add_nat_0R to the current goal.
Let m be given.
Assume Hm: nat_p m.
Assume IHm: 0 + m = m.
We will prove 0 + ordsucc m = ordsucc m.
rewrite the current goal using (add_nat_SR 0 m Hm) (from left to right).
We will prove ordsucc (0 + m) = ordsucc m.
rewrite the current goal using IHm (from left to right).
Use reflexivity.
Theorem. (add_nat_SL) The following is provable:
∀n : set, nat_p n∀m : set, nat_p mordsucc n + m = ordsucc (n + m)
Proof:
Let n be given.
Assume Hn: nat_p n.
Apply nat_ind to the current goal.
We will prove ordsucc n + 0 = ordsucc (n + 0).
rewrite the current goal using add_nat_0R (from left to right).
rewrite the current goal using add_nat_0R (from left to right).
Use reflexivity.
Let m be given.
Assume Hm: nat_p m.
Assume IHm: ordsucc n + m = ordsucc (n + m).
We will prove ordsucc n + ordsucc m = ordsucc (n + ordsucc m).
rewrite the current goal using (add_nat_SR (ordsucc n) m Hm) (from left to right).
We will prove ordsucc (ordsucc n + m) = ordsucc (n + ordsucc m).
rewrite the current goal using (add_nat_SR n m Hm) (from left to right).
We will prove ordsucc (ordsucc n + m) = ordsucc (ordsucc (n + m)).
rewrite the current goal using IHm (from left to right).
Use reflexivity.
Theorem. (add_nat_com) The following is provable:
∀n : set, nat_p n∀m : set, nat_p mn + m = m + n
Proof:
Let n be given.
Assume Hn: nat_p n.
Apply nat_ind to the current goal.
We will prove n + 0 = 0 + n.
rewrite the current goal using (add_nat_0L n Hn) (from left to right).
An exact proof term for the current goal is (add_nat_0R n).
Let m be given.
Assume Hm: nat_p m.
Assume IHm: n + m = m + n.
We will prove n + ordsucc m = ordsucc m + n.
rewrite the current goal using (add_nat_SL m Hm n Hn) (from left to right).
We will prove n + ordsucc m = ordsucc (m + n).
rewrite the current goal using IHm (from right to left).
We will prove n + ordsucc m = ordsucc (n + m).
An exact proof term for the current goal is (add_nat_SR n m Hm).
Theorem. (add_nat_In_R) The following is provable:
∀m, nat_p mkm, ∀n, nat_p nk + n m + n
Proof:
Let m be given.
Assume Hm: nat_p m.
Let k be given.
Assume Hk: k m.
Apply nat_ind to the current goal.
We will prove k + 0 m + 0.
rewrite the current goal using add_nat_0R (from left to right).
rewrite the current goal using add_nat_0R (from left to right).
An exact proof term for the current goal is Hk.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: k + n m + n.
We will prove k + ordsucc n m + ordsucc n.
rewrite the current goal using add_nat_SR k n Hn (from left to right).
rewrite the current goal using add_nat_SR m n Hn (from left to right).
We will prove ordsucc (k + n) ordsucc (m + n).
Apply ordinal_ordsucc_In (m + n) (nat_p_ordinal (m + n) (add_nat_p m Hm n Hn)) (k + n) to the current goal.
We will prove k + n m + n.
An exact proof term for the current goal is IHn.
Theorem. (add_nat_In_L) The following is provable:
∀n, nat_p n∀m, nat_p mkm, n + k n + m
Proof:
Let n be given.
Assume Hn.
Let m be given.
Assume Hm.
Let k be given.
Assume Hk: k m.
We will prove n + k n + m.
rewrite the current goal using add_nat_com n Hn k (nat_p_trans m Hm k Hk) (from left to right).
rewrite the current goal using add_nat_com n Hn m Hm (from left to right).
An exact proof term for the current goal is add_nat_In_R m Hm k Hk n Hn.
Theorem. (add_nat_Subq_R) The following is provable:
∀k, nat_p k∀m, nat_p mk m∀n, nat_p nk + n m + n
Proof:
Let k be given.
Assume Hk: nat_p k.
Let m be given.
Assume Hm: nat_p m.
Assume Hkm: k m.
Let n be given.
Assume Hn: nat_p n.
Apply ordinal_In_Or_Subq k m (nat_p_ordinal k Hk) (nat_p_ordinal m Hm) to the current goal.
Assume H1: k m.
We will prove k + n m + n.
Apply nat_trans (m + n) (add_nat_p m Hm n Hn) to the current goal.
We will prove k + n m + n.
An exact proof term for the current goal is add_nat_In_R m Hm k H1 n Hn.
Assume H1: m k.
We prove the intermediate claim L1: k = m.
Apply set_ext to the current goal.
An exact proof term for the current goal is Hkm.
An exact proof term for the current goal is H1.
We will prove k + n m + n.
rewrite the current goal using L1 (from left to right).
Apply Subq_ref to the current goal.
Theorem. (add_nat_Subq_L) The following is provable:
∀n, nat_p n∀k, nat_p k∀m, nat_p mk mn + k n + m
Proof:
Let n be given.
Assume Hn: nat_p n.
Let k be given.
Assume Hk: nat_p k.
Let m be given.
Assume Hm: nat_p m.
Assume Hkm: k m.
rewrite the current goal using add_nat_com n Hn k Hk (from left to right).
rewrite the current goal using add_nat_com n Hn m Hm (from left to right).
An exact proof term for the current goal is add_nat_Subq_R k Hk m Hm Hkm n Hn.
Theorem. (add_nat_Subq_R') The following is provable:
∀m, nat_p m∀n, nat_p nm m + n
Proof:
Let m be given.
Assume Hm: nat_p m.
Apply nat_ind to the current goal.
We will prove m m + 0.
rewrite the current goal using add_nat_0R (from left to right).
Apply Subq_ref to the current goal.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: m m + n.
We will prove m m + ordsucc n.
rewrite the current goal using add_nat_SR m n Hn (from left to right).
We will prove m ordsucc (m + n).
Apply Subq_tra m (m + n) (ordsucc (m + n)) IHn to the current goal.
We will prove m + n ordsucc (m + n).
Apply ordsuccI1 to the current goal.
Theorem. (nat_Subq_add_ex) The following is provable:
∀n, nat_p n∀m, nat_p mn mk, nat_p k m = k + n
Proof:
Apply nat_ind to the current goal.
Let m be given.
Assume Hm Hnm.
We use m to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hm.
We will prove m = m + 0.
Use symmetry.
An exact proof term for the current goal is add_nat_0R m.
Let n be given.
Assume Hn.
Assume IH: ∀m, nat_p mn mk, nat_p k m = k + n.
Apply nat_inv_impred to the current goal.
Assume Hnm: ordsucc n 0.
We will prove False.
Apply EmptyE n to the current goal.
We will prove n 0.
Apply Hnm to the current goal.
Apply ordsuccI2 to the current goal.
Let m be given.
Assume Hm: nat_p m.
Assume Hnm: ordsucc n ordsucc m.
We prove the intermediate claim Lnm: n m.
Apply ordinal_In_Or_Subq m n (nat_p_ordinal m Hm) (nat_p_ordinal n Hn) to the current goal.
Assume H1: m n.
We will prove False.
Apply In_irref (ordsucc m) to the current goal.
Apply Hnm to the current goal.
We will prove ordsucc m ordsucc n.
An exact proof term for the current goal is nat_ordsucc_in_ordsucc n Hn m H1.
Assume H1: n m.
An exact proof term for the current goal is H1.
Apply IH m Hm Lnm to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: nat_p k.
Assume H1: m = k + n.
We will prove k, nat_p k ordsucc m = k + ordsucc n.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We will prove ordsucc m = k + ordsucc n.
rewrite the current goal using add_nat_SR k n Hn (from left to right).
We will prove ordsucc m = ordsucc (k + n).
Use f_equal.
An exact proof term for the current goal is H1.
Theorem. (add_nat_cancel_R) The following is provable:
∀k, nat_p k∀m, nat_p m∀n, nat_p nk + n = m + nk = m
Proof:
Let k be given.
Assume Hk.
Let m be given.
Assume Hm.
Apply nat_ind to the current goal.
We will prove k + 0 = m + 0k = m.
rewrite the current goal using add_nat_0R (from left to right).
rewrite the current goal using add_nat_0R (from left to right).
Assume H1: k = m.
An exact proof term for the current goal is H1.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: k + n = m + nk = m.
We will prove k + ordsucc n = m + ordsucc nk = m.
rewrite the current goal using add_nat_SR k n Hn (from left to right).
rewrite the current goal using add_nat_SR m n Hn (from left to right).
We will prove ordsucc (k + n) = ordsucc (m + n)k = m.
Assume H1: ordsucc (k + n) = ordsucc (m + n).
We will prove k = m.
Apply IHn to the current goal.
We will prove k + n = m + n.
Apply ordsucc_inj to the current goal.
An exact proof term for the current goal is H1.
End of Section NatAdd
Beginning of Section NatMul
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_nat.
Definition. We define mul_nat to be λn m : setnat_primrec 0 (λ_ r ⇒ n + r) m of type setsetset.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_nat.
Theorem. (mul_nat_0R) The following is provable:
∀n : set, n * 0 = 0
Proof:
Let n be given.
An exact proof term for the current goal is (nat_primrec_0 0 (λ_ r ⇒ n + r)).
Theorem. (mul_nat_SR) The following is provable:
∀n m, nat_p mn * ordsucc m = n + n * m
Proof:
Let n and m be given.
Assume Hm.
An exact proof term for the current goal is (nat_primrec_S 0 (λ_ r ⇒ n + r) m Hm).
Theorem. (mul_nat_1R) The following is provable:
∀n, n * 1 = n
Proof:
Let n be given.
rewrite the current goal using mul_nat_SR n 0 nat_0 (from left to right).
We will prove n + n * 0 = n.
rewrite the current goal using mul_nat_0R (from left to right).
We will prove n + 0 = n.
Apply add_nat_0R to the current goal.
Theorem. (mul_nat_p) The following is provable:
∀n : set, nat_p n∀m : set, nat_p mnat_p (n * m)
Proof:
Let n be given.
Assume Hn: nat_p n.
Apply nat_ind to the current goal.
We will prove nat_p (n * 0).
rewrite the current goal using (mul_nat_0R n) (from left to right).
We will prove nat_p 0.
An exact proof term for the current goal is nat_0.
Let m be given.
Assume Hm: nat_p m.
Assume IHm: nat_p (n * m).
We will prove nat_p (n * ordsucc m).
rewrite the current goal using (mul_nat_SR n m Hm) (from left to right).
We will prove nat_p (n + n * m).
An exact proof term for the current goal is (add_nat_p n Hn (n * m) IHm).
Theorem. (mul_nat_0L) The following is provable:
∀m : set, nat_p m0 * m = 0
Proof:
Apply nat_ind to the current goal.
We will prove 0 * 0 = 0.
An exact proof term for the current goal is (mul_nat_0R 0).
Let m be given.
Assume Hm: nat_p m.
Assume IHm: 0 * m = 0.
We will prove 0 * ordsucc m = 0.
rewrite the current goal using (mul_nat_SR 0 m Hm) (from left to right).
We will prove 0 + 0 * m = 0.
rewrite the current goal using IHm (from left to right).
We will prove 0 + 0 = 0.
An exact proof term for the current goal is (add_nat_0R 0).
Theorem. (mul_nat_SL) The following is provable:
∀n : set, nat_p n∀m : set, nat_p mordsucc n * m = n * m + m
Proof:
Let n be given.
Assume Hn: nat_p n.
Apply nat_ind to the current goal.
We will prove ordsucc n * 0 = n * 0 + 0.
rewrite the current goal using mul_nat_0R (from left to right).
rewrite the current goal using mul_nat_0R (from left to right).
We will prove 0 = 0 + 0.
Use symmetry.
An exact proof term for the current goal is (add_nat_0R 0).
Let m be given.
Assume Hm: nat_p m.
Assume IHm: ordsucc n * m = n * m + m.
We will prove ordsucc n * ordsucc m = n * ordsucc m + ordsucc m.
rewrite the current goal using (mul_nat_SR (ordsucc n) m Hm) (from left to right).
We will prove ordsucc n + ordsucc n * m = n * ordsucc m + ordsucc m.
rewrite the current goal using IHm (from left to right).
We will prove ordsucc n + (n * m + m) = n * ordsucc m + ordsucc m.
rewrite the current goal using add_nat_SL (from left to right).
We will prove ordsucc (n + (n * m + m)) = n * ordsucc m + ordsucc m.
rewrite the current goal using (mul_nat_SR n m Hm) (from left to right).
We will prove ordsucc (n + (n * m + m)) = (n + n * m) + ordsucc m.
rewrite the current goal using (add_nat_SR (n + n * m) m Hm) (from left to right).
We will prove ordsucc (n + (n * m + m)) = ordsucc ((n + n * m) + m).
rewrite the current goal using add_nat_asso (from left to right).
Use reflexivity.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is (mul_nat_p n Hn m Hm).
An exact proof term for the current goal is Hm.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is (add_nat_p (n * m) (mul_nat_p n Hn m Hm) m Hm).
Theorem. (mul_nat_com) The following is provable:
∀n : set, nat_p n∀m : set, nat_p mn * m = m * n
Proof:
Let n be given.
Assume Hn: nat_p n.
Apply nat_ind to the current goal.
We will prove n * 0 = 0 * n.
rewrite the current goal using (mul_nat_0L n Hn) (from left to right).
An exact proof term for the current goal is (mul_nat_0R n).
Let m be given.
Assume Hm: nat_p m.
Assume IHm: n * m = m * n.
We will prove n * ordsucc m = ordsucc m * n.
rewrite the current goal using (mul_nat_SR n m Hm) (from left to right).
We will prove n + n * m = ordsucc m * n.
rewrite the current goal using (mul_nat_SL m Hm n Hn) (from left to right).
We will prove n + n * m = m * n + n.
rewrite the current goal using IHm (from left to right).
We will prove n + m * n = m * n + n.
An exact proof term for the current goal is (add_nat_com n Hn (m * n) (mul_nat_p m Hm n Hn)).
Theorem. (mul_add_nat_distrL) The following is provable:
∀n : set, nat_p n∀m : set, nat_p m∀k : set, nat_p kn * (m + k) = n * m + n * k
Proof:
Let n be given.
Assume Hn: nat_p n.
Let m be given.
Assume Hm: nat_p m.
Apply nat_ind to the current goal.
We will prove n * (m + 0) = n * m + n * 0.
rewrite the current goal using add_nat_0R (from left to right).
rewrite the current goal using mul_nat_0R (from left to right).
We will prove n * m = n * m + 0.
Use symmetry.
An exact proof term for the current goal is (add_nat_0R (n * m)).
Let k be given.
Assume Hk: nat_p k.
Assume IHk: n * (m + k) = n * m + n * k.
We will prove n * (m + ordsucc k) = n * m + n * ordsucc k.
rewrite the current goal using (add_nat_SR m k Hk) (from left to right).
We will prove n * ordsucc (m + k) = n * m + n * ordsucc k.
rewrite the current goal using (mul_nat_SR n (m + k) (add_nat_p m Hm k Hk)) (from left to right).
We will prove n + n * (m + k) = n * m + n * ordsucc k.
rewrite the current goal using IHk (from left to right).
We will prove n + (n * m + n * k) = n * m + n * ordsucc k.
rewrite the current goal using (mul_nat_SR n k Hk) (from left to right).
We will prove n + (n * m + n * k) = n * m + (n + n * k).
rewrite the current goal using (add_nat_asso n Hn (n * m) (mul_nat_p n Hn m Hm) (n * k) (mul_nat_p n Hn k Hk)) (from right to left).
We will prove (n + n * m) + n * k = n * m + (n + n * k).
rewrite the current goal using (add_nat_com n Hn (n * m) (mul_nat_p n Hn m Hm)) (from left to right).
We will prove (n * m + n) + n * k = n * m + (n + n * k).
An exact proof term for the current goal is (add_nat_asso (n * m) (mul_nat_p n Hn m Hm) n Hn (n * k) (mul_nat_p n Hn k Hk)).
Theorem. (mul_nat_asso) The following is provable:
∀n : set, nat_p n∀m : set, nat_p m∀k : set, nat_p k(n * m) * k = n * (m * k)
Proof:
Let n be given.
Assume Hn: nat_p n.
Let m be given.
Assume Hm: nat_p m.
Apply nat_ind to the current goal.
We will prove (n * m) * 0 = n * (m * 0).
rewrite the current goal using mul_nat_0R (from left to right) at position 2.
rewrite the current goal using mul_nat_0R (from left to right) at position 2.
An exact proof term for the current goal is (mul_nat_0R (n * m)).
Let k be given.
Assume Hk: nat_p k.
Assume IHk: (n * m) * k = n * (m * k).
We will prove (n * m) * ordsucc k = n * (m * ordsucc k).
rewrite the current goal using mul_nat_SR (from left to right).
We will prove n * m + (n * m) * k = n * (m * ordsucc k).
rewrite the current goal using mul_nat_SR (from left to right).
We will prove n * m + (n * m) * k = n * (m + m * k).
rewrite the current goal using mul_add_nat_distrL (from left to right).
We will prove n * m + (n * m) * k = n * m + n * (m * k).
rewrite the current goal using IHk (from left to right).
Use reflexivity.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is Hm.
An exact proof term for the current goal is (mul_nat_p m Hm k Hk).
An exact proof term for the current goal is Hk.
An exact proof term for the current goal is Hk.
Theorem. (mul_nat_Subq_R) The following is provable:
∀m n, nat_p mnat_p nm n∀k, nat_p km * k n * k
Proof:
Let m and n be given.
Assume Hm Hn Hmn.
Apply nat_ind to the current goal.
We will prove m * 0 n * 0.
rewrite the current goal using mul_nat_0R (from left to right).
rewrite the current goal using mul_nat_0R (from left to right).
Apply Subq_ref to the current goal.
Let k be given.
Assume Hk: nat_p k.
Assume IHk: m * k n * k.
We will prove m * ordsucc k n * ordsucc k.
rewrite the current goal using mul_nat_SR m k Hk (from left to right).
rewrite the current goal using mul_nat_SR n k Hk (from left to right).
We will prove m + m * k n + n * k.
Apply Subq_tra (m + m * k) (m + n * k) (n + n * k) to the current goal.
We will prove m + m * k m + n * k.
Apply add_nat_Subq_L m Hm (m * k) (mul_nat_p m Hm k Hk) (n * k) (mul_nat_p n Hn k Hk) to the current goal.
We will prove m * k n * k.
An exact proof term for the current goal is IHk.
We will prove m + n * k n + n * k.
An exact proof term for the current goal is add_nat_Subq_R m Hm n Hn Hmn (n * k) (mul_nat_p n Hn k Hk).
Theorem. (mul_nat_Subq_L) The following is provable:
∀m n, nat_p mnat_p nm n∀k, nat_p kk * m k * n
Proof:
Let m and n be given.
Assume Hm Hn Hmn.
Let k be given.
Assume Hk.
rewrite the current goal using mul_nat_com k Hk m Hm (from left to right).
rewrite the current goal using mul_nat_com k Hk n Hn (from left to right).
An exact proof term for the current goal is mul_nat_Subq_R m n Hm Hn Hmn k Hk.
Theorem. (mul_nat_0_or_Subq) The following is provable:
∀m, nat_p m∀n, nat_p nn = 0 m m * n
Proof:
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
Apply ordinal_In_Or_Subq n 1 (nat_p_ordinal n Hn) (nat_p_ordinal 1 nat_1) to the current goal.
Assume H1: n 1.
Apply orIL to the current goal.
We will prove n = 0.
Apply cases_1 n H1 to the current goal.
We will prove 0 = 0.
Use reflexivity.
Assume H1: 1 n.
Apply orIR to the current goal.
We will prove m m * n.
rewrite the current goal using mul_nat_1R m (from right to left) at position 1.
We will prove m * 1 m * n.
An exact proof term for the current goal is mul_nat_Subq_L 1 n nat_1 Hn H1 m Hm.
Theorem. (mul_nat_0_inv) The following is provable:
∀m, nat_p m∀n, nat_p nm * n = 0m = 0 n = 0
Proof:
Apply nat_inv_impred to the current goal.
We will prove ∀n, nat_p n0 * n = 00 = 0 n = 0.
Let n be given.
Assume Hn _.
Apply orIL to the current goal.
Use reflexivity.
Let m be given.
Assume Hm: nat_p m.
Apply nat_inv_impred to the current goal.
Assume _.
Apply orIR to the current goal.
Use reflexivity.
Let n be given.
Assume Hn: nat_p n.
We will prove ordsucc m * ordsucc n = 0ordsucc m = 0 ordsucc n = 0.
rewrite the current goal using mul_nat_SR (ordsucc m) n Hn (from left to right).
We will prove ordsucc m + ordsucc m * n = 0ordsucc m = 0 ordsucc n = 0.
rewrite the current goal using add_nat_SL m Hm (ordsucc m * n) (mul_nat_p (ordsucc m) (nat_ordsucc m Hm) n Hn) (from left to right).
We will prove ordsucc (m + ordsucc m * n) = 0ordsucc m = 0 ordsucc n = 0.
Assume H1: ordsucc (m + ordsucc m * n) = 0.
We will prove False.
An exact proof term for the current goal is neq_ordsucc_0 (m + ordsucc m * n) H1.
Theorem. (mul_nat_0m_1n_In) The following is provable:
∀m, nat_p m∀n, nat_p n0 m1 nm m * n
Proof:
Apply nat_inv_impred to the current goal.
Let n be given.
Assume _.
Assume H1: 0 0.
We will prove False.
An exact proof term for the current goal is EmptyE 0 H1.
Let m be given.
Assume Hm: nat_p m.
We will prove ∀n, nat_p n0 ordsucc m1 nordsucc m ordsucc m * n.
Apply nat_inv_impred to the current goal.
Assume _.
Assume H1: 1 0.
We will prove False.
An exact proof term for the current goal is In_no2cycle 0 1 In_0_1 H1.
We will prove ∀n, nat_p n0 ordsucc m1 ordsucc nordsucc m ordsucc m * ordsucc n.
Apply nat_inv_impred to the current goal.
Assume _.
Assume H1: 1 1.
We will prove False.
An exact proof term for the current goal is In_irref 1 H1.
Let n be given.
Assume Hn: nat_p n.
Assume _ _.
We will prove ordsucc m ordsucc m * ordsucc (ordsucc n).
rewrite the current goal using mul_nat_SR (ordsucc m) (ordsucc n) (nat_ordsucc n Hn) (from left to right).
We will prove ordsucc m ordsucc m + ordsucc m * ordsucc n.
rewrite the current goal using add_nat_0R (ordsucc m) (from right to left) at position 1.
We will prove ordsucc m + 0 ordsucc m + ordsucc m * ordsucc n.
Apply add_nat_In_L (ordsucc m) (nat_ordsucc m Hm) (ordsucc m * ordsucc n) (mul_nat_p (ordsucc m) (nat_ordsucc m Hm) (ordsucc n) (nat_ordsucc n Hn)) 0 to the current goal.
We will prove 0 ordsucc m * ordsucc n.
rewrite the current goal using mul_nat_SL m Hm (ordsucc n) (nat_ordsucc n Hn) (from left to right).
We will prove 0 m * ordsucc n + ordsucc n.
rewrite the current goal using add_nat_SR (m * ordsucc n) n Hn (from left to right).
We will prove 0 ordsucc (m * ordsucc n + n).
Apply nat_0_in_ordsucc to the current goal.
We will prove nat_p (m * ordsucc n + n).
An exact proof term for the current goal is add_nat_p (m * ordsucc n) (mul_nat_p m Hm (ordsucc n) (nat_ordsucc n Hn)) n Hn.
Theorem. (nat_le1_cases) The following is provable:
∀m, nat_p mm 1m = 0 m = 1
Proof:
Apply nat_inv_impred to the current goal.
Assume _.
Apply orIL to the current goal.
Use reflexivity.
Apply nat_inv_impred to the current goal.
Assume _.
Apply orIR to the current goal.
Use reflexivity.
Let m be given.
Assume Hm.
Assume H1: ordsucc (ordsucc m) 1.
We will prove False.
Apply In_irref 1 to the current goal.
We will prove 1 1.
Apply H1 to the current goal.
We will prove 1 ordsucc (ordsucc m).
Apply nat_ordsucc_in_ordsucc (ordsucc m) (nat_ordsucc m Hm) to the current goal.
We will prove 0 ordsucc m.
An exact proof term for the current goal is nat_0_in_ordsucc m Hm.
Definition. We define Pi_nat to be λf n ⇒ nat_primrec 1 (λi r ⇒ r * f i) n of type (setset)setset.
Theorem. (Pi_nat_0) The following is provable:
∀f : setset, Pi_nat f 0 = 1
Proof:
Let f be given.
An exact proof term for the current goal is nat_primrec_0 1 (λi r ⇒ r * f i).
Theorem. (Pi_nat_S) The following is provable:
∀f : setset, ∀n, nat_p nPi_nat f (ordsucc n) = Pi_nat f n * f n
Proof:
Let f and n be given.
Assume Hn.
We will prove Pi_nat f (ordsucc n) = Pi_nat f n * f n.
An exact proof term for the current goal is nat_primrec_S 1 (λi r ⇒ r * f i) n Hn.
Theorem. (Pi_nat_p) The following is provable:
∀f : setset, ∀n, nat_p n(in, nat_p (f i))nat_p (Pi_nat f n)
Proof:
Let f be given.
Apply nat_ind to the current goal.
Assume _.
rewrite the current goal using Pi_nat_0 (from left to right).
An exact proof term for the current goal is nat_1.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: (in, nat_p (f i))nat_p (Pi_nat f n).
Assume Hf: iordsucc n, nat_p (f i).
We will prove nat_p (Pi_nat f (ordsucc n)).
rewrite the current goal using Pi_nat_S f n Hn (from left to right).
We will prove nat_p (Pi_nat f n * f n).
Apply mul_nat_p to the current goal.
Apply IHn to the current goal.
Let i be given.
Assume Hi: i n.
We will prove nat_p (f i).
Apply Hf to the current goal.
We will prove i ordsucc n.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
We will prove nat_p (f n).
Apply Hf to the current goal.
We will prove n ordsucc n.
Apply ordsuccI2 to the current goal.
Theorem. (Pi_nat_0_inv) The following is provable:
∀f : setset, ∀n, nat_p n(in, nat_p (f i))Pi_nat f n = 0(in, f i = 0)
Proof:
Let f be given.
Apply nat_ind to the current goal.
Assume _.
Assume H1: Pi_nat f 0 = 0.
We will prove False.
Apply neq_1_0 to the current goal.
We will prove 1 = 0.
Use transitivity with and Pi_nat f 0.
We will prove 1 = Pi_nat f 0.
Use symmetry.
An exact proof term for the current goal is Pi_nat_0 f.
We will prove Pi_nat f 0 = 0.
An exact proof term for the current goal is H1.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: (in, nat_p (f i))Pi_nat f n = 0in, f i = 0.
Assume Hf: iordsucc n, nat_p (f i).
rewrite the current goal using Pi_nat_S f n Hn (from left to right).
Assume H1: Pi_nat f n * f n = 0.
We will prove iordsucc n, f i = 0.
We prove the intermediate claim L1: in, nat_p (f i).
Let i be given.
Assume Hi.
Apply Hf to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
We prove the intermediate claim L2: nat_p (f n).
Apply Hf to the current goal.
Apply ordsuccI2 to the current goal.
We prove the intermediate claim L3: nat_p (Pi_nat f n).
An exact proof term for the current goal is Pi_nat_p f n Hn L1.
Apply mul_nat_0_inv (Pi_nat f n) L3 (f n) L2 H1 to the current goal.
Assume H2: Pi_nat f n = 0.
Apply IHn L1 H2 to the current goal.
Let i be given.
Assume H.
Apply H to the current goal.
Assume Hi: i n.
Assume H3: f i = 0.
We use i to witness the existential quantifier.
Apply andI to the current goal.
We will prove i ordsucc n.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
We will prove f i = 0.
An exact proof term for the current goal is H3.
Assume H2: f n = 0.
We use n to witness the existential quantifier.
Apply andI to the current goal.
We will prove n ordsucc n.
Apply ordsuccI2 to the current goal.
We will prove f n = 0.
An exact proof term for the current goal is H2.
Definition. We define exp_nat to be λn m : setnat_primrec 1 (λ_ r ⇒ n * r) m of type setsetset.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_nat.
Theorem. (exp_nat_0) The following is provable:
∀n, n ^ 0 = 1
Proof:
Let n be given.
We will prove nat_primrec 1 (λ_ r ⇒ n * r) 0 = 1.
An exact proof term for the current goal is nat_primrec_0 1 (λ_ r ⇒ n * r).
Theorem. (exp_nat_S) The following is provable:
∀n m, nat_p mn ^ (ordsucc m) = n * n ^ m
Proof:
Let n and m be given.
Assume Hm.
We will prove nat_primrec 1 (λ_ r ⇒ n * r) (ordsucc m) = n * nat_primrec 1 (λ_ r ⇒ n * r) m.
An exact proof term for the current goal is nat_primrec_S 1 (λ_ r ⇒ n * r) m Hm.
Theorem. (exp_nat_p) The following is provable:
∀n, nat_p n∀m, nat_p mnat_p (n ^ m)
Proof:
Let n be given.
Assume Hn.
Apply nat_ind to the current goal.
We will prove nat_p (n ^ 0).
rewrite the current goal using exp_nat_0 (from left to right).
An exact proof term for the current goal is nat_1.
Let m be given.
Assume Hm IHm.
We will prove nat_p (n ^ ordsucc m).
rewrite the current goal using exp_nat_S n m Hm (from left to right).
We will prove nat_p (n * n ^ m).
An exact proof term for the current goal is mul_nat_p n Hn (n ^ m) IHm.
Theorem. (exp_nat_1) The following is provable:
∀n, n ^ 1 = n
Proof:
Let n be given.
rewrite the current goal using exp_nat_S n 0 nat_0 (from left to right).
We will prove n * n ^ 0 = n.
rewrite the current goal using exp_nat_0 n (from left to right).
We will prove n * 1 = n.
Apply mul_nat_1R to the current goal.
End of Section NatMul
Beginning of Section form100_52
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_nat.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_nat.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_nat.
Theorem. (Subq_Sing0_1) The following is provable:
Proof:
An exact proof term for the current goal is (λx H1 ⇒ SingE 0 x H1 (λs _ : setx ordsucc s) (ordsuccI2 x)).
Theorem. (Subq_1_Sing0) The following is provable:
Proof:
Let x be given.
Assume H1: x 1.
We will prove x {0}.
Apply ordsuccE 0 x H1 to the current goal.
Assume H2: x 0.
We will prove False.
An exact proof term for the current goal is (EmptyE x H2).
Assume H2: x = 0.
rewrite the current goal using H2 (from left to right).
We will prove 0 {0}.
An exact proof term for the current goal is (SingI 0).
Theorem. (eq_1_Sing0) The following is provable:
Proof:
An exact proof term for the current goal is (set_ext 1 (Sing 0) Subq_1_Sing0 Subq_Sing0_1).
Theorem. (Power_0_Sing_0) The following is provable:
Proof:
Apply set_ext to the current goal.
Let X be given.
Assume H1: X 𝒫 0.
We will prove X {0}.
We prove the intermediate claim L1: X = 0.
Apply Empty_Subq_eq to the current goal.
An exact proof term for the current goal is (PowerE 0 X H1).
rewrite the current goal using L1 (from left to right).
We will prove 0 {0}.
An exact proof term for the current goal is (SingI 0).
Let X be given.
Assume H1: X {0}.
We will prove X 𝒫 0.
rewrite the current goal using (SingE 0 X H1) (from left to right).
We will prove 0 𝒫 0.
An exact proof term for the current goal is (Empty_In_Power 0).
Theorem. (equip_finite_Power) The following is provable:
∀n, nat_p n∀X, equip X nequip (𝒫 X) (2 ^ n)
Proof:
Apply nat_ind to the current goal.
Let X be given.
Assume H1: equip X 0.
We will prove equip (𝒫 X) (2 ^ 0).
rewrite the current goal using equip_0_Empty X H1 (from left to right).
rewrite the current goal using exp_nat_0 2 (from left to right).
We will prove equip (𝒫 0) 1.
rewrite the current goal using Power_0_Sing_0 (from left to right).
rewrite the current goal using eq_1_Sing0 (from right to left).
Apply equip_ref to the current goal.
Let n be given.
Assume Hn.
Assume IHn: ∀X, equip X nequip (𝒫 X) (2 ^ n).
Let X be given.
Assume H1: equip X (ordsucc n).
We will prove equip (𝒫 X) (2 ^ ordsucc n).
rewrite the current goal using exp_nat_S 2 n Hn (from left to right).
We will prove equip (𝒫 X) (2 * 2 ^ n).
We prove the intermediate claim L2nN: nat_p (2 ^ n).
An exact proof term for the current goal is exp_nat_p 2 nat_2 n Hn.
We prove the intermediate claim L2no: ordinal (2 ^ n).
An exact proof term for the current goal is nat_p_ordinal (2 ^ n) L2nN.
rewrite the current goal using mul_nat_com 2 nat_2 (2 ^ n) L2nN (from left to right).
We will prove equip (𝒫 X) (2 ^ n * 2).
rewrite the current goal using add_nat_1_1_2 (from right to left) at position 2.
We will prove equip (𝒫 X) (2 ^ n * (1 + 1)).
rewrite the current goal using mul_add_nat_distrL (2 ^ n) L2nN 1 nat_1 1 nat_1 (from left to right).
rewrite the current goal using mul_nat_1R (2 ^ n) (from left to right).
We will prove equip (𝒫 X) (2 ^ n + 2 ^ n).
We prove the intermediate claim L1: x, x X.
Apply equip_sym X (ordsucc n) H1 to the current goal.
Let f be given.
Assume H.
Apply H to the current goal.
Assume H _.
Apply H to the current goal.
Assume Hf: iordsucc n, f i X.
Assume _.
We use f n to witness the existential quantifier.
Apply Hf to the current goal.
Apply ordsuccI2 to the current goal.
Apply L1 to the current goal.
Let x be given.
Assume Hx.
We prove the intermediate claim L2: equip (X {x}) n.
Apply equip_ordsucc_remove1 to the current goal.
An exact proof term for the current goal is Hx.
We will prove equip X (ordsucc n).
An exact proof term for the current goal is H1.
We prove the intermediate claim LIH: equip (𝒫 (X {x})) (2 ^ n).
An exact proof term for the current goal is IHn (X {x}) L2.
Apply LIH to the current goal.
Let f be given.
Assume Hf: bij (𝒫 (X {x})) (2 ^ n) f.
Apply Hf to the current goal.
Assume H.
Apply H to the current goal.
Assume Hf1: Y𝒫 (X {x}), f Y 2 ^ n.
Assume Hf2: Y Z𝒫 (X {x}), f Y = f ZY = Z.
Assume Hf3: i2 ^ n, Y𝒫 (X {x}), f Y = i.
We prove the intermediate claim LfN: Y𝒫 (X {x}), nat_p (f Y).
Let Y be given.
Assume HY.
An exact proof term for the current goal is nat_p_trans (2 ^ n) L2nN (f Y) (Hf1 Y HY).
Set g to be the term λY ⇒ if x Y then 2 ^ n + f (Y {x}) else f Y of type setset.
We will prove equip (𝒫 X) (2 ^ n + 2 ^ n).
We will prove g : setset, bij (𝒫 X) (2 ^ n + 2 ^ n) g.
We use g to witness the existential quantifier.
We will prove bij (𝒫 X) (2 ^ n + 2 ^ n) g.
Apply bijI to the current goal.
Let Y be given.
Assume HY: Y 𝒫 X.
Apply xm (x Y) to the current goal.
Assume H2: x Y.
We prove the intermediate claim LYx: Y {x} 𝒫 (X {x}).
Apply PowerI to the current goal.
We will prove Y {x} X {x}.
Let y be given.
Assume Hy.
Apply setminusE Y {x} y Hy to the current goal.
Assume Hy1: y Y.
Assume Hy2: y {x}.
Apply setminusI to the current goal.
We will prove y X.
Apply PowerE X Y HY to the current goal.
An exact proof term for the current goal is Hy1.
We will prove y {x}.
An exact proof term for the current goal is Hy2.
We will prove (if x Y then 2 ^ n + f (Y {x}) else f Y) 2 ^ n + 2 ^ n.
rewrite the current goal using If_i_1 (x Y) (2 ^ n + f (Y {x})) (f Y) H2 (from left to right).
We will prove 2 ^ n + f (Y {x}) 2 ^ n + 2 ^ n.
We prove the intermediate claim LfYx2n: f (Y {x}) 2 ^ n.
An exact proof term for the current goal is Hf1 (Y {x}) LYx.
rewrite the current goal using add_nat_com (2 ^ n) L2nN (f (Y {x})) (nat_p_trans (2 ^ n) L2nN (f (Y {x})) LfYx2n) (from left to right).
We will prove f (Y {x}) + 2 ^ n 2 ^ n + 2 ^ n.
An exact proof term for the current goal is add_nat_In_R (2 ^ n) L2nN (f (Y {x})) LfYx2n (2 ^ n) L2nN.
Assume H2: x Y.
We prove the intermediate claim LY: Y 𝒫 (X {x}).
Apply PowerI to the current goal.
We will prove Y X {x}.
Let y be given.
Assume Hy.
Apply setminusI to the current goal.
We will prove y X.
Apply PowerE X Y HY to the current goal.
An exact proof term for the current goal is Hy.
We will prove y {x}.
Assume Hy2: y {x}.
Apply H2 to the current goal.
We will prove x Y.
rewrite the current goal using SingE x y Hy2 (from right to left).
An exact proof term for the current goal is Hy.
We will prove (if x Y then 2 ^ n + f (Y {x}) else f Y) 2 ^ n + 2 ^ n.
rewrite the current goal using If_i_0 (x Y) (2 ^ n + f (Y {x})) (f Y) H2 (from left to right).
We will prove f Y 2 ^ n + 2 ^ n.
Apply add_nat_Subq_R' (2 ^ n) L2nN (2 ^ n) L2nN to the current goal.
We will prove f Y 2 ^ n.
An exact proof term for the current goal is Hf1 Y LY.
Let Y be given.
Assume HY: Y 𝒫 X.
Let Z be given.
Assume HZ: Z 𝒫 X.
We will prove g Y = g ZY = Z.
We will prove (if x Y then 2 ^ n + f (Y {x}) else f Y) = (if x Z then 2 ^ n + f (Z {x}) else f Z)Y = Z.
We prove the intermediate claim LYx: Y {x} 𝒫 (X {x}).
Apply PowerI to the current goal.
We will prove Y {x} X {x}.
Let y be given.
Assume Hy.
Apply setminusE Y {x} y Hy to the current goal.
Assume Hy1: y Y.
Assume Hy2: y {x}.
Apply setminusI to the current goal.
We will prove y X.
Apply PowerE X Y HY to the current goal.
An exact proof term for the current goal is Hy1.
We will prove y {x}.
An exact proof term for the current goal is Hy2.
We prove the intermediate claim LZx: Z {x} 𝒫 (X {x}).
Apply PowerI to the current goal.
We will prove Z {x} X {x}.
Let z be given.
Assume Hz.
Apply setminusE Z {x} z Hz to the current goal.
Assume Hz1: z Z.
Assume Hz2: z {x}.
Apply setminusI to the current goal.
We will prove z X.
Apply PowerE X Z HZ to the current goal.
An exact proof term for the current goal is Hz1.
We will prove z {x}.
An exact proof term for the current goal is Hz2.
We prove the intermediate claim LfYx2n: f (Y {x}) 2 ^ n.
An exact proof term for the current goal is Hf1 (Y {x}) LYx.
We prove the intermediate claim LfYxN: nat_p (f (Y {x})).
An exact proof term for the current goal is nat_p_trans (2 ^ n) L2nN (f (Y {x})) LfYx2n.
We prove the intermediate claim LfZx2n: f (Z {x}) 2 ^ n.
An exact proof term for the current goal is Hf1 (Z {x}) LZx.
We prove the intermediate claim LfZxN: nat_p (f (Z {x})).
An exact proof term for the current goal is nat_p_trans (2 ^ n) L2nN (f (Z {x})) LfZx2n.
Apply xm (x Y) to the current goal.
Assume H2: x Y.
rewrite the current goal using If_i_1 (x Y) (2 ^ n + f (Y {x})) (f Y) H2 (from left to right).
Apply xm (x Z) to the current goal.
Assume H3: x Z.
rewrite the current goal using If_i_1 (x Z) (2 ^ n + f (Z {x})) (f Z) H3 (from left to right).
Assume H4: 2 ^ n + f (Y {x}) = 2 ^ n + f (Z {x}).
We will prove Y = Z.
We prove the intermediate claim LYxZx: Y {x} = Z {x}.
Apply Hf2 to the current goal.
An exact proof term for the current goal is LYx.
An exact proof term for the current goal is LZx.
We will prove f (Y {x}) = f (Z {x}).
Apply add_nat_cancel_R (f (Y {x})) LfYxN (f (Z {x})) LfZxN (2 ^ n) L2nN to the current goal.
We will prove f (Y {x}) + 2 ^ n = f (Z {x}) + 2 ^ n.
rewrite the current goal using add_nat_com (f (Y {x})) LfYxN (2 ^ n) L2nN (from left to right).
rewrite the current goal using add_nat_com (f (Z {x})) LfZxN (2 ^ n) L2nN (from left to right).
We will prove 2 ^ n + f (Y {x}) = 2 ^ n + f (Z {x}).
An exact proof term for the current goal is H4.
Apply set_ext to the current goal.
Let y be given.
Assume Hy: y Y.
Apply xm (y {x}) to the current goal.
Assume H5: y {x}.
rewrite the current goal using SingE x y H5 (from left to right).
An exact proof term for the current goal is H3.
Assume H5: y {x}.
Apply setminusE1 Z {x} to the current goal.
We will prove y Z {x}.
rewrite the current goal using LYxZx (from right to left).
We will prove y Y {x}.
Apply setminusI to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is H5.
Let z be given.
Assume Hz: z Z.
Apply xm (z {x}) to the current goal.
Assume H5: z {x}.
rewrite the current goal using SingE x z H5 (from left to right).
An exact proof term for the current goal is H2.
Assume H5: z {x}.
Apply setminusE1 Y {x} to the current goal.
We will prove z Y {x}.
rewrite the current goal using LYxZx (from left to right).
We will prove z Z {x}.
Apply setminusI to the current goal.
An exact proof term for the current goal is Hz.
An exact proof term for the current goal is H5.
Assume H3: x Z.
We prove the intermediate claim LZ: Z 𝒫 (X {x}).
Apply PowerI to the current goal.
We will prove Z X {x}.
Let z be given.
Assume Hz.
Apply setminusI to the current goal.
We will prove z X.
Apply PowerE X Z HZ to the current goal.
An exact proof term for the current goal is Hz.
We will prove z {x}.
Assume Hz2: z {x}.
Apply H3 to the current goal.
We will prove x Z.
rewrite the current goal using SingE x z Hz2 (from right to left).
An exact proof term for the current goal is Hz.
rewrite the current goal using If_i_0 (x Z) (2 ^ n + f (Z {x})) (f Z) H3 (from left to right).
Assume H4: 2 ^ n + f (Y {x}) = f Z.
We will prove False.
Apply In_irref (f Z) to the current goal.
We will prove f Z f Z.
rewrite the current goal using H4 (from right to left) at position 2.
We will prove f Z 2 ^ n + f (Y {x}).
Apply add_nat_Subq_R' (2 ^ n) L2nN (f (Y {x})) LfYxN to the current goal.
We will prove f Z 2 ^ n.
An exact proof term for the current goal is Hf1 Z LZ.
Assume H2: x Y.
We prove the intermediate claim LY: Y 𝒫 (X {x}).
Apply PowerI to the current goal.
We will prove Y X {x}.
Let y be given.
Assume Hy.
Apply setminusI to the current goal.
We will prove y X.
Apply PowerE X Y HY to the current goal.
An exact proof term for the current goal is Hy.
We will prove y {x}.
Assume Hy2: y {x}.
Apply H2 to the current goal.
We will prove x Y.
rewrite the current goal using SingE x y Hy2 (from right to left).
An exact proof term for the current goal is Hy.
rewrite the current goal using If_i_0 (x Y) (2 ^ n + f (Y {x})) (f Y) H2 (from left to right).
Apply xm (x Z) to the current goal.
Assume H3: x Z.
rewrite the current goal using If_i_1 (x Z) (2 ^ n + f (Z {x})) (f Z) H3 (from left to right).
Assume H4: f Y = 2 ^ n + f (Z {x}).
We will prove False.
Apply In_irref (f Y) to the current goal.
We will prove f Y f Y.
rewrite the current goal using H4 (from left to right) at position 2.
We will prove f Y 2 ^ n + f (Z {x}).
Apply add_nat_Subq_R' (2 ^ n) L2nN (f (Z {x})) LfZxN to the current goal.
We will prove f Y 2 ^ n.
An exact proof term for the current goal is Hf1 Y LY.
Assume H3: x Z.
rewrite the current goal using If_i_0 (x Z) (2 ^ n + f (Z {x})) (f Z) H3 (from left to right).
Assume H4: f Y = f Z.
We will prove Y = Z.
Apply Hf2 to the current goal.
We will prove Y 𝒫 (X {x}).
Apply PowerI to the current goal.
Let y be given.
Assume Hy: y Y.
Apply setminusI to the current goal.
We will prove y X.
An exact proof term for the current goal is PowerE X Y HY y Hy.
Assume H5: y {x}.
Apply H2 to the current goal.
We will prove x Y.
rewrite the current goal using SingE x y H5 (from right to left).
An exact proof term for the current goal is Hy.
We will prove Z 𝒫 (X {x}).
Apply PowerI to the current goal.
Let z be given.
Assume Hz: z Z.
Apply setminusI to the current goal.
We will prove z X.
An exact proof term for the current goal is PowerE X Z HZ z Hz.
Assume H5: z {x}.
Apply H3 to the current goal.
We will prove x Z.
rewrite the current goal using SingE x z H5 (from right to left).
An exact proof term for the current goal is Hz.
An exact proof term for the current goal is H4.
Let i be given.
Assume Hi: i 2 ^ n + 2 ^ n.
We will prove Y𝒫 X, g Y = i.
We prove the intermediate claim LiN: nat_p i.
An exact proof term for the current goal is nat_p_trans (2 ^ n + 2 ^ n) (add_nat_p (2 ^ n) L2nN (2 ^ n) L2nN) i Hi.
Apply ordinal_In_Or_Subq i (2 ^ n) (nat_p_ordinal i LiN) L2no to the current goal.
Assume H2: i 2 ^ n.
Apply Hf3 i H2 to the current goal.
Let Y be given.
Assume H.
Apply H to the current goal.
Assume HY: Y 𝒫 (X {x}).
Assume HYi: f Y = i.
We use Y to witness the existential quantifier.
Apply andI to the current goal.
We will prove Y 𝒫 X.
Apply PowerI to the current goal.
Let y be given.
Assume Hy: y Y.
Apply setminusE1 X {x} y to the current goal.
We will prove y X {x}.
Apply PowerE (X {x}) Y HY to the current goal.
We will prove y Y.
An exact proof term for the current goal is Hy.
We will prove g Y = i.
We will prove (if x Y then 2 ^ n + f (Y {x}) else f Y) = i.
We prove the intermediate claim LxnY: x Y.
Assume H3: x Y.
We prove the intermediate claim LxXx: x X {x}.
Apply PowerE (X {x}) Y HY to the current goal.
An exact proof term for the current goal is H3.
Apply setminusE2 X {x} x LxXx to the current goal.
We will prove x {x}.
Apply SingI to the current goal.
rewrite the current goal using If_i_0 (x Y) (2 ^ n + f (Y {x})) (f Y) LxnY (from left to right).
An exact proof term for the current goal is HYi.
Assume H2: 2 ^ n i.
Apply nat_Subq_add_ex (2 ^ n) L2nN i LiN H2 to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: nat_p k.
Assume Hik2n: i = k + 2 ^ n.
We prove the intermediate claim L3: k 2 ^ n.
Apply ordinal_In_Or_Subq k (2 ^ n) (nat_p_ordinal k Hk) L2no to the current goal.
Assume H3: k 2 ^ n.
An exact proof term for the current goal is H3.
Assume H3: 2 ^ n k.
We will prove False.
Apply In_irref i to the current goal.
We will prove i i.
rewrite the current goal using Hik2n (from left to right) at position 2.
We will prove i k + 2 ^ n.
Apply add_nat_Subq_R (2 ^ n) L2nN k Hk H3 (2 ^ n) L2nN to the current goal.
We will prove i 2 ^ n + 2 ^ n.
An exact proof term for the current goal is Hi.
Apply Hf3 k L3 to the current goal.
Let Y be given.
Assume H.
Apply H to the current goal.
Assume HY: Y 𝒫 (X {x}).
Assume HYk: f Y = k.
We prove the intermediate claim LxnY: x Y.
Assume H3: x Y.
We prove the intermediate claim LxXx: x X {x}.
Apply PowerE (X {x}) Y HY to the current goal.
An exact proof term for the current goal is H3.
Apply setminusE2 X {x} x LxXx to the current goal.
We will prove x {x}.
Apply SingI to the current goal.
We prove the intermediate claim LxYx: x Y {x}.
Apply binunionI2 to the current goal.
Apply SingI to the current goal.
We prove the intermediate claim LYxxY: (Y {x}) {x} = Y.
Apply set_ext to the current goal.
Let u be given.
Assume Hu: u (Y {x}) {x}.
Apply setminusE (Y {x}) {x} u Hu to the current goal.
Assume Hu1: u Y {x}.
Assume Hu2: u {x}.
Apply binunionE Y {x} u Hu1 to the current goal.
Assume HuY: u Y.
An exact proof term for the current goal is HuY.
Assume Hux: u {x}.
We will prove False.
An exact proof term for the current goal is Hu2 Hux.
Let y be given.
Assume Hy: y Y.
We will prove y (Y {x}) {x}.
Apply setminusI to the current goal.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hy.
Assume Hyx: y {x}.
Apply LxnY to the current goal.
We will prove x Y.
rewrite the current goal using SingE x y Hyx (from right to left).
An exact proof term for the current goal is Hy.
We use (Y {x}) to witness the existential quantifier.
Apply andI to the current goal.
We will prove Y {x} 𝒫 X.
Apply PowerI to the current goal.
Apply binunion_Subq_min to the current goal.
We will prove Y X.
Apply Subq_tra Y (X {x}) X (PowerE (X {x}) Y HY) to the current goal.
Apply setminus_Subq to the current goal.
We will prove {x} X.
Let u be given.
Assume Hu: u {x}.
rewrite the current goal using SingE x u Hu (from left to right).
We will prove x X.
An exact proof term for the current goal is Hx.
We will prove g (Y {x}) = i.
We will prove (if x Y {x} then 2 ^ n + f ((Y {x}) {x}) else f (Y {x})) = i.
rewrite the current goal using If_i_1 (x Y {x}) (2 ^ n + f ((Y {x}) {x})) (f (Y {x})) LxYx (from left to right).
We will prove 2 ^ n + f ((Y {x}) {x}) = i.
rewrite the current goal using LYxxY (from left to right).
We will prove 2 ^ n + f Y = i.
rewrite the current goal using HYk (from left to right).
We will prove 2 ^ n + k = i.
rewrite the current goal using add_nat_com (2 ^ n) L2nN k Hk (from left to right).
Use symmetry.
An exact proof term for the current goal is Hik2n.
End of Section form100_52
Theorem. (ZF_closed_E) The following is provable:
∀U, ZF_closed U∀p : prop, (Union_closed UPower_closed URepl_closed Up)p
Proof:
An exact proof term for the current goal is (λU C p v ⇒ C p (λC H3 ⇒ C p (λH1 H2 ⇒ v H1 H2 H3))).
Theorem. (ZF_Union_closed) The following is provable:
∀U, ZF_closed UXU, X U
Proof:
An exact proof term for the current goal is (λU C ⇒ ZF_closed_E U C (XU, X U) (λH _ _ ⇒ H)).
Theorem. (ZF_Power_closed) The following is provable:
∀U, ZF_closed UXU, 𝒫 X U
Proof:
An exact proof term for the current goal is (λU C ⇒ ZF_closed_E U C (XU, 𝒫 X U) (λ_ H _ ⇒ H)).
Theorem. (ZF_Repl_closed) The following is provable:
∀U, ZF_closed UXU, ∀F : setset, (xX, F x U){F x|xX} U
Proof:
An exact proof term for the current goal is (λU C ⇒ ZF_closed_E U C (XU, ∀F : setset, (xX, F x U){F x|xX} U) (λ_ _ H ⇒ H)).
Theorem. (ZF_UPair_closed) The following is provable:
∀U, ZF_closed Ux yU, {x,y} U
Proof:
Let U be given.
Assume C: ZF_closed U.
Let x be given.
Assume Hx: x U.
Let y be given.
Assume Hy: y U.
We will prove {x,y} U.
We prove the intermediate claim L1: {if x X then x else y|X𝒫 (𝒫 x)} = {x,y}.
Apply set_ext to the current goal.
We will prove {if x X then x else y|X𝒫 (𝒫 x)} {x,y}.
Let z be given.
Assume Hz: z {if x X then x else y|X𝒫 (𝒫 x)}.
We will prove z {x,y}.
Apply (ReplE_impred (𝒫 (𝒫 x)) (λX ⇒ if x X then x else y) z Hz) to the current goal.
Let X be given.
Assume _.
We will prove z = (if x X then x else y)z {x,y}.
Apply (xm (x X)) to the current goal.
Assume H2: x X.
rewrite the current goal using (If_i_1 (x X) x y H2) (from left to right).
We will prove (z = xz {x,y}).
Assume H3: z = x.
rewrite the current goal using H3 (from left to right).
An exact proof term for the current goal is (UPairI1 x y).
Assume H2: x X.
rewrite the current goal using (If_i_0 (x X) x y H2) (from left to right).
We will prove (z = yz {x,y}).
Assume H3: z = y.
rewrite the current goal using H3 (from left to right).
An exact proof term for the current goal is (UPairI2 x y).
We will prove {x,y} {if x X then x else y|X𝒫 (𝒫 x)}.
Let z be given.
Assume Hz: z {x,y}.
We will prove z {if x X then x else y|X𝒫 (𝒫 x)}.
We prove the intermediate claim L1a: (if x (𝒫 x) then x else y) {if x X then x else y|X𝒫 (𝒫 x)}.
Apply (ReplI (𝒫 (𝒫 x)) (λX ⇒ if x X then x else y) (𝒫 x)) to the current goal.
We will prove 𝒫 x 𝒫 (𝒫 x).
An exact proof term for the current goal is (Self_In_Power (𝒫 x)).
We prove the intermediate claim L1b: (if x Empty then x else y) {if x X then x else y|X𝒫 (𝒫 x)}.
Apply (ReplI (𝒫 (𝒫 x)) (λX ⇒ if x X then x else y) Empty) to the current goal.
We will prove Empty 𝒫 (𝒫 x).
An exact proof term for the current goal is (Empty_In_Power (𝒫 x)).
Apply (UPairE z x y Hz) to the current goal.
Assume H1: z = x.
rewrite the current goal using H1 (from left to right).
We will prove x {if x X then x else y|X𝒫 (𝒫 x)}.
rewrite the current goal using (If_i_1 (x (𝒫 x)) x y (Self_In_Power x)) (from right to left) at position 1.
An exact proof term for the current goal is L1a.
Assume H1: z = y.
rewrite the current goal using H1 (from left to right).
We will prove y {if x X then x else y|X𝒫 (𝒫 x)}.
rewrite the current goal using (If_i_0 (x Empty) x y (EmptyE x)) (from right to left) at position 1.
An exact proof term for the current goal is L1b.
We will prove {x,y} U.
rewrite the current goal using L1 (from right to left).
We will prove {if x X then x else y|X𝒫 (𝒫 x)} U.
We prove the intermediate claim L2: 𝒫 (𝒫 x) U.
An exact proof term for the current goal is (ZF_Power_closed U C (𝒫 x) (ZF_Power_closed U C x Hx)).
We prove the intermediate claim L3: X𝒫 (𝒫 x), (if x X then x else y) U.
Let X be given.
Assume _.
We will prove (if x X then x else y) U.
Apply (xm (x X)) to the current goal.
Assume H1: x X.
rewrite the current goal using (If_i_1 (x X) x y H1) (from left to right).
We will prove x U.
An exact proof term for the current goal is Hx.
Assume H1: x X.
rewrite the current goal using (If_i_0 (x X) x y H1) (from left to right).
We will prove y U.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is (ZF_Repl_closed U C (𝒫 (𝒫 x)) L2 (λX ⇒ if x X then x else y) L3).
Theorem. (ZF_Sing_closed) The following is provable:
∀U, ZF_closed UxU, {x} U
Proof:
An exact proof term for the current goal is (λU C x H ⇒ ZF_UPair_closed U C x H x H).
Theorem. (ZF_binunion_closed) The following is provable:
∀U, ZF_closed UX YU, (X Y) U
Proof:
An exact proof term for the current goal is (λU C X HX Y HY ⇒ ZF_Union_closed U C {X,Y} (ZF_UPair_closed U C X HX Y HY)).
Theorem. (ZF_ordsucc_closed) The following is provable:
∀U, ZF_closed UxU, ordsucc x U
Proof:
An exact proof term for the current goal is (λU C x H ⇒ ZF_binunion_closed U C x H {x} (ZF_Sing_closed U C x H)).
Theorem. (nat_p_UnivOf_Empty) The following is provable:
∀n : set, nat_p nn UnivOf Empty
Proof:
Apply nat_ind to the current goal.
We will prove 0 UnivOf Empty.
An exact proof term for the current goal is (UnivOf_In Empty).
Let n be given.
Assume Hn: nat_p n.
Assume IHn: n UnivOf Empty.
We will prove ordsucc n UnivOf Empty.
An exact proof term for the current goal is (ZF_ordsucc_closed (UnivOf Empty) (UnivOf_ZF_closed Empty) n IHn).
Definition. We define ω to be {nUnivOf Empty|nat_p n} of type set.
Theorem. (omega_nat_p) The following is provable:
Proof:
An exact proof term for the current goal is (λn H ⇒ SepE2 (UnivOf Empty) nat_p n H).
Theorem. (nat_p_omega) The following is provable:
∀n : set, nat_p nn ω
Proof:
Let n be given.
Assume H: nat_p n.
We will prove n {nUnivOf Empty|nat_p n}.
Apply SepI to the current goal.
We will prove n UnivOf Empty.
An exact proof term for the current goal is (nat_p_UnivOf_Empty n H).
We will prove nat_p n.
An exact proof term for the current goal is H.
Theorem. (omega_ordsucc) The following is provable:
Proof:
Let n be given.
Assume Hn.
Apply nat_p_omega to the current goal.
Apply nat_ordsucc to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hn.
Theorem. (form100_22_v2) The following is provable:
∀f : setset, ¬ inj (𝒫 ω) ω f
Proof:
An exact proof term for the current goal is form100_63_injCantor ω.
Theorem. (form100_22_v3) The following is provable:
∀g : setset, ¬ surj ω (𝒫 ω) g
Proof:
Let g be given.
Assume H1.
Apply H1 to the current goal.
Assume H1: nω, g n 𝒫 ω.
Assume H2: X𝒫 ω, nω, g n = X.
Set D to be the term {nω|n g n}.
We prove the intermediate claim L1: D 𝒫 ω.
Apply PowerI to the current goal.
Let n be given.
Assume Hn: n D.
We will prove n ω.
An exact proof term for the current goal is SepE1 ω (λn ⇒ n g n) n Hn.
Apply H2 D L1 to the current goal.
Let n be given.
Assume H3.
Apply H3 to the current goal.
Assume H3: n ω.
Assume H4: g n = D.
We prove the intermediate claim L2: n D.
Assume H5: n D.
Apply SepE2 ω (λn ⇒ n g n) n H5 to the current goal.
We will prove n g n.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is H5.
Apply L2 to the current goal.
We will prove n D.
Apply SepI to the current goal.
An exact proof term for the current goal is H3.
We will prove n g n.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is L2.
Theorem. (form100_22_v1) The following is provable:
Proof:
Assume H1: equip ω (𝒫 ω).
Apply H1 to the current goal.
Let g be given.
Assume H2: bij ω (𝒫 ω) g.
Apply form100_22_v3 g to the current goal.
We will prove surj ω (𝒫 ω) g.
Apply bij_surj to the current goal.
An exact proof term for the current goal is H2.
Theorem. (omega_TransSet) The following is provable:
Proof:
Let n be given.
Assume Hn: n ω.
Let m be given.
Assume Hm: m n.
We will prove m ω.
Apply nat_p_omega to the current goal.
We will prove nat_p m.
Apply (nat_p_trans n) to the current goal.
We will prove nat_p n.
An exact proof term for the current goal is (omega_nat_p n Hn).
We will prove m n.
An exact proof term for the current goal is Hm.
Theorem. (omega_ordinal) The following is provable:
Proof:
Apply andI to the current goal.
An exact proof term for the current goal is omega_TransSet.
Let n be given.
Assume Hn: n ω.
We will prove TransSet n.
Apply ordinal_TransSet to the current goal.
We will prove ordinal n.
Apply nat_p_ordinal to the current goal.
We will prove nat_p n.
An exact proof term for the current goal is (omega_nat_p n Hn).
Theorem. (ordsucc_omega_ordinal) The following is provable:
Proof:
An exact proof term for the current goal is ordinal_ordsucc ω omega_ordinal.
Definition. We define finite to be λX ⇒ nω, equip X n of type setprop.
Theorem. (nat_finite) The following is provable:
∀n, nat_p nfinite n
Proof:
Let n be given.
Assume Hn: nat_p n.
We will prove n'ω, equip n n'.
We use n to witness the existential quantifier.
Apply andI to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is Hn.
We will prove equip n n.
Apply equip_ref to the current goal.
Theorem. (finite_ind) The following is provable:
∀p : setprop, p Empty(∀X y, finite Xy Xp Xp (X {y}))∀X, finite Xp X
Proof:
Let p be given.
Assume H1 H2.
We prove the intermediate claim L1: ∀n, nat_p n∀X, equip X np X.
Apply nat_ind to the current goal.
Let X be given.
Assume H3: equip X 0.
rewrite the current goal using equip_0_Empty X H3 (from left to right).
An exact proof term for the current goal is H1.
Let n be given.
Assume Hn.
Assume IHn: ∀X, equip X np X.
Let X be given.
Assume H3: equip X (ordsucc n).
Apply equip_sym X (ordsucc n) H3 to the current goal.
Let f be given.
Assume Hf: bij (ordsucc n) X f.
Apply bijE (ordsucc n) X f Hf to the current goal.
Assume Hf1: iordsucc n, f i X.
Assume Hf2: i jordsucc n, f i = f ji = j.
Assume Hf3: xX, iordsucc n, f i = x.
Set Z to be the term {f i|in}.
Set y to be the term f n.
We prove the intermediate claim L1a: X = Z {y}.
Apply set_ext to the current goal.
Let x be given.
Assume Hx: x X.
Apply Hf3 x Hx to the current goal.
Let i be given.
Assume H.
Apply H to the current goal.
Assume Hi: i ordsucc n.
Assume H4: f i = x.
Apply ordsuccE n i Hi to the current goal.
Assume H5: i n.
Apply binunionI1 to the current goal.
We will prove x Z.
rewrite the current goal using H4 (from right to left).
We will prove f i Z.
Apply ReplI to the current goal.
An exact proof term for the current goal is H5.
Assume H5: i = n.
Apply binunionI2 to the current goal.
We will prove x {y}.
rewrite the current goal using H4 (from right to left).
rewrite the current goal using H5 (from left to right).
An exact proof term for the current goal is SingI (f n).
Let x be given.
Assume Hx: x Z {y}.
Apply binunionE Z {y} x Hx to the current goal.
Assume H4: x Z.
Apply ReplE_impred n f x H4 to the current goal.
Let i be given.
Assume Hi: i n.
Assume H5: x = f i.
We will prove x X.
rewrite the current goal using H5 (from left to right).
We will prove f i X.
An exact proof term for the current goal is Hf1 i (ordsuccI1 n i Hi).
Assume H4: x {y}.
rewrite the current goal using SingE y x H4 (from left to right).
We will prove f n X.
An exact proof term for the current goal is Hf1 n (ordsuccI2 n).
We prove the intermediate claim L1b: equip Z n.
Apply equip_sym to the current goal.
We will prove f : setset, bij n Z f.
We use f to witness the existential quantifier.
Apply bijI to the current goal.
Let i be given.
Assume Hi.
We will prove f i {f i|in}.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hi.
Let i be given.
Assume Hi.
Let j be given.
Assume Hj.
Apply Hf2 to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hj.
Apply ReplE' to the current goal.
Let i be given.
Assume Hi: i n.
We will prove i'n, f i' = f i.
We use i to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hi.
Use reflexivity.
rewrite the current goal using L1a (from left to right).
We will prove p (Z {y}).
Apply H2 Z y to the current goal.
We will prove finite Z.
We will prove nω, equip Z n.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is nat_p_omega n Hn.
An exact proof term for the current goal is L1b.
We will prove y Z.
Assume H4: y Z.
Apply ReplE_impred n f y H4 to the current goal.
Let i be given.
Assume Hi: i n.
Assume H5: y = f i.
Apply In_irref n to the current goal.
We will prove n n.
rewrite the current goal using Hf2 n (ordsuccI2 n) i (ordsuccI1 n i Hi) H5 (from left to right) at position 1.
We will prove i n.
An exact proof term for the current goal is Hi.
We will prove p Z.
An exact proof term for the current goal is IHn Z L1b.
Let X be given.
Assume H3.
Apply H3 to the current goal.
Let n be given.
Assume H.
Apply H to the current goal.
Assume Hn: n ω.
Assume H4: equip X n.
An exact proof term for the current goal is L1 n (omega_nat_p n Hn) X H4.
Theorem. (finite_Empty) The following is provable:
Proof:
We will prove nω, equip 0 n.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is nat_p_omega 0 nat_0.
Apply equip_ref to the current goal.
Theorem. (Sing_finite) The following is provable:
∀x, finite {x}
Proof:
Let x be given.
We will prove nω, equip {x} n.
We use 1 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is nat_p_omega 1 nat_1.
An exact proof term for the current goal is equip_Sing_1 x.
Theorem. (adjoin_finite) The following is provable:
∀X y, finite Xfinite (X {y})
Proof:
Let X and y be given.
Assume H1.
Apply H1 to the current goal.
Let n be given.
Assume H.
Apply H to the current goal.
Assume Hn: n ω.
Assume H2: equip X n.
Apply equip_sym X n H2 to the current goal.
Let f be given.
Assume Hf: bij n X f.
Apply bijE n X f Hf to the current goal.
Assume Hf1: in, f i X.
Assume Hf2: i jn, f i = f ji = j.
Assume Hf3: xX, in, f i = x.
Apply xm (y X) to the current goal.
Assume H3: y X.
We prove the intermediate claim L1: X {y} = X.
Apply set_ext to the current goal.
Let x be given.
Assume Hx.
Apply binunionE X {y} x Hx to the current goal.
Assume H4.
An exact proof term for the current goal is H4.
Assume H4: x {y}.
rewrite the current goal using SingE y x H4 (from left to right).
An exact proof term for the current goal is H3.
Apply binunion_Subq_1 to the current goal.
rewrite the current goal using L1 (from left to right).
An exact proof term for the current goal is H1.
Assume H3: y X.
We will prove mω, equip (X {y}) m.
We use ordsucc n to witness the existential quantifier.
Apply andI to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Hn.
We will prove equip (X {y}) (ordsucc n).
Apply equip_sym to the current goal.
We will prove g : setset, bij (ordsucc n) (X {y}) g.
We prove the intermediate claim Lg: g : setset, (in, g i = f i) g n = y.
We use (λi : setif i n then f i else y) to witness the existential quantifier.
Apply andI to the current goal.
Let i be given.
Assume Hi.
An exact proof term for the current goal is If_i_1 (i n) (f i) y Hi.
An exact proof term for the current goal is If_i_0 (n n) (f n) y (In_irref n).
Apply Lg to the current goal.
Let g be given.
Assume H.
Apply H to the current goal.
Assume Hg1 Hg2.
We use g to witness the existential quantifier.
Apply bijI to the current goal.
We will prove iordsucc n, g i X {y}.
Let i be given.
Assume Hi.
Apply ordsuccE n i Hi to the current goal.
Assume H4: i n.
Apply binunionI1 to the current goal.
rewrite the current goal using Hg1 i H4 (from left to right).
We will prove f i X.
An exact proof term for the current goal is Hf1 i H4.
Assume H4: i = n.
Apply binunionI2 to the current goal.
rewrite the current goal using H4 (from left to right).
rewrite the current goal using Hg2 (from left to right).
Apply SingI to the current goal.
We will prove i jordsucc n, g i = g ji = j.
Let i be given.
Assume Hi.
Let j be given.
Assume Hj.
Apply ordsuccE n i Hi to the current goal.
Assume H4: i n.
rewrite the current goal using Hg1 i H4 (from left to right).
Apply ordsuccE n j Hj to the current goal.
Assume H5: j n.
rewrite the current goal using Hg1 j H5 (from left to right).
An exact proof term for the current goal is Hf2 i H4 j H5.
Assume H5: j = n.
rewrite the current goal using H5 (from left to right).
rewrite the current goal using Hg2 (from left to right).
Assume H6: f i = y.
We will prove False.
Apply H3 to the current goal.
We will prove y X.
rewrite the current goal using H6 (from right to left).
An exact proof term for the current goal is Hf1 i H4.
Assume H4: i = n.
rewrite the current goal using H4 (from left to right).
rewrite the current goal using Hg2 (from left to right).
Apply ordsuccE n j Hj to the current goal.
Assume H5: j n.
rewrite the current goal using Hg1 j H5 (from left to right).
Assume H6: y = f j.
We will prove False.
Apply H3 to the current goal.
We will prove y X.
rewrite the current goal using H6 (from left to right).
An exact proof term for the current goal is Hf1 j H5.
Assume H5: j = n.
rewrite the current goal using H5 (from left to right).
Assume _.
We will prove n = n.
Use reflexivity.
We will prove xX {y}, iordsucc n, g i = x.
Let x be given.
Assume Hx.
Apply binunionE X {y} x Hx to the current goal.
Assume H4: x X.
Apply Hf3 x H4 to the current goal.
Let i be given.
Assume H.
Apply H to the current goal.
Assume Hi: i n.
Assume H5: f i = x.
We use i to witness the existential quantifier.
Apply andI to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
We will prove g i = x.
rewrite the current goal using Hg1 i Hi (from left to right).
An exact proof term for the current goal is H5.
Assume H4: x {y}.
We use n to witness the existential quantifier.
Apply andI to the current goal.
Apply ordsuccI2 to the current goal.
We will prove g n = x.
rewrite the current goal using SingE y x H4 (from left to right).
An exact proof term for the current goal is Hg2.
Theorem. (binunion_finite) The following is provable:
∀X, finite X∀Y, finite Yfinite (X Y)
Proof:
Let X be given.
Assume HX.
Apply finite_ind to the current goal.
We will prove finite (X 0).
rewrite the current goal using binunion_idr X (from left to right).
An exact proof term for the current goal is HX.
Let Y and z be given.
Assume HY: finite Y.
Assume Hz: z Y.
Assume IH: finite (X Y).
We will prove finite (X (Y {z})).
rewrite the current goal using binunion_asso (from left to right).
We will prove finite ((X Y) {z}).
Apply adjoin_finite to the current goal.
An exact proof term for the current goal is IH.
Theorem. (famunion_nat_finite) The following is provable:
∀X : setset, ∀n, nat_p n(in, finite (X i))finite (inX i)
Proof:
Let X be given.
Apply nat_ind to the current goal.
Assume _.
We will prove finite (i0X i).
rewrite the current goal using famunion_Empty (from left to right).
An exact proof term for the current goal is finite_Empty.
Let n be given.
Assume Hn.
Assume IHn: (in, finite (X i))finite (inX i).
Assume H1: iordsucc n, finite (X i).
We will prove finite (iordsucc nX i).
We prove the intermediate claim L1: (iordsucc nX i) = (inX i) X n.
Apply set_ext to the current goal.
Let z be given.
Assume Hz: z iordsucc nX i.
Apply famunionE_impred (ordsucc n) X z Hz to the current goal.
Let i be given.
Assume Hi: i ordsucc n.
Assume H2: z X i.
Apply ordsuccE n i Hi to the current goal.
Assume H3: i n.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is famunionI n X i z H3 H2.
Assume H3: i = n.
Apply binunionI2 to the current goal.
rewrite the current goal using H3 (from right to left).
An exact proof term for the current goal is H2.
Let z be given.
Apply binunionE' to the current goal.
Assume Hz.
Apply famunionE_impred n X z Hz to the current goal.
Let i be given.
Assume Hi: i n.
Assume H2: z X i.
Apply famunionI (ordsucc n) X i z to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
An exact proof term for the current goal is H2.
Assume Hz.
Apply famunionI (ordsucc n) X n z to the current goal.
Apply ordsuccI2 to the current goal.
An exact proof term for the current goal is Hz.
rewrite the current goal using L1 (from left to right).
We will prove finite ((inX i) X n).
Apply binunion_finite to the current goal.
Apply IHn to the current goal.
Let i be given.
Assume Hi: i n.
Apply H1 to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
Apply H1 n to the current goal.
Apply ordsuccI2 to the current goal.
Theorem. (Subq_finite) The following is provable:
∀X, finite X∀Y, Y Xfinite Y
Proof:
Apply finite_ind to the current goal.
Let Y be given.
Assume H1: Y 0.
We will prove finite Y.
rewrite the current goal using Empty_Subq_eq Y H1 (from left to right).
An exact proof term for the current goal is finite_Empty.
Let X and z be given.
Assume HX: finite X.
Assume Hz: z X.
Assume IH: ∀Y, Y Xfinite Y.
Let Y be given.
Assume H1: Y X {z}.
We will prove finite Y.
Apply xm (z Y) to the current goal.
Assume H2: z Y.
We prove the intermediate claim L1: Y = (Y {z}) {z}.
Apply set_ext to the current goal.
Let w be given.
Assume Hw: w Y.
Apply xm (w {z}) to the current goal.
Assume H3: w {z}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is H3.
Assume H3: w {z}.
Apply binunionI1 to the current goal.
Apply setminusI to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is H3.
Let w be given.
Assume Hw: w (Y {z}) {z}.
Apply binunionE (Y {z}) {z} w Hw to the current goal.
Assume H3: w Y {z}.
An exact proof term for the current goal is setminusE1 Y {z} w H3.
Assume H3: w {z}.
We will prove w Y.
rewrite the current goal using SingE z w H3 (from left to right).
An exact proof term for the current goal is H2.
rewrite the current goal using L1 (from left to right).
Apply adjoin_finite to the current goal.
We will prove finite (Y {z}).
Apply IH to the current goal.
Let y be given.
Assume Hy: y Y {z}.
Apply setminusE Y {z} y Hy to the current goal.
Assume Hy1: y Y.
Assume Hy2: y {z}.
We will prove y X.
Apply binunionE X {z} y (H1 y Hy1) to the current goal.
Assume H3: y X.
An exact proof term for the current goal is H3.
Assume H3: y {z}.
We will prove False.
Apply Hy2 to the current goal.
An exact proof term for the current goal is H3.
Assume H2: z Y.
Apply IH to the current goal.
Let y be given.
Assume Hy: y Y.
We will prove y X.
Apply binunionE X {z} y (H1 y Hy) to the current goal.
Assume H3: y X.
An exact proof term for the current goal is H3.
Assume H3: y {z}.
We will prove False.
Apply H2 to the current goal.
We will prove z Y.
rewrite the current goal using SingE z y H3 (from right to left).
An exact proof term for the current goal is Hy.
Definition. We define infinite to be λA ⇒ ¬ finite A of type setprop.
Beginning of Section InfinitePrimes
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_nat.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_nat.
Definition. We define divides_nat to be λm n ⇒ m ω n ω kω, m * k = n of type setsetprop.
Theorem. (divides_nat_ref) The following is provable:
∀n, nat_p ndivides_nat n n
Proof:
Let n be given.
Assume Hn.
We prove the intermediate claim Ln: n ω.
An exact proof term for the current goal is nat_p_omega n Hn.
We will prove n ω n ω kω, n * k = n.
Apply and3I to the current goal.
An exact proof term for the current goal is Ln.
An exact proof term for the current goal is Ln.
We use 1 to witness the existential quantifier.
Apply andI to the current goal.
We will prove 1 ω.
An exact proof term for the current goal is nat_p_omega 1 nat_1.
We will prove n * 1 = n.
An exact proof term for the current goal is mul_nat_1R n.
Theorem. (divides_nat_tra) The following is provable:
∀k m n, divides_nat k mdivides_nat m ndivides_nat k n
Proof:
Let k, m and n be given.
Assume H1: divides_nat k m.
Assume H2: divides_nat m n.
Apply H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume H1a: k ω.
Assume H1b: m ω.
Assume H1c: uω, k * u = m.
Apply H1c to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu: u ω.
Assume H1d: k * u = m.
Apply H2 to the current goal.
Assume H.
Apply H to the current goal.
Assume H2a: m ω.
Assume H2b: n ω.
Assume H2c: vω, m * v = n.
Apply H2c to the current goal.
Let v be given.
Assume H.
Apply H to the current goal.
Assume Hv: v ω.
Assume H2d: m * v = n.
We will prove k ω n ω wω, k * w = n.
Apply and3I to the current goal.
An exact proof term for the current goal is H1a.
An exact proof term for the current goal is H2b.
We use u * v to witness the existential quantifier.
Apply andI to the current goal.
We will prove u * v ω.
Apply nat_p_omega to the current goal.
Apply mul_nat_p to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hu.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hv.
We will prove k * (u * v) = n.
rewrite the current goal using mul_nat_asso k (omega_nat_p k H1a) u (omega_nat_p u Hu) v (omega_nat_p v Hv) (from right to left).
We will prove (k * u) * v = n.
rewrite the current goal using H1d (from left to right).
We will prove m * v = n.
An exact proof term for the current goal is H2d.
Definition. We define prime_nat to be λn ⇒ n ω 1 n kω, divides_nat k nk = 1 k = n of type setprop.
Theorem. (divides_nat_mulR) The following is provable:
Proof:
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
We will prove m ω m * n ω kω, m * k = m * n.
Apply and3I to the current goal.
An exact proof term for the current goal is Hm.
Apply nat_p_omega to the current goal.
Apply mul_nat_p to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hm.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hn.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hn.
Use reflexivity.
Theorem. (divides_nat_mulL) The following is provable:
Proof:
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
rewrite the current goal using mul_nat_com m (omega_nat_p m Hm) n (omega_nat_p n Hn) (from left to right).
We will prove divides_nat n (n * m).
An exact proof term for the current goal is divides_nat_mulR n Hn m Hm.
Theorem. (Pi_nat_divides) The following is provable:
∀f : setset, ∀n, nat_p n(in, nat_p (f i))(in, divides_nat (f i) (Pi_nat f n))
Proof:
Let f be given.
Apply nat_ind to the current goal.
Assume _.
Let i be given.
Assume Hi: i 0.
We will prove False.
An exact proof term for the current goal is EmptyE i Hi.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: (in, nat_p (f i))(in, divides_nat (f i) (Pi_nat f n)).
Assume Hf: iordsucc n, nat_p (f i).
We prove the intermediate claim L1: in, nat_p (f i).
Let i be given.
Assume Hi.
Apply Hf to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
We prove the intermediate claim L2: nat_p (Pi_nat f n).
An exact proof term for the current goal is Pi_nat_p f n Hn L1.
We prove the intermediate claim L3: nat_p (f n).
Apply Hf to the current goal.
Apply ordsuccI2 to the current goal.
Let i be given.
Assume Hi: i ordsucc n.
rewrite the current goal using Pi_nat_S f n Hn (from left to right).
We will prove divides_nat (f i) (Pi_nat f n * f n).
Apply ordsuccE n i Hi to the current goal.
Assume H1: i n.
Apply divides_nat_tra (f i) (Pi_nat f n) to the current goal.
We will prove divides_nat (f i) (Pi_nat f n).
An exact proof term for the current goal is IHn L1 i H1.
We will prove divides_nat (Pi_nat f n) (Pi_nat f n * f n).
An exact proof term for the current goal is divides_nat_mulR (Pi_nat f n) (nat_p_omega (Pi_nat f n) L2) (f n) (nat_p_omega (f n) L3).
Assume H1: i = n.
rewrite the current goal using H1 (from left to right).
We will prove divides_nat (f n) (Pi_nat f n * f n).
An exact proof term for the current goal is divides_nat_mulL (Pi_nat f n) (nat_p_omega (Pi_nat f n) L2) (f n) (nat_p_omega (f n) L3).
Definition. We define composite_nat to be λn ⇒ n ω k mω, 1 k 1 m k * m = n of type setprop.
Proof:
Let n be given.
Assume Hn.
Assume H1: 1 n.
Apply xm (composite_nat n) to the current goal.
Assume H2: composite_nat n.
Apply orIR to the current goal.
An exact proof term for the current goal is H2.
Assume H2: ¬ composite_nat n.
Apply orIL to the current goal.
We will prove n ω 1 n kω, divides_nat k nk = 1 k = n.
Apply and3I to the current goal.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is H1.
Let k be given.
Assume Hk.
Assume Hkn: divides_nat k n.
Apply Hkn to the current goal.
Assume _ H.
Apply H to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m ω.
Assume Hkm: k * m = n.
We will prove k = 1 k = n.
Apply dneg to the current goal.
Assume H3: ¬ (k = 1 k = n).
We prove the intermediate claim L1k: 1 k.
Apply ordinal_In_Or_Subq 1 k (nat_p_ordinal 1 nat_1) (nat_p_ordinal k (omega_nat_p k Hk)) to the current goal.
Assume H4: 1 k.
An exact proof term for the current goal is H4.
Assume H4: k 1.
We will prove False.
Apply nat_le1_cases k (omega_nat_p k Hk) H4 to the current goal.
Assume H4: k = 0.
We prove the intermediate claim Ln0: n = 0.
Use transitivity with and k * m.
We will prove n = k * m.
Use symmetry.
An exact proof term for the current goal is Hkm.
We will prove k * m = 0.
rewrite the current goal using H4 (from left to right).
We will prove 0 * m = 0.
An exact proof term for the current goal is mul_nat_0L m (omega_nat_p m Hm).
Apply In_no2cycle 0 1 In_0_1 to the current goal.
We will prove 1 0.
rewrite the current goal using Ln0 (from right to left) at position 2.
An exact proof term for the current goal is H1.
Assume H4: k = 1.
Apply H3 to the current goal.
Apply orIL to the current goal.
An exact proof term for the current goal is H4.
We prove the intermediate claim L1m: 1 m.
Apply ordinal_In_Or_Subq 1 m (nat_p_ordinal 1 nat_1) (nat_p_ordinal m (omega_nat_p m Hm)) to the current goal.
Assume H4: 1 m.
An exact proof term for the current goal is H4.
Assume H4: m 1.
We will prove False.
Apply nat_le1_cases m (omega_nat_p m Hm) H4 to the current goal.
Assume H4: m = 0.
We prove the intermediate claim Ln0: n = 0.
Use transitivity with and k * m.
We will prove n = k * m.
Use symmetry.
An exact proof term for the current goal is Hkm.
We will prove k * m = 0.
rewrite the current goal using H4 (from left to right).
We will prove k * 0 = 0.
An exact proof term for the current goal is mul_nat_0R k.
Apply In_no2cycle 0 1 In_0_1 to the current goal.
We will prove 1 0.
rewrite the current goal using Ln0 (from right to left) at position 2.
An exact proof term for the current goal is H1.
Assume H4: m = 1.
Apply H3 to the current goal.
Apply orIR to the current goal.
We will prove k = n.
Use transitivity with and k * m.
We will prove k = k * m.
rewrite the current goal using H4 (from left to right).
Use symmetry.
An exact proof term for the current goal is mul_nat_1R k.
We will prove k * m = n.
An exact proof term for the current goal is Hkm.
Apply H2 to the current goal.
We will prove composite_nat n.
We will prove n ω k mω, 1 k 1 m k * m = n.
Apply andI to the current goal.
An exact proof term for the current goal is Hn.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We use m to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hm.
We will prove 1 k 1 m k * m = n.
Apply and3I to the current goal.
An exact proof term for the current goal is L1k.
An exact proof term for the current goal is L1m.
An exact proof term for the current goal is Hkm.
Theorem. (prime_nat_divisor_ex) The following is provable:
∀n, nat_p n1 np, prime_nat p divides_nat p n
Proof:
Apply nat_complete_ind to the current goal.
Let n be given.
Assume Hn.
Assume IHn: kn, 1 kp, prime_nat p divides_nat p k.
Assume H1: 1 n.
Apply prime_nat_or_composite_nat n (nat_p_omega n Hn) H1 to the current goal.
Assume H1: prime_nat n.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H1.
We will prove divides_nat n n.
Apply divides_nat_ref to the current goal.
An exact proof term for the current goal is Hn.
Assume H1: composite_nat n.
Apply H1 to the current goal.
Assume _ H.
Apply H to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k ω.
Assume H.
Apply H to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m ω.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H1k: 1 k.
Assume H1m: 1 m.
Assume Hkm: k * m = n.
We prove the intermediate claim Lk: k n.
rewrite the current goal using Hkm (from right to left).
We will prove k k * m.
Apply mul_nat_0m_1n_In k (omega_nat_p k Hk) m (omega_nat_p m Hm) to the current goal.
We will prove 0 k.
Apply nat_trans k (omega_nat_p k Hk) 1 H1k 0 In_0_1 to the current goal.
We will prove 1 m.
An exact proof term for the current goal is H1m.
Apply IHn k Lk H1k to the current goal.
Let p be given.
Assume H.
Apply H to the current goal.
Assume Hp: prime_nat p.
Assume Hpk: divides_nat p k.
We use p to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hp.
We will prove divides_nat p n.
Apply divides_nat_tra p k n Hpk to the current goal.
We will prove divides_nat k n.
rewrite the current goal using Hkm (from right to left).
We will prove divides_nat k (k * m).
Apply divides_nat_mulR to the current goal.
We will prove k ω.
An exact proof term for the current goal is Hk.
We will prove m ω.
An exact proof term for the current goal is Hm.
Theorem. (nat_1In_not_divides_ordsucc) The following is provable:
∀m n, 1 mdivides_nat m n¬ divides_nat m (ordsucc n)
Proof:
Let m and n be given.
Assume H1m: 1 m.
Assume H1: divides_nat m n.
Assume H2: divides_nat m (ordsucc n).
Apply H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume Hm: m ω.
Assume Hn: n ω.
Assume H.
Apply H to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k ω.
Assume Hmk: m * k = n.
Apply H2 to the current goal.
Assume _ H.
Apply H to the current goal.
Let k' be given.
Assume H.
Apply H to the current goal.
Assume Hk': k' ω.
Assume Hmk': m * k' = ordsucc n.
We prove the intermediate claim Lm: nat_p m.
An exact proof term for the current goal is omega_nat_p m Hm.
We prove the intermediate claim Ln: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We prove the intermediate claim Lk: nat_p k.
An exact proof term for the current goal is omega_nat_p k Hk.
We prove the intermediate claim Lk': nat_p k'.
An exact proof term for the current goal is omega_nat_p k' Hk'.
We prove the intermediate claim L1: 1 + n = ordsucc n.
rewrite the current goal using add_nat_SL 0 nat_0 n Ln (from left to right).
We will prove ordsucc (0 + n) = ordsucc n.
Use f_equal.
An exact proof term for the current goal is add_nat_0L n Ln.
We prove the intermediate claim L2: m * k' m + n.
rewrite the current goal using Hmk' (from left to right).
We will prove ordsucc n m + n.
rewrite the current goal using L1 (from right to left).
We will prove 1 + n m + n.
An exact proof term for the current goal is add_nat_In_R m Lm 1 H1m n Ln.
We prove the intermediate claim L3: m + n m * k'.
rewrite the current goal using Hmk (from right to left).
We will prove m + m * k m * k'.
rewrite the current goal using mul_nat_SR m k Lk (from right to left).
We will prove m * ordsucc k m * k'.
Apply mul_nat_Subq_L to the current goal.
Apply nat_ordsucc to the current goal.
An exact proof term for the current goal is Lk.
An exact proof term for the current goal is Lk'.
We will prove ordsucc k k'.
Apply ordinal_In_Or_Subq k k' (nat_p_ordinal k Lk) (nat_p_ordinal k' Lk') to the current goal.
Assume H3: k k'.
An exact proof term for the current goal is ordinal_ordsucc_In_Subq k' (nat_p_ordinal k' Lk') k H3.
Assume H3: k' k.
We will prove False.
We prove the intermediate claim L3a: ordsucc n n.
rewrite the current goal using Hmk' (from right to left).
rewrite the current goal using Hmk (from right to left).
We will prove m * k' m * k.
An exact proof term for the current goal is mul_nat_Subq_L k' k Lk' Lk H3 m Lm.
Apply In_irref n to the current goal.
We will prove n n.
Apply L3a to the current goal.
We will prove n ordsucc n.
Apply ordsuccI2 to the current goal.
An exact proof term for the current goal is Lm.
Apply In_irref (m * k') to the current goal.
Apply L3 to the current goal.
An exact proof term for the current goal is L2.
Definition. We define primes to be {nω|prime_nat n} of type set.
Proof:
Assume H1: finite primes.
Apply H1 to the current goal.
Let n be given.
Assume H.
Apply H to the current goal.
Assume Hn: n ω.
Assume H2: equip primes n.
Apply equip_sym primes n H2 to the current goal.
Let f be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Hf1: in, f i primes.
Assume Hf2: i jn, f i = f ji = j.
Assume Hf3: pprimes, in, f i = p.
Set p to be the term ordsucc (Pi_nat f n).
We prove the intermediate claim L1: in, nat_p (f i).
Let i be given.
Assume Hi.
Apply omega_nat_p to the current goal.
We will prove f i ω.
An exact proof term for the current goal is SepE1 ω prime_nat (f i) (Hf1 i Hi).
We prove the intermediate claim L2: 0 primes.
Assume H1: 0 primes.
Apply SepE2 ω prime_nat 0 H1 to the current goal.
Assume H _.
Apply H to the current goal.
Assume _.
Assume H2: 1 0.
An exact proof term for the current goal is In_no2cycle 1 0 H2 In_0_1.
We prove the intermediate claim LPN: nat_p (Pi_nat f n).
An exact proof term for the current goal is Pi_nat_p f n (omega_nat_p n Hn) L1.
We prove the intermediate claim LpN: nat_p p.
Apply nat_ordsucc to the current goal.
An exact proof term for the current goal is LPN.
We prove the intermediate claim Lpo: p ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is LpN.
We prove the intermediate claim L3: ∀q, prime_nat q¬ divides_nat q p.
Let q be given.
Assume Hq: prime_nat q.
Assume Hqp: divides_nat q p.
We prove the intermediate claim LqP: q primes.
Apply Hq to the current goal.
Assume H _.
Apply H to the current goal.
Assume Hqo: q ω.
Assume _.
An exact proof term for the current goal is SepI ω prime_nat q Hqo Hq.
Apply Hf3 q LqP to the current goal.
Let i be given.
Assume H.
Apply H to the current goal.
Assume Hi: i n.
Assume H3: f i = q.
We prove the intermediate claim LfiP: f i primes.
An exact proof term for the current goal is Hf1 i Hi.
Apply SepE ω prime_nat (f i) LfiP to the current goal.
Assume H4: f i ω.
Assume H5: prime_nat (f i).
Apply H5 to the current goal.
Assume H.
Apply H to the current goal.
Assume _.
Assume H6: 1 f i.
Assume H7: kω, divides_nat k (f i)k = 1 k = f i.
Apply nat_1In_not_divides_ordsucc (f i) (Pi_nat f n) H6 to the current goal.
We will prove divides_nat (f i) (Pi_nat f n).
An exact proof term for the current goal is Pi_nat_divides f n (omega_nat_p n Hn) L1 i Hi.
We will prove divides_nat (f i) p.
rewrite the current goal using H3 (from left to right).
An exact proof term for the current goal is Hqp.
We prove the intermediate claim L1p: 1 p.
We will prove 1 ordsucc (Pi_nat f n).
Apply nat_ordsucc_in_ordsucc (Pi_nat f n) LPN to the current goal.
We will prove 0 Pi_nat f n.
Apply ordinal_In_Or_Subq 0 (Pi_nat f n) ordinal_Empty (nat_p_ordinal (Pi_nat f n) LPN) to the current goal.
Assume H3: 0 Pi_nat f n.
An exact proof term for the current goal is H3.
Assume H3: Pi_nat f n 0.
We prove the intermediate claim LP0: Pi_nat f n = 0.
An exact proof term for the current goal is Empty_Subq_eq (Pi_nat f n) H3.
Apply Pi_nat_0_inv f n (omega_nat_p n Hn) L1 LP0 to the current goal.
Let i be given.
Assume H.
Apply H to the current goal.
Assume Hi: i n.
Assume H4: f i = 0.
Apply L2 to the current goal.
We will prove 0 primes.
rewrite the current goal using H4 (from right to left).
We will prove f i primes.
An exact proof term for the current goal is Hf1 i Hi.
We prove the intermediate claim LpP: prime_nat p.
We will prove prime_nat p.
We will prove p ω 1 p kω, divides_nat k pk = 1 k = p.
Apply and3I to the current goal.
An exact proof term for the current goal is Lpo.
An exact proof term for the current goal is L1p.
Let k be given.
Assume Hk: k ω.
Assume Hkp: divides_nat k p.
We will prove k = 1 k = p.
Apply orIL to the current goal.
We will prove k = 1.
Apply ordinal_In_Or_Subq 1 k (nat_p_ordinal 1 nat_1) (nat_p_ordinal k (omega_nat_p k Hk)) to the current goal.
Assume H3: 1 k.
Apply prime_nat_divisor_ex k (omega_nat_p k Hk) H3 to the current goal.
Let q be given.
Assume H.
Apply H to the current goal.
Assume Hq: prime_nat q.
Assume Hqk: divides_nat q k.
Apply L3 q Hq to the current goal.
We will prove divides_nat q p.
An exact proof term for the current goal is divides_nat_tra q k p Hqk Hkp.
Assume H3: k 1.
Apply nat_le1_cases k (omega_nat_p k Hk) H3 to the current goal.
Assume H4: k = 0.
We will prove False.
Apply Hkp to the current goal.
Assume _ H.
Apply H to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m ω.
Assume Hkm: k * m = p.
We prove the intermediate claim Lp0: p = 0.
Use transitivity with and k * m.
We will prove p = k * m.
Use symmetry.
An exact proof term for the current goal is Hkm.
We will prove k * m = 0.
rewrite the current goal using H4 (from left to right).
We will prove 0 * m = 0.
An exact proof term for the current goal is mul_nat_0L m (omega_nat_p m Hm).
Apply In_no2cycle 0 1 In_0_1 to the current goal.
We will prove 1 0.
rewrite the current goal using Lp0 (from right to left) at position 2.
An exact proof term for the current goal is L1p.
Assume H4: k = 1.
An exact proof term for the current goal is H4.
Apply L3 p LpP to the current goal.
We will prove divides_nat p p.
Apply divides_nat_ref to the current goal.
An exact proof term for the current goal is LpN.
End of Section InfinitePrimes
Beginning of Section InfiniteRamsey
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_nat.
Theorem. (atleastp_omega_infinite) The following is provable:
∀X, atleastp ω Xinfinite X
Proof:
Let X be given.
Assume HX: atleastp ω X.
Assume HXfin: finite X.
Apply HXfin to the current goal.
Let n be given.
Assume H.
Apply H to the current goal.
Assume Hn: n ω.
Assume H1: equip X n.
We will prove False.
Apply Pigeonhole_not_atleastp_ordsucc n (omega_nat_p n Hn) to the current goal.
We will prove atleastp (ordsucc n) n.
Apply atleastp_tra (ordsucc n) X n to the current goal.
We will prove atleastp (ordsucc n) X.
Apply atleastp_tra (ordsucc n) ω X to the current goal.
Apply Subq_atleastp to the current goal.
We will prove ordsucc n ω.
Let i be given.
Assume Hi: i ordsucc n.
Apply nat_p_omega to the current goal.
We will prove nat_p i.
An exact proof term for the current goal is nat_p_trans (ordsucc n) (nat_ordsucc n (omega_nat_p n Hn)) i Hi.
We will prove atleastp ω X.
An exact proof term for the current goal is HX.
We will prove atleastp X n.
Apply equip_atleastp to the current goal.
An exact proof term for the current goal is H1.
Theorem. (infinite_remove1) The following is provable:
∀X, infinite X∀y, infinite (X {y})
Proof:
Let X be given.
Assume HX.
Let y be given.
Assume H1: finite (X {y}).
Apply xm (y X) to the current goal.
Assume H2: y X.
We prove the intermediate claim L1: X = (X {y}) {y}.
An exact proof term for the current goal is binunion_remove1_eq X y H2.
Apply HX to the current goal.
We will prove finite X.
rewrite the current goal using L1 (from left to right).
Apply binunion_finite to the current goal.
An exact proof term for the current goal is H1.
Apply Sing_finite to the current goal.
Assume H2: y X.
We prove the intermediate claim L2: X = X {y}.
Apply set_ext to the current goal.
We will prove X X {y}.
Let x be given.
Assume Hx: x X.
Apply setminusI to the current goal.
An exact proof term for the current goal is Hx.
Assume H3: x {y}.
Apply H2 to the current goal.
We will prove y X.
rewrite the current goal using SingE y x H3 (from right to left).
An exact proof term for the current goal is Hx.
Apply setminus_Subq to the current goal.
Apply HX to the current goal.
We will prove finite X.
rewrite the current goal using L2 (from left to right).
An exact proof term for the current goal is H1.
Theorem. (infinite_Finite_Subq_ex) The following is provable:
∀X, infinite X∀n, nat_p nYX, equip Y n
Proof:
Let X be given.
Assume HX.
Apply nat_ind to the current goal.
We will prove YX, equip Y 0.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
Apply Subq_Empty to the current goal.
We will prove equip 0 0.
Apply equip_ref to the current goal.
Let n be given.
Assume Hn.
Assume IHn: YX, equip Y n.
We will prove YX, equip Y (ordsucc n).
Apply IHn to the current goal.
Let Y be given.
Assume H.
Apply H to the current goal.
Assume HY: Y X.
Assume HYn: equip Y n.
Apply HYn to the current goal.
Let f be given.
Assume Hf: bij Y n f.
Apply Hf to the current goal.
Assume H.
Apply H to the current goal.
Assume Hf1: yY, f y n.
Assume Hf2: y y'Y, f y = f y'y = y'.
Assume Hf3: in, yY, f y = i.
We prove the intermediate claim L1: zX, z Y.
Apply dneg to the current goal.
Assume H1: ¬ zX, z Y.
We prove the intermediate claim L1a: Y = X.
Apply set_ext to the current goal.
An exact proof term for the current goal is HY.
Let z be given.
Assume HzX: z X.
Apply dneg to the current goal.
Assume HzY: z Y.
Apply H1 to the current goal.
We use z to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is HzX.
An exact proof term for the current goal is HzY.
Apply HX to the current goal.
We will prove finite X.
We will prove mω, equip X m.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is nat_p_omega n Hn.
We will prove equip X n.
rewrite the current goal using L1a (from right to left).
An exact proof term for the current goal is HYn.
Apply L1 to the current goal.
Let z be given.
Assume H.
Apply H to the current goal.
Assume HzX: z X.
Assume HzY: z Y.
We use Y {z} to witness the existential quantifier.
Apply andI to the current goal.
We will prove Y {z} X.
Apply binunion_Subq_min to the current goal.
An exact proof term for the current goal is HY.
We will prove {z} X.
Let w be given.
Assume Hw: w {z}.
rewrite the current goal using SingE z w Hw (from left to right).
An exact proof term for the current goal is HzX.
We will prove equip (Y {z}) (ordsucc n).
We prove the intermediate claim Lg: g : setset, (yY, g y = f y) g z = n.
Set g to be the term λy ⇒ if y Y then f y else n of type setset.
We use g to witness the existential quantifier.
Apply andI to the current goal.
Let y be given.
Assume Hy.
An exact proof term for the current goal is If_i_1 (y Y) (f y) n Hy.
An exact proof term for the current goal is If_i_0 (z Y) (f z) n HzY.
Apply Lg to the current goal.
Let g be given.
Assume H.
Apply H to the current goal.
Assume HgY: yY, g y = f y.
Assume Hgz: g z = n.
We will prove g : setset, bij (Y {z}) (ordsucc n) g.
We use g to witness the existential quantifier.
We will prove bij (Y {z}) (ordsucc n) g.
We will prove (uY {z}, g u ordsucc n) (u vY {z}, g u = g vu = v) (iordsucc n, uY {z}, g u = i).
Apply and3I to the current goal.
Let u be given.
Assume Hu.
Apply binunionE Y {z} u Hu to the current goal.
Assume H1: u Y.
We will prove g u ordsucc n.
Apply ordsuccI1 to the current goal.
rewrite the current goal using HgY u H1 (from left to right).
An exact proof term for the current goal is Hf1 u H1.
Assume H1: u {z}.
We will prove g u ordsucc n.
rewrite the current goal using SingE z u H1 (from left to right).
rewrite the current goal using Hgz (from left to right).
Apply ordsuccI2 to the current goal.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv.
Apply binunionE Y {z} u Hu to the current goal.
Assume H1: u Y.
rewrite the current goal using HgY u H1 (from left to right).
Apply binunionE Y {z} v Hv to the current goal.
Assume H2: v Y.
rewrite the current goal using HgY v H2 (from left to right).
An exact proof term for the current goal is Hf2 u H1 v H2.
Assume H2: v {z}.
rewrite the current goal using SingE z v H2 (from left to right).
rewrite the current goal using Hgz (from left to right).
Assume H3: f u = n.
We will prove False.
Apply In_irref n to the current goal.
rewrite the current goal using H3 (from right to left) at position 1.
An exact proof term for the current goal is Hf1 u H1.
Assume H1: u {z}.
rewrite the current goal using SingE z u H1 (from left to right).
rewrite the current goal using Hgz (from left to right).
Apply binunionE Y {z} v Hv to the current goal.
Assume H2: v Y.
rewrite the current goal using HgY v H2 (from left to right).
Assume H3: n = f v.
We will prove False.
Apply In_irref n to the current goal.
rewrite the current goal using H3 (from left to right) at position 1.
An exact proof term for the current goal is Hf1 v H2.
Assume H2: v {z}.
Assume _.
We will prove z = v.
Use symmetry.
An exact proof term for the current goal is SingE z v H2.
Let i be given.
Assume Hi: i ordsucc n.
Apply ordsuccE n i Hi to the current goal.
Assume H1: i n.
Apply Hf3 i H1 to the current goal.
Let y be given.
Assume H.
Apply H to the current goal.
Assume Hy: y Y.
Assume Hfyi: f y = i.
We use y to witness the existential quantifier.
Apply andI to the current goal.
We will prove y Y {z}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hy.
We will prove g y = i.
rewrite the current goal using HgY y Hy (from left to right).
An exact proof term for the current goal is Hfyi.
Assume H1: i = n.
We use z to witness the existential quantifier.
Apply andI to the current goal.
We will prove z Y {z}.
Apply binunionI2 to the current goal.
Apply SingI to the current goal.
We will prove g z = i.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is Hgz.
Theorem. (infiniteRamsey_lem) The following is provable:
∀X, ∀f g f' : setset, infinite X(ZX, infinite Zf Z Z infinite (f Z))(ZX, infinite Zg Z Z g Z f Z)f' 0 = f X(∀m, nat_p mf' (ordsucc m) = f (f' m))(∀m, nat_p mf' m X infinite (f' m)) (m m'ω, m m'f' m' f' m) (m m'ω, g (f' m) = g (f' m')m = m')
Proof:
Let X, f, g and f' be given.
Assume HX: infinite X.
Assume Hf1: ZX, infinite Zf Z Z infinite (f Z).
Assume Hg1: ZX, infinite Zg Z Z g Z f Z.
Assume Hf'0: f' 0 = f X.
Assume Hf'S: ∀m, nat_p mf' (ordsucc m) = f (f' m).
We prove the intermediate claim Lf'1: ∀m, nat_p mf' m X infinite (f' m).
Apply nat_ind to the current goal.
rewrite the current goal using Hf'0 (from left to right).
We will prove f X X infinite (f X).
An exact proof term for the current goal is Hf1 X (λu H ⇒ H) HX.
Let m be given.
Assume Hm.
Assume IHm.
Apply IHm to the current goal.
Assume IHm1: f' m X.
Assume IHm2: infinite (f' m).
We will prove f' (ordsucc m) X infinite (f' (ordsucc m)).
rewrite the current goal using Hf'S m Hm (from left to right).
We will prove f (f' m) X infinite (f (f' m)).
Apply Hf1 (f' m) IHm1 IHm2 to the current goal.
Assume H3: f (f' m) f' m.
Assume H4: infinite (f (f' m)).
Apply andI to the current goal.
Apply Subq_tra (f (f' m)) (f' m) X H3 to the current goal.
An exact proof term for the current goal is IHm1.
An exact proof term for the current goal is H4.
We prove the intermediate claim Lgf'mm'addSubq: mω, ∀m', nat_p m'f' (m + m') f' m.
Let m be given.
Assume Hm.
Apply nat_ind to the current goal.
We will prove f' (m + 0) f' m.
rewrite the current goal using add_nat_0R m (from left to right).
An exact proof term for the current goal is Subq_ref (f' m).
Let m' be given.
Assume Hm'.
Assume IHm': f' (m + m') f' m.
We will prove f' (m + ordsucc m') f' m.
rewrite the current goal using add_nat_SR m m' Hm' (from left to right).
We will prove f' (ordsucc (m + m')) f' m.
rewrite the current goal using Hf'S (m + m') (add_nat_p m (omega_nat_p m Hm) m' Hm') (from left to right).
We will prove f (f' (m + m')) f' m.
Apply Subq_tra (f (f' (m + m'))) (f' (m + m')) (f' m) to the current goal.
Apply Lf'1 (m + m') (add_nat_p m (omega_nat_p m Hm) m' Hm') to the current goal.
Assume Hfmm'X: f' (m + m') X.
Assume Hfmm'inf: infinite (f' (m + m')).
Apply Hf1 (f' (m + m')) Hfmm'X Hfmm'inf to the current goal.
Assume H3: f (f' (m + m')) f' (m + m').
Assume _.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is IHm'.
We prove the intermediate claim Lgf'mm'Subq: m m'ω, m m'f' m' f' m.
Let m be given.
Assume Hm: m ω.
Let m' be given.
Assume Hm': m' ω.
Assume Hmm': m m'.
Apply nat_Subq_add_ex m (omega_nat_p m Hm) m' (omega_nat_p m' Hm') Hmm' to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: nat_p k.
Assume Hm'km: m' = k + m.
We will prove f' m' f' m.
rewrite the current goal using Hm'km (from left to right).
We will prove f' (k + m) f' m.
rewrite the current goal using add_nat_com k Hk m (omega_nat_p m Hm) (from left to right).
We will prove f' (m + k) f' m.
An exact proof term for the current goal is Lgf'mm'addSubq m Hm k Hk.
We prove the intermediate claim Lgf'injlem: mω, m'm, g (f' m') g (f' m).
Let m be given.
Assume Hm: m ω.
Let m' be given.
Assume Hm': m' m.
Assume H3: g (f' m') = g (f' m).
We prove the intermediate claim LmN: nat_p m.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hm.
We prove the intermediate claim Lmo: ordinal m.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is LmN.
We prove the intermediate claim Lm'N: nat_p m'.
An exact proof term for the current goal is nat_p_trans m (omega_nat_p m Hm) m' Hm'.
We prove the intermediate claim Lf'mff'm': f' m f (f' m').
Apply Hf'S m' Lm'N (λu _ ⇒ f' m u) to the current goal.
We will prove f' m f' (ordsucc m').
Apply Lgf'mm'Subq (ordsucc m') (omega_ordsucc m' (nat_p_omega m' Lm'N)) m Hm to the current goal.
We will prove ordsucc m' m.
An exact proof term for the current goal is ordinal_ordsucc_In_Subq m Lmo m' Hm'.
Apply Lf'1 m (omega_nat_p m Hm) to the current goal.
Assume H4: f' m X.
Assume H5: infinite (f' m).
Apply Hg1 (f' m) H4 H5 to the current goal.
Assume H6: g (f' m) f' m.
Assume _.
Apply Lf'1 m' Lm'N to the current goal.
Assume H7: f' m' X.
Assume H8: infinite (f' m').
Apply Hg1 (f' m') H7 H8 to the current goal.
Assume _.
Assume H9: g (f' m') f (f' m').
Apply H9 to the current goal.
We will prove g (f' m') f (f' m').
rewrite the current goal using H3 (from left to right).
We will prove g (f' m) f (f' m').
An exact proof term for the current goal is Lf'mff'm' (g (f' m)) H6.
Apply and3I to the current goal.
An exact proof term for the current goal is Lf'1.
An exact proof term for the current goal is Lgf'mm'Subq.
Let m be given.
Assume Hm: m ω.
Let m' be given.
Assume Hm': m' ω.
Assume Hgf'mm': g (f' m) = g (f' m').
Apply ordinal_trichotomy_or_impred m m' (nat_p_ordinal m (omega_nat_p m Hm)) (nat_p_ordinal m' (omega_nat_p m' Hm')) to the current goal.
Assume Hmm': m m'.
We will prove False.
Apply Lgf'injlem m' Hm' m Hmm' to the current goal.
We will prove g (f' m) = g (f' m').
An exact proof term for the current goal is Hgf'mm'.
Assume Hmm': m = m'.
An exact proof term for the current goal is Hmm'.
Assume Hm'm: m' m.
We will prove False.
Apply Lgf'injlem m Hm m' Hm'm to the current goal.
We will prove g (f' m') = g (f' m).
Use symmetry.
An exact proof term for the current goal is Hgf'mm'.
Theorem. (infiniteRamsey) The following is provable:
∀c, nat_p c∀n, nat_p n∀X, infinite X∀C : setset, (YX, equip Y nC Y c)HX, ic, infinite H YH, equip Y nC Y = i
Proof:
Apply nat_ind to the current goal.
Let n be given.
Assume Hn.
Let X be given.
Assume HX: infinite X.
Let C be given.
Assume H1: YX, equip Y nC Y 0.
We will prove False.
Apply infinite_Finite_Subq_ex X HX n Hn to the current goal.
Let Y be given.
Assume H.
Apply H to the current goal.
Assume HY: Y X.
Assume HYn: equip Y n.
Apply EmptyE (C Y) to the current goal.
We will prove C Y 0.
An exact proof term for the current goal is H1 Y HY HYn.
Let c be given.
Assume Hc: nat_p c.
Assume IHc: ∀n, nat_p n∀X, infinite X∀C : setset, (YX, equip Y nC Y c)HX, ic, infinite H YH, equip Y nC Y = i.
We will prove ∀n, nat_p n∀X, infinite X∀C : setset, (YX, equip Y nC Y ordsucc c)HX, iordsucc c, infinite H YH, equip Y nC Y = i.
Apply nat_ind to the current goal.
Let X be given.
Assume HX: infinite X.
Let C be given.
Assume H1: YX, equip Y 0C Y ordsucc c.
We will prove HX, iordsucc c, infinite H YH, equip Y 0C Y = i.
We use X to witness the existential quantifier.
Apply andI to the current goal.
We will prove X X.
An exact proof term for the current goal is Subq_ref X.
We use C 0 to witness the existential quantifier.
Apply andI to the current goal.
We will prove C 0 ordsucc c.
Apply H1 0 to the current goal.
We will prove 0 X.
Apply Subq_Empty to the current goal.
We will prove equip 0 0.
Apply equip_ref to the current goal.
We will prove infinite X YX, equip Y 0C Y = C 0.
Apply andI to the current goal.
An exact proof term for the current goal is HX.
Let Y be given.
Assume HY: Y X.
Assume HY0: equip Y 0.
We will prove C Y = C 0.
Use f_equal.
We will prove Y = 0.
An exact proof term for the current goal is equip_0_Empty Y HY0.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: ∀X, infinite X∀C : setset, (YX, equip Y nC Y ordsucc c)HX, iordsucc c, infinite H YH, equip Y nC Y = i.
Let X be given.
Assume HX: infinite X.
Let C be given.
Assume H1: YX, equip Y (ordsucc n)C Y ordsucc c.
We will prove HX, iordsucc c, infinite H YH, equip Y (ordsucc n)C Y = i.
Apply dneg to the current goal.
Assume H2: ¬ HX, iordsucc c, infinite H YH, equip Y (ordsucc n)C Y = i.
We prove the intermediate claim L1: X'X, infinite X'X''X', xX', x X'' infinite X'' YX'', equip Y nC (Y {x}) = c.
Let X' be given.
Assume HX'X: X' X.
Assume HX': infinite X'.
Apply dneg to the current goal.
Assume H2': ¬ X''X', xX', x X'' infinite X'' YX'', equip Y nC (Y {x}) = c.
We prove the intermediate claim L1a: x, x X'.
Apply dneg to the current goal.
Assume H3: ¬ x, x X'.
We prove the intermediate claim L1a1: X' = 0.
Apply Empty_eq to the current goal.
Let x be given.
Assume Hx: x X'.
Apply H3 to the current goal.
We use x to witness the existential quantifier.
An exact proof term for the current goal is Hx.
Apply HX' to the current goal.
We will prove finite X'.
rewrite the current goal using L1a1 (from left to right).
An exact proof term for the current goal is finite_Empty.
Apply L1a to the current goal.
Let x be given.
Assume Hx: x X'.
We prove the intermediate claim LX'xinf: infinite (X' {x}).
Apply infinite_remove1 to the current goal.
An exact proof term for the current goal is HX'.
Set C' to be the term λY ⇒ C (Y {x}) of type setset.
We prove the intermediate claim LC'Sc: YX' {x}, equip Y nC' Y ordsucc c.
Let Y be given.
Assume H3: Y X' {x}.
Assume H4: equip Y n.
We will prove C (Y {x}) ordsucc c.
Apply H1 to the current goal.
We will prove Y {x} X.
Apply binunion_Subq_min to the current goal.
We will prove Y X.
Apply Subq_tra Y (X' {x}) X H3 to the current goal.
We will prove X' {x} X.
Apply Subq_tra (X' {x}) X' X to the current goal.
Apply setminus_Subq to the current goal.
We will prove X' X.
An exact proof term for the current goal is HX'X.
We will prove {x} X.
Let y be given.
Assume Hy: y {x}.
rewrite the current goal using SingE x y Hy (from left to right).
We will prove x X.
Apply HX'X to the current goal.
An exact proof term for the current goal is Hx.
We will prove equip (Y {x}) (ordsucc n).
Apply equip_sym to the current goal.
Apply equip_adjoin_ordsucc to the current goal.
We will prove x Y.
Assume H5: x Y.
Apply setminusE2 X' {x} x (H3 x H5) to the current goal.
We will prove x {x}.
Apply SingI to the current goal.
We will prove equip n Y.
Apply equip_sym to the current goal.
An exact proof term for the current goal is H4.
We prove the intermediate claim L1b: ZX', infinite ZZ'Z, yZ, y Z' infinite Z' YZ', equip Y nC (Y {y}) c.
Apply dneg to the current goal.
Assume H3: ¬ ZX', infinite ZZ'Z, yZ, y Z' infinite Z' YZ', equip Y nC (Y {y}) c.
Apply IHn (X' {x}) LX'xinf C' LC'Sc to the current goal.
Let H' be given.
Assume H.
Apply H to the current goal.
Assume HH'X': H' X' {x}.
Assume H.
Apply H to the current goal.
Let i be given.
Assume H.
Apply H to the current goal.
Assume Hi: i ordsucc c.
Assume H.
Apply H to the current goal.
Assume HH'inf: infinite H'.
Assume HH'hom: YH', equip Y nC (Y {x}) = i.
Apply ordsuccE c i Hi to the current goal.
Assume H4: i c.
Apply H3 to the current goal.
Let Z be given.
Assume HZX': Z X'.
Assume HZ: infinite Z.
Apply dneg to the current goal.
Assume H5: ¬ Z'Z, yZ, y Z' infinite Z' YZ', equip Y nC (Y {y}) c.
We prove the intermediate claim L1b1: y, y Z.
Apply dneg to the current goal.
Assume H6: ¬ y, y Z.
We prove the intermediate claim L1b1a: Z = 0.
Apply Empty_eq to the current goal.
Let y be given.
Assume Hy: y Z.
Apply H6 to the current goal.
We use y to witness the existential quantifier.
An exact proof term for the current goal is Hy.
Apply HZ to the current goal.
We will prove finite Z.
rewrite the current goal using L1b1a (from left to right).
An exact proof term for the current goal is finite_Empty.
Apply L1b1 to the current goal.
Let y be given.
Assume Hy: y Z.
We prove the intermediate claim LZyinf: infinite (Z {y}).
Apply infinite_remove1 to the current goal.
An exact proof term for the current goal is HZ.
We prove the intermediate claim LZyX': Z {y} X'.
Apply Subq_tra (Z {y}) Z X' to the current goal.
Apply setminus_Subq to the current goal.
An exact proof term for the current goal is HZX'.
We prove the intermediate claim LZyX: Z {y} X.
An exact proof term for the current goal is Subq_tra (Z {y}) X' X LZyX' HX'X.
Set C'' to be the term λY ⇒ C (Y {y}) of type setset.
We prove the intermediate claim LC''Sc: YZ {y}, equip Y nC'' Y ordsucc c.
Let Y be given.
Assume H6: Y Z {y}.
Assume H7: equip Y n.
We will prove C (Y {y}) ordsucc c.
Apply H1 to the current goal.
We will prove Y {y} X.
Apply binunion_Subq_min to the current goal.
We will prove Y X.
Apply Subq_tra Y (Z {y}) X H6 to the current goal.
We will prove Z {y} X.
An exact proof term for the current goal is LZyX.
We will prove {y} X.
Let z be given.
Assume Hz: z {y}.
rewrite the current goal using SingE y z Hz (from left to right).
We will prove y X.
Apply HX'X to the current goal.
We will prove y X'.
Apply HZX' to the current goal.
We will prove y Z.
An exact proof term for the current goal is Hy.
We will prove equip (Y {y}) (ordsucc n).
Apply equip_sym to the current goal.
Apply equip_adjoin_ordsucc to the current goal.
We will prove y Y.
Assume H8: y Y.
Apply setminusE2 Z {y} y (H6 y H8) to the current goal.
We will prove y {y}.
Apply SingI to the current goal.
We will prove equip n Y.
Apply equip_sym to the current goal.
An exact proof term for the current goal is H7.
Apply IHn (Z {y}) LZyinf C'' LC''Sc to the current goal.
Let H' be given.
Assume H.
Apply H to the current goal.
Assume HH'Zy: H' Z {y}.
Assume H.
Apply H to the current goal.
Let i be given.
Assume H.
Apply H to the current goal.
Assume Hi: i ordsucc c.
Assume H.
Apply H to the current goal.
Assume HH'inf: infinite H'.
Assume HH'hom: YH', equip Y nC (Y {y}) = i.
Apply ordsuccE c i Hi to the current goal.
Assume H6: i c.
Apply H5 to the current goal.
We use H' to witness the existential quantifier.
Apply andI to the current goal.
We will prove H' Z.
Apply Subq_tra H' (Z {y}) Z HH'Zy to the current goal.
Apply setminus_Subq to the current goal.
We will prove yZ, y H' infinite H' YH', equip Y nC (Y {y}) c.
We use y to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hy.
Apply and3I to the current goal.
Assume H7: y H'.
Apply setminusE2 Z {y} y (HH'Zy y H7) to the current goal.
Apply SingI to the current goal.
An exact proof term for the current goal is HH'inf.
Let Y be given.
Assume H7: Y H'.
Assume H8: equip Y n.
rewrite the current goal using HH'hom Y H7 H8 (from left to right).
We will prove i c.
An exact proof term for the current goal is H6.
Assume H6: i = c.
Apply H2' to the current goal.
We use H' to witness the existential quantifier.
Apply andI to the current goal.
We will prove H' X'.
Apply Subq_tra H' (Z {y}) X' HH'Zy to the current goal.
We will prove Z {y} X'.
An exact proof term for the current goal is LZyX'.
We use y to witness the existential quantifier.
Apply andI to the current goal.
We will prove y X'.
Apply HZX' to the current goal.
An exact proof term for the current goal is Hy.
Apply and3I to the current goal.
We will prove y H'.
Assume H7: y H'.
Apply setminusE2 Z {y} y (HH'Zy y H7) to the current goal.
Apply SingI to the current goal.
We will prove infinite H'.
An exact proof term for the current goal is HH'inf.
rewrite the current goal using H6 (from right to left).
An exact proof term for the current goal is HH'hom.
Assume H4: i = c.
Apply H2' to the current goal.
We use H' to witness the existential quantifier.
Apply andI to the current goal.
We will prove H' X'.
Apply Subq_tra H' (X' {x}) X' HH'X' to the current goal.
We will prove X' {x} X'.
Apply setminus_Subq to the current goal.
We use x to witness the existential quantifier.
Apply andI to the current goal.
We will prove x X'.
An exact proof term for the current goal is Hx.
Apply and3I to the current goal.
We will prove x H'.
Assume H5: x H'.
Apply setminusE2 X' {x} x (HH'X' x H5) to the current goal.
Apply SingI to the current goal.
We will prove infinite H'.
An exact proof term for the current goal is HH'inf.
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is HH'hom.
Set f to be the term λZ ⇒ Eps_i (λZ' ⇒ Z' Z yZ, y Z' infinite Z' YZ', equip Y nC (Y {y}) c) of type setset.
We prove the intermediate claim Lf1: ZX', infinite Zf Z Z yZ, y f Z infinite (f Z) Yf Z, equip Y nC (Y {y}) c.
Let Z be given.
Assume HZ1 HZ2.
An exact proof term for the current goal is Eps_i_ex (λZ' ⇒ Z' Z yZ, y Z' infinite Z' YZ', equip Y nC (Y {y}) c) (L1b Z HZ1 HZ2).
We prove the intermediate claim Lf1a: ZX', infinite Zf Z Z infinite (f Z).
Let Z be given.
Assume HZ1 HZ2.
Apply Lf1 Z HZ1 HZ2 to the current goal.
Assume H3: f Z Z.
Assume H.
Apply H to the current goal.
Let y be given.
Assume H.
Apply H to the current goal.
Assume Hy: y Z.
Assume H.
Apply H to the current goal.
Assume H4: y f Z infinite (f Z).
Assume _.
Apply H4 to the current goal.
Assume _.
Assume H5: infinite (f Z).
Apply andI to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is H5.
Set g to be the term λZ ⇒ Eps_i (λy ⇒ y Z (y f Z Yf Z, equip Y nC (Y {y}) c)) of type setset.
We prove the intermediate claim Lg1: ZX', infinite Zg Z Z (g Z f Z Yf Z, equip Y nC (Y {g Z}) c).
Let Z be given.
Assume HZ1 HZ2.
Apply Lf1 Z HZ1 HZ2 to the current goal.
Assume H3: f Z Z.
Assume H.
Apply H to the current goal.
Let y be given.
Assume H.
Apply H to the current goal.
Assume Hy: y Z.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H4: y f Z.
Assume H5: infinite (f Z).
Assume H6: Yf Z, equip Y nC (Y {y}) c.
We prove the intermediate claim Ly: y Z (y f Z Yf Z, equip Y nC (Y {y}) c).
Apply andI to the current goal.
An exact proof term for the current goal is Hy.
Apply andI to the current goal.
An exact proof term for the current goal is H4.
An exact proof term for the current goal is H6.
An exact proof term for the current goal is Eps_i_ax (λy ⇒ y Z (y f Z Yf Z, equip Y nC (Y {y}) c)) y Ly.
We prove the intermediate claim Lg1a: ZX', infinite Zg Z Z g Z f Z.
Let Z be given.
Assume HZ1 HZ2.
Apply Lg1 Z HZ1 HZ2 to the current goal.
Assume H3: g Z Z.
Assume H.
Apply H to the current goal.
Assume H4: g Z f Z.
Assume _.
Apply andI to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is H4.
We prove the intermediate claim Lf': f' : setset, f' 0 = f X' ∀m, nat_p mf' (ordsucc m) = f (f' m).
We use nat_primrec (f X') (λ_ Z ⇒ f Z) to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is nat_primrec_0 (f X') (λ_ Z ⇒ f Z).
An exact proof term for the current goal is nat_primrec_S (f X') (λ_ Z ⇒ f Z).
Apply Lf' to the current goal.
Let f' be given.
Assume H.
Apply H to the current goal.
Assume Hf'0 Hf'S.
Apply infiniteRamsey_lem X' f g f' HX' Lf1a Lg1a Hf'0 Hf'S to the current goal.
Assume H.
Apply H to the current goal.
Assume Hf'1: ∀m, nat_p mf' m X' infinite (f' m).
Assume Hgf'mm'Subq: m m'ω, m m'f' m' f' m.
Assume Hgf'inj: m m'ω, g (f' m) = g (f' m')m = m'.
Set H' to be the term {g (f' n)|nω}.
We prove the intermediate claim LH'X: H' X.
Let u be given.
Assume Hu: u H'.
Apply ReplE_impred ω (λn ⇒ g (f' n)) u Hu to the current goal.
Let m be given.
Assume Hm: m ω.
Assume Hue: u = g (f' m).
rewrite the current goal using Hue (from left to right).
We will prove g (f' m) X.
Apply Hf'1 m (omega_nat_p m Hm) to the current goal.
Assume Hf'mX': f' m X'.
Assume Hf'minf: infinite (f' m).
Apply Lg1 (f' m) Hf'mX' Hf'minf to the current goal.
Assume Hgf'm: g (f' m) f' m.
Assume _.
Apply HX'X to the current goal.
Apply Hf'mX' to the current goal.
An exact proof term for the current goal is Hgf'm.
We prove the intermediate claim LH'inf: infinite H'.
Apply atleastp_omega_infinite to the current goal.
We will prove atleastp ω H'.
We will prove g : setset, inj ω H' g.
We use (λn : setg (f' n)) to witness the existential quantifier.
We will prove (mω, g (f' m) H') (m m'ω, g (f' m) = g (f' m')m = m').
Apply andI to the current goal.
Let m be given.
Assume Hm: m ω.
We will prove g (f' m) {g (f' n)|nω}.
An exact proof term for the current goal is ReplI ω (λn ⇒ g (f' n)) m Hm.
An exact proof term for the current goal is Hgf'inj.
We prove the intermediate claim LCSnlem: ∀m, nat_p mYH', equip Y (ordsucc n)g (f' m) Y(km, g (f' k) Y)C Y c.
Let m be given.
Assume Hm.
Let Y be given.
Assume HYH': Y H'.
Assume HYSn: equip Y (ordsucc n).
Assume Hgf'mY: g (f' m) Y.
Assume Hgf'kY: km, g (f' k) Y.
Apply Hf'1 m Hm to the current goal.
Assume Hf'mX': f' m X'.
Assume Hf'minf: infinite (f' m).
Apply Lg1 (f' m) Hf'mX' Hf'minf to the current goal.
Assume Hgf'mf'm: g (f' m) f' m.
Assume H.
Apply H to the current goal.
Assume Hgf'mff'm: g (f' m) f (f' m).
Assume Hgf'mc: Yf (f' m), equip Y nC (Y {g (f' m)}) c.
We prove the intermediate claim Lmo: ordinal m.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is Hm.
We will prove C Y c.
rewrite the current goal using binunion_remove1_eq Y (g (f' m)) Hgf'mY (from left to right).
We will prove C ((Y {g (f' m)}) {g (f' m)}) c.
Apply Hgf'mc to the current goal.
We will prove Y {g (f' m)} f (f' m).
Let u be given.
Assume Hu: u Y {g (f' m)}.
We prove the intermediate claim Luf'Sm: u f' (ordsucc m).
Apply setminusE Y {g (f' m)} u Hu to the current goal.
Assume Hu1: u Y.
Assume Hu2: u {g (f' m)}.
Apply ReplE_impred ω (λn ⇒ g (f' n)) u (HYH' u Hu1) to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Huk: u = g (f' k).
We will prove u f' (ordsucc m).
We prove the intermediate claim Lko: ordinal k.
Apply nat_p_ordinal to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hk.
Apply ordinal_trichotomy_or_impred k m Lko Lmo to the current goal.
Assume Hkm: k m.
We will prove False.
Apply Hgf'kY k Hkm to the current goal.
We will prove g (f' k) Y.
rewrite the current goal using Huk (from right to left).
An exact proof term for the current goal is Hu1.
Assume Hkm: k = m.
We will prove False.
Apply Hu2 to the current goal.
rewrite the current goal using Huk (from left to right).
We will prove g (f' k) {g (f' m)}.
rewrite the current goal using Hkm (from left to right).
Apply SingI to the current goal.
Assume Hmk: m k.
We will prove u f' (ordsucc m).
Apply Hgf'mm'Subq (ordsucc m) (omega_ordsucc m (nat_p_omega m Hm)) k Hk to the current goal.
We will prove ordsucc m k.
An exact proof term for the current goal is ordinal_ordsucc_In_Subq k Lko m Hmk.
We will prove u f' k.
rewrite the current goal using Huk (from left to right).
We will prove g (f' k) f' k.
Apply Hf'1 k (omega_nat_p k Hk) to the current goal.
Assume Hf'kX': f' k X'.
Assume Hf'kinf: infinite (f' k).
Apply Lg1 (f' k) Hf'kX' Hf'kinf to the current goal.
Assume Hgf'kf'k: g (f' k) f' k.
Assume _.
An exact proof term for the current goal is Hgf'kf'k.
We will prove u f (f' m).
An exact proof term for the current goal is Hf'S m Hm (λw _ ⇒ u w) Luf'Sm.
We will prove equip (Y {g (f' m)}) n.
Apply equip_ordsucc_remove1 to the current goal.
An exact proof term for the current goal is Hgf'mY.
We will prove equip Y (ordsucc n).
An exact proof term for the current goal is HYSn.
We prove the intermediate claim LCSn: YH', equip Y (ordsucc n)C Y c.
Let Y be given.
Assume HYH': Y H'.
Assume HYSn: equip Y (ordsucc n).
We will prove C Y c.
Set p to be the term λm ⇒ m ω g (f' m) Y of type setprop.
We prove the intermediate claim Lpne: m, ordinal m p m.
Apply equip_sym Y (ordsucc n) HYSn to the current goal.
Let h be given.
Assume Hh: bij (ordsucc n) Y h.
Apply Hh to the current goal.
Assume H _.
Apply H to the current goal.
Assume Hh1: iordsucc n, h i Y.
Assume _.
We prove the intermediate claim LhnY: h n Y.
Apply Hh1 to the current goal.
Apply ordsuccI2 to the current goal.
Apply ReplE_impred ω (λn ⇒ g (f' n)) (h n) (HYH' (h n) LhnY) to the current goal.
Let m be given.
Assume Hm: m ω.
Assume Hhnm: h n = g (f' m).
We use m to witness the existential quantifier.
Apply andI to the current goal.
We will prove ordinal m.
Apply nat_p_ordinal to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hm.
We will prove m ω g (f' m) Y.
Apply andI to the current goal.
An exact proof term for the current goal is Hm.
rewrite the current goal using Hhnm (from right to left).
An exact proof term for the current goal is LhnY.
Apply least_ordinal_ex p Lpne to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Hmo: ordinal m.
Assume Hpm: m ω g (f' m) Y.
Assume Hpk: km, ¬ (k ω g (f' k) Y).
Apply Hpm to the current goal.
Assume Hm: m ω.
Assume Hgf'm: g (f' m) Y.
We will prove C Y c.
Apply LCSnlem m (omega_nat_p m Hm) Y HYH' HYSn Hgf'm to the current goal.
Let k be given.
Assume Hk: k m.
We will prove g (f' k) Y.
Assume Hgf'k: g (f' k) Y.
Apply Hpk k Hk to the current goal.
Apply andI to the current goal.
We will prove k ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_p_trans m (omega_nat_p m Hm) k Hk.
We will prove g (f' k) Y.
An exact proof term for the current goal is Hgf'k.
Apply IHc (ordsucc n) (nat_ordsucc n Hn) H' LH'inf C LCSn to the current goal.
Let H'' be given.
Assume H.
Apply H to the current goal.
Assume HH''H': H'' H'.
Assume H.
Apply H to the current goal.
Let i be given.
Assume H.
Apply H to the current goal.
Assume Hi: i c.
Assume H.
Apply H to the current goal.
Assume HH''inf: infinite H''.
Assume HH''hom: YH'', equip Y (ordsucc n)C Y = i.
Apply H2 to the current goal.
We use H'' to witness the existential quantifier.
Apply andI to the current goal.
We will prove H'' X.
An exact proof term for the current goal is Subq_tra H'' H' X HH''H' LH'X.
We use i to witness the existential quantifier.
Apply andI to the current goal.
We will prove i ordsucc c.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
Apply andI to the current goal.
We will prove infinite H''.
An exact proof term for the current goal is HH''inf.
We will prove YH'', equip Y (ordsucc n)C Y = i.
An exact proof term for the current goal is HH''hom.
Set f to be the term λX' ⇒ Eps_i (λX'' ⇒ X'' X' xX', x X'' infinite X'' YX'', equip Y nC (Y {x}) = c) of type setset.
We prove the intermediate claim Lf1: X'X, infinite X'f X' X' xX', x f X' infinite (f X') Yf X', equip Y nC (Y {x}) = c.
Let X' be given.
Assume HX'X HX'inf.
An exact proof term for the current goal is Eps_i_ex (λX'' ⇒ X'' X' xX', x X'' infinite X'' YX'', equip Y nC (Y {x}) = c) (L1 X' HX'X HX'inf).
We prove the intermediate claim Lf1a: ZX, infinite Zf Z Z infinite (f Z).
Let Z be given.
Assume HZ1 HZ2.
Apply Lf1 Z HZ1 HZ2 to the current goal.
Assume H3: f Z Z.
Assume H.
Apply H to the current goal.
Let y be given.
Assume H.
Apply H to the current goal.
Assume Hy: y Z.
Assume H.
Apply H to the current goal.
Assume H4: y f Z infinite (f Z).
Assume _.
Apply H4 to the current goal.
Assume _.
Assume H5: infinite (f Z).
Apply andI to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is H5.
Set g to be the term λX' ⇒ Eps_i (λx ⇒ x X' (x f X' Yf X', equip Y nC (Y {x}) = c)) of type setset.
We prove the intermediate claim Lg1: X'X, infinite X'g X' X' (g X' f X' Yf X', equip Y nC (Y {g X'}) = c).
Let X' be given.
Assume HX'X HX'inf.
Apply Lf1 X' HX'X HX'inf to the current goal.
Assume HfX'X': f X' X'.
Assume H.
Apply H to the current goal.
Let x be given.
Assume H.
Apply H to the current goal.
Assume Hx: x X'.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume HxfX': x f X'.
Assume HfX'inf: infinite (f X').
Assume HfX'hom: Yf X', equip Y nC (Y {x}) = c.
We prove the intermediate claim Lg1': x X' (x f X' Yf X', equip Y nC (Y {x}) = c).
Apply andI to the current goal.
An exact proof term for the current goal is Hx.
Apply andI to the current goal.
An exact proof term for the current goal is HxfX'.
An exact proof term for the current goal is HfX'hom.
An exact proof term for the current goal is Eps_i_ax (λx ⇒ x X' (x f X' Yf X', equip Y nC (Y {x}) = c)) x Lg1'.
We prove the intermediate claim Lg1a: ZX, infinite Zg Z Z g Z f Z.
Let Z be given.
Assume HZ1 HZ2.
Apply Lg1 Z HZ1 HZ2 to the current goal.
Assume H3: g Z Z.
Assume H.
Apply H to the current goal.
Assume H4: g Z f Z.
Assume _.
Apply andI to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is H4.
We prove the intermediate claim Lf': f' : setset, f' 0 = f X ∀m, nat_p mf' (ordsucc m) = f (f' m).
We use nat_primrec (f X) (λ_ Z ⇒ f Z) to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is nat_primrec_0 (f X) (λ_ Z ⇒ f Z).
An exact proof term for the current goal is nat_primrec_S (f X) (λ_ Z ⇒ f Z).
Apply Lf' to the current goal.
Let f' be given.
Assume H.
Apply H to the current goal.
Assume Hf'0 Hf'S.
Apply infiniteRamsey_lem X f g f' HX Lf1a Lg1a Hf'0 Hf'S to the current goal.
Assume H.
Apply H to the current goal.
Assume Hf'1: ∀m, nat_p mf' m X infinite (f' m).
Assume Hgf'mm'Subq: m m'ω, m m'f' m' f' m.
Assume Hgf'inj: m m'ω, g (f' m) = g (f' m')m = m'.
Set H' to be the term {g (f' n)|nω}.
We prove the intermediate claim Lf'1: ∀m, nat_p mf' m X infinite (f' m).
Apply nat_ind to the current goal.
rewrite the current goal using Hf'0 (from left to right).
We will prove f X X infinite (f X).
Apply Lf1 X (λu H ⇒ H) HX to the current goal.
Assume H3: f X X.
Assume H.
Apply H to the current goal.
Let y be given.
Assume H.
Apply H to the current goal.
Assume _ H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume _.
Assume H4: infinite (f X).
Assume _.
We will prove f X X infinite (f X).
Apply andI to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is H4.
Let m be given.
Assume Hm.
Assume IHm.
Apply IHm to the current goal.
Assume IHm1: f' m X.
Assume IHm2: infinite (f' m).
We will prove f' (ordsucc m) X infinite (f' (ordsucc m)).
rewrite the current goal using Hf'S m Hm (from left to right).
We will prove f (f' m) X infinite (f (f' m)).
Apply Lf1 (f' m) IHm1 IHm2 to the current goal.
Assume H3: f (f' m) f' m.
Assume H.
Apply H to the current goal.
Let y be given.
Assume H.
Apply H to the current goal.
Assume _ H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume _.
Assume H4: infinite (f (f' m)).
Assume _.
Apply andI to the current goal.
Apply Subq_tra (f (f' m)) (f' m) X H3 to the current goal.
An exact proof term for the current goal is IHm1.
An exact proof term for the current goal is H4.
We prove the intermediate claim Lgf'mm'addSubq: mω, ∀m', nat_p m'f' (m + m') f' m.
Let m be given.
Assume Hm.
Apply nat_ind to the current goal.
We will prove f' (m + 0) f' m.
rewrite the current goal using add_nat_0R m (from left to right).
An exact proof term for the current goal is Subq_ref (f' m).
Let m' be given.
Assume Hm'.
Assume IHm': f' (m + m') f' m.
We will prove f' (m + ordsucc m') f' m.
rewrite the current goal using add_nat_SR m m' Hm' (from left to right).
We will prove f' (ordsucc (m + m')) f' m.
rewrite the current goal using Hf'S (m + m') (add_nat_p m (omega_nat_p m Hm) m' Hm') (from left to right).
We will prove f (f' (m + m')) f' m.
Apply Subq_tra (f (f' (m + m'))) (f' (m + m')) (f' m) to the current goal.
Apply Lf'1 (m + m') (add_nat_p m (omega_nat_p m Hm) m' Hm') to the current goal.
Assume Hfmm'X: f' (m + m') X.
Assume Hfmm'inf: infinite (f' (m + m')).
Apply Lf1 (f' (m + m')) Hfmm'X Hfmm'inf to the current goal.
Assume H3: f (f' (m + m')) f' (m + m').
Assume _.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is IHm'.
We prove the intermediate claim Lgf'mm'Subq: m m'ω, m m'f' m' f' m.
Let m be given.
Assume Hm: m ω.
Let m' be given.
Assume Hm': m' ω.
Assume Hmm': m m'.
Apply nat_Subq_add_ex m (omega_nat_p m Hm) m' (omega_nat_p m' Hm') Hmm' to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: nat_p k.
Assume Hm'km: m' = k + m.
We will prove f' m' f' m.
rewrite the current goal using Hm'km (from left to right).
We will prove f' (k + m) f' m.
rewrite the current goal using add_nat_com k Hk m (omega_nat_p m Hm) (from left to right).
We will prove f' (m + k) f' m.
An exact proof term for the current goal is Lgf'mm'addSubq m Hm k Hk.
We prove the intermediate claim Lgf'injlem: mω, m'm, g (f' m') g (f' m).
Let m be given.
Assume Hm: m ω.
Let m' be given.
Assume Hm': m' m.
Assume H3: g (f' m') = g (f' m).
We prove the intermediate claim LmN: nat_p m.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hm.
We prove the intermediate claim Lmo: ordinal m.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is LmN.
We prove the intermediate claim Lm'N: nat_p m'.
An exact proof term for the current goal is nat_p_trans m (omega_nat_p m Hm) m' Hm'.
We prove the intermediate claim Lf'mff'm': f' m f (f' m').
Apply Hf'S m' Lm'N (λu _ ⇒ f' m u) to the current goal.
We will prove f' m f' (ordsucc m').
Apply Lgf'mm'Subq (ordsucc m') (omega_ordsucc m' (nat_p_omega m' Lm'N)) m Hm to the current goal.
We will prove ordsucc m' m.
An exact proof term for the current goal is ordinal_ordsucc_In_Subq m Lmo m' Hm'.
Apply Lf'1 m (omega_nat_p m Hm) to the current goal.
Assume H4: f' m X.
Assume H5: infinite (f' m).
Apply Lg1 (f' m) H4 H5 to the current goal.
Assume H6: g (f' m) f' m.
Assume _.
Apply Lf'1 m' Lm'N to the current goal.
Assume H7: f' m' X.
Assume H8: infinite (f' m').
Apply Lg1 (f' m') H7 H8 to the current goal.
Assume _ H.
Apply H to the current goal.
Assume H9: g (f' m') f (f' m').
Assume _.
Apply H9 to the current goal.
We will prove g (f' m') f (f' m').
rewrite the current goal using H3 (from left to right).
We will prove g (f' m) f (f' m').
An exact proof term for the current goal is Lf'mff'm' (g (f' m)) H6.
We prove the intermediate claim Lgf'inj: m m'ω, g (f' m) = g (f' m')m = m'.
Let m be given.
Assume Hm: m ω.
Let m' be given.
Assume Hm': m' ω.
Assume Hgf'mm': g (f' m) = g (f' m').
Apply ordinal_trichotomy_or_impred m m' (nat_p_ordinal m (omega_nat_p m Hm)) (nat_p_ordinal m' (omega_nat_p m' Hm')) to the current goal.
Assume Hmm': m m'.
We will prove False.
Apply Lgf'injlem m' Hm' m Hmm' to the current goal.
We will prove g (f' m) = g (f' m').
An exact proof term for the current goal is Hgf'mm'.
Assume Hmm': m = m'.
An exact proof term for the current goal is Hmm'.
Assume Hm'm: m' m.
We will prove False.
Apply Lgf'injlem m Hm m' Hm'm to the current goal.
We will prove g (f' m') = g (f' m).
Use symmetry.
An exact proof term for the current goal is Hgf'mm'.
We prove the intermediate claim LH'X: H' X.
Let u be given.
Assume Hu: u H'.
Apply ReplE_impred ω (λn ⇒ g (f' n)) u Hu to the current goal.
Let m be given.
Assume Hm: m ω.
Assume Hue: u = g (f' m).
rewrite the current goal using Hue (from left to right).
We will prove g (f' m) X.
Apply Lf'1 m (omega_nat_p m Hm) to the current goal.
Assume Hf'mX: f' m X.
Assume Hf'minf: infinite (f' m).
Apply Lg1 (f' m) Hf'mX Hf'minf to the current goal.
Assume Hgf'm: g (f' m) f' m.
Assume _.
Apply Hf'mX to the current goal.
An exact proof term for the current goal is Hgf'm.
We prove the intermediate claim LH'inf: infinite H'.
Apply atleastp_omega_infinite to the current goal.
We will prove atleastp ω H'.
We will prove g : setset, inj ω H' g.
We use (λn : setg (f' n)) to witness the existential quantifier.
We will prove (mω, g (f' m) H') (m m'ω, g (f' m) = g (f' m')m = m').
Apply andI to the current goal.
Let m be given.
Assume Hm: m ω.
We will prove g (f' m) {g (f' n)|nω}.
An exact proof term for the current goal is ReplI ω (λn ⇒ g (f' n)) m Hm.
An exact proof term for the current goal is Lgf'inj.
We prove the intermediate claim LCSnlem: ∀m, nat_p mYH', equip Y (ordsucc n)g (f' m) Y(km, g (f' k) Y)C Y = c.
Let m be given.
Assume Hm.
Let Y be given.
Assume HYH': Y H'.
Assume HYSn: equip Y (ordsucc n).
Assume Hgf'mY: g (f' m) Y.
Assume Hgf'kY: km, g (f' k) Y.
Apply Lf'1 m Hm to the current goal.
Assume Hf'mX: f' m X.
Assume Hf'minf: infinite (f' m).
Apply Lg1 (f' m) Hf'mX Hf'minf to the current goal.
Assume Hgf'mf'm: g (f' m) f' m.
Assume H.
Apply H to the current goal.
Assume Hgf'mff'm: g (f' m) f (f' m).
Assume Hgf'mc: Yf (f' m), equip Y nC (Y {g (f' m)}) = c.
We prove the intermediate claim Lmo: ordinal m.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is Hm.
We will prove C Y = c.
rewrite the current goal using binunion_remove1_eq Y (g (f' m)) Hgf'mY (from left to right).
We will prove C ((Y {g (f' m)}) {g (f' m)}) = c.
Apply Hgf'mc to the current goal.
We will prove Y {g (f' m)} f (f' m).
Let u be given.
Assume Hu: u Y {g (f' m)}.
We prove the intermediate claim Luf'Sm: u f' (ordsucc m).
Apply setminusE Y {g (f' m)} u Hu to the current goal.
Assume Hu1: u Y.
Assume Hu2: u {g (f' m)}.
Apply ReplE_impred ω (λn ⇒ g (f' n)) u (HYH' u Hu1) to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Huk: u = g (f' k).
We will prove u f' (ordsucc m).
We prove the intermediate claim Lko: ordinal k.
Apply nat_p_ordinal to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hk.
Apply ordinal_trichotomy_or_impred k m Lko Lmo to the current goal.
Assume Hkm: k m.
We will prove False.
Apply Hgf'kY k Hkm to the current goal.
We will prove g (f' k) Y.
rewrite the current goal using Huk (from right to left).
An exact proof term for the current goal is Hu1.
Assume Hkm: k = m.
We will prove False.
Apply Hu2 to the current goal.
rewrite the current goal using Huk (from left to right).
We will prove g (f' k) {g (f' m)}.
rewrite the current goal using Hkm (from left to right).
Apply SingI to the current goal.
Assume Hmk: m k.
We will prove u f' (ordsucc m).
Apply Lgf'mm'Subq (ordsucc m) (omega_ordsucc m (nat_p_omega m Hm)) k Hk to the current goal.
We will prove ordsucc m k.
An exact proof term for the current goal is ordinal_ordsucc_In_Subq k Lko m Hmk.
We will prove u f' k.
rewrite the current goal using Huk (from left to right).
We will prove g (f' k) f' k.
Apply Lf'1 k (omega_nat_p k Hk) to the current goal.
Assume Hf'kX: f' k X.
Assume Hf'kinf: infinite (f' k).
Apply Lg1 (f' k) Hf'kX Hf'kinf to the current goal.
Assume Hgf'kf'k: g (f' k) f' k.
Assume _.
An exact proof term for the current goal is Hgf'kf'k.
We will prove u f (f' m).
An exact proof term for the current goal is Hf'S m Hm (λw _ ⇒ u w) Luf'Sm.
We will prove equip (Y {g (f' m)}) n.
Apply equip_ordsucc_remove1 to the current goal.
An exact proof term for the current goal is Hgf'mY.
We will prove equip Y (ordsucc n).
An exact proof term for the current goal is HYSn.
We prove the intermediate claim LCSn: YH', equip Y (ordsucc n)C Y = c.
Let Y be given.
Assume HYH': Y H'.
Assume HYSn: equip Y (ordsucc n).
We will prove C Y = c.
Set p to be the term λm ⇒ m ω g (f' m) Y of type setprop.
We prove the intermediate claim Lpne: m, ordinal m p m.
Apply equip_sym Y (ordsucc n) HYSn to the current goal.
Let h be given.
Assume Hh: bij (ordsucc n) Y h.
Apply Hh to the current goal.
Assume H _.
Apply H to the current goal.
Assume Hh1: iordsucc n, h i Y.
Assume _.
We prove the intermediate claim LhnY: h n Y.
Apply Hh1 to the current goal.
Apply ordsuccI2 to the current goal.
Apply ReplE_impred ω (λn ⇒ g (f' n)) (h n) (HYH' (h n) LhnY) to the current goal.
Let m be given.
Assume Hm: m ω.
Assume Hhnm: h n = g (f' m).
We use m to witness the existential quantifier.
Apply andI to the current goal.
We will prove ordinal m.
Apply nat_p_ordinal to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hm.
We will prove m ω g (f' m) Y.
Apply andI to the current goal.
An exact proof term for the current goal is Hm.
rewrite the current goal using Hhnm (from right to left).
An exact proof term for the current goal is LhnY.
Apply least_ordinal_ex p Lpne to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Hmo: ordinal m.
Assume Hpm: m ω g (f' m) Y.
Assume Hpk: km, ¬ (k ω g (f' k) Y).
Apply Hpm to the current goal.
Assume Hm: m ω.
Assume Hgf'm: g (f' m) Y.
We will prove C Y = c.
Apply LCSnlem m (omega_nat_p m Hm) Y HYH' HYSn Hgf'm to the current goal.
Let k be given.
Assume Hk: k m.
We will prove g (f' k) Y.
Assume Hgf'k: g (f' k) Y.
Apply Hpk k Hk to the current goal.
Apply andI to the current goal.
We will prove k ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_p_trans m (omega_nat_p m Hm) k Hk.
We will prove g (f' k) Y.
An exact proof term for the current goal is Hgf'k.
Apply H2 to the current goal.
We use H' to witness the existential quantifier.
Apply andI to the current goal.
We will prove H' X.
An exact proof term for the current goal is LH'X.
We use c to witness the existential quantifier.
Apply andI to the current goal.
Apply ordsuccI2 to the current goal.
Apply andI to the current goal.
We will prove infinite H'.
An exact proof term for the current goal is LH'inf.
An exact proof term for the current goal is LCSn.
End of Section InfiniteRamsey
Definition. We define Inj1 to be In_rec_i (λX f ⇒ {0} {f x|xX}) of type setset.
Theorem. (Inj1_eq) The following is provable:
∀X : set, Inj1 X = {0} {Inj1 x|xX}
Proof:
We prove the intermediate claim L1: ∀X : set, ∀g h : setset, (xX, g x = h x){0} {g x|xX} = {0} {h x|xX}.
Let X, g and h be given.
Assume H: xX, g x = h x.
We prove the intermediate claim L1a: {g x|xX} = {h x|xX}.
An exact proof term for the current goal is (ReplEq_ext X g h H).
We will prove {0} {g x|xX} = {0} {h x|xX}.
rewrite the current goal using L1a (from left to right).
Use reflexivity.
An exact proof term for the current goal is (In_rec_i_eq (λX f ⇒ {0} {f x|xX}) L1).
Theorem. (Inj1I1) The following is provable:
∀X : set, 0 Inj1 X
Proof:
Let X be given.
rewrite the current goal using (Inj1_eq X) (from left to right).
We will prove 0 {0} {Inj1 x|xX}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
Theorem. (Inj1I2) The following is provable:
∀X x : set, x XInj1 x Inj1 X
Proof:
Let X and x be given.
Assume H: x X.
rewrite the current goal using (Inj1_eq X) (from left to right).
We will prove Inj1 x {0} {Inj1 x|xX}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is (ReplI X Inj1 x H).
Theorem. (Inj1E) The following is provable:
∀X y : set, y Inj1 Xy = 0 xX, y = Inj1 x
Proof:
Let X and y be given.
rewrite the current goal using (Inj1_eq X) (from left to right).
Assume H1: y {0} {Inj1 x|xX}.
We will prove y = 0 xX, y = Inj1 x.
Apply (binunionE {0} {Inj1 x|xX} y H1) to the current goal.
Assume H2: y {0}.
Apply orIL to the current goal.
An exact proof term for the current goal is (SingE 0 y H2).
Assume H2: y {Inj1 x|xX}.
Apply orIR to the current goal.
We will prove xX, y = Inj1 x.
An exact proof term for the current goal is (ReplE X Inj1 y H2).
Theorem. (Inj1NE1) The following is provable:
∀x : set, Inj1 x 0
Proof:
Let x be given.
Assume H1: Inj1 x = 0.
Apply (EmptyE 0) to the current goal.
We will prove 0 0.
rewrite the current goal using H1 (from right to left) at position 2.
We will prove 0 Inj1 x.
An exact proof term for the current goal is (Inj1I1 x).
Theorem. (Inj1NE2) The following is provable:
∀x : set, Inj1 x {0}
Proof:
Let x be given.
Assume H1: Inj1 x {0}.
An exact proof term for the current goal is (Inj1NE1 x (SingE 0 (Inj1 x) H1)).
Definition. We define Inj0 to be λX ⇒ {Inj1 x|xX} of type setset.
Theorem. (Inj0I) The following is provable:
∀X x : set, x XInj1 x Inj0 X
Proof:
An exact proof term for the current goal is (λX x H ⇒ ReplI X Inj1 x H).
Theorem. (Inj0E) The following is provable:
∀X y : set, y Inj0 Xx : set, x X y = Inj1 x
Proof:
An exact proof term for the current goal is (λX y H ⇒ ReplE X Inj1 y H).
Definition. We define Unj to be In_rec_i (λX f ⇒ {f x|xX {0}}) of type setset.
Theorem. (Unj_eq) The following is provable:
∀X : set, Unj X = {Unj x|xX {0}}
Proof:
We prove the intermediate claim L1: ∀X : set, ∀g h : setset, (xX, g x = h x){g x|xX {0}} = {h x|xX {0}}.
Let X, g and h be given.
Assume H1: xX, g x = h x.
We will prove {g x|xX {0}} = {h x|xX {0}}.
Apply (ReplEq_ext (X {0}) g h) to the current goal.
Let x be given.
Assume H2: x X {0}.
We will prove g x = h x.
Apply H1 to the current goal.
We will prove x X.
An exact proof term for the current goal is (setminusE1 X {0} x H2).
An exact proof term for the current goal is (In_rec_i_eq (λX f ⇒ {f x|xX {0}}) L1).
Theorem. (Unj_Inj1_eq) The following is provable:
∀X : set, Unj (Inj1 X) = X
Proof:
Apply In_ind to the current goal.
Let X be given.
Assume IH: xX, Unj (Inj1 x) = x.
We will prove Unj (Inj1 X) = X.
rewrite the current goal using Unj_eq (from left to right).
We will prove {Unj x|xInj1 X {0}} = X.
Apply set_ext to the current goal.
We will prove {Unj x|xInj1 X {0}} X.
Let x be given.
Assume H1: x {Unj x|xInj1 X {0}}.
We will prove x X.
Apply (ReplE_impred (Inj1 X {0}) Unj x H1) to the current goal.
Let y be given.
Assume H2: y Inj1 X {0}.
Assume H3: x = Unj y.
rewrite the current goal using H3 (from left to right).
We will prove Unj y X.
Apply (setminusE (Inj1 X) {0} y H2) to the current goal.
Assume H4: y Inj1 X.
Assume H5: y {0}.
Apply (Inj1E X y H4) to the current goal.
Assume H6: y = 0.
We will prove False.
Apply H5 to the current goal.
rewrite the current goal using H6 (from left to right).
We will prove 0 {0}.
Apply SingI to the current goal.
Assume H6: xX, y = Inj1 x.
Apply (exandE_i (λx ⇒ x X) (λx ⇒ y = Inj1 x) H6) to the current goal.
Let z be given.
Assume H7: z X.
Assume H8: y = Inj1 z.
rewrite the current goal using H8 (from left to right).
We will prove Unj (Inj1 z) X.
rewrite the current goal using (IH z H7) (from left to right).
We will prove z X.
An exact proof term for the current goal is H7.
We will prove X {Unj x|xInj1 X {0}}.
Let x be given.
Assume H1: x X.
We will prove x {Unj x|xInj1 X {0}}.
rewrite the current goal using (IH x H1) (from right to left).
We will prove Unj (Inj1 x) {Unj x|xInj1 X {0}}.
Apply (ReplI (Inj1 X {0}) Unj) to the current goal.
We will prove Inj1 x Inj1 X {0}.
Apply setminusI to the current goal.
An exact proof term for the current goal is (Inj1I2 X x H1).
We will prove Inj1 x {0}.
An exact proof term for the current goal is (Inj1NE2 x).
Theorem. (Inj1_inj) The following is provable:
∀X Y : set, Inj1 X = Inj1 YX = Y
Proof:
Let X and Y be given.
Assume H1: Inj1 X = Inj1 Y.
We will prove X = Y.
rewrite the current goal using (Unj_Inj1_eq X) (from right to left).
rewrite the current goal using (Unj_Inj1_eq Y) (from right to left).
rewrite the current goal using H1 (from left to right).
Use reflexivity.
Theorem. (Unj_Inj0_eq) The following is provable:
∀X : set, Unj (Inj0 X) = X
Proof:
Let X be given.
rewrite the current goal using (Unj_eq (Inj0 X)) (from left to right).
We will prove {Unj x|xInj0 X {0}} = X.
Apply set_ext to the current goal.
We will prove {Unj x|xInj0 X {0}} X.
Let x be given.
Assume H1: x {Unj x|xInj0 X {0}}.
We will prove x X.
Apply (ReplE_impred (Inj0 X {0}) Unj x H1) to the current goal.
Let y be given.
Assume H2: y Inj0 X {0}.
Assume H3: x = Unj y.
Apply (setminusE (Inj0 X) {0} y H2) to the current goal.
Assume H4: y {Inj1 x|xX}.
Assume H5: y {0}.
Apply (ReplE_impred X Inj1 y H4) to the current goal.
Let z be given.
Assume H6: z X.
Assume H7: y = Inj1 z.
We prove the intermediate claim L1: x = z.
rewrite the current goal using H3 (from left to right).
We will prove Unj y = z.
rewrite the current goal using H7 (from left to right).
We will prove Unj (Inj1 z) = z.
An exact proof term for the current goal is (Unj_Inj1_eq z).
We will prove x X.
rewrite the current goal using L1 (from left to right).
We will prove z X.
An exact proof term for the current goal is H6.
We will prove X {Unj x|xInj0 X {0}}.
Let x be given.
Assume H1: x X.
We will prove x {Unj x|xInj0 X {0}}.
rewrite the current goal using (Unj_Inj1_eq x) (from right to left).
We will prove Unj (Inj1 x) {Unj x|xInj0 X {0}}.
Apply (ReplI (Inj0 X {0}) Unj) to the current goal.
We will prove Inj1 x Inj0 X {0}.
Apply setminusI to the current goal.
We will prove Inj1 x {Inj1 x|xX}.
Apply ReplI to the current goal.
An exact proof term for the current goal is H1.
We will prove Inj1 x {0}.
An exact proof term for the current goal is (Inj1NE2 x).
Theorem. (Inj0_inj) The following is provable:
∀X Y : set, Inj0 X = Inj0 YX = Y
Proof:
Let X and Y be given.
Assume H1: Inj0 X = Inj0 Y.
We will prove X = Y.
rewrite the current goal using (Unj_Inj0_eq X) (from right to left).
rewrite the current goal using (Unj_Inj0_eq Y) (from right to left).
rewrite the current goal using H1 (from left to right).
Use reflexivity.
Theorem. (Inj0_0) The following is provable:
Proof:
An exact proof term for the current goal is (Repl_Empty Inj1).
Theorem. (Inj0_Inj1_neq) The following is provable:
∀X Y : set, Inj0 X Inj1 Y
Proof:
Let X and Y be given.
Assume H1: Inj0 X = Inj1 Y.
We prove the intermediate claim L1: 0 Inj1 Y.
An exact proof term for the current goal is (Inj1I1 Y).
We prove the intermediate claim L2: 0 Inj0 X.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is L1.
Apply (Inj0E X 0 L2) to the current goal.
Let x be given.
Assume H2: x X 0 = Inj1 x.
Apply Inj1NE1 x to the current goal.
Use symmetry.
An exact proof term for the current goal is andER (x X) (0 = Inj1 x) H2.
Definition. We define setsum to be λX Y ⇒ {Inj0 x|xX} {Inj1 y|yY} of type setsetset.
Notation. We use + as an infix operator with priority 450 and which associates to the left corresponding to applying term setsum.
Theorem. (Inj0_setsum) The following is provable:
∀X Y x : set, x XInj0 x X + Y
Proof:
Let X, Y and x be given.
Assume H: x X.
We will prove Inj0 x {Inj0 x|xX} {Inj1 y|yY}.
Apply binunionI1 to the current goal.
We will prove Inj0 x {Inj0 x|xX}.
Apply ReplI to the current goal.
An exact proof term for the current goal is H.
Theorem. (Inj1_setsum) The following is provable:
∀X Y y : set, y YInj1 y X + Y
Proof:
Let X, Y and y be given.
Assume H: y Y.
We will prove Inj1 y {Inj0 x|xX} {Inj1 y|yY}.
Apply binunionI2 to the current goal.
We will prove Inj1 y {Inj1 y|yY}.
Apply ReplI to the current goal.
An exact proof term for the current goal is H.
Theorem. (setsum_Inj_inv) The following is provable:
∀X Y z : set, z X + Y(xX, z = Inj0 x) (yY, z = Inj1 y)
Proof:
Let X, Y and z be given.
Assume H1: z {Inj0 x|xX} {Inj1 y|yY}.
Apply (binunionE {Inj0 x|xX} {Inj1 y|yY} z H1) to the current goal.
Assume H2: z {Inj0 x|xX}.
Apply orIL to the current goal.
An exact proof term for the current goal is (ReplE X Inj0 z H2).
Assume H2: z {Inj1 y|yY}.
Apply orIR to the current goal.
An exact proof term for the current goal is (ReplE Y Inj1 z H2).
Theorem. (Inj0_setsum_0L) The following is provable:
∀X : set, 0 + X = Inj0 X
Proof:
Let X be given.
Apply set_ext to the current goal.
Let z be given.
Assume H1: z 0 + X.
We will prove z Inj0 X.
Apply (setsum_Inj_inv 0 X z H1) to the current goal.
Assume H2: x0, z = Inj0 x.
Apply (exandE_i (λx ⇒ x 0) (λx ⇒ z = Inj0 x) H2) to the current goal.
Let x be given.
Assume H3: x 0.
We will prove False.
An exact proof term for the current goal is (EmptyE x H3).
Assume H2: xX, z = Inj1 x.
Apply (exandE_i (λx ⇒ x X) (λx ⇒ z = Inj1 x) H2) to the current goal.
Let x be given.
Assume H3: x X.
Assume H4: z = Inj1 x.
rewrite the current goal using H4 (from left to right).
We will prove Inj1 x Inj0 X.
An exact proof term for the current goal is (Inj0I X x H3).
Let z be given.
Assume H1: z Inj0 X.
We will prove z 0 + X.
Apply (exandE_i (λx ⇒ x X) (λx ⇒ z = Inj1 x) (Inj0E X z H1)) to the current goal.
Let x be given.
Assume H2: x X.
Assume H3: z = Inj1 x.
rewrite the current goal using H3 (from left to right).
We will prove Inj1 x 0 + X.
Apply Inj1_setsum to the current goal.
An exact proof term for the current goal is H2.
Theorem. (Inj1_setsum_1L) The following is provable:
∀X : set, 1 + X = Inj1 X
Proof:
Let X be given.
Apply set_ext to the current goal.
Let z be given.
Assume H1: z 1 + X.
We will prove z Inj1 X.
Apply (setsum_Inj_inv 1 X z H1) to the current goal.
Assume H2: x1, z = Inj0 x.
Apply (exandE_i (λx ⇒ x 1) (λx ⇒ z = Inj0 x) H2) to the current goal.
Let x be given.
Assume H3: x 1.
Assume H4: z = Inj0 x.
rewrite the current goal using H4 (from left to right).
We will prove Inj0 x Inj1 X.
We prove the intermediate claim L1: x = 0.
An exact proof term for the current goal is (SingE 0 x (Subq_1_Sing0 x H3)).
rewrite the current goal using L1 (from left to right).
We will prove Inj0 0 Inj1 X.
rewrite the current goal using Inj0_0 (from left to right).
We will prove 0 Inj1 X.
An exact proof term for the current goal is (Inj1I1 X).
Assume H2: xX, z = Inj1 x.
Apply (exandE_i (λx ⇒ x X) (λx ⇒ z = Inj1 x) H2) to the current goal.
Let x be given.
Assume H3: x X.
Assume H4: z = Inj1 x.
rewrite the current goal using H4 (from left to right).
We will prove Inj1 x Inj1 X.
An exact proof term for the current goal is (Inj1I2 X x H3).
Let z be given.
Assume H1: z Inj1 X.
We will prove z 1 + X.
Apply (Inj1E X z H1) to the current goal.
Assume H2: z = 0.
rewrite the current goal using H2 (from left to right).
We will prove 0 1 + X.
rewrite the current goal using Inj0_0 (from right to left) at position 1.
We will prove Inj0 0 1 + X.
Apply Inj0_setsum to the current goal.
We will prove 0 1.
An exact proof term for the current goal is In_0_1.
Assume H2: xX, z = Inj1 x.
Apply (exandE_i (λx ⇒ x X) (λx ⇒ z = Inj1 x) H2) to the current goal.
Let x be given.
Assume H2: x X.
Assume H3: z = Inj1 x.
rewrite the current goal using H3 (from left to right).
We will prove Inj1 x 1 + X.
Apply Inj1_setsum to the current goal.
An exact proof term for the current goal is H2.
Beginning of Section pair_setsum
Let pair ≝ setsum
Definition. We define proj0 to be λZ ⇒ {Unj z|zZ, x : set, Inj0 x = z} of type setset.
Definition. We define proj1 to be λZ ⇒ {Unj z|zZ, y : set, Inj1 y = z} of type setset.
Theorem. (Inj0_pair_0_eq) The following is provable:
Inj0 = pair 0
Proof:
Apply (func_ext set set) to the current goal.
Let x be given.
Use symmetry.
We will prove 0 + x = Inj0 x.
An exact proof term for the current goal is (Inj0_setsum_0L x).
Theorem. (Inj1_pair_1_eq) The following is provable:
Inj1 = pair 1
Proof:
Apply (func_ext set set) to the current goal.
Let x be given.
Use symmetry.
We will prove 1 + x = Inj1 x.
An exact proof term for the current goal is (Inj1_setsum_1L x).
Theorem. (pairI0) The following is provable:
∀X Y x, x Xpair 0 x pair X Y
Proof:
rewrite the current goal using Inj0_pair_0_eq (from right to left).
An exact proof term for the current goal is Inj0_setsum.
Theorem. (pairI1) The following is provable:
∀X Y y, y Ypair 1 y pair X Y
Proof:
rewrite the current goal using Inj1_pair_1_eq (from right to left).
An exact proof term for the current goal is Inj1_setsum.
Theorem. (pairE) The following is provable:
∀X Y z, z pair X Y(xX, z = pair 0 x) (yY, z = pair 1 y)
Proof:
rewrite the current goal using Inj0_pair_0_eq (from right to left).
rewrite the current goal using Inj1_pair_1_eq (from right to left).
An exact proof term for the current goal is setsum_Inj_inv.
Theorem. (pairE0) The following is provable:
∀X Y x, pair 0 x pair X Yx X
Proof:
Let X, Y and x be given.
Assume H1: pair 0 x pair X Y.
We will prove x X.
Apply (pairE X Y (pair 0 x) H1) to the current goal.
rewrite the current goal using Inj0_pair_0_eq (from right to left).
Assume H2: x'X, Inj0 x = Inj0 x'.
Apply (exandE_i (λx' ⇒ x' X) (λx' ⇒ Inj0 x = Inj0 x') H2) to the current goal.
Let x' be given.
Assume H3: x' X.
Assume H4: Inj0 x = Inj0 x'.
We will prove x X.
rewrite the current goal using (Inj0_inj x x' H4) (from left to right).
We will prove x' X.
An exact proof term for the current goal is H3.
rewrite the current goal using Inj0_pair_0_eq (from right to left).
rewrite the current goal using Inj1_pair_1_eq (from right to left).
Assume H2: yY, Inj0 x = Inj1 y.
We will prove False.
Apply (exandE_i (λy ⇒ y Y) (λy ⇒ Inj0 x = Inj1 y) H2) to the current goal.
Let y be given.
Assume _.
Assume H3: Inj0 x = Inj1 y.
An exact proof term for the current goal is (Inj0_Inj1_neq x y H3).
Theorem. (pairE1) The following is provable:
∀X Y y, pair 1 y pair X Yy Y
Proof:
Let X, Y and y be given.
Assume H1: pair 1 y pair X Y.
We will prove y Y.
Apply (pairE X Y (pair 1 y) H1) to the current goal.
rewrite the current goal using Inj0_pair_0_eq (from right to left).
rewrite the current goal using Inj1_pair_1_eq (from right to left).
Assume H2: xX, Inj1 y = Inj0 x.
We will prove False.
Apply (exandE_i (λx ⇒ x X) (λx ⇒ Inj1 y = Inj0 x) H2) to the current goal.
Let x be given.
Assume _.
Assume H3: Inj1 y = Inj0 x.
Apply (Inj0_Inj1_neq x y) to the current goal.
Use symmetry.
An exact proof term for the current goal is H3.
rewrite the current goal using Inj1_pair_1_eq (from right to left).
Assume H2: y'Y, Inj1 y = Inj1 y'.
Apply (exandE_i (λy' ⇒ y' Y) (λy' ⇒ Inj1 y = Inj1 y') H2) to the current goal.
Let y' be given.
Assume H3: y' Y.
Assume H4: Inj1 y = Inj1 y'.
We will prove y Y.
rewrite the current goal using (Inj1_inj y y' H4) (from left to right).
We will prove y' Y.
An exact proof term for the current goal is H3.
Theorem. (proj0I) The following is provable:
∀w u : set, pair 0 u wu proj0 w
Proof:
rewrite the current goal using Inj0_pair_0_eq (from right to left).
Let w and u be given.
Assume H1: Inj0 u w.
We will prove u {Unj z|zw, x : set, Inj0 x = z}.
rewrite the current goal using (Unj_Inj0_eq u) (from right to left).
We will prove Unj (Inj0 u) {Unj z|zw, x : set, Inj0 x = z}.
Apply (ReplSepI w (λz ⇒ x : set, Inj0 x = z) Unj (Inj0 u)) to the current goal.
We will prove Inj0 u w.
An exact proof term for the current goal is H1.
We will prove x, Inj0 x = Inj0 u.
We use u to witness the existential quantifier.
Use reflexivity.
Theorem. (proj0E) The following is provable:
∀w u : set, u proj0 wpair 0 u w
Proof:
Let w and u be given.
Assume H1: u {Unj z|zw, x : set, Inj0 x = z}.
rewrite the current goal using Inj0_pair_0_eq (from right to left).
We will prove Inj0 u w.
Apply (ReplSepE_impred w (λz ⇒ x : set, Inj0 x = z) Unj u H1) to the current goal.
Let z be given.
Assume H2: z w.
Assume H3: x, Inj0 x = z.
Assume H4: u = Unj z.
Apply H3 to the current goal.
Let x be given.
Assume H5: Inj0 x = z.
We will prove Inj0 u w.
rewrite the current goal using H4 (from left to right).
We will prove Inj0 (Unj z) w.
rewrite the current goal using H5 (from right to left).
We will prove Inj0 (Unj (Inj0 x)) w.
rewrite the current goal using Unj_Inj0_eq (from left to right).
We will prove Inj0 x w.
rewrite the current goal using H5 (from left to right).
An exact proof term for the current goal is H2.
Theorem. (proj1I) The following is provable:
∀w u : set, pair 1 u wu proj1 w
Proof:
rewrite the current goal using Inj1_pair_1_eq (from right to left).
Let w and u be given.
Assume H1: Inj1 u w.
We will prove u {Unj z|zw, y : set, Inj1 y = z}.
rewrite the current goal using (Unj_Inj1_eq u) (from right to left).
We will prove Unj (Inj1 u) {Unj z|zw, y : set, Inj1 y = z}.
Apply (ReplSepI w (λz ⇒ y : set, Inj1 y = z) Unj (Inj1 u)) to the current goal.
We will prove Inj1 u w.
An exact proof term for the current goal is H1.
We will prove y, Inj1 y = Inj1 u.
We use u to witness the existential quantifier.
Use reflexivity.
Theorem. (proj1E) The following is provable:
∀w u : set, u proj1 wpair 1 u w
Proof:
Let w and u be given.
Assume H1: u {Unj z|zw, y : set, Inj1 y = z}.
rewrite the current goal using Inj1_pair_1_eq (from right to left).
We will prove Inj1 u w.
Apply (ReplSepE_impred w (λz ⇒ y : set, Inj1 y = z) Unj u H1) to the current goal.
Let z be given.
Assume H2: z w.
Assume H3: y, Inj1 y = z.
Assume H4: u = Unj z.
Apply H3 to the current goal.
Let y be given.
Assume H5: Inj1 y = z.
We will prove Inj1 u w.
rewrite the current goal using H4 (from left to right).
We will prove Inj1 (Unj z) w.
rewrite the current goal using H5 (from right to left).
We will prove Inj1 (Unj (Inj1 y)) w.
rewrite the current goal using Unj_Inj1_eq (from left to right).
We will prove Inj1 y w.
rewrite the current goal using H5 (from left to right).
An exact proof term for the current goal is H2.
Theorem. (proj0_pair_eq) The following is provable:
∀X Y : set, proj0 (pair X Y) = X
Proof:
Let X and Y be given.
Apply set_ext to the current goal.
We will prove proj0 (pair X Y) X.
Let u be given.
Assume H1: u proj0 (pair X Y).
We will prove u X.
Apply (pairE0 X Y u) to the current goal.
We will prove pair 0 u pair X Y.
An exact proof term for the current goal is (proj0E (pair X Y) u H1).
We will prove X proj0 (pair X Y).
Let u be given.
Assume H1: u X.
We will prove u proj0 (pair X Y).
Apply proj0I to the current goal.
We will prove pair 0 u pair X Y.
Apply pairI0 to the current goal.
We will prove u X.
An exact proof term for the current goal is H1.
Theorem. (proj1_pair_eq) The following is provable:
∀X Y : set, proj1 (pair X Y) = Y
Proof:
Let X and Y be given.
Apply set_ext to the current goal.
We will prove proj1 (pair X Y) Y.
Let u be given.
Assume H1: u proj1 (pair X Y).
We will prove u Y.
Apply (pairE1 X Y u) to the current goal.
We will prove pair 1 u pair X Y.
An exact proof term for the current goal is (proj1E (pair X Y) u H1).
We will prove Y proj1 (pair X Y).
Let u be given.
Assume H1: u Y.
We will prove u proj1 (pair X Y).
Apply proj1I to the current goal.
We will prove pair 1 u pair X Y.
Apply pairI1 to the current goal.
We will prove u Y.
An exact proof term for the current goal is H1.
Definition. We define Sigma to be λX Y ⇒ xX{pair x y|yY x} of type set(setset)set.
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using Sigma.
Theorem. (Sigma_eta_proj0_proj1) The following is provable:
∀X : set, ∀Y : setset, z(xX, Y x), pair (proj0 z) (proj1 z) = z proj0 z X proj1 z Y (proj0 z)
Proof:
Let X, Y and z be given.
Assume H1: z xX, Y x.
We prove the intermediate claim L1: xX, z {pair x y|yY x}.
An exact proof term for the current goal is (famunionE X (λx ⇒ {pair x y|yY x}) z H1).
Apply (exandE_i (λx ⇒ x X) (λx ⇒ z {pair x y|yY x}) L1) to the current goal.
Let x be given.
Assume H2: x X.
Assume H3: z {pair x y|yY x}.
Apply (ReplE_impred (Y x) (pair x) z H3) to the current goal.
Let y be given.
Assume H4: y Y x.
Assume H5: z = pair x y.
rewrite the current goal using H5 (from left to right).
We will prove pair (proj0 (pair x y)) (proj1 (pair x y)) = pair x y proj0 (pair x y) X proj1 (pair x y) Y (proj0 (pair x y)).
rewrite the current goal using proj0_pair_eq (from left to right).
We will prove pair x (proj1 (pair x y)) = pair x y x X proj1 (pair x y) Y x.
rewrite the current goal using proj1_pair_eq (from left to right).
We will prove pair x y = pair x y x X y Y x.
Apply and3I to the current goal.
We will prove pair x y = pair x y.
Use reflexivity.
We will prove x X.
An exact proof term for the current goal is H2.
We will prove y Y x.
An exact proof term for the current goal is H4.
Theorem. (proj0_Sigma) The following is provable:
∀X : set, ∀Y : setset, ∀z : set, z (xX, Y x)proj0 z X
Proof:
Let X, Y and z be given.
Assume H1: z xX, Y x.
Apply (and3E (pair (proj0 z) (proj1 z) = z) (proj0 z X) (proj1 z Y (proj0 z)) (Sigma_eta_proj0_proj1 X Y z H1)) to the current goal.
Assume _ H2 _.
An exact proof term for the current goal is H2.
Theorem. (proj1_Sigma) The following is provable:
∀X : set, ∀Y : setset, ∀z : set, z (xX, Y x)proj1 z Y (proj0 z)
Proof:
Let X, Y and z be given.
Assume H1: z xX, Y x.
Apply (and3E (pair (proj0 z) (proj1 z) = z) (proj0 z X) (proj1 z Y (proj0 z)) (Sigma_eta_proj0_proj1 X Y z H1)) to the current goal.
Assume _ _ H2.
An exact proof term for the current goal is H2.
Theorem. (pair_Sigma) The following is provable:
∀X : set, ∀Y : setset, xX, yY x, pair x y xX, Y x
Proof:
Let X, Y and x be given.
Assume Hx: x X.
Let y be given.
Assume Hy: y Y x.
We will prove pair x y xX{pair x y|yY x}.
Apply (famunionI X (λx ⇒ {pair x y|yY x}) x (pair x y)) to the current goal.
We will prove x X.
An exact proof term for the current goal is Hx.
We will prove pair x y {pair x y|yY x}.
Apply ReplI to the current goal.
We will prove y Y x.
An exact proof term for the current goal is Hy.
Theorem. (pair_Sigma_E1) The following is provable:
∀X : set, ∀Y : setset, ∀x y : set, pair x y (xX, Y x)y Y x
Proof:
Let X, Y, x and y be given.
Assume H1: pair x y xX, Y x.
We will prove y Y x.
rewrite the current goal using (proj0_pair_eq x y) (from right to left).
We will prove y Y (proj0 (pair x y)).
rewrite the current goal using (proj1_pair_eq x y) (from right to left) at position 1.
We will prove proj1 (pair x y) Y (proj0 (pair x y)).
An exact proof term for the current goal is (proj1_Sigma X Y (pair x y) H1).
Theorem. (Sigma_E) The following is provable:
∀X : set, ∀Y : setset, ∀z : set, z (xX, Y x)xX, yY x, z = pair x y
Proof:
Let X, Y and z be given.
Assume Hz: z xX, Y x.
Apply (and3E (pair (proj0 z) (proj1 z) = z) (proj0 z X) (proj1 z Y (proj0 z)) (Sigma_eta_proj0_proj1 X Y z Hz)) to the current goal.
Assume H1: pair (proj0 z) (proj1 z) = z.
Assume H2: proj0 z X.
Assume H3: proj1 z Y (proj0 z).
We use (proj0 z) to witness the existential quantifier.
Apply andI to the current goal.
We will prove proj0 z X.
An exact proof term for the current goal is H2.
We use (proj1 z) to witness the existential quantifier.
Apply andI to the current goal.
We will prove proj1 z Y (proj0 z).
An exact proof term for the current goal is H3.
We will prove z = pair (proj0 z) (proj1 z).
Use symmetry.
An exact proof term for the current goal is H1.
Definition. We define setprod to be λX Y : setxX, Y of type setsetset.
Notation. We use as an infix operator with priority 440 and which associates to the left corresponding to applying term setprod.
Let lam : set(setset)setSigma
Definition. We define ap to be λf x ⇒ {proj1 z|zf, y : set, z = pair x y} of type setsetset.
Notation. When x is a set, a term x y is notation for ap x y.
Notation. λ xAB is notation for the set Sigma Ax : set ⇒ B).
Notation. We now use n-tuple notation (a0,...,an-1) for n ≥ 2 for λ i ∈ n . if i = 0 then a0 else ... if i = n-2 then an-2 else an-1.
Theorem. (lamI) The following is provable:
∀X : set, ∀F : setset, xX, yF x, pair x y λxX F x
Proof:
An exact proof term for the current goal is pair_Sigma.
Theorem. (lamE) The following is provable:
∀X : set, ∀F : setset, ∀z : set, z (λxX F x)xX, yF x, z = pair x y
Proof:
An exact proof term for the current goal is Sigma_E.
Theorem. (apI) The following is provable:
∀f x y, pair x y fy f x
Proof:
Let f, x and y be given.
Assume H1: pair x y f.
We will prove y {proj1 z|zf, y : set, z = pair x y}.
rewrite the current goal using (proj1_pair_eq x y) (from right to left).
We will prove proj1 (pair x y) {proj1 z|zf, y : set, z = pair x y}.
Apply (ReplSepI f (λz ⇒ y : set, z = pair x y) proj1 (pair x y) H1) to the current goal.
We will prove y' : set, pair x y = pair x y'.
We use y to witness the existential quantifier.
Use reflexivity.
Theorem. (apE) The following is provable:
∀f x y, y f xpair x y f
Proof:
Let f, x and y be given.
Assume H1: y {proj1 z|zf, y : set, z = pair x y}.
We will prove pair x y f.
Apply (ReplSepE_impred f (λz ⇒ y : set, z = pair x y) proj1 y H1) to the current goal.
Let z be given.
Assume Hz: z f.
Assume H1: y : set, z = pair x y.
Assume H2: y = proj1 z.
Apply H1 to the current goal.
Let v be given.
Assume H3: z = pair x v.
We prove the intermediate claim L1: y = v.
rewrite the current goal using H2 (from left to right).
rewrite the current goal using H3 (from left to right).
We will prove proj1 (pair x v) = v.
Apply proj1_pair_eq to the current goal.
We prove the intermediate claim L2: z = pair x y.
rewrite the current goal using L1 (from left to right).
An exact proof term for the current goal is H3.
rewrite the current goal using L2 (from right to left).
An exact proof term for the current goal is Hz.
Theorem. (beta) The following is provable:
∀X : set, ∀F : setset, ∀x : set, x X(λxX F x) x = F x
Proof:
Let X, F and x be given.
Assume Hx: x X.
Apply set_ext to the current goal.
Let w be given.
Assume Hw: w (λxX F x) x.
We prove the intermediate claim L1: pair x w (λxX F x).
An exact proof term for the current goal is (apE (λxX F x) x w Hw).
An exact proof term for the current goal is (pair_Sigma_E1 X F x w L1).
Let w be given.
Assume Hw: w F x.
We will prove w (λxX F x) x.
Apply apI to the current goal.
We will prove pair x w λxX F x.
We will prove pair x w xX, F x.
Apply pair_Sigma to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hw.
Theorem. (proj0_ap_0) The following is provable:
∀u, proj0 u = u 0
Proof:
Let u be given.
Apply set_ext to the current goal.
Let w be given.
Assume H1: w proj0 u.
We will prove w u 0.
Apply apI to the current goal.
We will prove pair 0 w u.
Apply proj0E to the current goal.
We will prove w proj0 u.
An exact proof term for the current goal is H1.
Let w be given.
Assume H1: w u 0.
We will prove w proj0 u.
Apply proj0I to the current goal.
We will prove pair 0 w u.
Apply apE to the current goal.
We will prove w u 0.
An exact proof term for the current goal is H1.
Theorem. (proj1_ap_1) The following is provable:
∀u, proj1 u = u 1
Proof:
Let u be given.
Apply set_ext to the current goal.
Let w be given.
Assume H1: w proj1 u.
We will prove w u 1.
Apply apI to the current goal.
We will prove pair 1 w u.
Apply proj1E to the current goal.
We will prove w proj1 u.
An exact proof term for the current goal is H1.
Let w be given.
Assume H1: w u 1.
We will prove w proj1 u.
Apply proj1I to the current goal.
We will prove pair 1 w u.
Apply apE to the current goal.
We will prove w u 1.
An exact proof term for the current goal is H1.
Theorem. (pair_ap_0) The following is provable:
∀x y : set, (pair x y) 0 = x
Proof:
Let x and y be given.
rewrite the current goal using (proj0_ap_0 (pair x y)) (from right to left).
We will prove proj0 (pair x y) = x.
Apply proj0_pair_eq to the current goal.
Theorem. (pair_ap_1) The following is provable:
∀x y : set, (pair x y) 1 = y
Proof:
Let x and y be given.
rewrite the current goal using (proj1_ap_1 (pair x y)) (from right to left).
We will prove proj1 (pair x y) = y.
Apply proj1_pair_eq to the current goal.
Theorem. (ap0_Sigma) The following is provable:
∀X : set, ∀Y : setset, ∀z : set, z (xX, Y x)(z 0) X
Proof:
Let X, Y and z be given.
rewrite the current goal using proj0_ap_0 (from right to left).
Apply proj0_Sigma to the current goal.
Theorem. (ap1_Sigma) The following is provable:
∀X : set, ∀Y : setset, ∀z : set, z (xX, Y x)(z 1) (Y (z 0))
Proof:
Let X, Y and z be given.
rewrite the current goal using proj0_ap_0 (from right to left).
rewrite the current goal using proj1_ap_1 (from right to left).
Apply proj1_Sigma to the current goal.
Definition. We define pair_p to be λu : setpair (u 0) (u 1) = u of type setprop.
Theorem. (pair_p_I) The following is provable:
∀x y, pair_p (pair x y)
Proof:
Let x and y be given.
We will prove pair (pair x y 0) (pair x y 1) = pair x y.
rewrite the current goal using pair_ap_0 (from left to right).
rewrite the current goal using pair_ap_1 (from left to right).
Use reflexivity.
Theorem. (Subq_2_UPair01) The following is provable:
Proof:
Let x be given.
Assume H1: x 2.
Apply ordsuccE 1 x H1 to the current goal.
Assume H2: x 1.
We prove the intermediate claim L1: x = 0.
An exact proof term for the current goal is (SingE 0 x (Subq_1_Sing0 x H2)).
We will prove x {0,1}.
rewrite the current goal using L1 (from left to right).
We will prove 0 {0,1}.
An exact proof term for the current goal is (UPairI1 0 1).
Assume H2: x = 1.
We will prove x {0,1}.
rewrite the current goal using H2 (from left to right).
We will prove 1 {0,1}.
An exact proof term for the current goal is (UPairI2 0 1).
Theorem. (tuple_pair) The following is provable:
∀x y : set, pair x y = (x,y)
Proof:
Let x and y be given.
Apply set_ext to the current goal.
Let z be given.
Assume Hz: z pair x y.
Apply (pairE x y z Hz) to the current goal.
Assume H1: ux, z = pair 0 u.
Apply (exandE_i (λu ⇒ u x) (λu ⇒ z = pair 0 u) H1) to the current goal.
Let u be given.
Assume Hu: u x.
Assume H2: z = pair 0 u.
We will prove z (x,y).
We will prove z λi2 if i = 0 then x else y.
rewrite the current goal using H2 (from left to right).
We will prove pair 0 u λi2 if i = 0 then x else y.
Apply (lamI 2 (λi ⇒ if i = 0 then x else y) 0 In_0_2 u) to the current goal.
We will prove u if 0 = 0 then x else y.
rewrite the current goal using (If_i_1 (0 = 0) x y (λq H ⇒ H)) (from left to right).
We will prove u x.
An exact proof term for the current goal is Hu.
Assume H1: uy, z = pair 1 u.
Apply (exandE_i (λu ⇒ u y) (λu ⇒ z = pair 1 u) H1) to the current goal.
Let u be given.
Assume Hu: u y.
Assume H2: z = pair 1 u.
We will prove z (x,y).
We will prove z λi2 if i = 0 then x else y.
rewrite the current goal using H2 (from left to right).
We will prove pair 1 u λi2 if i = 0 then x else y.
Apply (lamI 2 (λi ⇒ if i = 0 then x else y) 1 In_1_2 u) to the current goal.
We will prove u if 1 = 0 then x else y.
rewrite the current goal using (If_i_0 (1 = 0) x y neq_1_0) (from left to right).
We will prove u y.
An exact proof term for the current goal is Hu.
Let z be given.
Assume Hz: z (x,y).
We will prove z pair x y.
We prove the intermediate claim L1: i2, w(if i = 0 then x else y), z = pair i w.
An exact proof term for the current goal is (lamE 2 (λi ⇒ if i = 0 then x else y) z Hz).
Apply (exandE_i (λi ⇒ i 2) (λi ⇒ w(if i = 0 then x else y), z = pair i w) L1) to the current goal.
Let i be given.
Assume Hi: i 2.
Assume H1: w(if i = 0 then x else y), z = pair i w.
Apply (exandE_i (λw ⇒ w if i = 0 then x else y) (λw ⇒ z = pair i w) H1) to the current goal.
Let w be given.
Assume Hw: w if i = 0 then x else y.
Assume H2: z = pair i w.
We will prove z pair x y.
rewrite the current goal using H2 (from left to right).
We will prove pair i w pair x y.
We prove the intermediate claim L2: i {0,1}.
An exact proof term for the current goal is (Subq_2_UPair01 i Hi).
Apply (UPairE i 0 1 L2) to the current goal.
Assume Hi0: i = 0.
rewrite the current goal using Hi0 (from left to right).
We will prove pair 0 w pair x y.
Apply pairI0 to the current goal.
We will prove w x.
We prove the intermediate claim L3: (if i = 0 then x else y) = x.
An exact proof term for the current goal is (If_i_1 (i = 0) x y Hi0).
rewrite the current goal using L3 (from right to left).
An exact proof term for the current goal is Hw.
Assume Hi1: i = 1.
rewrite the current goal using Hi1 (from left to right).
We will prove pair 1 w pair x y.
Apply pairI1 to the current goal.
We will prove w y.
We prove the intermediate claim L3: (if i = 0 then x else y) = y.
rewrite the current goal using Hi1 (from left to right).
An exact proof term for the current goal is (If_i_0 (1 = 0) x y neq_1_0).
rewrite the current goal using L3 (from right to left).
An exact proof term for the current goal is Hw.
Definition. We define Pi to be λX Y ⇒ {f𝒫 (xX, (Y x))|xX, f x Y x} of type set(setset)set.
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using Pi.
Theorem. (PiI) The following is provable:
∀X : set, ∀Y : setset, ∀f : set, (uf, pair_p u u 0 X)(xX, f x Y x)f xX, Y x
Proof:
Let X, Y and f be given.
Assume H1: uf, pair_p u u 0 X.
Assume H2: xX, f x Y x.
We will prove f {f𝒫 (xX, (Y x))|xX, f x Y x}.
Apply SepI to the current goal.
We will prove f 𝒫 (xX, (Y x)).
Apply PowerI to the current goal.
We will prove f xX, (Y x).
Let z be given.
Assume Hz: z f.
We will prove z xX, (Y x).
Apply (H1 z Hz) to the current goal.
Assume H3: pair (z 0) (z 1) = z.
Assume H4: z 0 X.
rewrite the current goal using H3 (from right to left).
We will prove pair (z 0) (z 1) xX, (Y x).
Apply pair_Sigma to the current goal.
We will prove z 0 X.
An exact proof term for the current goal is H4.
We will prove z 1 (Y (z 0)).
Apply (UnionI (Y (z 0)) (z 1) (f (z 0))) to the current goal.
We will prove z 1 f (z 0).
Apply apI to the current goal.
We will prove pair (z 0) (z 1) f.
rewrite the current goal using H3 (from left to right).
An exact proof term for the current goal is Hz.
We will prove f (z 0) Y (z 0).
An exact proof term for the current goal is (H2 (z 0) H4).
We will prove xX, f x Y x.
An exact proof term for the current goal is H2.
Theorem. (lam_Pi) The following is provable:
∀X : set, ∀Y : setset, ∀F : setset, (xX, F x Y x)(λxX F x) (xX, Y x)
Proof:
Let X, Y and F be given.
Assume H1: xX, F x Y x.
We will prove (λxX F x) (xX, Y x).
Apply PiI to the current goal.
We will prove u(λxX F x), pair_p u u 0 X.
Let u be given.
Assume Hu: u λxX F x.
We prove the intermediate claim L1: xX, yF x, u = pair x y.
An exact proof term for the current goal is (lamE X F u Hu).
Apply (exandE_i (λx ⇒ x X) (λx ⇒ yF x, u = pair x y) L1) to the current goal.
Let x be given.
Assume Hx: x X.
Assume H2: yF x, u = pair x y.
Apply (exandE_i (λy ⇒ y F x) (λy ⇒ u = pair x y) H2) to the current goal.
Let y be given.
Assume Hy: y F x.
Assume H3: u = pair x y.
Apply andI to the current goal.
We will prove pair_p u.
rewrite the current goal using H3 (from left to right).
Apply pair_p_I to the current goal.
We will prove u 0 X.
rewrite the current goal using H3 (from left to right).
We will prove pair x y 0 X.
rewrite the current goal using pair_ap_0 (from left to right).
We will prove x X.
An exact proof term for the current goal is Hx.
We will prove xX, (λxX F x) x Y x.
Let x be given.
Assume Hx: x X.
rewrite the current goal using (beta X F x Hx) (from left to right).
We will prove F x Y x.
An exact proof term for the current goal is (H1 x Hx).
Theorem. (ap_Pi) The following is provable:
∀X : set, ∀Y : setset, ∀f : set, ∀x : set, f (xX, Y x)x Xf x Y x
Proof:
Let X, Y, f and x be given.
Assume Hf: f xX, Y x.
An exact proof term for the current goal is (SepE2 (𝒫 (xX, (Y x))) (λf ⇒ xX, f x Y x) f Hf x).
Definition. We define setexp to be λX Y : setyY, X of type setsetset.
Notation. We use :^: as an infix operator with priority 430 and which associates to the left corresponding to applying term setexp.
Theorem. (pair_tuple_fun) The following is provable:
pair = (λx y ⇒ (x,y))
Proof:
Apply func_ext set (setset) to the current goal.
Let x be given.
Apply func_ext set set to the current goal.
Let y be given.
We will prove pair x y = (x,y).
Apply tuple_pair to the current goal.
Beginning of Section Tuples
Variable x0 x1 : set
Theorem. (tuple_2_0_eq) The following is provable:
(x0,x1) 0 = x0
Proof:
rewrite the current goal using beta 2 (λi ⇒ if i = 0 then x0 else x1) 0 In_0_2 (from left to right).
Apply If_i_1 to the current goal.
Use reflexivity.
Theorem. (tuple_2_1_eq) The following is provable:
(x0,x1) 1 = x1
Proof:
rewrite the current goal using beta 2 (λi ⇒ if i = 0 then x0 else x1) 1 In_1_2 (from left to right).
Apply If_i_0 to the current goal.
Apply neq_1_0 to the current goal.
End of Section Tuples
Theorem. (ReplEq_setprod_ext) The following is provable:
∀X Y, ∀F G : setsetset, (xX, yY, F x y = G x y){F (w 0) (w 1)|wX Y} = {G (w 0) (w 1)|wX Y}
Proof:
Let X, Y, F and G be given.
Assume H1: xX, yY, F x y = G x y.
Apply ReplEq_ext (X Y) (λw ⇒ F (w 0) (w 1)) (λw ⇒ G (w 0) (w 1)) to the current goal.
We will prove wX Y, F (w 0) (w 1) = G (w 0) (w 1).
Let w be given.
Assume Hw: w X Y.
Apply H1 to the current goal.
We will prove w 0 X.
An exact proof term for the current goal is ap0_Sigma X (λ_ ⇒ Y) w Hw.
We will prove w 1 Y.
An exact proof term for the current goal is ap1_Sigma X (λ_ ⇒ Y) w Hw.
Theorem. (lamI2) The following is provable:
∀X, ∀F : setset, xX, yF x, (x,y) λxX F x
Proof:
We will prove (∀X, ∀F : setset, xX, yF x, ((λx y : set(x,y)) x y) λxX F x).
rewrite the current goal using pair_tuple_fun (from right to left).
An exact proof term for the current goal is lamI.
Theorem. (tuple_2_Sigma) The following is provable:
∀X : set, ∀Y : setset, xX, yY x, (x,y) xX, Y x
Proof:
An exact proof term for the current goal is lamI2.
Theorem. (tuple_2_setprod) The following is provable:
∀X : set, ∀Y : set, xX, yY, (x,y) X Y
Proof:
An exact proof term for the current goal is λX Y x Hx y Hy ⇒ tuple_2_Sigma X (λ_ ⇒ Y) x Hx y Hy.
End of Section pair_setsum
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using Sigma.
Notation. We use as an infix operator with priority 440 and which associates to the left corresponding to applying term setprod.
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using Pi.
Notation. We use :^: as an infix operator with priority 430 and which associates to the left corresponding to applying term setexp.
Definition. We define DescrR_i_io_1 to be λR ⇒ Eps_i (λx ⇒ (y : setprop, R x y) (∀y z : setprop, R x yR x zy = z)) of type (set(setprop)prop)set.
Definition. We define DescrR_i_io_2 to be λR ⇒ Descr_Vo1 (λy ⇒ R (DescrR_i_io_1 R) y) of type (set(setprop)prop)setprop.
Theorem. (DescrR_i_io_12) The following is provable:
∀R : set(setprop)prop, (x, (y : setprop, R x y) (∀y z : setprop, R x yR x zy = z))R (DescrR_i_io_1 R) (DescrR_i_io_2 R)
Proof:
Let R be given.
Assume H1: x, (y : setprop, R x y) (∀y z : setprop, R x yR x zy = z).
We prove the intermediate claim L1: (y : setprop, R (DescrR_i_io_1 R) y) (∀y z : setprop, R (DescrR_i_io_1 R) yR (DescrR_i_io_1 R) zy = z).
An exact proof term for the current goal is (Eps_i_ex (λx ⇒ (y : setprop, R x y) (∀y z : setprop, R x yR x zy = z)) H1).
Apply L1 to the current goal.
Assume H2 H3.
An exact proof term for the current goal is Descr_Vo1_prop (λy ⇒ R (DescrR_i_io_1 R) y) H2 H3.
Definition. We define PNoEq_ to be λα p q ⇒ βα, p β q β of type set(setprop)(setprop)prop.
Theorem. (PNoEq_ref_) The following is provable:
∀α, ∀p : setprop, PNoEq_ α p p
Proof:
Let α, p and β be given.
Assume H2.
Apply iff_refl to the current goal.
Theorem. (PNoEq_sym_) The following is provable:
∀α, ∀p q : setprop, PNoEq_ α p qPNoEq_ α q p
Proof:
Let α, p and q be given.
Assume H1.
Let β be given.
Assume H2.
Apply iff_sym to the current goal.
An exact proof term for the current goal is H1 β H2.
Theorem. (PNoEq_tra_) The following is provable:
∀α, ∀p q r : setprop, PNoEq_ α p qPNoEq_ α q rPNoEq_ α p r
Proof:
Let α, p, q and r be given.
Assume H1 H2.
Let β be given.
Assume H3.
Apply iff_trans (p β) (q β) to the current goal.
An exact proof term for the current goal is H1 β H3.
An exact proof term for the current goal is H2 β H3.
Theorem. (PNoEq_antimon_) The following is provable:
∀p q : setprop, ∀α, ordinal αβα, PNoEq_ α p qPNoEq_ β p q
Proof:
Let p, q and α be given.
Assume Ha.
Let β be given.
Assume Hb H1.
Let γ be given.
Assume H2: γ β.
We will prove p γ q γ.
Apply H1 to the current goal.
We will prove γ α.
Apply Ha to the current goal.
Assume Ha1 _.
An exact proof term for the current goal is Ha1 β Hb γ H2.
Definition. We define PNoLt_ to be λα p q ⇒ βα, PNoEq_ β p q ¬ p β q β of type set(setprop)(setprop)prop.
Theorem. (PNoLt_E_) The following is provable:
∀α, ∀p q : setprop, PNoLt_ α p q∀R : prop, (∀β, β αPNoEq_ β p q¬ p βq βR)R
Proof:
Let α, p and q be given.
Assume H1.
Let R be given.
Assume H2.
Apply H1 to the current goal.
Let β be given.
Assume H3.
Apply H3 to the current goal.
Assume H4: β α.
Assume H5.
Apply H5 to the current goal.
Assume H5.
Apply H5 to the current goal.
Assume H6 H7 H8.
An exact proof term for the current goal is H2 β H4 H6 H7 H8.
Theorem. (PNoLt_irref_) The following is provable:
∀α, ∀p : setprop, ¬ PNoLt_ α p p
Proof:
Let α and p be given.
Assume H1.
Apply H1 to the current goal.
Let β be given.
Assume H2.
Apply H2 to the current goal.
Assume _ H3.
Apply H3 to the current goal.
Assume H3.
Apply H3 to the current goal.
Assume _ H4 H5.
An exact proof term for the current goal is H4 H5.
Theorem. (PNoLt_mon_) The following is provable:
∀p q : setprop, ∀α, ordinal αβα, PNoLt_ β p qPNoLt_ α p q
Proof:
Let p, q and α be given.
Assume Ha.
Let β be given.
Assume Hb H1.
Apply H1 to the current goal.
Let γ be given.
Assume H2.
Apply H2 to the current goal.
Assume H2: γ β.
Assume H3.
We will prove βα, PNoEq_ β p q ¬ p β q β.
We use γ to witness the existential quantifier.
Apply andI to the current goal.
We will prove γ α.
Apply Ha to the current goal.
Assume Ha1 _.
An exact proof term for the current goal is Ha1 β Hb γ H2.
An exact proof term for the current goal is H3.
Theorem. (PNoLt_trichotomy_or_) The following is provable:
∀p q : setprop, ∀α, ordinal αPNoLt_ α p q PNoEq_ α p q PNoLt_ α q p
Proof:
Let p and q be given.
Apply ordinal_ind to the current goal.
Let α be given.
Assume Ha.
Assume IH: βα, PNoLt_ β p q PNoEq_ β p q PNoLt_ β q p.
Apply xm (PNoEq_ α p q) to the current goal.
Assume H1: PNoEq_ α p q.
Apply orIL to the current goal.
Apply orIR to the current goal.
An exact proof term for the current goal is H1.
Assume H1: ¬ PNoEq_ α p q.
We prove the intermediate claim L1: β, ¬ (β α(p β q β)).
An exact proof term for the current goal is not_all_ex_demorgan_i (λβ ⇒ β α(p β q β)) H1.
Apply L1 to the current goal.
Let β be given.
Assume H2: ¬ (β α(p β q β)).
We prove the intermediate claim L2: β α ¬ (p β q β).
Apply xm (β α) to the current goal.
Assume H3: β α.
Apply xm (p β q β) to the current goal.
Assume H4: p β q β.
We will prove False.
Apply H2 to the current goal.
Assume _.
An exact proof term for the current goal is H4.
Assume H4: ¬ (p β q β).
Apply andI to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is H4.
Assume H3: β α.
We will prove False.
Apply H2 to the current goal.
Assume H4.
We will prove False.
An exact proof term for the current goal is H3 H4.
Apply L2 to the current goal.
Assume H3: β α.
Assume H4: ¬ (p β q β).
Apply IH β H3 to the current goal.
Assume H5.
Apply H5 to the current goal.
Assume H5: PNoLt_ β p q.
Apply orIL to the current goal.
Apply orIL to the current goal.
An exact proof term for the current goal is PNoLt_mon_ p q α Ha β H3 H5.
Assume H5: PNoEq_ β p q.
Apply xm (p β) to the current goal.
Assume H6: p β.
Apply xm (q β) to the current goal.
Assume H7: q β.
We will prove False.
Apply H4 to the current goal.
Apply iffI to the current goal.
Assume _.
An exact proof term for the current goal is H7.
Assume _.
An exact proof term for the current goal is H6.
Assume H7: ¬ q β.
Apply orIR to the current goal.
We will prove βα, PNoEq_ β q p ¬ q β p β.
We use β to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H3.
Apply and3I to the current goal.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is H7.
An exact proof term for the current goal is H6.
Assume H6: ¬ p β.
Apply xm (q β) to the current goal.
Assume H7: q β.
Apply orIL to the current goal.
Apply orIL to the current goal.
We will prove βα, PNoEq_ β p q ¬ p β q β.
We use β to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H3.
Apply and3I to the current goal.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is H6.
An exact proof term for the current goal is H7.
Assume H7: ¬ q β.
We will prove False.
Apply H4 to the current goal.
Apply iffI to the current goal.
Assume H8.
We will prove False.
An exact proof term for the current goal is H6 H8.
Assume H8.
We will prove False.
An exact proof term for the current goal is H7 H8.
Assume H5: PNoLt_ β q p.
Apply orIR to the current goal.
An exact proof term for the current goal is PNoLt_mon_ q p α Ha β H3 H5.
Definition. We define PNoLt to be λα p beta q ⇒ PNoLt_ (α β) p q α β PNoEq_ α p q q α β α PNoEq_ β p q ¬ p β of type set(setprop)set(setprop)prop.
Theorem. (PNoLtI1) The following is provable:
∀α beta, ∀p q : setprop, PNoLt_ (α β) p qPNoLt α p β q
Proof:
Let α, β, p and q be given.
Assume H1.
We will prove PNoLt_ (α β) p q α β PNoEq_ α p q q α β α PNoEq_ β p q ¬ p β.
Apply or3I1 to the current goal.
An exact proof term for the current goal is H1.
Theorem. (PNoLtI2) The following is provable:
∀α beta, ∀p q : setprop, α βPNoEq_ α p qq αPNoLt α p β q
Proof:
Let α, β, p and q be given.
Assume H1 H2 H3.
We will prove PNoLt_ (α β) p q α β PNoEq_ α p q q α β α PNoEq_ β p q ¬ p β.
Apply or3I2 to the current goal.
Apply and3I to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
An exact proof term for the current goal is H3.
Theorem. (PNoLtI3) The following is provable:
∀α beta, ∀p q : setprop, β αPNoEq_ β p q¬ p βPNoLt α p β q
Proof:
Let α, β, p and q be given.
Assume H1 H2 H3.
We will prove PNoLt_ (α β) p q α β PNoEq_ α p q q α β α PNoEq_ β p q ¬ p β.
Apply or3I3 to the current goal.
Apply and3I to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
An exact proof term for the current goal is H3.
Theorem. (PNoLtE) The following is provable:
∀α beta, ∀p q : setprop, PNoLt α p β q∀R : prop, (PNoLt_ (α β) p qR)(α βPNoEq_ α p qq αR)(β αPNoEq_ β p q¬ p βR)R
Proof:
Let α, β, p and q be given.
Assume H1.
Let R be given.
Assume HC1 HC2 HC3.
Apply H1 to the current goal.
Assume H1.
Apply H1 to the current goal.
An exact proof term for the current goal is HC1.
Assume H1.
Apply H1 to the current goal.
Assume H1.
Apply H1 to the current goal.
An exact proof term for the current goal is HC2.
Assume H1.
Apply H1 to the current goal.
Assume H1.
Apply H1 to the current goal.
An exact proof term for the current goal is HC3.
Theorem. (PNoLt_irref) The following is provable:
∀α, ∀p : setprop, ¬ PNoLt α p α p
Proof:
Let α and p be given.
Assume H1.
Apply PNoLtE α α p p H1 to the current goal.
Assume H1: PNoLt_ (α α) p p.
An exact proof term for the current goal is PNoLt_irref_ (α α) p H1.
Assume H1: α α.
We will prove False.
An exact proof term for the current goal is In_irref α H1.
Assume H1: α α.
We will prove False.
An exact proof term for the current goal is In_irref α H1.
Theorem. (PNoLt_trichotomy_or) The following is provable:
∀α beta, ∀p q : setprop, ordinal αordinal βPNoLt α p β q α = β PNoEq_ α p q PNoLt β q α p
Proof:
Let α, β, p and q be given.
Assume Ha Hb.
Apply Ha to the current goal.
Assume Ha1 _.
Apply Hb to the current goal.
Assume Hb1 _.
We prove the intermediate claim Lab: ordinal (α β).
An exact proof term for the current goal is ordinal_binintersect α β Ha Hb.
Apply PNoLt_trichotomy_or_ p q (α β) Lab to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: PNoLt_ (α β) p q.
Apply or3I1 to the current goal.
Apply PNoLtI1 to the current goal.
An exact proof term for the current goal is H1.
Assume H1: PNoEq_ (α β) p q.
Apply ordinal_trichotomy_or α β Ha Hb to the current goal.
Assume H2.
Apply H2 to the current goal.
Assume H2: α β.
We prove the intermediate claim L1: α β = α.
An exact proof term for the current goal is binintersect_Subq_eq_1 α β (Hb1 α H2).
We prove the intermediate claim L2: PNoEq_ α p q.
rewrite the current goal using L1 (from right to left).
An exact proof term for the current goal is H1.
Apply xm (q α) to the current goal.
Assume H3: q α.
Apply or3I1 to the current goal.
Apply PNoLtI2 to the current goal.
An exact proof term for the current goal is H2.
We will prove PNoEq_ α p q.
An exact proof term for the current goal is L2.
An exact proof term for the current goal is H3.
Assume H3: ¬ q α.
Apply or3I3 to the current goal.
Apply PNoLtI3 to the current goal.
An exact proof term for the current goal is H2.
We will prove PNoEq_ α q p.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is L2.
An exact proof term for the current goal is H3.
Assume H2: α = β.
We prove the intermediate claim L1: α β = α.
rewrite the current goal using H2 (from right to left).
An exact proof term for the current goal is binintersect_Subq_eq_1 α α (Subq_ref α).
We prove the intermediate claim L2: PNoEq_ α p q.
rewrite the current goal using L1 (from right to left).
An exact proof term for the current goal is H1.
Apply or3I2 to the current goal.
Apply andI to the current goal.
An exact proof term for the current goal is H2.
We will prove PNoEq_ α p q.
An exact proof term for the current goal is L2.
Assume H2: β α.
We prove the intermediate claim L1: α β = β.
rewrite the current goal using binintersect_com (from left to right).
An exact proof term for the current goal is binintersect_Subq_eq_1 β α (Ha1 β H2).
We prove the intermediate claim L2: PNoEq_ β p q.
rewrite the current goal using L1 (from right to left).
An exact proof term for the current goal is H1.
Apply xm (p β) to the current goal.
Assume H3: p β.
Apply or3I3 to the current goal.
Apply PNoLtI2 to the current goal.
An exact proof term for the current goal is H2.
We will prove PNoEq_ β q p.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is L2.
An exact proof term for the current goal is H3.
Assume H3: ¬ p β.
Apply or3I1 to the current goal.
Apply PNoLtI3 to the current goal.
An exact proof term for the current goal is H2.
We will prove PNoEq_ β p q.
An exact proof term for the current goal is L2.
An exact proof term for the current goal is H3.
Assume H1: PNoLt_ (α β) q p.
Apply or3I3 to the current goal.
Apply PNoLtI1 to the current goal.
rewrite the current goal using binintersect_com (from left to right).
An exact proof term for the current goal is H1.
Theorem. (PNoLtEq_tra) The following is provable:
∀α beta, ordinal αordinal β∀p q r : setprop, PNoLt α p β qPNoEq_ β q rPNoLt α p β r
Proof:
Let α and β be given.
Assume Ha Hb.
Let p, q and r be given.
Assume Hpq Hqr.
Apply PNoLtE α β p q Hpq to the current goal.
Assume Hpq1: PNoLt_ (α β) p q.
Apply Hpq1 to the current goal.
Let δ be given.
Assume Hpq2.
Apply Hpq2 to the current goal.
Assume Hd: δ α β.
Apply binintersectE α β δ Hd to the current goal.
Assume Hd1 Hd2.
Assume Hpq3.
Apply Hpq3 to the current goal.
Assume Hpq3.
Apply Hpq3 to the current goal.
Assume Hpq3: PNoEq_ δ p q.
Assume Hpq4: ¬ p δ.
Assume Hpq5: q δ.
We will prove PNoLt α p β r.
Apply PNoLtI1 to the current goal.
We will prove δα β, PNoEq_ δ p r ¬ p δ r δ.
We use δ to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hd.
Apply and3I to the current goal.
We will prove PNoEq_ δ p r.
Apply PNoEq_tra_ δ p q r to the current goal.
We will prove PNoEq_ δ p q.
An exact proof term for the current goal is Hpq3.
We will prove PNoEq_ δ q r.
Apply PNoEq_antimon_ q r β Hb δ Hd2 to the current goal.
We will prove PNoEq_ β q r.
An exact proof term for the current goal is Hqr.
We will prove ¬ p δ.
An exact proof term for the current goal is Hpq4.
We will prove r δ.
An exact proof term for the current goal is iffEL (q δ) (r δ) (Hqr δ Hd2) Hpq5.
Assume Hpq1: α β.
Assume Hpq2: PNoEq_ α p q.
Assume Hpq3: q α.
We will prove PNoLt α p β r.
Apply PNoLtI2 to the current goal.
We will prove α β.
An exact proof term for the current goal is Hpq1.
We will prove PNoEq_ α p r.
Apply PNoEq_tra_ α p q r to the current goal.
An exact proof term for the current goal is Hpq2.
We will prove PNoEq_ α q r.
Apply PNoEq_antimon_ q r β Hb α Hpq1 to the current goal.
An exact proof term for the current goal is Hqr.
We will prove r α.
An exact proof term for the current goal is iffEL (q α) (r α) (Hqr α Hpq1) Hpq3.
Assume Hpq1: β α.
Assume Hpq2: PNoEq_ β p q.
Assume Hpq3: ¬ p β.
We will prove PNoLt α p β r.
Apply PNoLtI3 to the current goal.
We will prove β α.
An exact proof term for the current goal is Hpq1.
We will prove PNoEq_ β p r.
Apply PNoEq_tra_ β p q r to the current goal.
An exact proof term for the current goal is Hpq2.
An exact proof term for the current goal is Hqr.
We will prove ¬ p β.
An exact proof term for the current goal is Hpq3.
Theorem. (PNoEqLt_tra) The following is provable:
∀α beta, ordinal αordinal β∀p q r : setprop, PNoEq_ α p qPNoLt α q β rPNoLt α p β r
Proof:
Let α and β be given.
Assume Ha Hb.
Let p, q and r be given.
Assume Hpq Hqr.
Apply PNoLtE α β q r Hqr to the current goal.
Assume Hqr1: PNoLt_ (α β) q r.
Apply Hqr1 to the current goal.
Let δ be given.
Assume Hqr2.
Apply Hqr2 to the current goal.
Assume Hd: δ α β.
Apply binintersectE α β δ Hd to the current goal.
Assume Hd1 Hd2.
Assume Hqr3.
Apply Hqr3 to the current goal.
Assume Hqr3.
Apply Hqr3 to the current goal.
Assume Hqr3: PNoEq_ δ q r.
Assume Hqr4: ¬ q δ.
Assume Hqr5: r δ.
We will prove PNoLt α p β r.
Apply PNoLtI1 to the current goal.
We will prove δα β, PNoEq_ δ p r ¬ p δ r δ.
We use δ to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hd.
Apply and3I to the current goal.
We will prove PNoEq_ δ p r.
Apply PNoEq_tra_ δ p q r to the current goal.
We will prove PNoEq_ δ p q.
Apply PNoEq_antimon_ p q α Ha δ Hd1 to the current goal.
We will prove PNoEq_ α p q.
An exact proof term for the current goal is Hpq.
We will prove PNoEq_ δ q r.
An exact proof term for the current goal is Hqr3.
We will prove ¬ p δ.
Assume H1: p δ.
Apply Hqr4 to the current goal.
We will prove q δ.
An exact proof term for the current goal is iffEL (p δ) (q δ) (Hpq δ Hd1) H1.
We will prove r δ.
An exact proof term for the current goal is Hqr5.
Assume Hqr1: α β.
Assume Hqr2: PNoEq_ α q r.
Assume Hqr3: r α.
We will prove PNoLt α p β r.
Apply PNoLtI2 to the current goal.
We will prove α β.
An exact proof term for the current goal is Hqr1.
We will prove PNoEq_ α p r.
Apply PNoEq_tra_ α p q r to the current goal.
An exact proof term for the current goal is Hpq.
An exact proof term for the current goal is Hqr2.
We will prove r α.
An exact proof term for the current goal is Hqr3.
Assume Hqr1: β α.
Assume Hqr2: PNoEq_ β q r.
Assume Hqr3: ¬ q β.
We will prove PNoLt α p β r.
Apply PNoLtI3 to the current goal.
We will prove β α.
An exact proof term for the current goal is Hqr1.
We will prove PNoEq_ β p r.
Apply PNoEq_tra_ β p q r to the current goal.
Apply PNoEq_antimon_ p q α Ha β Hqr1 to the current goal.
An exact proof term for the current goal is Hpq.
An exact proof term for the current goal is Hqr2.
We will prove ¬ p β.
Assume H1: p β.
Apply Hqr3 to the current goal.
An exact proof term for the current goal is iffEL (p β) (q β) (Hpq β Hqr1) H1.
Theorem. (PNoLt_tra) The following is provable:
∀α beta gamma, ordinal αordinal βordinal γ∀p q r : setprop, PNoLt α p β qPNoLt β q γ rPNoLt α p γ r
Proof:
Let α, β and γ be given.
Assume Ha Hb Hc.
Apply Ha to the current goal.
Assume Ha1 _.
Apply Hc to the current goal.
Assume Hc1 _.
Let p, q and r be given.
Assume Hpq Hqr.
Apply PNoLtE α β p q Hpq to the current goal.
Assume Hpq1: PNoLt_ (α β) p q.
Apply Hpq1 to the current goal.
Let δ be given.
Assume Hpq2.
Apply Hpq2 to the current goal.
Assume Hd: δ α β.
Apply binintersectE α β δ Hd to the current goal.
Assume Hd1 Hd2.
Assume Hpq3.
Apply Hpq3 to the current goal.
Assume Hpq3.
Apply Hpq3 to the current goal.
Assume Hpq3: PNoEq_ δ p q.
Assume Hpq4: ¬ p δ.
Assume Hpq5: q δ.
We prove the intermediate claim Ld: ordinal δ.
An exact proof term for the current goal is ordinal_Hered β Hb δ Hd2.
Apply PNoLtE β γ q r Hqr to the current goal.
Assume Hqr1: PNoLt_ (β γ) q r.
Apply Hqr1 to the current goal.
Let eps be given.
Assume Hqr2.
Apply Hqr2 to the current goal.
Assume He: eps β γ.
Apply binintersectE β γ eps He to the current goal.
Assume He1 He2.
Assume Hqr3.
Apply Hqr3 to the current goal.
Assume Hqr3.
Apply Hqr3 to the current goal.
Assume Hqr3: PNoEq_ eps q r.
Assume Hqr4: ¬ q eps.
Assume Hqr5: r eps.
We prove the intermediate claim Le: ordinal eps.
An exact proof term for the current goal is ordinal_Hered β Hb eps He1.
We will prove PNoLt α p γ r.
Apply PNoLtI1 to the current goal.
We will prove δα γ, PNoEq_ δ p r ¬ p δ r δ.
Apply ordinal_trichotomy_or δ eps Ld Le to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: δ eps.
We use δ to witness the existential quantifier.
Apply andI to the current goal.
We will prove δ α γ.
Apply binintersectI to the current goal.
An exact proof term for the current goal is Hd1.
We will prove δ γ.
An exact proof term for the current goal is Hc1 eps He2 δ H1.
Apply and3I to the current goal.
We will prove PNoEq_ δ p r.
Apply PNoEq_tra_ δ p q r to the current goal.
We will prove PNoEq_ δ p q.
An exact proof term for the current goal is Hpq3.
We will prove PNoEq_ δ q r.
Apply PNoEq_antimon_ q r eps Le δ H1 to the current goal.
We will prove PNoEq_ eps q r.
An exact proof term for the current goal is Hqr3.
We will prove ¬ p δ.
An exact proof term for the current goal is Hpq4.
We will prove r δ.
An exact proof term for the current goal is iffEL (q δ) (r δ) (Hqr3 δ H1) Hpq5.
Assume H1: δ = eps.
We use δ to witness the existential quantifier.
Apply andI to the current goal.
We will prove δ α γ.
Apply binintersectI to the current goal.
An exact proof term for the current goal is Hd1.
We will prove δ γ.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is He2.
Apply and3I to the current goal.
We will prove PNoEq_ δ p r.
Apply PNoEq_tra_ δ p q r to the current goal.
We will prove PNoEq_ δ p q.
An exact proof term for the current goal is Hpq3.
We will prove PNoEq_ δ q r.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is Hqr3.
We will prove ¬ p δ.
An exact proof term for the current goal is Hpq4.
We will prove r δ.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is Hqr5.
Assume H1: eps δ.
We use eps to witness the existential quantifier.
Apply andI to the current goal.
We will prove eps α γ.
Apply binintersectI to the current goal.
We will prove eps α.
An exact proof term for the current goal is Ha1 δ Hd1 eps H1.
An exact proof term for the current goal is He2.
Apply and3I to the current goal.
We will prove PNoEq_ eps p r.
Apply PNoEq_tra_ eps p q r to the current goal.
We will prove PNoEq_ eps p q.
Apply PNoEq_antimon_ p q δ Ld eps H1 to the current goal.
We will prove PNoEq_ δ p q.
An exact proof term for the current goal is Hpq3.
We will prove PNoEq_ eps q r.
An exact proof term for the current goal is Hqr3.
We will prove ¬ p eps.
Assume H2: p eps.
Apply Hqr4 to the current goal.
An exact proof term for the current goal is iffEL (p eps) (q eps) (Hpq3 eps H1) H2.
We will prove r eps.
An exact proof term for the current goal is Hqr5.
Assume Hqr1: β γ.
Assume Hqr2: PNoEq_ β q r.
Assume Hqr3: r β.
Apply PNoLtI1 to the current goal.
We will prove δα γ, PNoEq_ δ p r ¬ p δ r δ.
We use δ to witness the existential quantifier.
Apply andI to the current goal.
We will prove δ α γ.
Apply binintersectI to the current goal.
An exact proof term for the current goal is Hd1.
We will prove δ γ.
An exact proof term for the current goal is Hc1 β Hqr1 δ Hd2.
Apply and3I to the current goal.
We will prove PNoEq_ δ p r.
Apply PNoEq_tra_ δ p q r to the current goal.
We will prove PNoEq_ δ p q.
An exact proof term for the current goal is Hpq3.
We will prove PNoEq_ δ q r.
Apply PNoEq_antimon_ q r β Hb δ Hd2 to the current goal.
We will prove PNoEq_ β q r.
An exact proof term for the current goal is Hqr2.
We will prove ¬ p δ.
An exact proof term for the current goal is Hpq4.
We will prove r δ.
An exact proof term for the current goal is iffEL (q δ) (r δ) (Hqr2 δ Hd2) Hpq5.
Assume Hqr1: γ β.
Assume Hqr2: PNoEq_ γ q r.
Assume Hqr3: ¬ q γ.
Apply ordinal_trichotomy_or δ γ Ld Hc to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: δ γ.
We will prove PNoLt α p γ r.
Apply PNoLtI1 to the current goal.
We will prove δα γ, PNoEq_ δ p r ¬ p δ r δ.
We use δ to witness the existential quantifier.
Apply andI to the current goal.
We will prove δ α γ.
Apply binintersectI to the current goal.
An exact proof term for the current goal is Hd1.
We will prove δ γ.
An exact proof term for the current goal is H1.
Apply and3I to the current goal.
We will prove PNoEq_ δ p r.
Apply PNoEq_tra_ δ p q r to the current goal.
We will prove PNoEq_ δ p q.
An exact proof term for the current goal is Hpq3.
We will prove PNoEq_ δ q r.
Apply PNoEq_antimon_ q r γ Hc δ H1 to the current goal.
We will prove PNoEq_ γ q r.
An exact proof term for the current goal is Hqr2.
We will prove ¬ p δ.
An exact proof term for the current goal is Hpq4.
We will prove r δ.
An exact proof term for the current goal is iffEL (q δ) (r δ) (Hqr2 δ H1) Hpq5.
Assume H1: δ = γ.
Apply PNoLtI3 to the current goal.
We will prove γ α.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hd1.
We will prove PNoEq_ γ p r.
Apply PNoEq_tra_ γ p q r to the current goal.
We will prove PNoEq_ γ p q.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hpq3.
We will prove PNoEq_ γ q r.
An exact proof term for the current goal is Hqr2.
We will prove ¬ p γ.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hpq4.
Assume H1: γ δ.
Apply PNoLtI3 to the current goal.
We will prove γ α.
An exact proof term for the current goal is Ha1 δ Hd1 γ H1.
We will prove PNoEq_ γ p r.
Apply PNoEq_tra_ γ p q r to the current goal.
We will prove PNoEq_ γ p q.
Apply PNoEq_antimon_ p q δ Ld γ H1 to the current goal.
An exact proof term for the current goal is Hpq3.
We will prove PNoEq_ γ q r.
An exact proof term for the current goal is Hqr2.
We will prove ¬ p γ.
Assume H2: p γ.
Apply Hqr3 to the current goal.
We will prove q γ.
An exact proof term for the current goal is iffEL (p γ) (q γ) (Hpq3 γ H1) H2.
Assume Hpq1: α β.
Assume Hpq2: PNoEq_ α p q.
Assume Hpq3: q α.
Apply PNoLtE β γ q r Hqr to the current goal.
Assume Hqr1: PNoLt_ (β γ) q r.
Apply Hqr1 to the current goal.
Let eps be given.
Assume Hqr2.
Apply Hqr2 to the current goal.
Assume He: eps β γ.
Apply binintersectE β γ eps He to the current goal.
Assume He1 He2.
Assume Hqr3.
Apply Hqr3 to the current goal.
Assume Hqr3.
Apply Hqr3 to the current goal.
Assume Hqr3: PNoEq_ eps q r.
Assume Hqr4: ¬ q eps.
Assume Hqr5: r eps.
We prove the intermediate claim Le: ordinal eps.
An exact proof term for the current goal is ordinal_Hered β Hb eps He1.
Apply ordinal_trichotomy_or α eps Ha Le to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: α eps.
We will prove PNoLt α p γ r.
Apply PNoLtI2 to the current goal.
We will prove α γ.
An exact proof term for the current goal is Hc1 eps He2 α H1.
We will prove PNoEq_ α p r.
Apply PNoEq_tra_ α p q r to the current goal.
We will prove PNoEq_ α p q.
An exact proof term for the current goal is Hpq2.
We will prove PNoEq_ α q r.
Apply PNoEq_antimon_ q r eps Le α H1 to the current goal.
We will prove PNoEq_ eps q r.
An exact proof term for the current goal is Hqr3.
We will prove r α.
An exact proof term for the current goal is iffEL (q α) (r α) (Hqr3 α H1) Hpq3.
Assume H1: α = eps.
We will prove PNoLt α p γ r.
Apply PNoLtI2 to the current goal.
We will prove α γ.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is He2.
We will prove PNoEq_ α p r.
Apply PNoEq_tra_ α p q r to the current goal.
We will prove PNoEq_ α p q.
An exact proof term for the current goal is Hpq2.
We will prove PNoEq_ α q r.
rewrite the current goal using H1 (from left to right).
We will prove PNoEq_ eps q r.
An exact proof term for the current goal is Hqr3.
We will prove r α.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is Hqr5.
Assume H1: eps α.
We will prove PNoLt α p γ r.
Apply PNoLtI1 to the current goal.
We will prove δα γ, PNoEq_ δ p r ¬ p δ r δ.
We use eps to witness the existential quantifier.
Apply andI to the current goal.
We will prove eps α γ.
Apply binintersectI to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is He2.
Apply and3I to the current goal.
We will prove PNoEq_ eps p r.
Apply PNoEq_tra_ eps p q r to the current goal.
We will prove PNoEq_ eps p q.
Apply PNoEq_antimon_ p q α Ha eps H1 to the current goal.
We will prove PNoEq_ α p q.
An exact proof term for the current goal is Hpq2.
We will prove PNoEq_ eps q r.
An exact proof term for the current goal is Hqr3.
We will prove ¬ p eps.
Assume H2: p eps.
Apply Hqr4 to the current goal.
We will prove q eps.
An exact proof term for the current goal is iffEL (p eps) (q eps) (Hpq2 eps H1) H2.
We will prove r eps.
An exact proof term for the current goal is Hqr5.
Assume Hqr1: β γ.
Assume Hqr2: PNoEq_ β q r.
Assume Hqr3: r β.
Apply PNoLtI2 to the current goal.
We will prove α γ.
An exact proof term for the current goal is Hc1 β Hqr1 α Hpq1.
We will prove PNoEq_ α p r.
Apply PNoEq_tra_ α p q r to the current goal.
An exact proof term for the current goal is Hpq2.
Apply PNoEq_antimon_ q r β Hb α Hpq1 to the current goal.
An exact proof term for the current goal is Hqr2.
We will prove r α.
An exact proof term for the current goal is iffEL (q α) (r α) (Hqr2 α Hpq1) Hpq3.
Assume Hqr1: γ β.
Assume Hqr2: PNoEq_ γ q r.
Assume Hqr3: ¬ q γ.
We will prove PNoLt α p γ r.
Apply ordinal_trichotomy_or α γ Ha Hc to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: α γ.
Apply PNoLtI2 to the current goal.
We will prove α γ.
An exact proof term for the current goal is H1.
We will prove PNoEq_ α p r.
Apply PNoEq_tra_ α p q r to the current goal.
An exact proof term for the current goal is Hpq2.
Apply PNoEq_antimon_ q r γ Hc α H1 to the current goal.
An exact proof term for the current goal is Hqr2.
We will prove r α.
An exact proof term for the current goal is iffEL (q α) (r α) (Hqr2 α H1) Hpq3.
Assume H1: α = γ.
We will prove False.
Apply Hqr3 to the current goal.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hpq3.
Assume H1: γ α.
Apply PNoLtI3 to the current goal.
We will prove γ α.
An exact proof term for the current goal is H1.
We will prove PNoEq_ γ p r.
Apply PNoEq_tra_ γ p q r to the current goal.
Apply PNoEq_antimon_ p q α Ha γ H1 to the current goal.
An exact proof term for the current goal is Hpq2.
An exact proof term for the current goal is Hqr2.
We will prove ¬ p γ.
Assume H2: p γ.
Apply Hqr3 to the current goal.
We will prove q γ.
An exact proof term for the current goal is iffEL (p γ) (q γ) (Hpq2 γ H1) H2.
Assume Hpq1: β α.
Assume Hpq2: PNoEq_ β p q.
Assume Hpq3: ¬ p β.
Apply PNoLtE β γ q r Hqr to the current goal.
Assume Hqr1: PNoLt_ (β γ) q r.
Apply Hqr1 to the current goal.
Let eps be given.
Assume Hqr2.
Apply Hqr2 to the current goal.
Assume He: eps β γ.
Apply binintersectE β γ eps He to the current goal.
Assume He1 He2.
Assume Hqr3.
Apply Hqr3 to the current goal.
Assume Hqr3.
Apply Hqr3 to the current goal.
Assume Hqr3: PNoEq_ eps q r.
Assume Hqr4: ¬ q eps.
Assume Hqr5: r eps.
We will prove PNoLt α p γ r.
Apply PNoLtI1 to the current goal.
We will prove δα γ, PNoEq_ δ p r ¬ p δ r δ.
We use eps to witness the existential quantifier.
Apply andI to the current goal.
We will prove eps α γ.
Apply binintersectI to the current goal.
We will prove eps α.
An exact proof term for the current goal is Ha1 β Hpq1 eps He1.
An exact proof term for the current goal is He2.
Apply and3I to the current goal.
We will prove PNoEq_ eps p r.
Apply PNoEq_tra_ eps p q r to the current goal.
We will prove PNoEq_ eps p q.
Apply PNoEq_antimon_ p q β Hb eps He1 to the current goal.
An exact proof term for the current goal is Hpq2.
An exact proof term for the current goal is Hqr3.
We will prove ¬ p eps.
Assume H1: p eps.
Apply Hqr4 to the current goal.
We will prove q eps.
An exact proof term for the current goal is iffEL (p eps) (q eps) (Hpq2 eps He1) H1.
We will prove r eps.
An exact proof term for the current goal is Hqr5.
Assume Hqr1: β γ.
Assume Hqr2: PNoEq_ β q r.
Assume Hqr3: r β.
Apply PNoLtI1 to the current goal.
We will prove δα γ, PNoEq_ δ p r ¬ p δ r δ.
We use β to witness the existential quantifier.
Apply andI to the current goal.
Apply binintersectI to the current goal.
An exact proof term for the current goal is Hpq1.
An exact proof term for the current goal is Hqr1.
Apply and3I to the current goal.
Apply PNoEq_tra_ β p q r to the current goal.
An exact proof term for the current goal is Hpq2.
An exact proof term for the current goal is Hqr2.
We will prove ¬ p β.
An exact proof term for the current goal is Hpq3.
We will prove r β.
An exact proof term for the current goal is Hqr3.
Assume Hqr1: γ β.
Assume Hqr2: PNoEq_ γ q r.
Assume Hqr3: ¬ q γ.
Apply PNoLtI3 to the current goal.
We will prove γ α.
An exact proof term for the current goal is Ha1 β Hpq1 γ Hqr1.
We will prove PNoEq_ γ p r.
Apply PNoEq_tra_ γ p q r to the current goal.
We will prove PNoEq_ γ p q.
Apply PNoEq_antimon_ p q β Hb γ Hqr1 to the current goal.
An exact proof term for the current goal is Hpq2.
An exact proof term for the current goal is Hqr2.
We will prove ¬ p γ.
Assume H1: p γ.
Apply Hqr3 to the current goal.
We will prove q γ.
An exact proof term for the current goal is iffEL (p γ) (q γ) (Hpq2 γ Hqr1) H1.
Definition. We define PNoLe to be λα p beta q ⇒ PNoLt α p β q α = β PNoEq_ α p q of type set(setprop)set(setprop)prop.
Theorem. (PNoLeI1) The following is provable:
∀α beta, ∀p q : setprop, PNoLt α p β qPNoLe α p β q
Proof:
Let α, β, p and q be given.
Assume H1.
We will prove PNoLt α p β q α = β PNoEq_ α p q.
Apply orIL to the current goal.
An exact proof term for the current goal is H1.
Theorem. (PNoLeI2) The following is provable:
∀α, ∀p q : setprop, PNoEq_ α p qPNoLe α p α q
Proof:
Let α, p and q be given.
Assume H1.
We will prove PNoLt α p α q α = α PNoEq_ α p q.
Apply orIR to the current goal.
Apply andI to the current goal.
Use reflexivity.
An exact proof term for the current goal is H1.
Theorem. (PNoLe_ref) The following is provable:
∀α, ∀p : setprop, PNoLe α p α p
Proof:
Let α and p be given.
Apply PNoLeI2 to the current goal.
Apply PNoEq_ref_ to the current goal.
Theorem. (PNoLe_antisym) The following is provable:
∀α beta, ordinal αordinal β∀p q : setprop, PNoLe α p β qPNoLe β q α pα = β PNoEq_ α p q
Proof:
Let α and β be given.
Assume Ha Hb.
Let p and q be given.
Assume H1: PNoLt α p β q α = β PNoEq_ α p q.
Assume H2: PNoLt β q α p β = α PNoEq_ β q p.
Apply H1 to the current goal.
Assume H1: PNoLt α p β q.
We will prove False.
Apply H2 to the current goal.
Assume H2: PNoLt β q α p.
Apply PNoLt_irref α p to the current goal.
Apply PNoLt_tra α β α Ha Hb Ha p q p to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
Assume H2.
Apply H2 to the current goal.
Assume H2a: β = α.
Assume H2b: PNoEq_ β q p.
Apply PNoLtE α β p q H1 to the current goal.
Assume Hpq1: PNoLt_ (α β) p q.
Apply Hpq1 to the current goal.
Let δ be given.
Assume Hpq2.
Apply Hpq2 to the current goal.
Assume Hd: δ α β.
Apply binintersectE α β δ Hd to the current goal.
Assume Hd1 Hd2.
Assume Hpq3.
Apply Hpq3 to the current goal.
Assume Hpq3.
Apply Hpq3 to the current goal.
Assume Hpq3: PNoEq_ δ p q.
Assume Hpq4: ¬ p δ.
Assume Hpq5: q δ.
Apply Hpq4 to the current goal.
An exact proof term for the current goal is iffEL (q δ) (p δ) (H2b δ Hd2) Hpq5.
Assume Hpq1: α β.
Assume Hpq2: PNoEq_ α p q.
Assume Hpq3: q α.
Apply In_irref α to the current goal.
rewrite the current goal using H2a (from right to left) at position 2.
An exact proof term for the current goal is Hpq1.
Assume Hpq1: β α.
Assume Hpq2: PNoEq_ β p q.
Assume Hpq3: ¬ p β.
Apply In_irref α to the current goal.
rewrite the current goal using H2a (from right to left) at position 1.
An exact proof term for the current goal is Hpq1.
Assume H1.
An exact proof term for the current goal is H1.
Theorem. (PNoLtLe_tra) The following is provable:
∀α beta gamma, ordinal αordinal βordinal γ∀p q r : setprop, PNoLt α p β qPNoLe β q γ rPNoLt α p γ r
Proof:
Let α, β and γ be given.
Assume Ha Hb Hc.
Let p, q and r be given.
Assume H1: PNoLt α p β q.
Assume H2: PNoLt β q γ r β = γ PNoEq_ β q r.
Apply H2 to the current goal.
Assume H2: PNoLt β q γ r.
An exact proof term for the current goal is PNoLt_tra α β γ Ha Hb Hc p q r H1 H2.
Assume H2.
Apply H2 to the current goal.
Assume H2a: β = γ.
Assume H2b: PNoEq_ β q r.
We will prove PNoLt α p γ r.
rewrite the current goal using H2a (from right to left).
We will prove PNoLt α p β r.
An exact proof term for the current goal is PNoLtEq_tra α β Ha Hb p q r H1 H2b.
Theorem. (PNoLeLt_tra) The following is provable:
∀α beta gamma, ordinal αordinal βordinal γ∀p q r : setprop, PNoLe α p β qPNoLt β q γ rPNoLt α p γ r
Proof:
Let α, β and γ be given.
Assume Ha Hb Hc.
Let p, q and r be given.
Assume H1: PNoLt α p β q α = β PNoEq_ α p q.
Assume H2: PNoLt β q γ r.
Apply H1 to the current goal.
Assume H1: PNoLt α p β q.
An exact proof term for the current goal is PNoLt_tra α β γ Ha Hb Hc p q r H1 H2.
Assume H1.
Apply H1 to the current goal.
Assume H1a: α = β.
Assume H1b: PNoEq_ α p q.
We will prove PNoLt α p γ r.
rewrite the current goal using H1a (from left to right).
We will prove PNoLt β p γ r.
Apply PNoEqLt_tra β γ Hb Hc p q r to the current goal.
We will prove PNoEq_ β p q.
rewrite the current goal using H1a (from right to left).
An exact proof term for the current goal is H1b.
An exact proof term for the current goal is H2.
Theorem. (PNoEqLe_tra) The following is provable:
∀α beta, ordinal αordinal β∀p q r : setprop, PNoEq_ α p qPNoLe α q β rPNoLe α p β r
Proof:
Let α and β be given.
Assume Ha Hb.
Let p, q and r be given.
Assume Hpq.
Assume Hqr: PNoLt α q β r α = β PNoEq_ α q r.
We will prove PNoLt α p β r α = β PNoEq_ α p r.
Apply Hqr to the current goal.
Assume Hqr1.
Apply orIL to the current goal.
An exact proof term for the current goal is PNoEqLt_tra α β Ha Hb p q r Hpq Hqr1.
Assume Hqr.
Apply Hqr to the current goal.
Assume Hqr1: α = β.
Assume Hqr2: PNoEq_ α q r.
Apply orIR to the current goal.
Apply andI to the current goal.
An exact proof term for the current goal is Hqr1.
An exact proof term for the current goal is PNoEq_tra_ α p q r Hpq Hqr2.
Theorem. (PNoLe_tra) The following is provable:
∀α beta gamma, ordinal αordinal βordinal γ∀p q r : setprop, PNoLe α p β qPNoLe β q γ rPNoLe α p γ r
Proof:
Let α, β and γ be given.
Assume Ha Hb Hc.
Let p, q and r be given.
Assume H1: PNoLt α p β q α = β PNoEq_ α p q.
Assume H2: PNoLe β q γ r.
Apply H1 to the current goal.
Assume H1: PNoLt α p β q.
We will prove PNoLt α p γ r α = γ PNoEq_ α p r.
Apply orIL to the current goal.
An exact proof term for the current goal is PNoLtLe_tra α β γ Ha Hb Hc p q r H1 H2.
Assume H1.
Apply H1 to the current goal.
Assume H1a: α = β.
Assume H1b: PNoEq_ α p q.
We will prove PNoLe α p γ r.
rewrite the current goal using H1a (from left to right).
We will prove PNoLe β p γ r.
We prove the intermediate claim L1: PNoEq_ β p q.
rewrite the current goal using H1a (from right to left).
An exact proof term for the current goal is H1b.
An exact proof term for the current goal is PNoEqLe_tra β γ Hb Hc p q r L1 H2.
Definition. We define PNo_downc to be λL alpha p ⇒ β, ordinal β q : setprop, L β q PNoLe α p β q of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_upc to be λR alpha p ⇒ β, ordinal β q : setprop, R β q PNoLe β q α p of type (set(setprop)prop)set(setprop)prop.
Theorem. (PNoLe_downc) The following is provable:
∀L : set(setprop)prop, ∀α beta, ∀p q : setprop, ordinal αordinal βPNo_downc L α pPNoLe β q α pPNo_downc L β q
Proof:
Let L, α, β, p and q be given.
Assume Ha Hb.
Assume H1: PNo_downc L α p.
Assume H2: PNoLe β q α p.
We will prove PNo_downc L β q.
Apply H1 to the current goal.
Let γ be given.
Assume H3.
Apply H3 to the current goal.
Assume Hc: ordinal γ.
Assume H3.
Apply H3 to the current goal.
Let r be given.
Assume H3.
Apply H3 to the current goal.
Assume H3: L γ r.
Assume H4: PNoLe α p γ r.
We will prove δ, ordinal δ r : setprop, L δ r PNoLe β q δ r.
We use γ to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hc.
We use r to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is PNoLe_tra β α γ Hb Ha Hc q p r H2 H4.
Theorem. (PNo_downc_ref) The following is provable:
∀L : set(setprop)prop, ∀α, ordinal α∀p : setprop, L α pPNo_downc L α p
Proof:
Let L and α be given.
Assume Ha.
Let p be given.
Assume H1: L α p.
We will prove β, ordinal β q : setprop, L β q PNoLe α p β q.
We use α to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Ha.
We use p to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H1.
Apply PNoLe_ref to the current goal.
Theorem. (PNo_upc_ref) The following is provable:
∀R : set(setprop)prop, ∀α, ordinal α∀p : setprop, R α pPNo_upc R α p
Proof:
Let R and α be given.
Assume Ha.
Let p be given.
Assume H1: R α p.
We will prove β, ordinal β q : setprop, R β q PNoLe β q α p.
We use α to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Ha.
We use p to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H1.
Apply PNoLe_ref to the current goal.
Theorem. (PNoLe_upc) The following is provable:
∀R : set(setprop)prop, ∀α beta, ∀p q : setprop, ordinal αordinal βPNo_upc R α pPNoLe α p β qPNo_upc R β q
Proof:
Let R, α, β, p and q be given.
Assume Ha Hb.
Assume H1: PNo_upc R α p.
Assume H2: PNoLe α p β q.
We will prove PNo_upc R β q.
Apply H1 to the current goal.
Let γ be given.
Assume H3.
Apply H3 to the current goal.
Assume Hc: ordinal γ.
Assume H3.
Apply H3 to the current goal.
Let r be given.
Assume H3.
Apply H3 to the current goal.
Assume H3: R γ r.
Assume H4: PNoLe γ r α p.
We will prove δ, ordinal δ r : setprop, R δ r PNoLe δ r β q.
We use γ to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hc.
We use r to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is PNoLe_tra γ α β Hc Ha Hb r p q H4 H2.
Definition. We define PNoLt_pwise to be λL R ⇒ ∀γ, ordinal γ∀p : setprop, L γ p∀δ, ordinal δ∀q : setprop, R δ qPNoLt γ p δ q of type (set(setprop)prop)(set(setprop)prop)prop.
Theorem. (PNoLt_pwise_downc_upc) The following is provable:
∀L R : set(setprop)prop, PNoLt_pwise L RPNoLt_pwise (PNo_downc L) (PNo_upc R)
Proof:
Let L and R be given.
Assume HLR.
We will prove PNoLt_pwise (PNo_downc L) (PNo_upc R).
Let γ be given.
Assume Hc.
Let p be given.
Assume Hp.
Let δ be given.
Assume Hd.
Let q be given.
Assume Hq.
Apply Hp to the current goal.
Let α be given.
Assume H1.
Apply H1 to the current goal.
Assume H2: ordinal α.
Assume H3.
Apply H3 to the current goal.
Let p2 be given.
Assume H3.
Apply H3 to the current goal.
Assume H4: L α p2.
Assume H5: PNoLe γ p α p2.
Apply Hq to the current goal.
Let β be given.
Assume H6.
Apply H6 to the current goal.
Assume H7: ordinal β.
Assume H8.
Apply H8 to the current goal.
Let q2 be given.
Assume H9.
Apply H9 to the current goal.
Assume H10: R β q2.
Assume H11: PNoLe β q2 δ q.
We prove the intermediate claim L1: PNoLt γ p δ q.
Apply PNoLeLt_tra γ α δ Hc H2 Hd p p2 q H5 to the current goal.
We will prove PNoLt α p2 δ q.
Apply PNoLtLe_tra α β δ H2 H7 Hd p2 q2 q (HLR α H2 p2 H4 β H7 q2 H10) to the current goal.
We will prove PNoLe β q2 δ q.
An exact proof term for the current goal is H11.
Apply PNoLt_trichotomy_or δ γ q p Hd Hc to the current goal.
Assume H12.
Apply H12 to the current goal.
Assume H12: PNoLt δ q γ p.
Apply PNoLt_irref γ p to the current goal.
We will prove PNoLt γ p γ p.
Apply PNoLt_tra γ δ γ Hc Hd Hc p q p L1 to the current goal.
An exact proof term for the current goal is H12.
Assume H12: δ = γ PNoEq_ δ q p.
Apply PNoLt_irref δ q to the current goal.
We will prove PNoLt δ q δ q.
Apply PNoLeLt_tra δ γ δ Hd Hc Hd q p q to the current goal.
We will prove PNoLe δ q γ p.
We will prove PNoLt δ q γ p δ = γ PNoEq_ δ q p.
Apply orIR to the current goal.
An exact proof term for the current goal is H12.
We will prove PNoLt γ p δ q.
An exact proof term for the current goal is L1.
Assume H12: PNoLt γ p δ q.
An exact proof term for the current goal is H12.
Definition. We define PNo_rel_strict_upperbd to be λL alpha p ⇒ βα, ∀q : setprop, PNo_downc L β qPNoLt β q α p of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_rel_strict_lowerbd to be λR alpha p ⇒ βα, ∀q : setprop, PNo_upc R β qPNoLt α p β q of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_rel_strict_imv to be λL R alpha p ⇒ PNo_rel_strict_upperbd L α p PNo_rel_strict_lowerbd R α p of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Theorem. (PNoEq_rel_strict_upperbd) The following is provable:
∀L : set(setprop)prop, ∀α, ordinal α∀p q : setprop, PNoEq_ α p qPNo_rel_strict_upperbd L α pPNo_rel_strict_upperbd L α q
Proof:
Let L and α be given.
Assume Ha.
Let p and q be given.
Assume Hpq: PNoEq_ α p q.
Assume H1: PNo_rel_strict_upperbd L α p.
We will prove PNo_rel_strict_upperbd L α q.
Let β be given.
Assume Hb: β α.
Let r be given.
Assume H2: PNo_downc L β r.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered α Ha β Hb.
We will prove PNoLt β r α q.
Apply PNoLtEq_tra β α Lb Ha r p q to the current goal.
We will prove PNoLt β r α p.
An exact proof term for the current goal is H1 β Hb r H2.
We will prove PNoEq_ α p q.
An exact proof term for the current goal is Hpq.
Theorem. (PNo_rel_strict_upperbd_antimon) The following is provable:
∀L : set(setprop)prop, ∀α, ordinal α∀p : setprop, βα, PNo_rel_strict_upperbd L α pPNo_rel_strict_upperbd L β p
Proof:
Let L and α be given.
Assume Ha.
Let p and β be given.
Assume Hb.
Apply Ha to the current goal.
Assume Ha1 _.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered α Ha β Hb.
We prove the intermediate claim Lbt: TransSet β.
Apply Lb to the current goal.
Assume H2 _.
An exact proof term for the current goal is H2.
Assume H1: γα, ∀q : setprop, PNo_downc L γ qPNoLt γ q α p.
We will prove γβ, ∀q : setprop, PNo_downc L γ qPNoLt γ q β p.
Let γ be given.
Assume Hc.
Let q be given.
Assume H4.
We will prove PNoLt γ q β p.
We prove the intermediate claim Lca: γ α.
An exact proof term for the current goal is Ha1 β Hb γ Hc.
We prove the intermediate claim L1: PNoLt γ q α p.
Apply H1 to the current goal.
We will prove γ α.
An exact proof term for the current goal is Lca.
We will prove PNo_downc L γ q.
An exact proof term for the current goal is H4.
Apply PNoLtE γ α q p L1 to the current goal.
Assume H5: PNoLt_ (γ α) q p.
We prove the intermediate claim L2: γ α = γ.
Apply binintersect_Subq_eq_1 to the current goal.
An exact proof term for the current goal is Ha1 γ Lca.
We prove the intermediate claim L3: γ β = γ.
Apply binintersect_Subq_eq_1 to the current goal.
An exact proof term for the current goal is Lbt γ Hc.
Apply PNoLtI1 to the current goal.
rewrite the current goal using L3 (from left to right).
rewrite the current goal using L2 (from right to left).
An exact proof term for the current goal is H5.
Assume H5: γ α.
Assume H6: PNoEq_ γ q p.
Assume H7: p γ.
Apply PNoLtI2 to the current goal.
We will prove γ β.
An exact proof term for the current goal is Hc.
We will prove PNoEq_ γ q p.
An exact proof term for the current goal is H6.
We will prove p γ.
An exact proof term for the current goal is H7.
Assume H5: α γ.
We will prove False.
An exact proof term for the current goal is In_no2cycle α γ H5 Lca.
Theorem. (PNoEq_rel_strict_lowerbd) The following is provable:
∀R : set(setprop)prop, ∀α, ordinal α∀p q : setprop, PNoEq_ α p qPNo_rel_strict_lowerbd R α pPNo_rel_strict_lowerbd R α q
Proof:
Let R and α be given.
Assume Ha.
Let p and q be given.
Assume Hpq: PNoEq_ α p q.
Assume H1: PNo_rel_strict_lowerbd R α p.
We will prove PNo_rel_strict_lowerbd R α q.
Let β be given.
Assume Hb: β α.
Let r be given.
Assume H2: PNo_upc R β r.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered α Ha β Hb.
We will prove PNoLt α q β r.
Apply PNoEqLt_tra α β Ha Lb q p r to the current goal.
We will prove PNoEq_ α q p.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is Hpq.
We will prove PNoLt α p β r.
An exact proof term for the current goal is H1 β Hb r H2.
Theorem. (PNo_rel_strict_lowerbd_antimon) The following is provable:
∀R : set(setprop)prop, ∀α, ordinal α∀p : setprop, βα, PNo_rel_strict_lowerbd R α pPNo_rel_strict_lowerbd R β p
Proof:
Let R and α be given.
Assume Ha.
Let p and β be given.
Assume Hb.
Apply Ha to the current goal.
Assume Ha1 _.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered α Ha β Hb.
We prove the intermediate claim Lbt: TransSet β.
Apply Lb to the current goal.
Assume H2 _.
An exact proof term for the current goal is H2.
Assume H1: γα, ∀q : setprop, PNo_upc R γ qPNoLt α p γ q.
We will prove γβ, ∀q : setprop, PNo_upc R γ qPNoLt β p γ q.
Let γ be given.
Assume Hc.
Let q be given.
Assume H4.
We will prove PNoLt β p γ q.
We prove the intermediate claim Lca: γ α.
An exact proof term for the current goal is Ha1 β Hb γ Hc.
We prove the intermediate claim L1: PNoLt α p γ q.
Apply H1 to the current goal.
We will prove γ α.
An exact proof term for the current goal is Lca.
We will prove PNo_upc R γ q.
An exact proof term for the current goal is H4.
Apply PNoLtE α γ p q L1 to the current goal.
Assume H5: PNoLt_ (α γ) p q.
We prove the intermediate claim L2: α γ = γ.
rewrite the current goal using binintersect_com (from left to right).
Apply binintersect_Subq_eq_1 to the current goal.
An exact proof term for the current goal is Ha1 γ Lca.
We prove the intermediate claim L3: β γ = γ.
rewrite the current goal using binintersect_com (from left to right).
Apply binintersect_Subq_eq_1 to the current goal.
An exact proof term for the current goal is Lbt γ Hc.
Apply PNoLtI1 to the current goal.
rewrite the current goal using L3 (from left to right).
rewrite the current goal using L2 (from right to left).
An exact proof term for the current goal is H5.
Assume H5: α γ.
We will prove False.
An exact proof term for the current goal is In_no2cycle α γ H5 Lca.
Assume H5: γ α.
Assume H6: PNoEq_ γ p q.
Assume H7: ¬ p γ.
Apply PNoLtI3 to the current goal.
We will prove γ β.
An exact proof term for the current goal is Hc.
We will prove PNoEq_ γ p q.
An exact proof term for the current goal is H6.
We will prove ¬ p γ.
An exact proof term for the current goal is H7.
Theorem. (PNoEq_rel_strict_imv) The following is provable:
∀L R : set(setprop)prop, ∀α, ordinal α∀p q : setprop, PNoEq_ α p qPNo_rel_strict_imv L R α pPNo_rel_strict_imv L R α q
Proof:
Let L, R and α be given.
Assume Ha.
Let p and q be given.
Assume Hpq H1.
Apply H1 to the current goal.
Assume H2 H3.
Apply andI to the current goal.
An exact proof term for the current goal is PNoEq_rel_strict_upperbd L α Ha p q Hpq H2.
An exact proof term for the current goal is PNoEq_rel_strict_lowerbd R α Ha p q Hpq H3.
Theorem. (PNo_rel_strict_imv_antimon) The following is provable:
∀L R : set(setprop)prop, ∀α, ordinal α∀p : setprop, βα, PNo_rel_strict_imv L R α pPNo_rel_strict_imv L R β p
Proof:
Let L, R and α be given.
Assume Ha.
Let p and β be given.
Assume Hb H1.
Apply H1 to the current goal.
Assume H2 H3.
Apply andI to the current goal.
An exact proof term for the current goal is PNo_rel_strict_upperbd_antimon L α Ha p β Hb H2.
An exact proof term for the current goal is PNo_rel_strict_lowerbd_antimon R α Ha p β Hb H3.
Definition. We define PNo_rel_strict_uniq_imv to be λL R alpha p ⇒ PNo_rel_strict_imv L R α p ∀q : setprop, PNo_rel_strict_imv L R α qPNoEq_ α p q of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Definition. We define PNo_rel_strict_split_imv to be λL R alpha p ⇒ PNo_rel_strict_imv L R (ordsucc α) (λδ ⇒ p δ δ α) PNo_rel_strict_imv L R (ordsucc α) (λδ ⇒ p δ δ = α) of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Theorem. (PNo_extend0_eq) The following is provable:
∀α, ∀p : setprop, PNoEq_ α p (λδ ⇒ p δ δ α)
Proof:
Let α and p be given.
Set p0 to be the term λδ ⇒ p δ δ α of type setprop.
Let β be given.
Assume Hb: β α.
We will prove p β p0 β.
Apply iffI to the current goal.
Assume H1: p β.
We will prove p β β α.
Apply andI to the current goal.
An exact proof term for the current goal is H1.
We will prove β α.
Assume H2: β = α.
Apply In_irref α to the current goal.
rewrite the current goal using H2 (from right to left) at position 1.
An exact proof term for the current goal is Hb.
Assume H1: p0 β.
Apply H1 to the current goal.
Assume H2 _.
An exact proof term for the current goal is H2.
Theorem. (PNo_extend1_eq) The following is provable:
∀α, ∀p : setprop, PNoEq_ α p (λδ ⇒ p δ δ = α)
Proof:
Let α and p be given.
Set p1 to be the term λδ ⇒ p δ δ = α of type setprop.
Let β be given.
Assume Hb: β α.
We will prove p β p1 β.
Apply iffI to the current goal.
Assume H1: p β.
We will prove p β β = α.
Apply orIL to the current goal.
An exact proof term for the current goal is H1.
Assume H1: p1 β.
Apply H1 to the current goal.
Assume H2: p β.
An exact proof term for the current goal is H2.
Assume H2: β = α.
We will prove False.
Apply In_irref α to the current goal.
rewrite the current goal using H2 (from right to left) at position 1.
An exact proof term for the current goal is Hb.
Theorem. (PNo_rel_imv_ex) The following is provable:
∀L R : set(setprop)prop, PNoLt_pwise L R∀α, ordinal α(p : setprop, PNo_rel_strict_uniq_imv L R α p) (tauα, p : setprop, PNo_rel_strict_split_imv L R tau p)
Proof:
Let L and R be given.
Assume HLR.
We prove the intermediate claim LLR: PNoLt_pwise (PNo_downc L) (PNo_upc R).
An exact proof term for the current goal is PNoLt_pwise_downc_upc L R HLR.
Apply ordinal_ind to the current goal.
Let α be given.
Assume Ha.
Apply Ha to the current goal.
Assume Ha1 _.
Assume IH: γα, (p : setprop, PNo_rel_strict_uniq_imv L R γ p) (tauγ, p : setprop, PNo_rel_strict_split_imv L R tau p).
Apply dneg to the current goal.
Assume HNC: ¬ ((p : setprop, PNo_rel_strict_uniq_imv L R α p) (tauα, p : setprop, PNo_rel_strict_split_imv L R tau p)).
Apply not_or_and_demorgan (p : setprop, PNo_rel_strict_uniq_imv L R α p) (tauα, p : setprop, PNo_rel_strict_split_imv L R tau p) HNC to the current goal.
Assume HNC1: ¬ (p : setprop, PNo_rel_strict_uniq_imv L R α p).
Assume HNC2: ¬ (tauα, p : setprop, PNo_rel_strict_split_imv L R tau p).
We prove the intermediate claim LIH: γα, p : setprop, PNo_rel_strict_uniq_imv L R γ p.
Let γ be given.
Assume Hc: γ α.
Apply IH γ Hc to the current goal.
Assume H1.
An exact proof term for the current goal is H1.
Assume H1: tauγ, p : setprop, PNo_rel_strict_split_imv L R tau p.
Apply H1 to the current goal.
Let tau be given.
Assume H2.
Apply H2 to the current goal.
Assume Ht: tau γ.
Assume H2.
Apply H2 to the current goal.
Let p be given.
Assume H3: PNo_rel_strict_split_imv L R tau p.
Apply HNC2 to the current goal.
We use tau to witness the existential quantifier.
Apply andI to the current goal.
We will prove tau α.
An exact proof term for the current goal is Ha1 γ Hc tau Ht.
We use p to witness the existential quantifier.
We will prove PNo_rel_strict_split_imv L R tau p.
An exact proof term for the current goal is H3.
Apply ordinal_lim_or_succ α Ha to the current goal.
Assume H1: βα, ordsucc β α.
Set pl to be the term λδ ⇒ ∀p : setprop, PNo_rel_strict_imv L R (ordsucc δ) pp δ of type setprop.
We prove the intermediate claim Lpl1: ∀γ, ordinal γγ αPNo_rel_strict_uniq_imv L R γ pl.
Apply ordinal_ind to the current goal.
Let γ be given.
Assume Hc: ordinal γ.
Assume IH2: δγ, δ αPNo_rel_strict_uniq_imv L R δ pl.
Assume Hc1: γ α.
Apply LIH γ Hc1 to the current goal.
Let p be given.
Assume Hp.
Apply Hp to the current goal.
Assume Hp1: PNo_rel_strict_imv L R γ p.
Apply Hp1 to the current goal.
Assume Hp1a Hp1b.
Assume Hp2: ∀q : setprop, PNo_rel_strict_imv L R γ qPNoEq_ γ p q.
We prove the intermediate claim Lplpe: PNoEq_ γ pl p.
Let δ be given.
Assume Hd: δ γ.
Apply ordinal_ordsucc_In_eq γ δ Hc Hd to the current goal.
Assume Hsd: ordsucc δ γ.
We prove the intermediate claim Lsda: ordsucc δ α.
An exact proof term for the current goal is Ha1 γ Hc1 (ordsucc δ) Hsd.
Apply IH2 (ordsucc δ) Hsd Lsda to the current goal.
Assume Hpl1: PNo_rel_strict_imv L R (ordsucc δ) pl.
Assume Hpl2: ∀q : setprop, PNo_rel_strict_imv L R (ordsucc δ) qPNoEq_ (ordsucc δ) pl q.
We will prove pl δ p δ.
Apply Hpl2 p to the current goal.
We will prove PNo_rel_strict_imv L R (ordsucc δ) p.
An exact proof term for the current goal is PNo_rel_strict_imv_antimon L R γ Hc p (ordsucc δ) Hsd Hp1.
We will prove δ ordsucc δ.
Apply ordsuccI2 to the current goal.
Assume Hsd: γ = ordsucc δ.
We will prove pl δ p δ.
Apply iffI to the current goal.
Assume H2: pl δ.
We will prove p δ.
Apply H2 p to the current goal.
We will prove PNo_rel_strict_imv L R (ordsucc δ) p.
rewrite the current goal using Hsd (from right to left).
An exact proof term for the current goal is Hp1.
Assume H2: p δ.
Let q be given.
rewrite the current goal using Hsd (from right to left).
Assume Hq: PNo_rel_strict_imv L R γ q.
We will prove q δ.
An exact proof term for the current goal is iffEL (p δ) (q δ) (Hp2 q Hq δ Hd) H2.
We will prove PNo_rel_strict_uniq_imv L R γ pl.
We will prove PNo_rel_strict_imv L R γ pl ∀q : setprop, PNo_rel_strict_imv L R γ qPNoEq_ γ pl q.
Apply andI to the current goal.
We will prove PNo_rel_strict_imv L R γ pl.
We will prove PNo_rel_strict_upperbd L γ pl PNo_rel_strict_lowerbd R γ pl.
Apply andI to the current goal.
We will prove PNo_rel_strict_upperbd L γ pl.
Let β be given.
Assume Hb: β γ.
Let q be given.
Assume Hq: PNo_downc L β q.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered γ Hc β Hb.
We will prove PNoLt β q γ pl.
Apply PNoLtEq_tra β γ Lb Hc q p pl to the current goal.
We will prove PNoLt β q γ p.
An exact proof term for the current goal is Hp1a β Hb q Hq.
We will prove PNoEq_ γ p pl.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is Lplpe.
We will prove PNo_rel_strict_lowerbd R γ pl.
Let β be given.
Assume Hb: β γ.
Let q be given.
Assume Hq: PNo_upc R β q.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered γ Hc β Hb.
We will prove PNoLt γ pl β q.
Apply PNoEqLt_tra γ β Hc Lb pl p q to the current goal.
We will prove PNoEq_ γ pl p.
An exact proof term for the current goal is Lplpe.
We will prove PNoLt γ p β q.
An exact proof term for the current goal is Hp1b β Hb q Hq.
We will prove ∀q : setprop, PNo_rel_strict_imv L R γ qPNoEq_ γ pl q.
Let q be given.
Assume Hq: PNo_rel_strict_imv L R γ q.
We will prove PNoEq_ γ pl q.
Apply PNoEq_tra_ γ pl p q to the current goal.
We will prove PNoEq_ γ pl p.
An exact proof term for the current goal is Lplpe.
We will prove PNoEq_ γ p q.
An exact proof term for the current goal is Hp2 q Hq.
We prove the intermediate claim Lpl2: γα, PNo_rel_strict_uniq_imv L R γ pl.
Let γ be given.
Assume Hc: γ α.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered α Ha γ Hc.
An exact proof term for the current goal is Lpl1 γ Lc Hc.
Apply HNC1 to the current goal.
We use pl to witness the existential quantifier.
We will prove PNo_rel_strict_uniq_imv L R α pl.
We will prove PNo_rel_strict_imv L R α pl ∀q : setprop, PNo_rel_strict_imv L R α qPNoEq_ α pl q.
Apply andI to the current goal.
We will prove PNo_rel_strict_imv L R α pl.
We will prove PNo_rel_strict_upperbd L α pl PNo_rel_strict_lowerbd R α pl.
Apply andI to the current goal.
We will prove PNo_rel_strict_upperbd L α pl.
Let β be given.
Assume Hb: β α.
Let q be given.
Assume Hq: PNo_downc L β q.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered α Ha β Hb.
We prove the intermediate claim Lsb: ordinal (ordsucc β).
An exact proof term for the current goal is ordinal_ordsucc β Lb.
We will prove PNoLt β q α pl.
Apply PNoLt_trichotomy_or β α q pl Lb Ha to the current goal.
Assume H2.
Apply H2 to the current goal.
Assume H2: PNoLt β q α pl.
An exact proof term for the current goal is H2.
Assume H2.
Apply H2 to the current goal.
Assume H2: β = α.
We will prove False.
Apply In_irref α to the current goal.
rewrite the current goal using H2 (from right to left) at position 1.
An exact proof term for the current goal is Hb.
Assume H2: PNoLt α pl β q.
Apply PNoLtE α β pl q H2 to the current goal.
Assume H3: PNoLt_ (α β) pl q.
Apply H3 to the current goal.
Let γ be given.
Assume H4.
Apply H4 to the current goal.
Assume Hc: γ α β.
Apply binintersectE α β γ Hc to the current goal.
Assume Hc1 Hc2.
Assume H5.
Apply H5 to the current goal.
Assume H5.
Apply H5 to the current goal.
Assume H5: PNoEq_ γ pl q.
Assume H6: ¬ pl γ.
Assume H7: q γ.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered β Lb γ Hc2.
We prove the intermediate claim Lsc: ordinal (ordsucc γ).
An exact proof term for the current goal is ordinal_ordsucc γ Lc.
We will prove False.
Apply H6 to the current goal.
We will prove pl γ.
Let p be given.
Assume Hp: PNo_rel_strict_imv L R (ordsucc γ) p.
We will prove p γ.
Apply Hp to the current goal.
Assume Hp1 Hp2.
We prove the intermediate claim Lqp: PNoLt γ q (ordsucc γ) p.
Apply Hp1 γ (ordsuccI2 γ) q to the current goal.
We will prove PNo_downc L γ q.
Apply PNoLe_downc L β γ q q Lb Lc to the current goal.
We will prove PNo_downc L β q.
An exact proof term for the current goal is Hq.
We will prove PNoLe γ q β q.
Apply PNoLeI1 to the current goal.
We will prove PNoLt γ q β q.
Apply PNoLtI2 to the current goal.
We will prove γ β.
An exact proof term for the current goal is Hc2.
We will prove PNoEq_ γ q q.
Apply PNoEq_ref_ to the current goal.
We will prove q γ.
An exact proof term for the current goal is H7.
Apply PNoLtE γ (ordsucc γ) q p Lqp to the current goal.
Assume H6: PNoLt_ (γ ordsucc γ) q p.
Apply H6 to the current goal.
Let δ be given.
Assume H7.
Apply H7 to the current goal.
Assume Hd: δ γ ordsucc γ.
Apply binintersectE γ (ordsucc γ) δ Hd to the current goal.
Assume Hd1 Hd2.
Assume H7.
Apply H7 to the current goal.
Assume H7.
Apply H7 to the current goal.
Assume H7: PNoEq_ δ q p.
Assume H8: ¬ q δ.
Assume H9: p δ.
We prove the intermediate claim Ld: ordinal δ.
An exact proof term for the current goal is ordinal_Hered γ Lc δ Hd1.
We prove the intermediate claim Lda: δ α.
An exact proof term for the current goal is Ha1 γ Hc1 δ Hd1.
We prove the intermediate claim Lsda: ordsucc δ α.
An exact proof term for the current goal is H1 δ Lda.
We prove the intermediate claim Lpld: pl δ.
Apply Lpl2 (ordsucc δ) Lsda to the current goal.
Assume _.
Assume Hpl3: ∀q : setprop, PNo_rel_strict_imv L R (ordsucc δ) qPNoEq_ (ordsucc δ) pl q.
We prove the intermediate claim Lpld1: PNoEq_ (ordsucc δ) pl p.
Apply Hpl3 p to the current goal.
We will prove PNo_rel_strict_imv L R (ordsucc δ) p.
Apply PNo_rel_strict_imv_antimon L R (ordsucc γ) Lsc p to the current goal.
We will prove ordsucc δ ordsucc γ.
Apply ordinal_ordsucc_In to the current goal.
An exact proof term for the current goal is Lc.
We will prove δ γ.
An exact proof term for the current goal is Hd1.
An exact proof term for the current goal is Hp.
An exact proof term for the current goal is iffER (pl δ) (p δ) (Lpld1 δ (ordsuccI2 δ)) H9.
We prove the intermediate claim Lnpld: ¬ pl δ.
Assume H10: pl δ.
Apply H8 to the current goal.
An exact proof term for the current goal is iffEL (pl δ) (q δ) (H5 δ Hd1) H10.
We will prove False.
An exact proof term for the current goal is Lnpld Lpld.
Assume H6: γ ordsucc γ.
Assume H7: PNoEq_ γ q p.
Assume H8: p γ.
An exact proof term for the current goal is H8.
Assume H6: ordsucc γ γ.
We will prove False.
An exact proof term for the current goal is In_no2cycle γ (ordsucc γ) (ordsuccI2 γ) H6.
Assume H3: α β.
We will prove False.
An exact proof term for the current goal is In_no2cycle β α Hb H3.
Assume H3: β α.
Assume H4: PNoEq_ β pl q.
Assume H5: ¬ pl β.
We will prove False.
Apply H5 to the current goal.
We will prove pl β.
Let p be given.
Assume Hp: PNo_rel_strict_imv L R (ordsucc β) p.
We will prove p β.
Apply Hp to the current goal.
Assume Hp1 Hp2.
We prove the intermediate claim Lqp: PNoLt β q (ordsucc β) p.
An exact proof term for the current goal is Hp1 β (ordsuccI2 β) q Hq.
Apply PNoLtE β (ordsucc β) q p Lqp to the current goal.
Assume H6: PNoLt_ (β ordsucc β) q p.
Apply H6 to the current goal.
Let δ be given.
Assume H7.
Apply H7 to the current goal.
Assume Hd: δ β ordsucc β.
Apply binintersectE β (ordsucc β) δ Hd to the current goal.
Assume Hd1 Hd2.
Assume H7.
Apply H7 to the current goal.
Assume H7.
Apply H7 to the current goal.
Assume H7: PNoEq_ δ q p.
Assume H8: ¬ q δ.
Assume H9: p δ.
We prove the intermediate claim Ld: ordinal δ.
An exact proof term for the current goal is ordinal_Hered β Lb δ Hd1.
We prove the intermediate claim Lda: δ α.
An exact proof term for the current goal is Ha1 β Hb δ Hd1.
We prove the intermediate claim Lsda: ordsucc δ α.
An exact proof term for the current goal is H1 δ Lda.
We prove the intermediate claim Lpld: pl δ.
Apply Lpl2 (ordsucc δ) Lsda to the current goal.
Assume _.
Assume Hpl3: ∀q : setprop, PNo_rel_strict_imv L R (ordsucc δ) qPNoEq_ (ordsucc δ) pl q.
We prove the intermediate claim Lpld1: PNoEq_ (ordsucc δ) pl p.
Apply Hpl3 p to the current goal.
We will prove PNo_rel_strict_imv L R (ordsucc δ) p.
Apply PNo_rel_strict_imv_antimon L R (ordsucc β) Lsb p to the current goal.
We will prove ordsucc δ ordsucc β.
Apply ordinal_ordsucc_In to the current goal.
An exact proof term for the current goal is Lb.
We will prove δ β.
An exact proof term for the current goal is Hd1.
An exact proof term for the current goal is Hp.
An exact proof term for the current goal is iffER (pl δ) (p δ) (Lpld1 δ (ordsuccI2 δ)) H9.
We prove the intermediate claim Lnpld: ¬ pl δ.
Assume H10: pl δ.
Apply H8 to the current goal.
An exact proof term for the current goal is iffEL (pl δ) (q δ) (H4 δ Hd1) H10.
We will prove False.
An exact proof term for the current goal is Lnpld Lpld.
Assume H6: β ordsucc β.
Assume H7: PNoEq_ β q p.
Assume H8: p β.
An exact proof term for the current goal is H8.
Assume H6: ordsucc β β.
We will prove False.
An exact proof term for the current goal is In_no2cycle β (ordsucc β) (ordsuccI2 β) H6.
We will prove PNo_rel_strict_lowerbd R α pl.
Let β be given.
Assume Hb: β α.
Let q be given.
Assume Hq: PNo_upc R β q.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered α Ha β Hb.
We prove the intermediate claim Lsb: ordinal (ordsucc β).
An exact proof term for the current goal is ordinal_ordsucc β Lb.
We prove the intermediate claim Lsba: ordsucc β α.
An exact proof term for the current goal is H1 β Hb.
We will prove PNoLt α pl β q.
Apply PNoLt_trichotomy_or α β pl q Ha Lb to the current goal.
Assume H2.
Apply H2 to the current goal.
Assume H2: PNoLt α pl β q.
An exact proof term for the current goal is H2.
Assume H2.
Apply H2 to the current goal.
Assume H2: α = β.
We will prove False.
Apply In_irref α to the current goal.
rewrite the current goal using H2 (from left to right) at position 1.
An exact proof term for the current goal is Hb.
Assume H2: PNoLt β q α pl.
Apply PNoLtE β α q pl H2 to the current goal.
Assume H3: PNoLt_ (β α) q pl.
Apply H3 to the current goal.
Let γ be given.
Assume H4.
Apply H4 to the current goal.
Assume Hc: γ β α.
Apply binintersectE β α γ Hc to the current goal.
Assume Hc2 Hc1.
Assume H5.
Apply H5 to the current goal.
Assume H5.
Apply H5 to the current goal.
Assume H5: PNoEq_ γ q pl.
Assume H6: ¬ q γ.
Assume H7: pl γ.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered β Lb γ Hc2.
We prove the intermediate claim Lsc: ordinal (ordsucc γ).
An exact proof term for the current goal is ordinal_ordsucc γ Lc.
We prove the intermediate claim Lsca: ordsucc γ α.
An exact proof term for the current goal is H1 γ Hc1.
We will prove False.
Apply Lpl2 (ordsucc γ) Lsca to the current goal.
Assume Hpl2: PNo_rel_strict_imv L R (ordsucc γ) pl.
Assume _.
Apply Hpl2 to the current goal.
Assume _.
Assume Hpl2b: PNo_rel_strict_lowerbd R (ordsucc γ) pl.
We prove the intermediate claim Lplq: PNoLt (ordsucc γ) pl γ q.
Apply Hpl2b γ (ordsuccI2 γ) q to the current goal.
We will prove PNo_upc R γ q.
Apply PNoLe_upc R β γ q q Lb Lc to the current goal.
We will prove PNo_upc R β q.
An exact proof term for the current goal is Hq.
We will prove PNoLe β q γ q.
Apply PNoLeI1 β γ q q to the current goal.
We will prove PNoLt β q γ q.
Apply PNoLtI3 to the current goal.
We will prove γ β.
An exact proof term for the current goal is Hc2.
We will prove PNoEq_ γ q q.
Apply PNoEq_ref_ to the current goal.
We will prove ¬ q γ.
An exact proof term for the current goal is H6.
We prove the intermediate claim Lqpl: PNoLt γ q (ordsucc γ) pl.
Apply PNoLtI2 to the current goal.
We will prove γ ordsucc γ.
Apply ordsuccI2 to the current goal.
We will prove PNoEq_ γ q pl.
An exact proof term for the current goal is H5.
We will prove pl γ.
An exact proof term for the current goal is H7.
We will prove False.
Apply PNoLt_irref γ q to the current goal.
An exact proof term for the current goal is PNoLt_tra γ (ordsucc γ) γ Lc Lsc Lc q pl q Lqpl Lplq.
Assume H3: β α.
Assume H4: PNoEq_ β q pl.
Assume H5: pl β.
Apply Lpl2 (ordsucc β) Lsba to the current goal.
Assume Hpl2: PNo_rel_strict_imv L R (ordsucc β) pl.
Assume _.
Apply Hpl2 to the current goal.
Assume _.
Assume Hpl2b: PNo_rel_strict_lowerbd R (ordsucc β) pl.
We prove the intermediate claim Lplq: PNoLt (ordsucc β) pl β q.
Apply Hpl2b β (ordsuccI2 β) q to the current goal.
We will prove PNo_upc R β q.
An exact proof term for the current goal is Hq.
We prove the intermediate claim Lqpl: PNoLt β q (ordsucc β) pl.
Apply PNoLtI2 to the current goal.
We will prove β ordsucc β.
Apply ordsuccI2 to the current goal.
We will prove PNoEq_ β q pl.
An exact proof term for the current goal is H4.
We will prove pl β.
An exact proof term for the current goal is H5.
We will prove False.
Apply PNoLt_irref β q to the current goal.
An exact proof term for the current goal is PNoLt_tra β (ordsucc β) β Lb Lsb Lb q pl q Lqpl Lplq.
Assume H3: α β.
We will prove False.
An exact proof term for the current goal is In_no2cycle β α Hb H3.
We will prove ∀q : setprop, PNo_rel_strict_imv L R α qPNoEq_ α pl q.
Let q be given.
Assume Hq: PNo_rel_strict_imv L R α q.
Let γ be given.
Assume Hc: γ α.
We will prove pl γ q γ.
We prove the intermediate claim Lsca: ordsucc γ α.
An exact proof term for the current goal is H1 γ Hc.
Apply Lpl2 (ordsucc γ) Lsca to the current goal.
Assume _.
Assume Hpl3: ∀q : setprop, PNo_rel_strict_imv L R (ordsucc γ) qPNoEq_ (ordsucc γ) pl q.
Apply Hpl3 to the current goal.
We will prove PNo_rel_strict_imv L R (ordsucc γ) q.
An exact proof term for the current goal is PNo_rel_strict_imv_antimon L R α Ha q (ordsucc γ) Lsca Hq.
We will prove γ ordsucc γ.
Apply ordsuccI2 to the current goal.
Assume H1: βα, α = ordsucc β.
Apply H1 to the current goal.
Let β be given.
Assume H1.
Apply H1 to the current goal.
Assume Hb: β α.
Assume Hab: α = ordsucc β.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered α Ha β Hb.
We prove the intermediate claim Lsb: ordinal (ordsucc β).
rewrite the current goal using Hab (from right to left).
An exact proof term for the current goal is Ha.
We prove the intermediate claim Lbsb1: β ordsucc β = β.
Apply binintersect_Subq_eq_1 to the current goal.
Apply ordsuccI1 to the current goal.
We prove the intermediate claim Lbsb2: ordsucc β β = β.
rewrite the current goal using binintersect_com (from left to right).
An exact proof term for the current goal is Lbsb1.
Apply LIH β Hb to the current goal.
Let p be given.
Assume Hp: PNo_rel_strict_uniq_imv L R β p.
Apply Hp to the current goal.
Assume Hp0: PNo_rel_strict_imv L R β p.
Apply Hp0 to the current goal.
Assume Hp1: γβ, ∀q : setprop, PNo_downc L γ qPNoLt γ q β p.
Assume Hp2: γβ, ∀q : setprop, PNo_upc R γ qPNoLt β p γ q.
Assume Hp3: ∀q : setprop, PNo_rel_strict_imv L R β qPNoEq_ β p q.
Set p0 to be the term λδ ⇒ p δ δ β of type setprop.
Set p1 to be the term λδ ⇒ p δ δ = β of type setprop.
We prove the intermediate claim Lp0e: PNoEq_ β p0 p.
Let γ be given.
Assume Hc: γ β.
We will prove p0 γ p γ.
Apply iffI to the current goal.
Assume H2: p γ γ β.
We will prove p γ.
Apply H2 to the current goal.
Assume H2 _.
An exact proof term for the current goal is H2.
Assume H2: p γ.
We will prove p γ γ β.
Apply andI to the current goal.
An exact proof term for the current goal is H2.
Assume H3: γ = β.
Apply In_irref β to the current goal.
rewrite the current goal using H3 (from right to left) at position 1.
An exact proof term for the current goal is Hc.
We prove the intermediate claim Lp0b: ¬ p0 β.
Assume H2: p β β β.
Apply H2 to the current goal.
Assume _ H2.
Apply H2 to the current goal.
Use reflexivity.
We prove the intermediate claim Lp0p: PNoLt (ordsucc β) p0 β p.
Apply PNoLtI3 to the current goal.
We will prove β ordsucc β.
Apply ordsuccI2 to the current goal.
We will prove PNoEq_ β p0 p.
An exact proof term for the current goal is Lp0e.
We will prove ¬ p0 β.
An exact proof term for the current goal is Lp0b.
We prove the intermediate claim Lp1e: PNoEq_ β p p1.
Let γ be given.
Assume Hc: γ β.
We will prove p γ p1 γ.
Apply iffI to the current goal.
Assume H2: p γ.
We will prove p γ γ = β.
Apply orIL to the current goal.
An exact proof term for the current goal is H2.
Assume H2: p γ γ = β.
We will prove p γ.
Apply H2 to the current goal.
Assume H3: p γ.
An exact proof term for the current goal is H3.
Assume H3: γ = β.
We will prove False.
Apply In_irref β to the current goal.
rewrite the current goal using H3 (from right to left) at position 1.
An exact proof term for the current goal is Hc.
We prove the intermediate claim Lp1b: p1 β.
We will prove p β β = β.
Apply orIR to the current goal.
Use reflexivity.
We prove the intermediate claim Lpp1: PNoLt β p (ordsucc β) p1.
Apply PNoLtI2 to the current goal.
We will prove β ordsucc β.
Apply ordsuccI2 to the current goal.
We will prove PNoEq_ β p p1.
An exact proof term for the current goal is Lp1e.
We will prove p1 β.
An exact proof term for the current goal is Lp1b.
We prove the intermediate claim Lnotboth: ¬ (PNo_rel_strict_imv L R α p0 PNo_rel_strict_imv L R α p1).
rewrite the current goal using Hab (from left to right).
Assume H2.
Apply HNC2 to the current goal.
We use β to witness the existential quantifier.
Apply andI to the current goal.
We will prove β α.
An exact proof term for the current goal is Hb.
We use p to witness the existential quantifier.
We will prove PNo_rel_strict_split_imv L R β p.
An exact proof term for the current goal is H2.
We prove the intermediate claim Lcases: (∀q : setprop, PNo_downc L β q¬ PNoEq_ β p q) (∀q : setprop, PNo_upc R β q¬ PNoEq_ β p q).
rewrite the current goal using eq_or_nand (from left to right).
Assume H2.
Apply H2 to the current goal.
Assume H2: ¬ (∀q : setprop, PNo_downc L β q¬ PNoEq_ β p q).
Assume H3: ¬ (∀q : setprop, PNo_upc R β q¬ PNoEq_ β p q).
Apply H2 to the current goal.
Let q0 be given.
Assume H4: PNo_downc L β q0.
Assume H5: PNoEq_ β p q0.
Apply H3 to the current goal.
Let q1 be given.
Assume H6: PNo_upc R β q1.
Assume H7: PNoEq_ β p q1.
We prove the intermediate claim L2: PNoLt β q0 β q1.
An exact proof term for the current goal is LLR β Lb q0 H4 β Lb q1 H6.
Apply PNoLt_irref β q0 to the current goal.
Apply PNoLtLe_tra β β β Lb Lb Lb q0 q1 q0 L2 to the current goal.
We will prove PNoLe β q1 β q0.
We will prove PNoLt β q1 β q0 β = β PNoEq_ β q1 q0.
Apply orIR to the current goal.
Apply andI to the current goal.
Use reflexivity.
We will prove PNoEq_ β q1 q0.
Apply PNoEq_tra_ β q1 p q0 to the current goal.
We will prove PNoEq_ β q1 p.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is H7.
We will prove PNoEq_ β p q0.
An exact proof term for the current goal is H5.
We will prove False.
Apply Lcases to the current goal.
Assume H2: ∀q : setprop, PNo_downc L β q¬ PNoEq_ β p q.
We prove the intermediate claim Lp0imv: PNo_rel_strict_imv L R (ordsucc β) p0.
Apply andI to the current goal.
Let γ be given.
Assume Hc: γ ordsucc β.
Let q be given.
Assume H3: PNo_downc L γ q.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered (ordsucc β) Lsb γ Hc.
We will prove PNoLt γ q (ordsucc β) p0.
Apply ordsuccE β γ Hc to the current goal.
Assume H4: γ β.
We prove the intermediate claim L1: PNoLt γ q β p.
An exact proof term for the current goal is Hp1 γ H4 q H3.
Apply PNoLtE γ β q p L1 to the current goal.
Assume H5: PNoLt_ (γ β) q p.
Apply H5 to the current goal.
Let δ be given.
Assume H6.
Apply H6 to the current goal.
Assume Hd: δ γ β.
Assume H6.
Apply H6 to the current goal.
Assume H6.
Apply H6 to the current goal.
Assume H6: PNoEq_ δ q p.
Assume H7: ¬ q δ.
Assume H8: p δ.
Apply binintersectE γ β δ Hd to the current goal.
Assume Hd1: δ γ.
Assume Hd2: δ β.
We will prove PNoLt γ q (ordsucc β) p0.
Apply PNoLtI1 to the current goal.
We will prove PNoLt_ (γ ordsucc β) q p0.
We will prove βγ ordsucc β, PNoEq_ β q p0 ¬ q β p0 β.
We use δ to witness the existential quantifier.
Apply andI to the current goal.
We will prove δ γ ordsucc β.
Apply binintersectI to the current goal.
An exact proof term for the current goal is Hd1.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hd2.
Apply and3I to the current goal.
We will prove PNoEq_ δ q p0.
Apply PNoEq_tra_ δ q p p0 to the current goal.
An exact proof term for the current goal is H6.
Apply PNoEq_sym_ to the current goal.
Apply PNoEq_antimon_ p0 p β Lb δ Hd2 to the current goal.
An exact proof term for the current goal is Lp0e.
We will prove ¬ q δ.
An exact proof term for the current goal is H7.
We will prove p0 δ.
We will prove p δ δ β.
Apply andI to the current goal.
An exact proof term for the current goal is H8.
Assume H9: δ = β.
Apply In_irref β to the current goal.
rewrite the current goal using H9 (from right to left) at position 1.
An exact proof term for the current goal is Hd2.
Assume H5: γ β.
Assume H6: PNoEq_ γ q p.
Assume H7: p γ.
We will prove PNoLt γ q (ordsucc β) p0.
Apply PNoLtI2 to the current goal.
We will prove γ ordsucc β.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is H5.
We will prove PNoEq_ γ q p0.
Apply PNoEq_tra_ γ q p p0 to the current goal.
We will prove PNoEq_ γ q p.
An exact proof term for the current goal is H6.
We will prove PNoEq_ γ p p0.
Apply PNoEq_sym_ to the current goal.
Apply PNoEq_antimon_ p0 p β Lb γ H5 to the current goal.
An exact proof term for the current goal is Lp0e.
We will prove p0 γ.
We will prove p γ γ β.
Apply andI to the current goal.
An exact proof term for the current goal is H7.
Assume H8: γ = β.
Apply In_irref γ to the current goal.
rewrite the current goal using H8 (from left to right) at position 2.
An exact proof term for the current goal is H5.
Assume H5: β γ.
We will prove False.
An exact proof term for the current goal is In_no2cycle γ β H4 H5.
Assume H4: γ = β.
rewrite the current goal using H4 (from left to right).
We will prove PNoLt β q (ordsucc β) p0.
Apply PNoLt_trichotomy_or β (ordsucc β) q p0 Lb Lsb to the current goal.
Assume H5.
Apply H5 to the current goal.
Assume H5.
An exact proof term for the current goal is H5.
Assume H5.
Apply H5 to the current goal.
Assume H5: β = ordsucc β.
We will prove False.
Apply In_irref β to the current goal.
rewrite the current goal using H5 (from left to right) at position 2.
Apply ordsuccI2 to the current goal.
Assume H5: PNoLt (ordsucc β) p0 β q.
Apply PNoLtE (ordsucc β) β p0 q H5 to the current goal.
rewrite the current goal using Lbsb2 (from left to right).
Assume H6: PNoLt_ β p0 q.
Apply H6 to the current goal.
Let δ be given.
Assume H7.
Apply H7 to the current goal.
Assume Hd: δ β.
Assume H7.
Apply H7 to the current goal.
Assume H7.
Apply H7 to the current goal.
Assume H7: PNoEq_ δ p0 q.
Assume H8: ¬ p0 δ.
Assume H9: q δ.
We prove the intermediate claim Ld: ordinal δ.
An exact proof term for the current goal is ordinal_Hered β Lb δ Hd.
We prove the intermediate claim L2: PNoLt β p δ q.
Apply PNoLtI3 to the current goal.
We will prove δ β.
An exact proof term for the current goal is Hd.
We will prove PNoEq_ δ p q.
Apply PNoEq_tra_ δ p p0 q to the current goal.
We will prove PNoEq_ δ p p0.
Apply PNoEq_sym_ to the current goal.
Apply PNoEq_antimon_ p0 p β Lb δ Hd to the current goal.
An exact proof term for the current goal is Lp0e.
We will prove PNoEq_ δ p0 q.
An exact proof term for the current goal is H7.
We will prove ¬ p δ.
Assume H10: p δ.
Apply H8 to the current goal.
We will prove p δ δ β.
Apply andI to the current goal.
An exact proof term for the current goal is H10.
Assume H11: δ = β.
Apply In_irref β to the current goal.
rewrite the current goal using H11 (from right to left) at position 1.
An exact proof term for the current goal is Hd.
We prove the intermediate claim L3: PNoLt δ q β p.
Apply Hp1 δ Hd q to the current goal.
We will prove PNo_downc L δ q.
Apply PNoLe_downc L γ δ q q Lc Ld H3 to the current goal.
We will prove PNoLe δ q γ q.
Apply PNoLeI1 to the current goal.
We will prove PNoLt δ q γ q.
Apply PNoLtI2 to the current goal.
We will prove δ γ.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is Hd.
We will prove PNoEq_ δ q q.
Apply PNoEq_ref_ to the current goal.
We will prove q δ.
An exact proof term for the current goal is H9.
Apply PNoLt_irref δ q to the current goal.
We will prove PNoLt δ q δ q.
An exact proof term for the current goal is PNoLt_tra δ β δ Ld Lb Ld q p q L3 L2.
Assume H6: ordsucc β β.
We will prove False.
Apply In_no2cycle (ordsucc β) β H6 to the current goal.
Apply ordsuccI2 to the current goal.
Assume H6: β ordsucc β.
Assume H7: PNoEq_ β p0 q.
We will prove False.
Apply H2 q to the current goal.
We will prove PNo_downc L β q.
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is H3.
We will prove PNoEq_ β p q.
Apply PNoEq_tra_ β p p0 q to the current goal.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is Lp0e.
An exact proof term for the current goal is H7.
Let γ be given.
Assume Hc: γ ordsucc β.
Let q be given.
Assume H3: PNo_upc R γ q.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered (ordsucc β) Lsb γ Hc.
We will prove PNoLt (ordsucc β) p0 γ q.
Apply ordsuccE β γ Hc to the current goal.
Assume H4: γ β.
Apply PNoLt_tra (ordsucc β) β γ Lsb Lb Lc p0 p q Lp0p to the current goal.
We will prove PNoLt β p γ q.
Apply Hp2 γ H4 q to the current goal.
We will prove PNo_upc R γ q.
An exact proof term for the current goal is H3.
Assume H4: γ = β.
rewrite the current goal using H4 (from left to right).
We will prove PNoLt (ordsucc β) p0 β q.
Apply PNoLt_trichotomy_or β (ordsucc β) q p0 Lb Lsb to the current goal.
Assume H5.
Apply H5 to the current goal.
Assume H5: PNoLt β q (ordsucc β) p0.
Apply PNoLtE β (ordsucc β) q p0 H5 to the current goal.
rewrite the current goal using Lbsb1 (from left to right).
Assume H6: PNoLt_ β q p0.
Apply H6 to the current goal.
Let δ be given.
Assume H7.
Apply H7 to the current goal.
Assume H8: δ β.
Assume H9.
Apply H9 to the current goal.
Assume H9.
Apply H9 to the current goal.
Assume H9: PNoEq_ δ q p0.
Assume H10: ¬ q δ.
Assume H11: p0 δ.
We will prove False.
We prove the intermediate claim Ld: ordinal δ.
An exact proof term for the current goal is ordinal_Hered β Lb δ H8.
We prove the intermediate claim L4: PNoLt β p δ q.
Apply Hp2 δ H8 q to the current goal.
We will prove PNo_upc R δ q.
Apply PNoLe_upc R γ δ q q Lc Ld H3 to the current goal.
We will prove PNoLe γ q δ q.
Apply PNoLeI1 to the current goal.
We will prove PNoLt γ q δ q.
Apply PNoLtI3 to the current goal.
We will prove δ γ.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is H8.
We will prove PNoEq_ δ q q.
Apply PNoEq_ref_ to the current goal.
We will prove ¬ q δ.
An exact proof term for the current goal is H10.
We prove the intermediate claim L5: PNoLt δ q β p.
Apply PNoLtI2 to the current goal.
We will prove δ β.
An exact proof term for the current goal is H8.
We will prove PNoEq_ δ q p.
Apply PNoEq_tra_ δ q p0 p to the current goal.
An exact proof term for the current goal is H9.
We will prove PNoEq_ δ p0 p.
Apply PNoEq_antimon_ p0 p β Lb δ H8 to the current goal.
An exact proof term for the current goal is Lp0e.
We will prove p δ.
Apply H11 to the current goal.
Assume H12 _.
An exact proof term for the current goal is H12.
Apply PNoLt_irref β p to the current goal.
An exact proof term for the current goal is PNoLt_tra β δ β Lb Ld Lb p q p L4 L5.
Assume H6: β ordsucc β.
Assume H7: PNoEq_ β q p0.
Assume H8: p β β β.
We will prove False.
Apply H8 to the current goal.
Assume _ H9.
Apply H9 to the current goal.
Use reflexivity.
Assume H6: ordsucc β β.
We will prove False.
Apply In_no2cycle (ordsucc β) β H6 to the current goal.
Apply ordsuccI2 to the current goal.
Assume H5.
Apply H5 to the current goal.
Assume H5: β = ordsucc β.
We will prove False.
Apply In_irref β to the current goal.
rewrite the current goal using H5 (from left to right) at position 2.
Apply ordsuccI2 to the current goal.
Assume H5: PNoLt (ordsucc β) p0 β q.
An exact proof term for the current goal is H5.
Apply HNC1 to the current goal.
We use p0 to witness the existential quantifier.
rewrite the current goal using Hab (from left to right).
We will prove PNo_rel_strict_uniq_imv L R (ordsucc β) p0.
We will prove PNo_rel_strict_imv L R (ordsucc β) p0 ∀q : setprop, PNo_rel_strict_imv L R (ordsucc β) qPNoEq_ (ordsucc β) p0 q.
Apply andI to the current goal.
An exact proof term for the current goal is Lp0imv.
Let q be given.
Assume Hq: PNo_rel_strict_imv L R (ordsucc β) q.
We will prove PNoEq_ (ordsucc β) p0 q.
We prove the intermediate claim Lqb: PNo_rel_strict_imv L R β q.
An exact proof term for the current goal is PNo_rel_strict_imv_antimon L R (ordsucc β) Lsb q β (ordsuccI2 β) Hq.
We prove the intermediate claim Lpqe: PNoEq_ β p q.
An exact proof term for the current goal is Hp3 q Lqb.
Apply xm (q β) to the current goal.
Assume Hq1: q β.
We will prove False.
Apply Lnotboth to the current goal.
rewrite the current goal using Hab (from left to right).
Apply andI to the current goal.
We will prove PNo_rel_strict_imv L R (ordsucc β) p0.
An exact proof term for the current goal is Lp0imv.
We will prove PNo_rel_strict_imv L R (ordsucc β) p1.
Apply PNoEq_rel_strict_imv L R (ordsucc β) Lsb q p1 to the current goal.
We will prove PNoEq_ (ordsucc β) q p1.
Let γ be given.
Assume Hc: γ ordsucc β.
Apply ordsuccE β γ Hc to the current goal.
Assume H3: γ β.
We prove the intermediate claim Lpqce: p γ q γ.
An exact proof term for the current goal is Lpqe γ H3.
Apply Lpqce to the current goal.
Assume Hpqc Hqpc.
We will prove q γ p1 γ.
Apply iffI to the current goal.
Assume H4: q γ.
We will prove p γ γ = β.
Apply orIL to the current goal.
An exact proof term for the current goal is Hqpc H4.
Assume H4: p γ γ = β.
Apply H4 to the current goal.
An exact proof term for the current goal is Hpqc.
Assume H5: γ = β.
We will prove False.
Apply In_irref β to the current goal.
rewrite the current goal using H5 (from right to left) at position 1.
An exact proof term for the current goal is H3.
Assume H3: γ = β.
We will prove q γ p1 γ.
Apply iffI to the current goal.
Assume _.
We will prove p γ γ = β.
Apply orIR to the current goal.
An exact proof term for the current goal is H3.
Assume _.
We will prove q γ.
rewrite the current goal using H3 (from left to right).
An exact proof term for the current goal is Hq1.
We will prove PNo_rel_strict_imv L R (ordsucc β) q.
An exact proof term for the current goal is Hq.
Assume Hq0: ¬ q β.
We will prove PNoEq_ (ordsucc β) p0 q.
Let γ be given.
Assume Hc: γ ordsucc β.
Apply ordsuccE β γ Hc to the current goal.
Assume H3: γ β.
We prove the intermediate claim Lpqce: p γ q γ.
An exact proof term for the current goal is Lpqe γ H3.
Apply Lpqce to the current goal.
Assume Hpqc Hqpc.
We will prove p0 γ q γ.
Apply iffI to the current goal.
Assume H4: p γ γ β.
Apply H4 to the current goal.
Assume H5: p γ.
Assume _.
An exact proof term for the current goal is Hpqc H5.
Assume H4: q γ.
We will prove p γ γ β.
Apply andI to the current goal.
We will prove p γ.
An exact proof term for the current goal is Hqpc H4.
We will prove γ β.
Assume H5: γ = β.
Apply In_irref β to the current goal.
rewrite the current goal using H5 (from right to left) at position 1.
An exact proof term for the current goal is H3.
Assume H3: γ = β.
We will prove p0 γ q γ.
Apply iffI to the current goal.
Assume H4: p γ γ β.
Apply H4 to the current goal.
Assume _ H5.
We will prove False.
An exact proof term for the current goal is H5 H3.
Assume H4: q γ.
We will prove False.
Apply Hq0 to the current goal.
We will prove q β.
rewrite the current goal using H3 (from right to left).
An exact proof term for the current goal is H4.
Assume H2: ∀q : setprop, PNo_upc R β q¬ PNoEq_ β p q.
We prove the intermediate claim Lp1imv: PNo_rel_strict_imv L R (ordsucc β) p1.
Apply andI to the current goal.
Let γ be given.
Assume Hc: γ ordsucc β.
Let q be given.
Assume H3: PNo_downc L γ q.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered (ordsucc β) Lsb γ Hc.
We will prove PNoLt γ q (ordsucc β) p1.
Apply ordsuccE β γ Hc to the current goal.
Assume H4: γ β.
Apply PNoLt_tra γ β (ordsucc β) Lc Lb Lsb q p p1 to the current goal.
We will prove PNoLt γ q β p.
Apply Hp1 γ H4 q to the current goal.
We will prove PNo_downc L γ q.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is Lpp1.
Assume H4: γ = β.
rewrite the current goal using H4 (from left to right).
We will prove PNoLt β q (ordsucc β) p1.
Apply PNoLt_trichotomy_or β (ordsucc β) q p1 Lb Lsb to the current goal.
Assume H5.
Apply H5 to the current goal.
Assume H5: PNoLt β q (ordsucc β) p1.
An exact proof term for the current goal is H5.
Assume H5.
Apply H5 to the current goal.
Assume H5: β = ordsucc β.
We will prove False.
Apply In_irref β to the current goal.
rewrite the current goal using H5 (from left to right) at position 2.
Apply ordsuccI2 to the current goal.
Assume H5: PNoLt (ordsucc β) p1 β q.
Apply PNoLtE (ordsucc β) β p1 q H5 to the current goal.
rewrite the current goal using Lbsb2 (from left to right).
Assume H6: PNoLt_ β p1 q.
Apply H6 to the current goal.
Let δ be given.
Assume H7.
Apply H7 to the current goal.
Assume H8: δ β.
Assume H9.
Apply H9 to the current goal.
Assume H9.
Apply H9 to the current goal.
Assume H9: PNoEq_ δ p1 q.
Assume H10: ¬ p1 δ.
Assume H11: q δ.
We will prove False.
We prove the intermediate claim Ld: ordinal δ.
An exact proof term for the current goal is ordinal_Hered β Lb δ H8.
We prove the intermediate claim L4: PNoLt δ q β p.
Apply Hp1 δ H8 q to the current goal.
We will prove PNo_downc L δ q.
Apply PNoLe_downc L γ δ q q Lc Ld H3 to the current goal.
We will prove PNoLe δ q γ q.
Apply PNoLeI1 to the current goal.
We will prove PNoLt δ q γ q.
Apply PNoLtI2 to the current goal.
We will prove δ γ.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is H8.
We will prove PNoEq_ δ q q.
Apply PNoEq_ref_ to the current goal.
We will prove q δ.
An exact proof term for the current goal is H11.
We prove the intermediate claim L5: PNoLt β p δ q.
Apply PNoLtI3 to the current goal.
We will prove δ β.
An exact proof term for the current goal is H8.
We will prove PNoEq_ δ p q.
Apply PNoEq_tra_ δ p p1 q to the current goal.
We will prove PNoEq_ δ p p1.
Apply PNoEq_antimon_ p p1 β Lb δ H8 to the current goal.
An exact proof term for the current goal is Lp1e.
An exact proof term for the current goal is H9.
We will prove ¬ p δ.
Assume H12: p δ.
Apply H10 to the current goal.
We will prove p δ δ = β.
Apply orIL to the current goal.
An exact proof term for the current goal is H12.
Apply PNoLt_irref β p to the current goal.
An exact proof term for the current goal is PNoLt_tra β δ β Lb Ld Lb p q p L5 L4.
Assume H6: ordsucc β β.
We will prove False.
Apply In_no2cycle (ordsucc β) β H6 to the current goal.
Apply ordsuccI2 to the current goal.
Assume H6: β ordsucc β.
Assume H7: PNoEq_ β p1 q.
Assume H8: ¬ p1 β.
We will prove False.
Apply H8 to the current goal.
We will prove p β β = β.
Apply orIR to the current goal.
Use reflexivity.
Let γ be given.
Assume Hc: γ ordsucc β.
Let q be given.
Assume H3: PNo_upc R γ q.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered (ordsucc β) Lsb γ Hc.
We will prove PNoLt (ordsucc β) p1 γ q.
Apply ordsuccE β γ Hc to the current goal.
Assume H4: γ β.
We prove the intermediate claim L1: PNoLt β p γ q.
An exact proof term for the current goal is Hp2 γ H4 q H3.
Apply PNoLtE β γ p q L1 to the current goal.
Assume H5: PNoLt_ (β γ) p q.
Apply H5 to the current goal.
Let δ be given.
Assume H6.
Apply H6 to the current goal.
Assume Hd: δ β γ.
Assume H6.
Apply H6 to the current goal.
Assume H6.
Apply H6 to the current goal.
Assume H6: PNoEq_ δ p q.
Assume H7: ¬ p δ.
Assume H8: q δ.
Apply binintersectE β γ δ Hd to the current goal.
Assume Hd2: δ β.
Assume Hd1: δ γ.
We will prove PNoLt (ordsucc β) p1 γ q.
Apply PNoLtI1 to the current goal.
We will prove PNoLt_ (ordsucc β γ) p1 q.
We will prove βordsucc β γ, PNoEq_ β p1 q ¬ p1 β q β.
We use δ to witness the existential quantifier.
Apply andI to the current goal.
We will prove δ ordsucc β γ.
Apply binintersectI to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hd2.
An exact proof term for the current goal is Hd1.
Apply and3I to the current goal.
We will prove PNoEq_ δ p1 q.
Apply PNoEq_tra_ δ p1 p q to the current goal.
Apply PNoEq_antimon_ p1 p β Lb δ Hd2 to the current goal.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is Lp1e.
An exact proof term for the current goal is H6.
We will prove ¬ p1 δ.
Assume H9: p δ δ = β.
We will prove False.
Apply H9 to the current goal.
An exact proof term for the current goal is H7.
Assume H10: δ = β.
Apply In_irref β to the current goal.
rewrite the current goal using H10 (from right to left) at position 1.
An exact proof term for the current goal is Hd2.
We will prove q δ.
An exact proof term for the current goal is H8.
Assume H5: β γ.
We will prove False.
An exact proof term for the current goal is In_no2cycle γ β H4 H5.
Assume H5: γ β.
Assume H6: PNoEq_ γ p q.
Assume H7: ¬ p γ.
We will prove PNoLt (ordsucc β) p1 γ q.
Apply PNoLtI3 to the current goal.
We will prove γ ordsucc β.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is H5.
We will prove PNoEq_ γ p1 q.
Apply PNoEq_tra_ γ p1 p q to the current goal.
We will prove PNoEq_ γ p1 p.
Apply PNoEq_antimon_ p1 p β Lb γ H5 to the current goal.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is Lp1e.
We will prove PNoEq_ γ p q.
An exact proof term for the current goal is H6.
We will prove ¬ p1 γ.
Assume H8: p γ γ = β.
Apply H8 to the current goal.
An exact proof term for the current goal is H7.
Assume H9: γ = β.
Apply In_irref β to the current goal.
rewrite the current goal using H9 (from right to left) at position 1.
An exact proof term for the current goal is H5.
Assume H4: γ = β.
rewrite the current goal using H4 (from left to right).
We will prove PNoLt (ordsucc β) p1 β q.
Apply PNoLt_trichotomy_or β (ordsucc β) q p1 Lb Lsb to the current goal.
Assume H5.
Apply H5 to the current goal.
Assume H5: PNoLt β q (ordsucc β) p1.
Apply PNoLtE β (ordsucc β) q p1 H5 to the current goal.
rewrite the current goal using Lbsb1 (from left to right).
Assume H6: PNoLt_ β q p1.
Apply H6 to the current goal.
Let δ be given.
Assume H7.
Apply H7 to the current goal.
Assume Hd: δ β.
Assume H7.
Apply H7 to the current goal.
Assume H7.
Apply H7 to the current goal.
Assume H7: PNoEq_ δ q p1.
Assume H8: ¬ q δ.
Assume H9: p1 δ.
We prove the intermediate claim Ld: ordinal δ.
An exact proof term for the current goal is ordinal_Hered β Lb δ Hd.
We prove the intermediate claim L2: PNoLt δ q β p.
Apply PNoLtI2 to the current goal.
We will prove δ β.
An exact proof term for the current goal is Hd.
We will prove PNoEq_ δ q p.
Apply PNoEq_tra_ δ q p1 p to the current goal.
We will prove PNoEq_ δ q p1.
An exact proof term for the current goal is H7.
We will prove PNoEq_ δ p1 p.
Apply PNoEq_antimon_ p1 p β Lb δ Hd to the current goal.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is Lp1e.
We will prove p δ.
Apply H9 to the current goal.
Assume H10: p δ.
An exact proof term for the current goal is H10.
Assume H10: δ = β.
We will prove False.
Apply In_irref β to the current goal.
rewrite the current goal using H10 (from right to left) at position 1.
An exact proof term for the current goal is Hd.
We prove the intermediate claim L3: PNoLt β p δ q.
Apply Hp2 δ Hd q to the current goal.
We will prove PNo_upc R δ q.
Apply PNoLe_upc R γ δ q q Lc Ld H3 to the current goal.
We will prove PNoLe γ q δ q.
Apply PNoLeI1 to the current goal.
We will prove PNoLt γ q δ q.
Apply PNoLtI3 to the current goal.
We will prove δ γ.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is Hd.
We will prove PNoEq_ δ q q.
Apply PNoEq_ref_ to the current goal.
We will prove ¬ q δ.
An exact proof term for the current goal is H8.
Apply PNoLt_irref δ q to the current goal.
We will prove PNoLt δ q δ q.
An exact proof term for the current goal is PNoLt_tra δ β δ Ld Lb Ld q p q L2 L3.
Assume H6: β ordsucc β.
Assume H7: PNoEq_ β q p1.
We will prove False.
Apply H2 q to the current goal.
We will prove PNo_upc R β q.
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is H3.
We will prove PNoEq_ β p q.
Apply PNoEq_tra_ β p p1 q to the current goal.
An exact proof term for the current goal is Lp1e.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is H7.
Assume H6: ordsucc β β.
We will prove False.
Apply In_no2cycle (ordsucc β) β H6 to the current goal.
Apply ordsuccI2 to the current goal.
Assume H5.
Apply H5 to the current goal.
Assume H5: β = ordsucc β.
We will prove False.
Apply In_irref β to the current goal.
rewrite the current goal using H5 (from left to right) at position 2.
Apply ordsuccI2 to the current goal.
Assume H5.
An exact proof term for the current goal is H5.
Apply HNC1 to the current goal.
We use p1 to witness the existential quantifier.
rewrite the current goal using Hab (from left to right).
We will prove PNo_rel_strict_uniq_imv L R (ordsucc β) p1.
We will prove PNo_rel_strict_imv L R (ordsucc β) p1 ∀q : setprop, PNo_rel_strict_imv L R (ordsucc β) qPNoEq_ (ordsucc β) p1 q.
Apply andI to the current goal.
An exact proof term for the current goal is Lp1imv.
Let q be given.
Assume Hq: PNo_rel_strict_imv L R (ordsucc β) q.
We will prove PNoEq_ (ordsucc β) p1 q.
We prove the intermediate claim Lqb: PNo_rel_strict_imv L R β q.
An exact proof term for the current goal is PNo_rel_strict_imv_antimon L R (ordsucc β) Lsb q β (ordsuccI2 β) Hq.
We prove the intermediate claim Lpqe: PNoEq_ β p q.
An exact proof term for the current goal is Hp3 q Lqb.
Apply xm (q β) to the current goal.
Assume Hq1: q β.
We will prove PNoEq_ (ordsucc β) p1 q.
Let γ be given.
Assume Hc: γ ordsucc β.
Apply ordsuccE β γ Hc to the current goal.
Assume H3: γ β.
We prove the intermediate claim Lpqce: p γ q γ.
An exact proof term for the current goal is Lpqe γ H3.
Apply Lpqce to the current goal.
Assume Hpqc Hqpc.
We will prove p1 γ q γ.
Apply iffI to the current goal.
Assume H4: p γ γ = β.
Apply H4 to the current goal.
Assume H5: p γ.
An exact proof term for the current goal is Hpqc H5.
Assume H5: γ = β.
We will prove False.
Apply In_irref β to the current goal.
rewrite the current goal using H5 (from right to left) at position 1.
An exact proof term for the current goal is H3.
Assume H4: q γ.
We will prove p γ γ = β.
Apply orIL to the current goal.
We will prove p γ.
An exact proof term for the current goal is Hqpc H4.
Assume H3: γ = β.
We will prove p1 γ q γ.
Apply iffI to the current goal.
Assume _.
We will prove q γ.
rewrite the current goal using H3 (from left to right).
We will prove q β.
An exact proof term for the current goal is Hq1.
Assume H4: q γ.
We will prove p γ γ = β.
Apply orIR to the current goal.
An exact proof term for the current goal is H3.
Assume Hq0: ¬ q β.
We will prove False.
Apply Lnotboth to the current goal.
rewrite the current goal using Hab (from left to right).
Apply andI to the current goal.
We will prove PNo_rel_strict_imv L R (ordsucc β) p0.
Apply PNoEq_rel_strict_imv L R (ordsucc β) Lsb q p0 to the current goal.
We will prove PNoEq_ (ordsucc β) q p0.
Let γ be given.
Assume Hc: γ ordsucc β.
Apply ordsuccE β γ Hc to the current goal.
Assume H3: γ β.
We prove the intermediate claim Lpqce: p γ q γ.
An exact proof term for the current goal is Lpqe γ H3.
Apply Lpqce to the current goal.
Assume Hpqc Hqpc.
We will prove q γ p0 γ.
Apply iffI to the current goal.
Assume H4: q γ.
We will prove p γ γ β.
Apply andI to the current goal.
We will prove p γ.
An exact proof term for the current goal is Hqpc H4.
We will prove γ β.
Assume H5: γ = β.
Apply In_irref β to the current goal.
rewrite the current goal using H5 (from right to left) at position 1.
An exact proof term for the current goal is H3.
Assume H4: p γ γ β.
Apply H4 to the current goal.
Assume H5 _.
An exact proof term for the current goal is Hpqc H5.
Assume H3: γ = β.
We will prove q γ p0 γ.
Apply iffI to the current goal.
Assume H4: q γ.
We will prove False.
Apply Hq0 to the current goal.
rewrite the current goal using H3 (from right to left).
An exact proof term for the current goal is H4.
Assume H4: p0 γ.
Apply H4 to the current goal.
Assume _ H5.
We will prove False.
Apply H5 to the current goal.
An exact proof term for the current goal is H3.
We will prove PNo_rel_strict_imv L R (ordsucc β) q.
An exact proof term for the current goal is Hq.
We will prove PNo_rel_strict_imv L R (ordsucc β) p1.
An exact proof term for the current goal is Lp1imv.
Definition. We define PNo_lenbdd to be λα L ⇒ ∀β, ∀p : setprop, L β pβ α of type set(set(setprop)prop)prop.
Theorem. (PNo_lenbdd_strict_imv_extend0) The following is provable:
∀L R : set(setprop)prop, ∀α, ordinal αPNo_lenbdd α LPNo_lenbdd α R∀p : setprop, PNo_rel_strict_imv L R α pPNo_rel_strict_imv L R (ordsucc α) (λδ ⇒ p δ δ α)
Proof:
Let L and R be given.
Let α be given.
Assume Ha.
Apply Ha to the current goal.
Assume Ha1 _.
Assume HaL HaR.
Let p be given.
Assume Hp1: PNo_rel_strict_imv L R α p.
Apply Hp1 to the current goal.
Assume Hp1a Hp1b.
Set p0 to be the term λδ ⇒ p δ δ α of type setprop.
We prove the intermediate claim Lsa: ordinal (ordsucc α).
An exact proof term for the current goal is ordinal_ordsucc α Ha.
We prove the intermediate claim Lpp0e: PNoEq_ α p p0.
An exact proof term for the current goal is PNo_extend0_eq α p.
Apply andI to the current goal.
We will prove PNo_rel_strict_upperbd L (ordsucc α) p0.
Let γ be given.
Assume Hc: γ ordsucc α.
Let q be given.
Assume Hq: PNo_downc L γ q.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered (ordsucc α) Lsa γ Hc.
We will prove PNoLt γ q (ordsucc α) p0.
Apply Hq to the current goal.
Let δ be given.
Assume Hq1.
Apply Hq1 to the current goal.
Assume Hd: ordinal δ.
Assume Hq1.
Apply Hq1 to the current goal.
Let r be given.
Assume Hq1.
Apply Hq1 to the current goal.
Assume Hr: L δ r.
Assume Hqr: PNoLe γ q δ r.
Apply PNoLeLt_tra γ δ (ordsucc α) Lc Hd Lsa q r p0 Hqr to the current goal.
We will prove PNoLt δ r (ordsucc α) p0.
We prove the intermediate claim Lda: δ α.
An exact proof term for the current goal is HaL δ r Hr.
We prove the intermediate claim Ldsa: δ ordsucc α.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Lda.
We prove the intermediate claim Ldr: PNo_downc L δ r.
An exact proof term for the current goal is PNo_downc_ref L δ Hd r Hr.
We prove the intermediate claim Lrp: PNoLt δ r α p.
An exact proof term for the current goal is Hp1a δ Lda r Ldr.
Apply PNoLt_trichotomy_or δ (ordsucc α) r p0 Hd Lsa to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1.
An exact proof term for the current goal is H1.
Assume H1.
Apply H1 to the current goal.
Assume H2: δ = ordsucc α.
We will prove False.
Apply In_irref δ to the current goal.
rewrite the current goal using H2 (from left to right) at position 2.
An exact proof term for the current goal is Ldsa.
Assume H1: PNoLt (ordsucc α) p0 δ r.
We will prove False.
Apply PNoLt_irref δ r to the current goal.
Apply PNoLt_tra δ α δ Hd Ha Hd r p r Lrp to the current goal.
We will prove PNoLt α p δ r.
Apply PNoLtE (ordsucc α) δ p0 r H1 to the current goal.
Assume H2: PNoLt_ (ordsucc α δ) p0 r.
Apply H2 to the current goal.
Let eps be given.
Assume H3.
Apply H3 to the current goal.
Assume He: eps ordsucc α δ.
Apply binintersectE (ordsucc α) δ eps He to the current goal.
Assume He1 He2.
We prove the intermediate claim Lea: eps α.
An exact proof term for the current goal is Ha1 δ Lda eps He2.
Assume H3.
Apply H3 to the current goal.
Assume H3.
Apply H3 to the current goal.
Assume H3: PNoEq_ eps p0 r.
Assume H4: ¬ p0 eps.
Assume H5: r eps.
Apply PNoLtI1 to the current goal.
We will prove PNoLt_ (α δ) p r.
We will prove βα δ, PNoEq_ β p r ¬ p β r β.
We use eps to witness the existential quantifier.
Apply andI to the current goal.
We will prove eps α δ.
Apply binintersectI to the current goal.
An exact proof term for the current goal is Lea.
An exact proof term for the current goal is He2.
Apply and3I to the current goal.
We will prove PNoEq_ eps p r.
Apply PNoEq_tra_ eps p p0 r to the current goal.
Apply PNoEq_antimon_ p p0 α Ha eps Lea to the current goal.
An exact proof term for the current goal is Lpp0e.
An exact proof term for the current goal is H3.
We will prove ¬ p eps.
Assume H5: p eps.
Apply H4 to the current goal.
We will prove p eps eps α.
Apply andI to the current goal.
An exact proof term for the current goal is H5.
We will prove eps α.
Assume H6: eps = α.
Apply In_irref α to the current goal.
rewrite the current goal using H6 (from right to left) at position 1.
An exact proof term for the current goal is Lea.
We will prove r eps.
An exact proof term for the current goal is H5.
Assume H2: ordsucc α δ.
We will prove False.
An exact proof term for the current goal is In_no2cycle δ (ordsucc α) Ldsa H2.
Assume H2: δ ordsucc α.
Assume H3: PNoEq_ δ p0 r.
Assume H4: ¬ p0 δ.
Apply PNoLtI3 α δ p r Lda to the current goal.
We will prove PNoEq_ δ p r.
Apply PNoEq_tra_ δ p p0 r to the current goal.
Apply PNoEq_antimon_ p p0 α Ha δ Lda to the current goal.
An exact proof term for the current goal is Lpp0e.
An exact proof term for the current goal is H3.
We will prove ¬ p δ.
Assume H5: p δ.
Apply H4 to the current goal.
We will prove p δ δ α.
Apply andI to the current goal.
An exact proof term for the current goal is H5.
We will prove δ α.
Assume H6: δ = α.
Apply In_irref α to the current goal.
rewrite the current goal using H6 (from right to left) at position 1.
An exact proof term for the current goal is Lda.
We will prove PNo_rel_strict_lowerbd R (ordsucc α) p0.
Let γ be given.
Assume Hc: γ ordsucc α.
Let q be given.
Assume Hq: PNo_upc R γ q.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered (ordsucc α) Lsa γ Hc.
We will prove PNoLt (ordsucc α) p0 γ q.
Apply PNoLt_tra (ordsucc α) α γ Lsa Ha Lc p0 p q to the current goal.
We will prove PNoLt (ordsucc α) p0 α p.
Apply PNoLtI3 to the current goal.
We will prove α ordsucc α.
Apply ordsuccI2 to the current goal.
We will prove PNoEq_ α p0 p.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is Lpp0e.
We will prove ¬ p0 α.
Assume H2: p0 α.
Apply H2 to the current goal.
Assume H3: p α.
Assume H4: α α.
Apply H4 to the current goal.
Use reflexivity.
We will prove PNoLt α p γ q.
Apply Hq to the current goal.
Let δ be given.
Assume Hq1.
Apply Hq1 to the current goal.
Assume Hd: ordinal δ.
Assume Hq1.
Apply Hq1 to the current goal.
Let r be given.
Assume Hq1.
Apply Hq1 to the current goal.
Assume Hr: R δ r.
Assume Hrq: PNoLe δ r γ q.
We prove the intermediate claim Ldr: PNo_upc R δ r.
An exact proof term for the current goal is PNo_upc_ref R δ Hd r Hr.
Apply (λH : PNoLt α p δ rPNoLtLe_tra α δ γ Ha Hd Lc p r q H Hrq) to the current goal.
We will prove PNoLt α p δ r.
An exact proof term for the current goal is Hp1b δ (HaR δ r Hr) r Ldr.
Theorem. (PNo_lenbdd_strict_imv_extend1) The following is provable:
∀L R : set(setprop)prop, ∀α, ordinal αPNo_lenbdd α LPNo_lenbdd α R∀p : setprop, PNo_rel_strict_imv L R α pPNo_rel_strict_imv L R (ordsucc α) (λδ ⇒ p δ δ = α)
Proof:
Let L and R be given.
Let α be given.
Assume Ha.
Apply Ha to the current goal.
Assume Ha1 _.
Assume HaL HaR.
Let p be given.
Assume Hp1: PNo_rel_strict_imv L R α p.
Apply Hp1 to the current goal.
Assume Hp1a Hp1b.
Set p1 to be the term λδ ⇒ p δ δ = α of type setprop.
We prove the intermediate claim Lsa: ordinal (ordsucc α).
An exact proof term for the current goal is ordinal_ordsucc α Ha.
We prove the intermediate claim Lpp1e: PNoEq_ α p p1.
An exact proof term for the current goal is PNo_extend1_eq α p.
Apply andI to the current goal.
We will prove PNo_rel_strict_upperbd L (ordsucc α) p1.
Let γ be given.
Assume Hc: γ ordsucc α.
Let q be given.
Assume Hq: PNo_downc L γ q.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered (ordsucc α) Lsa γ Hc.
We will prove PNoLt γ q (ordsucc α) p1.
Apply PNoLt_tra γ α (ordsucc α) Lc Ha Lsa q p p1 to the current goal.
We will prove PNoLt γ q α p.
Apply Hq to the current goal.
Let δ be given.
Assume Hq1.
Apply Hq1 to the current goal.
Assume Hd: ordinal δ.
Assume Hq1.
Apply Hq1 to the current goal.
Let r be given.
Assume Hq1.
Apply Hq1 to the current goal.
Assume Hr: L δ r.
Assume Hqr: PNoLe γ q δ r.
We prove the intermediate claim Ldr: PNo_downc L δ r.
We will prove β, ordinal β q : setprop, L β q PNoLe δ r β q.
We use δ to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hd.
We use r to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hr.
Apply PNoLe_ref to the current goal.
Apply PNoLeLt_tra γ δ α Lc Hd Ha q r p Hqr to the current goal.
We will prove PNoLt δ r α p.
An exact proof term for the current goal is Hp1a δ (HaL δ r Hr) r Ldr.
We will prove PNoLt α p (ordsucc α) p1.
Apply PNoLtI2 to the current goal.
We will prove α ordsucc α.
Apply ordsuccI2 to the current goal.
We will prove PNoEq_ α p p1.
An exact proof term for the current goal is Lpp1e.
We will prove p1 α.
We will prove p α α = α.
Apply orIR to the current goal.
Use reflexivity.
We will prove PNo_rel_strict_lowerbd R (ordsucc α) p1.
Let γ be given.
Assume Hc: γ ordsucc α.
Let q be given.
Assume Hq: PNo_upc R γ q.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered (ordsucc α) Lsa γ Hc.
We will prove PNoLt (ordsucc α) p1 γ q.
Apply Hq to the current goal.
Let δ be given.
Assume Hq1.
Apply Hq1 to the current goal.
Assume Hd: ordinal δ.
Assume Hq1.
Apply Hq1 to the current goal.
Let r be given.
Assume Hq1.
Apply Hq1 to the current goal.
Assume Hr: R δ r.
Assume Hrq: PNoLe δ r γ q.
Apply (λH : PNoLt (ordsucc α) p1 δ rPNoLtLe_tra (ordsucc α) δ γ Lsa Hd Lc p1 r q H Hrq) to the current goal.
We will prove PNoLt (ordsucc α) p1 δ r.
We prove the intermediate claim Lda: δ α.
An exact proof term for the current goal is HaR δ r Hr.
We prove the intermediate claim Ldsa: δ ordsucc α.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Lda.
We prove the intermediate claim Ldr: PNo_upc R δ r.
We will prove β, ordinal β q : setprop, R β q PNoLe β q δ r.
We use δ to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hd.
We use r to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hr.
Apply PNoLe_ref to the current goal.
We prove the intermediate claim Lpr: PNoLt α p δ r.
An exact proof term for the current goal is Hp1b δ Lda r Ldr.
Apply PNoLt_trichotomy_or δ (ordsucc α) r p1 Hd Lsa to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: PNoLt δ r (ordsucc α) p1.
We will prove False.
Apply PNoLt_irref α p to the current goal.
We will prove PNoLt α p α p.
Apply PNoLt_tra α δ α Ha Hd Ha p r p Lpr to the current goal.
We will prove PNoLt δ r α p.
Apply PNoLtE δ (ordsucc α) r p1 H1 to the current goal.
Assume H2: PNoLt_ (δ ordsucc α) r p1.
Apply H2 to the current goal.
Let eps be given.
Assume H3.
Apply H3 to the current goal.
Assume He: eps δ ordsucc α.
Apply binintersectE δ (ordsucc α) eps He to the current goal.
Assume He1 He2.
We prove the intermediate claim Lea: eps α.
An exact proof term for the current goal is Ha1 δ Lda eps He1.
Assume H3.
Apply H3 to the current goal.
Assume H3.
Apply H3 to the current goal.
Assume H3: PNoEq_ eps r p1.
Assume H4: ¬ r eps.
Assume H5: p1 eps.
Apply PNoLtI1 to the current goal.
We will prove PNoLt_ (δ α) r p.
We will prove βδ α, PNoEq_ β r p ¬ r β p β.
We use eps to witness the existential quantifier.
Apply andI to the current goal.
We will prove eps δ α.
Apply binintersectI to the current goal.
An exact proof term for the current goal is He1.
An exact proof term for the current goal is Lea.
Apply and3I to the current goal.
We will prove PNoEq_ eps r p.
Apply PNoEq_tra_ eps r p1 p to the current goal.
An exact proof term for the current goal is H3.
Apply PNoEq_antimon_ p1 p α Ha eps Lea to the current goal.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is Lpp1e.
We will prove ¬ r eps.
An exact proof term for the current goal is H4.
We will prove p eps.
Apply H5 to the current goal.
An exact proof term for the current goal is (λH ⇒ H).
Assume H6: eps = α.
We will prove False.
Apply In_irref α to the current goal.
rewrite the current goal using H6 (from right to left) at position 1.
An exact proof term for the current goal is Lea.
Assume H2: δ ordsucc α.
Assume H3: PNoEq_ δ r p1.
Assume H4: p1 δ.
Apply PNoLtI2 δ α r p Lda to the current goal.
We will prove PNoEq_ δ r p.
Apply PNoEq_tra_ δ r p1 p to the current goal.
An exact proof term for the current goal is H3.
Apply PNoEq_antimon_ p1 p α Ha δ Lda to the current goal.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is Lpp1e.
We will prove p δ.
Apply H4 to the current goal.
An exact proof term for the current goal is (λH ⇒ H).
Assume H5: δ = α.
We will prove False.
Apply In_irref α to the current goal.
rewrite the current goal using H5 (from right to left) at position 1.
An exact proof term for the current goal is Lda.
Assume H2: ordsucc α δ.
We will prove False.
An exact proof term for the current goal is In_no2cycle δ (ordsucc α) Ldsa H2.
Assume H1.
Apply H1 to the current goal.
Assume H2: δ = ordsucc α.
We will prove False.
Apply In_irref δ to the current goal.
rewrite the current goal using H2 (from left to right) at position 2.
An exact proof term for the current goal is Ldsa.
Assume H1.
An exact proof term for the current goal is H1.
Theorem. (PNo_lenbdd_strict_imv_split) The following is provable:
∀L R : set(setprop)prop, ∀α, ordinal αPNo_lenbdd α LPNo_lenbdd α R∀p : setprop, PNo_rel_strict_imv L R α pPNo_rel_strict_split_imv L R α p
Proof:
Let L and R be given.
Let α be given.
Assume Ha.
Assume HaL HaR.
Let p be given.
Assume Hp1.
We will prove PNo_rel_strict_split_imv L R α p.
An exact proof term for the current goal is andI (PNo_rel_strict_imv L R (ordsucc α) (λδ ⇒ p δ δ α)) (PNo_rel_strict_imv L R (ordsucc α) (λδ ⇒ p δ δ = α)) (PNo_lenbdd_strict_imv_extend0 L R α Ha HaL HaR p Hp1) (PNo_lenbdd_strict_imv_extend1 L R α Ha HaL HaR p Hp1).
Theorem. (PNo_rel_imv_bdd_ex) The following is provable:
∀L R : set(setprop)prop, PNoLt_pwise L R∀α, ordinal αPNo_lenbdd α LPNo_lenbdd α Rβordsucc α, p : setprop, PNo_rel_strict_split_imv L R β p
Proof:
Let L and R be given.
Assume HLR.
Let α be given.
Assume Ha.
Apply Ha to the current goal.
Assume Ha1 _.
Assume HaL HaR.
We prove the intermediate claim Lsa: ordinal (ordsucc α).
An exact proof term for the current goal is ordinal_ordsucc α Ha.
Apply PNo_rel_imv_ex L R HLR α Ha to the current goal.
Assume H2.
Apply H2 to the current goal.
Let p be given.
Assume Hp: PNo_rel_strict_uniq_imv L R α p.
Apply Hp to the current goal.
Assume Hp1: PNo_rel_strict_imv L R α p.
Apply Hp1 to the current goal.
Assume Hp1a Hp1b.
Assume Hp2: ∀q : setprop, PNo_rel_strict_imv L R α qPNoEq_ α p q.
We use α to witness the existential quantifier.
Apply andI to the current goal.
We will prove α ordsucc α.
Apply ordsuccI2 to the current goal.
We use p to witness the existential quantifier.
We will prove PNo_rel_strict_split_imv L R α p.
An exact proof term for the current goal is PNo_lenbdd_strict_imv_split L R α Ha HaL HaR p Hp1.
Assume H1.
Apply H1 to the current goal.
Let β be given.
Assume H1.
Apply H1 to the current goal.
Assume Hb: β α.
Assume H1.
We use β to witness the existential quantifier.
Apply andI to the current goal.
We will prove β ordsucc α.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hb.
An exact proof term for the current goal is H1.
Definition. We define PNo_strict_upperbd to be λL alpha p ⇒ ∀β, ordinal β∀q : setprop, L β qPNoLt β q α p of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_strict_lowerbd to be λR alpha p ⇒ ∀β, ordinal β∀q : setprop, R β qPNoLt α p β q of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_strict_imv to be λL R alpha p ⇒ PNo_strict_upperbd L α p PNo_strict_lowerbd R α p of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Theorem. (PNoEq_strict_upperbd) The following is provable:
∀L : set(setprop)prop, ∀α, ordinal α∀p q : setprop, PNoEq_ α p qPNo_strict_upperbd L α pPNo_strict_upperbd L α q
Proof:
Let L and α be given.
Assume Ha.
Let p and q be given.
Assume Hpq: PNoEq_ α p q.
Assume H1: PNo_strict_upperbd L α p.
We will prove PNo_strict_upperbd L α q.
Let β be given.
Assume Hb: ordinal β.
Let r be given.
Assume H2: L β r.
We will prove PNoLt β r α q.
Apply PNoLtEq_tra β α Hb Ha r p q to the current goal.
We will prove PNoLt β r α p.
An exact proof term for the current goal is H1 β Hb r H2.
We will prove PNoEq_ α p q.
An exact proof term for the current goal is Hpq.
Theorem. (PNoEq_strict_lowerbd) The following is provable:
∀R : set(setprop)prop, ∀α, ordinal α∀p q : setprop, PNoEq_ α p qPNo_strict_lowerbd R α pPNo_strict_lowerbd R α q
Proof:
Let R and α be given.
Assume Ha.
Let p and q be given.
Assume Hpq: PNoEq_ α p q.
Assume H1: PNo_strict_lowerbd R α p.
We will prove PNo_strict_lowerbd R α q.
Let β be given.
Assume Hb: ordinal β.
Let r be given.
Assume H2: R β r.
We will prove PNoLt α q β r.
Apply PNoEqLt_tra α β Ha Hb q p r to the current goal.
We will prove PNoEq_ α q p.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is Hpq.
We will prove PNoLt α p β r.
An exact proof term for the current goal is H1 β Hb r H2.
Theorem. (PNoEq_strict_imv) The following is provable:
∀L R : set(setprop)prop, ∀α, ordinal α∀p q : setprop, PNoEq_ α p qPNo_strict_imv L R α pPNo_strict_imv L R α q
Proof:
Let L, R and α be given.
Assume Ha.
Let p and q be given.
Assume Hpq H1.
Apply H1 to the current goal.
Assume H2 H3.
We will prove PNo_strict_upperbd L α q PNo_strict_lowerbd R α q.
Apply andI to the current goal.
An exact proof term for the current goal is PNoEq_strict_upperbd L α Ha p q Hpq H2.
An exact proof term for the current goal is PNoEq_strict_lowerbd R α Ha p q Hpq H3.
Theorem. (PNo_strict_upperbd_imp_rel_strict_upperbd) The following is provable:
∀L : set(setprop)prop, ∀α, ordinal αβordsucc α, ∀p : setprop, PNo_strict_upperbd L α pPNo_rel_strict_upperbd L β p
Proof:
Let L and α be given.
Assume Ha: ordinal α.
Let β be given.
Assume Hb: β ordsucc α.
Let p be given.
Assume H1: PNo_strict_upperbd L α p.
Let γ be given.
Assume Hc: γ β.
Let q be given.
Assume Hq: PNo_downc L γ q.
Apply Ha to the current goal.
Assume Ha1 _.
We prove the intermediate claim Lsa: ordinal (ordsucc α).
An exact proof term for the current goal is ordinal_ordsucc α Ha.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered (ordsucc α) Lsa β Hb.
We prove the intermediate claim Lb1: TransSet β.
Apply Lb to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered β Lb γ Hc.
We prove the intermediate claim Lcb: γ β.
An exact proof term for the current goal is Lb1 γ Hc.
We will prove PNoLt γ q β p.
Apply Hq to the current goal.
Let δ be given.
Assume H2.
Apply H2 to the current goal.
Assume Hd: ordinal δ.
Assume H2.
Apply H2 to the current goal.
Let r be given.
Assume H2.
Apply H2 to the current goal.
Assume H2: L δ r.
Assume H3: PNoLe γ q δ r.
We prove the intermediate claim L1: PNoLt δ r α p.
An exact proof term for the current goal is H1 δ Hd r H2.
We prove the intermediate claim L2: PNoLt γ q α p.
An exact proof term for the current goal is PNoLeLt_tra γ δ α Lc Hd Ha q r p H3 L1.
We prove the intermediate claim Lca: γ α.
Apply ordsuccE α β Hb to the current goal.
Assume Hb1: β α.
An exact proof term for the current goal is Ha1 β Hb1 γ Hc.
Assume Hb1: β = α.
rewrite the current goal using Hb1 (from right to left).
An exact proof term for the current goal is Hc.
We prove the intermediate claim Lca2: γ α.
An exact proof term for the current goal is Ha1 γ Lca.
We will prove PNoLt γ q β p.
Apply PNoLt_trichotomy_or γ β q p Lc Lb to the current goal.
Assume H4.
Apply H4 to the current goal.
Assume H4.
An exact proof term for the current goal is H4.
Assume H4.
Apply H4 to the current goal.
Assume H4: γ = β.
We will prove False.
Apply In_irref β to the current goal.
rewrite the current goal using H4 (from right to left) at position 1.
An exact proof term for the current goal is Hc.
Assume H4: PNoLt β p γ q.
We will prove False.
Apply PNoLtE β γ p q H4 to the current goal.
rewrite the current goal using binintersect_com (from left to right).
rewrite the current goal using binintersect_Subq_eq_1 γ β Lcb (from left to right).
Assume H5: PNoLt_ γ p q.
Apply H5 to the current goal.
Apply PNoLt_irref α p to the current goal.
Apply PNoLt_tra α γ α Ha Lc Ha p q p to the current goal.
We will prove PNoLt α p γ q.
Apply PNoLtI1 to the current goal.
We will prove PNoLt_ (α γ) p q.
rewrite the current goal using binintersect_com (from left to right).
rewrite the current goal using binintersect_Subq_eq_1 γ α Lca2 (from left to right).
We will prove PNoLt_ γ p q.
An exact proof term for the current goal is H5.
We will prove PNoLt γ q α p.
An exact proof term for the current goal is L2.
Assume H5: β γ.
We will prove False.
An exact proof term for the current goal is In_no2cycle β γ H5 Hc.
Assume H5: γ β.
Assume H6: PNoEq_ γ p q.
Assume H7: ¬ p γ.
Apply PNoLt_irref α p to the current goal.
Apply PNoLt_tra α γ α Ha Lc Ha p q p to the current goal.
We will prove PNoLt α p γ q.
Apply PNoLtI3 to the current goal.
We will prove γ α.
An exact proof term for the current goal is Lca.
We will prove PNoEq_ γ p q.
An exact proof term for the current goal is H6.
We will prove ¬ p γ.
An exact proof term for the current goal is H7.
We will prove PNoLt γ q α p.
An exact proof term for the current goal is L2.
Theorem. (PNo_strict_lowerbd_imp_rel_strict_lowerbd) The following is provable:
∀R : set(setprop)prop, ∀α, ordinal αβordsucc α, ∀p : setprop, PNo_strict_lowerbd R α pPNo_rel_strict_lowerbd R β p
Proof:
Let R and α be given.
Assume Ha: ordinal α.
Let β be given.
Assume Hb: β ordsucc α.
Let p be given.
Assume H1: PNo_strict_lowerbd R α p.
Let γ be given.
Assume Hc: γ β.
Let q be given.
Assume Hq: PNo_upc R γ q.
Apply Ha to the current goal.
Assume Ha1 _.
We prove the intermediate claim Lsa: ordinal (ordsucc α).
An exact proof term for the current goal is ordinal_ordsucc α Ha.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered (ordsucc α) Lsa β Hb.
We prove the intermediate claim Lb1: TransSet β.
Apply Lb to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered β Lb γ Hc.
We prove the intermediate claim Lcb: γ β.
An exact proof term for the current goal is Lb1 γ Hc.
We will prove PNoLt β p γ q.
Apply Hq to the current goal.
Let δ be given.
Assume H2.
Apply H2 to the current goal.
Assume Hd: ordinal δ.
Assume H2.
Apply H2 to the current goal.
Let r be given.
Assume H2.
Apply H2 to the current goal.
Assume H2: R δ r.
Assume H3: PNoLe δ r γ q.
We prove the intermediate claim L1: PNoLt α p δ r.
An exact proof term for the current goal is H1 δ Hd r H2.
We prove the intermediate claim L2: PNoLt α p γ q.
An exact proof term for the current goal is PNoLtLe_tra α δ γ Ha Hd Lc p r q L1 H3.
We prove the intermediate claim Lca: γ α.
Apply ordsuccE α β Hb to the current goal.
Assume Hb1: β α.
An exact proof term for the current goal is Ha1 β Hb1 γ Hc.
Assume Hb1: β = α.
rewrite the current goal using Hb1 (from right to left).
An exact proof term for the current goal is Hc.
We prove the intermediate claim Lca2: γ α.
An exact proof term for the current goal is Ha1 γ Lca.
We will prove PNoLt β p γ q.
Apply PNoLt_trichotomy_or γ β q p Lc Lb to the current goal.
Assume H4.
Apply H4 to the current goal.
Assume H4: PNoLt γ q β p.
We will prove False.
Apply PNoLtE γ β q p H4 to the current goal.
rewrite the current goal using binintersect_Subq_eq_1 γ β Lcb (from left to right).
Assume H5: PNoLt_ γ q p.
Apply H5 to the current goal.
Apply PNoLt_irref α p to the current goal.
Apply PNoLt_tra α γ α Ha Lc Ha p q p to the current goal.
We will prove PNoLt α p γ q.
An exact proof term for the current goal is L2.
We will prove PNoLt γ q α p.
Apply PNoLtI1 to the current goal.
We will prove PNoLt_ (γ α) q p.
rewrite the current goal using binintersect_Subq_eq_1 γ α Lca2 (from left to right).
We will prove PNoLt_ γ q p.
An exact proof term for the current goal is H5.
Assume H5: γ β.
Assume H6: PNoEq_ γ q p.
Assume H7: p γ.
Apply PNoLt_irref α p to the current goal.
Apply PNoLt_tra α γ α Ha Lc Ha p q p to the current goal.
We will prove PNoLt α p γ q.
An exact proof term for the current goal is L2.
We will prove PNoLt γ q α p.
Apply PNoLtI2 to the current goal.
We will prove γ α.
An exact proof term for the current goal is Lca.
We will prove PNoEq_ γ q p.
An exact proof term for the current goal is H6.
We will prove p γ.
An exact proof term for the current goal is H7.
Assume H5: β γ.
We will prove False.
An exact proof term for the current goal is In_no2cycle β γ H5 Hc.
Assume H4.
Apply H4 to the current goal.
Assume H4: γ = β.
We will prove False.
Apply In_irref β to the current goal.
rewrite the current goal using H4 (from right to left) at position 1.
An exact proof term for the current goal is Hc.
Assume H4.
An exact proof term for the current goal is H4.
Theorem. (PNo_strict_imv_imp_rel_strict_imv) The following is provable:
∀L R : set(setprop)prop, ∀α, ordinal αβordsucc α, ∀p : setprop, PNo_strict_imv L R α pPNo_rel_strict_imv L R β p
Proof:
Let L, R and α be given.
Assume Ha: ordinal α.
Let β be given.
Assume Hb: β ordsucc α.
Let p be given.
Assume H1: PNo_strict_imv L R α p.
Apply H1 to the current goal.
Assume H2: PNo_strict_upperbd L α p.
Assume H3: PNo_strict_lowerbd R α p.
We will prove PNo_rel_strict_imv L R β p.
Apply andI to the current goal.
An exact proof term for the current goal is PNo_strict_upperbd_imp_rel_strict_upperbd L α Ha β Hb p H2.
An exact proof term for the current goal is PNo_strict_lowerbd_imp_rel_strict_lowerbd R α Ha β Hb p H3.
Theorem. (PNo_rel_split_imv_imp_strict_imv) The following is provable:
∀L R : set(setprop)prop, ∀α, ordinal α∀p : setprop, PNo_rel_strict_split_imv L R α pPNo_strict_imv L R α p
Proof:
Let L and R be given.
Let α be given.
Assume Ha: ordinal α.
Let p be given.
Assume Hp: PNo_rel_strict_split_imv L R α p.
We prove the intermediate claim Lsa: ordinal (ordsucc α).
An exact proof term for the current goal is ordinal_ordsucc α Ha.
Set p0 to be the term λδ ⇒ p δ δ α of type setprop.
Set p1 to be the term λδ ⇒ p δ δ = α of type setprop.
Apply Hp to the current goal.
Assume Hp0: PNo_rel_strict_imv L R (ordsucc α) p0.
Assume Hp1: PNo_rel_strict_imv L R (ordsucc α) p1.
Apply Hp0 to the current goal.
Assume Hp0a: PNo_rel_strict_upperbd L (ordsucc α) p0.
Assume Hp0b: PNo_rel_strict_lowerbd R (ordsucc α) p0.
Apply Hp1 to the current goal.
Assume Hp1a: PNo_rel_strict_upperbd L (ordsucc α) p1.
Assume Hp1b: PNo_rel_strict_lowerbd R (ordsucc α) p1.
We prove the intermediate claim Lnp0a: ¬ p0 α.
Assume H10.
Apply H10 to the current goal.
Assume H11: p α.
Assume H12: α α.
Apply H12 to the current goal.
Use reflexivity.
We prove the intermediate claim Lp1a: p1 α.
We will prove p α α = α.
Apply orIR to the current goal.
Use reflexivity.
We prove the intermediate claim Lap0p: PNoLt (ordsucc α) p0 α p.
Apply PNoLtI3 to the current goal.
Apply ordsuccI2 to the current goal.
We will prove PNoEq_ α p0 p.
Apply PNoEq_sym_ to the current goal.
Apply PNo_extend0_eq to the current goal.
We will prove ¬ p0 α.
An exact proof term for the current goal is Lnp0a.
We prove the intermediate claim Lapp1: PNoLt α p (ordsucc α) p1.
Apply PNoLtI2 to the current goal.
Apply ordsuccI2 to the current goal.
We will prove PNoEq_ α p p1.
Apply PNo_extend1_eq to the current goal.
We will prove p1 α.
An exact proof term for the current goal is Lp1a.
We will prove PNo_strict_upperbd L α p PNo_strict_lowerbd R α p.
Apply andI to the current goal.
Let β be given.
Assume Hb: ordinal β.
Let q be given.
Assume Hq: L β q.
We will prove PNoLt β q α p.
We prove the intermediate claim L4: PNo_downc L β q.
Apply PNo_downc_ref L β Hb to the current goal.
An exact proof term for the current goal is Hq.
We prove the intermediate claim L5: β ordsucc αPNoLt β q α p.
Assume H10: β ordsucc α.
Apply PNoLt_tra β (ordsucc α) α Hb Lsa Ha q p0 p to the current goal.
We will prove PNoLt β q (ordsucc α) p0.
Apply Hp0a β H10 q to the current goal.
We will prove PNo_downc L β q.
An exact proof term for the current goal is L4.
An exact proof term for the current goal is Lap0p.
We prove the intermediate claim L6: γordsucc α, γ βPNoEq_ γ p qq γp0 γ.
Let γ be given.
Assume Hc1: γ ordsucc α.
Assume Hc2: γ β.
Assume H10: PNoEq_ γ p q.
Assume H11: q γ.
Apply dneg to the current goal.
Assume HNC: ¬ p0 γ.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered β Hb γ Hc2.
We prove the intermediate claim L6a: PNoLt γ q β q.
Apply PNoLtI2 to the current goal.
An exact proof term for the current goal is Hc2.
We will prove PNoEq_ γ q q.
Apply PNoEq_ref_ to the current goal.
We will prove q γ.
An exact proof term for the current goal is H11.
We prove the intermediate claim L6b: PNo_downc L γ q.
We will prove δ, ordinal δ r : setprop, L δ r PNoLe γ q δ r.
We use β to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hb.
We use q to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hq.
Apply PNoLeI1 to the current goal.
An exact proof term for the current goal is L6a.
We prove the intermediate claim L6c: PNoLt γ q (ordsucc α) p0.
An exact proof term for the current goal is Hp0a γ Hc1 q L6b.
We prove the intermediate claim L6d: PNoLt (ordsucc α) p0 γ q.
Apply PNoLtI3 to the current goal.
An exact proof term for the current goal is Hc1.
We will prove PNoEq_ γ p0 q.
Apply PNoEq_tra_ γ p0 p q to the current goal.
Apply PNoEq_sym_ to the current goal.
We will prove PNoEq_ γ p p0.
Apply ordsuccE α γ Hc1 to the current goal.
Assume H12: γ α.
Apply PNoEq_antimon_ p p0 α Ha γ H12 to the current goal.
We will prove PNoEq_ α p p0.
An exact proof term for the current goal is PNo_extend0_eq α p.
Assume H12: γ = α.
rewrite the current goal using H12 (from left to right).
We will prove PNoEq_ α p p0.
An exact proof term for the current goal is PNo_extend0_eq α p.
An exact proof term for the current goal is H10.
We will prove ¬ p0 γ.
An exact proof term for the current goal is HNC.
Apply PNoLt_irref γ q to the current goal.
An exact proof term for the current goal is PNoLt_tra γ (ordsucc α) γ Lc Lsa Lc q p0 q L6c L6d.
Apply PNoLt_trichotomy_or α β p q Ha Hb to the current goal.
Assume H10.
Apply H10 to the current goal.
Assume H10: PNoLt α p β q.
Apply PNoLtE α β p q H10 to the current goal.
Assume H11: PNoLt_ (α β) p q.
Apply H11 to the current goal.
Let γ be given.
Assume H12.
Apply H12 to the current goal.
Assume Hc: γ α β.
Assume H12.
Apply H12 to the current goal.
Assume H12.
Apply H12 to the current goal.
Assume H12: PNoEq_ γ p q.
Assume H13: ¬ p γ.
Assume H14: q γ.
We will prove False.
Apply binintersectE α β γ Hc to the current goal.
Assume Hc1: γ α.
Assume Hc2: γ β.
Apply L6 γ (ordsuccI1 α γ Hc1) Hc2 H12 H14 to the current goal.
Assume H15: p γ.
Assume _.
Apply H13 to the current goal.
An exact proof term for the current goal is H15.
Assume H11: α β.
Assume H12: PNoEq_ α p q.
Assume H13: q α.
We will prove False.
Apply Lnp0a to the current goal.
We will prove p0 α.
An exact proof term for the current goal is L6 α (ordsuccI2 α) H11 H12 H13.
Assume H11: β α.
Assume _ _.
Apply L5 to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is H11.
Assume H10.
Apply H10 to the current goal.
Assume H10a: α = β.
Assume H10b: PNoEq_ α p q.
Apply L5 to the current goal.
We will prove β ordsucc α.
rewrite the current goal using H10a (from right to left).
Apply ordsuccI2 to the current goal.
Assume H10: PNoLt β q α p.
An exact proof term for the current goal is H10.
Let β be given.
Assume Hb: ordinal β.
Let q be given.
Assume Hq: R β q.
We will prove PNoLt α p β q.
We prove the intermediate claim L4: PNo_upc R β q.
Apply PNo_upc_ref R β Hb to the current goal.
An exact proof term for the current goal is Hq.
We prove the intermediate claim L5: β ordsucc αPNoLt α p β q.
Assume H10: β ordsucc α.
Apply PNoLt_tra α (ordsucc α) β Ha Lsa Hb p p1 q to the current goal.
An exact proof term for the current goal is Lapp1.
We will prove PNoLt (ordsucc α) p1 β q.
Apply Hp1b β H10 q to the current goal.
We will prove PNo_upc R β q.
An exact proof term for the current goal is L4.
We prove the intermediate claim L6: γordsucc α, γ βPNoEq_ γ q pp1 γq γ.
Let γ be given.
Assume Hc1: γ ordsucc α.
Assume Hc2: γ β.
Assume H10: PNoEq_ γ q p.
Assume H11: p1 γ.
Apply dneg to the current goal.
Assume HNC: ¬ q γ.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered β Hb γ Hc2.
We prove the intermediate claim L6a: PNoLt β q γ q.
Apply PNoLtI3 to the current goal.
An exact proof term for the current goal is Hc2.
We will prove PNoEq_ γ q q.
Apply PNoEq_ref_ to the current goal.
We will prove ¬ q γ.
An exact proof term for the current goal is HNC.
We prove the intermediate claim L6b: PNo_upc R γ q.
We will prove δ, ordinal δ r : setprop, R δ r PNoLe δ r γ q.
We use β to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hb.
We use q to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hq.
Apply PNoLeI1 to the current goal.
An exact proof term for the current goal is L6a.
We prove the intermediate claim L6c: PNoLt (ordsucc α) p1 γ q.
An exact proof term for the current goal is Hp1b γ Hc1 q L6b.
We prove the intermediate claim L6d: PNoLt γ q (ordsucc α) p1.
Apply PNoLtI2 to the current goal.
An exact proof term for the current goal is Hc1.
We will prove PNoEq_ γ q p1.
Apply PNoEq_tra_ γ q p p1 to the current goal.
An exact proof term for the current goal is H10.
We will prove PNoEq_ γ p p1.
Apply ordsuccE α γ Hc1 to the current goal.
Assume H12: γ α.
Apply PNoEq_antimon_ p p1 α Ha γ H12 to the current goal.
We will prove PNoEq_ α p p1.
An exact proof term for the current goal is PNo_extend1_eq α p.
Assume H12: γ = α.
rewrite the current goal using H12 (from left to right).
We will prove PNoEq_ α p p1.
An exact proof term for the current goal is PNo_extend1_eq α p.
We will prove p1 γ.
An exact proof term for the current goal is H11.
Apply PNoLt_irref γ q to the current goal.
An exact proof term for the current goal is PNoLt_tra γ (ordsucc α) γ Lc Lsa Lc q p1 q L6d L6c.
Apply PNoLt_trichotomy_or α β p q Ha Hb to the current goal.
Assume H10.
Apply H10 to the current goal.
Assume H10.
An exact proof term for the current goal is H10.
Assume H10.
Apply H10 to the current goal.
Assume H10a: α = β.
Assume H10b: PNoEq_ α p q.
Apply L5 to the current goal.
We will prove β ordsucc α.
rewrite the current goal using H10a (from right to left).
Apply ordsuccI2 to the current goal.
Assume H10: PNoLt β q α p.
Apply PNoLtE β α q p H10 to the current goal.
Assume H11: PNoLt_ (β α) q p.
Apply H11 to the current goal.
Let γ be given.
Assume H12.
Apply H12 to the current goal.
Assume Hc: γ β α.
Assume H12.
Apply H12 to the current goal.
Assume H12.
Apply H12 to the current goal.
Assume H12: PNoEq_ γ q p.
Assume H13: ¬ q γ.
Assume H14: p γ.
We will prove False.
Apply binintersectE β α γ Hc to the current goal.
Assume Hc2: γ β.
Assume Hc1: γ α.
Apply H13 to the current goal.
Apply L6 γ (ordsuccI1 α γ Hc1) Hc2 H12 to the current goal.
We will prove p1 γ.
We will prove p γ γ = α.
Apply orIL to the current goal.
An exact proof term for the current goal is H14.
Assume H11: β α.
Assume _ _.
Apply L5 to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is H11.
Assume H11: α β.
Assume H12: PNoEq_ α q p.
Assume H13: ¬ q α.
We will prove False.
Apply H13 to the current goal.
An exact proof term for the current goal is L6 α (ordsuccI2 α) H11 H12 Lp1a.
Theorem. (PNo_lenbdd_strict_imv_ex) The following is provable:
∀L R : set(setprop)prop, PNoLt_pwise L R∀α, ordinal αPNo_lenbdd α LPNo_lenbdd α Rβordsucc α, p : setprop, PNo_strict_imv L R β p
Proof:
Let L and R be given.
Assume HLR.
Let α be given.
Assume Ha.
Assume HaL HaR.
Apply PNo_rel_imv_bdd_ex L R HLR α Ha HaL HaR to the current goal.
Let β be given.
Assume H1.
Apply H1 to the current goal.
Assume Hb: β ordsucc α.
Assume H1.
Apply H1 to the current goal.
Let p be given.
Assume Hp: PNo_rel_strict_split_imv L R β p.
We prove the intermediate claim Lsa: ordinal (ordsucc α).
An exact proof term for the current goal is ordinal_ordsucc α Ha.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered (ordsucc α) Lsa β Hb.
We use β to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hb.
We use p to witness the existential quantifier.
We will prove PNo_strict_imv L R β p.
An exact proof term for the current goal is PNo_rel_split_imv_imp_strict_imv L R β Lb p Hp.
Definition. We define PNo_least_rep to be λL R beta p ⇒ ordinal β PNo_strict_imv L R β p γβ, ∀q : setprop, ¬ PNo_strict_imv L R γ q of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Definition. We define PNo_least_rep2 to be λL R beta p ⇒ PNo_least_rep L R β p ∀x, x β¬ p x of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Theorem. (PNo_strict_imv_pred_eq) The following is provable:
∀L R : set(setprop)prop, PNoLt_pwise L R∀α, ordinal α∀p q : setprop, PNo_least_rep L R α pPNo_strict_imv L R α qβα, p β q β
Proof:
Let L and R be given.
Assume HLR.
Let α be given.
Assume Ha.
Let p and q be given.
Assume Hp.
Assume Hq.
Apply Ha to the current goal.
Assume Ha1 _.
Apply Hp to the current goal.
Assume Hp1.
Apply Hp1 to the current goal.
Assume _.
Assume Hp1: PNo_strict_imv L R α p.
Assume Hp2: βα, ∀r : setprop, ¬ PNo_strict_imv L R β r.
Apply Hp1 to the current goal.
Assume Hp1a: PNo_strict_upperbd L α p.
Assume Hp1b: PNo_strict_lowerbd R α p.
Apply Hq to the current goal.
Assume Hq1: PNo_strict_upperbd L α q.
Assume Hq2: PNo_strict_lowerbd R α q.
We prove the intermediate claim L1: ∀β, ordinal ββ α(p β q β).
Apply ordinal_ind to the current goal.
Let β be given.
Assume Hb1: ordinal β.
Assume IH: γβ, γ α(p γ q γ).
Assume Hb2: β α.
We prove the intermediate claim Lbpq: PNoEq_ β p q.
Let γ be given.
Assume Hc: γ β.
An exact proof term for the current goal is IH γ Hc (Ha1 β Hb2 γ Hc).
We will prove p β q β.
Apply iffI to the current goal.
Assume H1: p β.
We will prove q β.
Apply dneg to the current goal.
Assume H2: ¬ q β.
We prove the intermediate claim Lqp: PNoLt β q α p.
Apply PNoLtI2 to the current goal.
We will prove β α.
An exact proof term for the current goal is Hb2.
We will prove PNoEq_ β q p.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is Lbpq.
We will prove p β.
An exact proof term for the current goal is H1.
We prove the intermediate claim Lqq: PNoLt α q β q.
Apply PNoLtI3 to the current goal.
We will prove β α.
An exact proof term for the current goal is Hb2.
We will prove PNoEq_ β q q.
Apply PNoEq_ref_ to the current goal.
We will prove ¬ q β.
An exact proof term for the current goal is H2.
Apply Hp2 β Hb2 q to the current goal.
We will prove PNo_strict_imv L R β q.
We will prove PNo_strict_upperbd L β q PNo_strict_lowerbd R β q.
Apply andI to the current goal.
Let γ be given.
Assume Hc: ordinal γ.
Let r be given.
Assume Hr: L γ r.
We will prove PNoLt γ r β q.
Apply PNoLt_tra γ α β Hc Ha Hb1 r q q to the current goal.
We will prove PNoLt γ r α q.
An exact proof term for the current goal is Hq1 γ Hc r Hr.
We will prove PNoLt α q β q.
An exact proof term for the current goal is Lqq.
Let γ be given.
Assume Hc: ordinal γ.
Let r be given.
Assume Hr: R γ r.
We will prove PNoLt β q γ r.
Apply PNoLt_tra β α γ Hb1 Ha Hc q p r to the current goal.
We will prove PNoLt β q α p.
An exact proof term for the current goal is Lqp.
We will prove PNoLt α p γ r.
An exact proof term for the current goal is Hp1b γ Hc r Hr.
Assume H1: q β.
We will prove p β.
Apply dneg to the current goal.
Assume H2: ¬ p β.
We prove the intermediate claim Lpq: PNoLt α p β q.
Apply PNoLtI3 to the current goal.
We will prove β α.
An exact proof term for the current goal is Hb2.
We will prove PNoEq_ β p q.
An exact proof term for the current goal is Lbpq.
We will prove ¬ p β.
An exact proof term for the current goal is H2.
We prove the intermediate claim Lqq: PNoLt β q α q.
Apply PNoLtI2 to the current goal.
We will prove β α.
An exact proof term for the current goal is Hb2.
We will prove PNoEq_ β q q.
Apply PNoEq_ref_ to the current goal.
We will prove q β.
An exact proof term for the current goal is H1.
Apply Hp2 β Hb2 q to the current goal.
We will prove PNo_strict_imv L R β q.
We will prove PNo_strict_upperbd L β q PNo_strict_lowerbd R β q.
Apply andI to the current goal.
Let γ be given.
Assume Hc: ordinal γ.
Let r be given.
Assume Hr: L γ r.
We will prove PNoLt γ r β q.
Apply PNoLt_tra γ α β Hc Ha Hb1 r p q to the current goal.
We will prove PNoLt γ r α p.
An exact proof term for the current goal is Hp1a γ Hc r Hr.
We will prove PNoLt α p β q.
An exact proof term for the current goal is Lpq.
Let γ be given.
Assume Hc: ordinal γ.
Let r be given.
Assume Hr: R γ r.
We will prove PNoLt β q γ r.
Apply PNoLt_tra β α γ Hb1 Ha Hc q q r to the current goal.
We will prove PNoLt β q α q.
An exact proof term for the current goal is Lqq.
We will prove PNoLt α q γ r.
An exact proof term for the current goal is Hq2 γ Hc r Hr.
Let β be given.
Assume Hb: β α.
An exact proof term for the current goal is L1 β (ordinal_Hered α Ha β Hb) Hb.
Theorem. (PNo_lenbdd_least_rep2_exuniq2) The following is provable:
∀L R : set(setprop)prop, PNoLt_pwise L R∀α, ordinal αPNo_lenbdd α LPNo_lenbdd α Rβ, (p : setprop, PNo_least_rep2 L R β p) (∀p q : setprop, PNo_least_rep2 L R β pPNo_least_rep2 L R β qp = q)
Proof:
Let L and R be given.
Assume HLR.
Let α be given.
Assume Ha HaL HaR.
We prove the intermediate claim L1: β, ordinal β (p : setprop, PNo_strict_imv L R β p) γβ, ¬ (p : setprop, PNo_strict_imv L R γ p).
Apply least_ordinal_ex (λβ ⇒ p : setprop, PNo_strict_imv L R β p) to the current goal.
We will prove β, ordinal β p : setprop, PNo_strict_imv L R β p.
Apply PNo_lenbdd_strict_imv_ex L R HLR α Ha HaL HaR to the current goal.
Let β be given.
Assume H1.
Apply H1 to the current goal.
Assume Hb: β ordsucc α.
Assume H1.
Apply H1 to the current goal.
Let p be given.
Assume Hp: PNo_strict_imv L R β p.
We prove the intermediate claim Lsa: ordinal (ordsucc α).
An exact proof term for the current goal is ordinal_ordsucc α Ha.
We use β to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is ordinal_Hered (ordsucc α) Lsa β Hb.
We use p to witness the existential quantifier.
An exact proof term for the current goal is Hp.
Apply L1 to the current goal.
Let β be given.
Assume H1.
Apply H1 to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: ordinal β.
Assume H2: p : setprop, PNo_strict_imv L R β p.
Assume H3: γβ, ¬ p : setprop, PNo_strict_imv L R γ p.
Apply H2 to the current goal.
Let p be given.
Assume Hp: PNo_strict_imv L R β p.
We use β to witness the existential quantifier.
Apply andI to the current goal.
We use (λx ⇒ x β p x) to witness the existential quantifier.
We will prove PNo_least_rep L R β (λx ⇒ x β p x) ∀x, x β¬ (x β p x).
Apply andI to the current goal.
We will prove ordinal β PNo_strict_imv L R β (λx ⇒ x β p x) γβ, ∀q : setprop, ¬ PNo_strict_imv L R γ q.
Apply and3I to the current goal.
An exact proof term for the current goal is H1.
Apply PNoEq_strict_imv L R β H1 p (λx ⇒ x β p x) to the current goal.
We will prove PNoEq_ β p (λx ⇒ x β p x).
Let x be given.
Assume Hx: x β.
We will prove p x x β p x.
Apply iffI to the current goal.
Assume H4.
Apply andI to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is H4.
Assume H4.
Apply H4 to the current goal.
Assume _ H5.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is Hp.
Let γ be given.
Assume Hc: γ β.
Let q be given.
Assume H4: PNo_strict_imv L R γ q.
We will prove False.
Apply H3 γ Hc to the current goal.
We will prove p : setprop, PNo_strict_imv L R γ p.
We use q to witness the existential quantifier.
We will prove PNo_strict_imv L R γ q.
An exact proof term for the current goal is H4.
We will prove ∀x, x β¬ (x β p x).
Let x be given.
Assume Hx.
Assume H4.
Apply H4 to the current goal.
Assume H5 _.
An exact proof term for the current goal is Hx H5.
Let q and r be given.
Assume Hq: PNo_least_rep2 L R β q.
Assume Hr: PNo_least_rep2 L R β r.
Apply Hq to the current goal.
Assume Hq1 Hq2.
Apply Hr to the current goal.
Assume Hr1 Hr2.
We will prove q = r.
Apply pred_ext to the current goal.
Let x be given.
Apply xm (x β) to the current goal.
Assume H4: x β.
We will prove q x r x.
Apply Hr1 to the current goal.
Assume Hr1a.
Apply Hr1a to the current goal.
Assume _.
Assume Hr1a: PNo_strict_imv L R β r.
Assume _.
An exact proof term for the current goal is PNo_strict_imv_pred_eq L R HLR β H1 q r Hq1 Hr1a x H4.
Assume H4: x β.
Apply iffI to the current goal.
Assume H5: q x.
We will prove False.
Apply Hq2 x H4 to the current goal.
An exact proof term for the current goal is H5.
Assume H5: r x.
We will prove False.
Apply Hr2 x H4 to the current goal.
An exact proof term for the current goal is H5.
Definition. We define PNo_bd to be λL R ⇒ DescrR_i_io_1 (PNo_least_rep2 L R) of type (set(setprop)prop)(set(setprop)prop)set.
Definition. We define PNo_pred to be λL R ⇒ DescrR_i_io_2 (PNo_least_rep2 L R) of type (set(setprop)prop)(set(setprop)prop)setprop.
Theorem. (PNo_bd_pred_lem) The following is provable:
∀L R : set(setprop)prop, PNoLt_pwise L R∀α, ordinal αPNo_lenbdd α LPNo_lenbdd α RPNo_least_rep2 L R (PNo_bd L R) (PNo_pred L R)
Proof:
Let L and R be given.
Assume HLR.
Let α be given.
Assume Ha HaL HaR.
An exact proof term for the current goal is DescrR_i_io_12 (PNo_least_rep2 L R) (PNo_lenbdd_least_rep2_exuniq2 L R HLR α Ha HaL HaR).
Theorem. (PNo_bd_pred) The following is provable:
∀L R : set(setprop)prop, PNoLt_pwise L R∀α, ordinal αPNo_lenbdd α LPNo_lenbdd α RPNo_least_rep L R (PNo_bd L R) (PNo_pred L R)
Proof:
Let L and R be given.
Assume HLR.
Let α be given.
Assume Ha HaL HaR.
Apply PNo_bd_pred_lem L R HLR α Ha HaL HaR to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Theorem. (PNo_bd_In) The following is provable:
∀L R : set(setprop)prop, PNoLt_pwise L R∀α, ordinal αPNo_lenbdd α LPNo_lenbdd α RPNo_bd L R ordsucc α
Proof:
Let L and R be given.
Assume HLR.
Let α be given.
Assume Ha HaL HaR.
Apply PNo_bd_pred L R HLR α Ha HaL HaR to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: ordinal (PNo_bd L R).
Assume H2: PNo_strict_imv L R (PNo_bd L R) (PNo_pred L R).
Assume H3: γPNo_bd L R, ∀q : setprop, ¬ PNo_strict_imv L R γ q.
Apply PNo_lenbdd_strict_imv_ex L R HLR α Ha HaL HaR to the current goal.
Let β be given.
Assume H4.
Apply H4 to the current goal.
Assume Hb: β ordsucc α.
Assume H4.
Apply H4 to the current goal.
Let p be given.
Assume Hp: PNo_strict_imv L R β p.
We prove the intermediate claim Lsa: ordinal (ordsucc α).
An exact proof term for the current goal is ordinal_ordsucc α Ha.
Apply ordinal_In_Or_Subq (PNo_bd L R) (ordsucc α) H1 Lsa to the current goal.
Assume H4: PNo_bd L R ordsucc α.
An exact proof term for the current goal is H4.
Assume H4: ordsucc α PNo_bd L R.
We will prove False.
We prove the intermediate claim Lb: β PNo_bd L R.
Apply H4 to the current goal.
An exact proof term for the current goal is Hb.
Apply H3 β Lb p to the current goal.
An exact proof term for the current goal is Hp.
Beginning of Section TaggedSets
Let tag : setsetλα ⇒ SetAdjoin α {1}
Notation. We use ' as a postfix operator with priority 100 corresponding to applying term tag.
Theorem. (not_TransSet_Sing1) The following is provable:
Proof:
Assume H1: TransSet {1}.
We prove the intermediate claim L1: 0 {1}.
An exact proof term for the current goal is H1 1 (SingI 1) 0 In_0_1.
Apply neq_0_1 to the current goal.
An exact proof term for the current goal is SingE 1 0 L1.
Theorem. (not_ordinal_Sing1) The following is provable:
Proof:
Assume H1.
Apply H1 to the current goal.
Assume H2 _.
An exact proof term for the current goal is not_TransSet_Sing1 H2.
Theorem. (tagged_not_ordinal) The following is provable:
∀y, ¬ ordinal (y ')
Proof:
Let y be given.
Assume H1: ordinal (y ').
We prove the intermediate claim L1: {1} y '.
We will prove {1} y {{1}}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is SingI {1}.
Apply not_ordinal_Sing1 to the current goal.
An exact proof term for the current goal is ordinal_Hered (y ') H1 {1} L1.
Theorem. (tagged_notin_ordinal) The following is provable:
∀α y, ordinal α(y ') α
Proof:
Let α and y be given.
Assume H1 H2.
Apply tagged_not_ordinal y to the current goal.
An exact proof term for the current goal is ordinal_Hered α H1 (y ') H2.
Theorem. (tagged_eqE_Subq) The following is provable:
∀α beta, ordinal αα ' = β 'α β
Proof:
Let α and β be given.
Assume Ha He.
Let γ be given.
Assume Hc: γ α.
We prove the intermediate claim L1: γ β '.
rewrite the current goal using He (from right to left).
We will prove γ α {{1}}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hc.
Apply binunionE β {{1}} γ L1 to the current goal.
Assume H1: γ β.
An exact proof term for the current goal is H1.
Assume H1: γ {{1}}.
We will prove False.
Apply not_ordinal_Sing1 to the current goal.
rewrite the current goal using SingE {1} γ H1 (from right to left).
An exact proof term for the current goal is ordinal_Hered α Ha γ Hc.
Theorem. (tagged_eqE_eq) The following is provable:
∀α beta, ordinal αordinal βα ' = β 'α = β
Proof:
Let α and β be given.
Assume Ha Hb He.
An exact proof term for the current goal is set_ext α β (tagged_eqE_Subq α β Ha He) (tagged_eqE_Subq β α Hb (λq ⇒ He (λu v ⇒ q v u))).
Theorem. (tagged_ReplE) The following is provable:
∀α beta, ordinal αordinal ββ ' {γ '|γα}β α
Proof:
Let α and β be given.
Assume Ha Hb.
Assume H1: β ' {γ '|γα}.
Apply ReplE_impred α (λγ ⇒ γ ') (β ') H1 to the current goal.
Let γ be given.
Assume H2: γ α.
Assume H3: β ' = γ '.
We prove the intermediate claim L2: β = γ.
An exact proof term for the current goal is tagged_eqE_eq β γ Hb (ordinal_Hered α Ha γ H2) H3.
rewrite the current goal using L2 (from left to right).
An exact proof term for the current goal is H2.
Theorem. (ordinal_notin_tagged_Repl) The following is provable:
∀α Y, ordinal αα {y '|yY}
Proof:
Let α and Y be given.
Assume H1: ordinal α.
Assume H2: α {y '|yY}.
Apply ReplE_impred Y (λy ⇒ y ') α H2 to the current goal.
Let y be given.
Assume H3: y Y.
Assume H4: α = y '.
Apply tagged_not_ordinal y to the current goal.
We will prove ordinal (y ').
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is H1.
Definition. We define SNoElts_ to be λα ⇒ α {β '|βα} of type setset.
Theorem. (SNoElts_mon) The following is provable:
∀α beta, α βSNoElts_ α SNoElts_ β
Proof:
Let α and β be given.
Assume H1: α β.
Let x be given.
Assume H2: x α {γ '|γα}.
Apply binunionE α {γ '|γα} x H2 to the current goal.
Assume H3: x α.
We will prove x β {γ '|γβ}.
Apply binunionI1 to the current goal.
Apply H1 to the current goal.
An exact proof term for the current goal is H3.
Assume H3: x {γ '|γα}.
We will prove x β {γ '|γβ}.
Apply binunionI2 to the current goal.
We will prove x {γ '|γβ}.
Apply ReplE_impred α (λγ ⇒ γ ') x H3 to the current goal.
Let γ be given.
Assume H4: γ α.
Assume H5: x = γ '.
rewrite the current goal using H5 (from left to right).
We will prove γ ' {γ '|γβ}.
An exact proof term for the current goal is ReplI β (λγ ⇒ γ ') γ (H1 γ H4).
Definition. We define SNo_ to be λα x ⇒ x SNoElts_ α βα, exactly1of2 (β ' x) (β x) of type setsetprop.
Definition. We define PSNo to be λα p ⇒ {βα|p β} {β '|βα, ¬ p β} of type set(setprop)set.
Theorem. (PNoEq_PSNo) The following is provable:
∀α, ordinal α∀p : setprop, PNoEq_ α (λβ ⇒ β PSNo α p) p
Proof:
Let α be given.
Assume Ha: ordinal α.
Let p be given.
Let β be given.
Assume Hb: β α.
We will prove β PSNo α p p β.
Apply iffI to the current goal.
Assume H1: β {βα|p β} {β '|βα, ¬ p β}.
Apply binunionE {βα|p β} {β '|βα, ¬ p β} β H1 to the current goal.
Assume H2: β {βα|p β}.
An exact proof term for the current goal is SepE2 α p β H2.
Assume H2: β {β '|βα, ¬ p β}.
We will prove False.
Apply ReplSepE_impred α (λβ ⇒ ¬ p β) (λx ⇒ x ') β H2 to the current goal.
Let γ be given.
Assume Hc: γ α.
Assume H3: ¬ p γ.
Assume H4: β = γ '.
Apply tagged_notin_ordinal α γ Ha to the current goal.
We will prove γ ' α.
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is Hb.
Assume H1: p β.
We will prove β PSNo α p.
We will prove β {βα|p β} {β '|βα, ¬ p β}.
Apply binunionI1 to the current goal.
Apply SepI to the current goal.
An exact proof term for the current goal is Hb.
An exact proof term for the current goal is H1.
Theorem. (SNo_PSNo) The following is provable:
∀α, ordinal α∀p : setprop, SNo_ α (PSNo α p)
Proof:
Let α be given.
Assume Ha.
Let p be given.
We will prove PSNo α p SNoElts_ α βα, exactly1of2 (β ' PSNo α p) (β PSNo α p).
Apply andI to the current goal.
Let u be given.
Assume Hu: u PSNo α p.
We will prove u SNoElts_ α.
Apply binunionE {βα|p β} {β '|βα, ¬ p β} u Hu to the current goal.
Assume H1: u {βα|p β}.
Apply SepE α p u H1 to the current goal.
Assume H2: u α.
Assume H3: p u.
We will prove u α {β '|βα}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is H2.
Assume H1: u {β '|βα, ¬ p β}.
Apply ReplSepE_impred α (λβ ⇒ ¬ p β) (λβ ⇒ β ') u H1 to the current goal.
Let β be given.
Assume H2: β α.
Assume H3: ¬ p β.
Assume H4: u = β '.
We will prove u α {β '|βα}.
Apply binunionI2 to the current goal.
We will prove u {β '|βα}.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is ReplI α (λβ ⇒ β ') β H2.
Let β be given.
Assume H1: β α.
We prove the intermediate claim Lbeta: ordinal β.
An exact proof term for the current goal is ordinal_Hered α Ha β H1.
We will prove exactly1of2 (β ' PSNo α p) (β PSNo α p).
Apply xm (p β) to the current goal.
Assume H2: p β.
Apply exactly1of2_I2 to the current goal.
We will prove β ' PSNo α p.
Assume H3: β ' PSNo α p.
Apply binunionE {βα|p β} {β '|βα, ¬ p β} (β ') H3 to the current goal.
Assume H4: β ' {βα|p β}.
Apply SepE α p (β ') H4 to the current goal.
Assume H5: β ' α.
Assume H6: p (β ').
We will prove False.
Apply tagged_not_ordinal β to the current goal.
An exact proof term for the current goal is ordinal_Hered α Ha (β ') H5.
Assume H4: β ' {β '|βα, ¬ p β}.
Apply ReplSepE_impred α (λβ ⇒ ¬ p β) (λβ ⇒ β ') (β ') H4 to the current goal.
Let γ be given.
Assume H5: γ α.
Assume H6: ¬ p γ.
Assume H7: β ' = γ '.
We prove the intermediate claim Lgamma: ordinal γ.
An exact proof term for the current goal is ordinal_Hered α Ha γ H5.
We prove the intermediate claim L1: β = γ.
An exact proof term for the current goal is tagged_eqE_eq β γ Lbeta Lgamma H7.
Apply H6 to the current goal.
We will prove p γ.
rewrite the current goal using L1 (from right to left).
We will prove p β.
An exact proof term for the current goal is H2.
We will prove β {βα|p β} {β '|βα, ¬ p β}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is SepI α p β H1 H2.
Assume H2: ¬ p β.
Apply exactly1of2_I1 to the current goal.
We will prove β ' {βα|p β} {β '|βα, ¬ p β}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is ReplSepI α (λβ ⇒ ¬ p β) (λβ ⇒ β ') β H1 H2.
We will prove β PSNo α p.
Assume H3: β PSNo α p.
Apply binunionE {βα|p β} {β '|βα, ¬ p β} β H3 to the current goal.
Assume H4: β {βα|p β}.
Apply SepE α p β H4 to the current goal.
Assume H5: β α.
Assume H6: p β.
We will prove False.
An exact proof term for the current goal is H2 H6.
Assume H4: β {β '|βα, ¬ p β}.
Apply ReplSepE_impred α (λβ ⇒ ¬ p β) (λβ ⇒ β ') β H4 to the current goal.
Let γ be given.
Assume H5: γ α.
Assume H6: ¬ p γ.
Assume H7: β = γ '.
Apply tagged_not_ordinal γ to the current goal.
We will prove ordinal (γ ').
rewrite the current goal using H7 (from right to left).
An exact proof term for the current goal is Lbeta.
Theorem. (SNo_PSNo_eta_) The following is provable:
∀α x, ordinal αSNo_ α xx = PSNo α (λβ ⇒ β x)
Proof:
Let α and x be given.
Assume Ha Hx.
Apply Hx to the current goal.
Assume Hx1: x SNoElts_ α.
Assume Hx2: βα, exactly1of2 (β ' x) (β x).
Apply set_ext to the current goal.
We will prove x PSNo α (λβ ⇒ β x).
Let u be given.
Assume Hu: u x.
Apply binunionE α {β '|βα} u (Hx1 u Hu) to the current goal.
Assume H1: u α.
We will prove u {βα|β x} {β '|βα, β x}.
Apply binunionI1 to the current goal.
Apply SepI to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is Hu.
Assume H1: u {β '|βα}.
Apply ReplE_impred α (λβ ⇒ β ') u H1 to the current goal.
Let β be given.
Assume H2: β α.
Assume H3: u = β '.
We will prove u {βα|β x} {β '|βα, β x}.
Apply binunionI2 to the current goal.
We will prove u {β '|βα, β x}.
rewrite the current goal using H3 (from left to right).
We will prove β ' {β '|βα, β x}.
We prove the intermediate claim L2: β x.
Assume H4: β x.
Apply exactly1of2_E (β ' x) (β x) (Hx2 β H2) to the current goal.
Assume H5: β ' x.
Assume H6: β x.
An exact proof term for the current goal is H6 H4.
Assume H4: β ' x.
Assume H5: β x.
Apply H4 to the current goal.
We will prove (β ') x.
rewrite the current goal using H3 (from right to left).
We will prove u x.
An exact proof term for the current goal is Hu.
An exact proof term for the current goal is ReplSepI α (λβ ⇒ β x) (λβ ⇒ β ') β H2 L2.
We will prove PSNo α (λβ ⇒ β x) x.
Let u be given.
Assume Hu: u PSNo α (λβ ⇒ β x).
We will prove u x.
Apply binunionE {βα|β x} {β '|βα, β x} u Hu to the current goal.
Assume H1: u {βα|β x}.
Apply SepE α (λβ ⇒ β x) u H1 to the current goal.
Assume H2: u α.
Assume H3: u x.
An exact proof term for the current goal is H3.
Assume H1: u {β '|βα, β x}.
Apply ReplSepE_impred α (λβ ⇒ β x) (λβ ⇒ β ') u H1 to the current goal.
Let β be given.
Assume H2: β α.
Assume H3: β x.
Assume H4: u = β '.
Apply exactly1of2_E (β ' x) (β x) (Hx2 β H2) to the current goal.
Assume H5: β ' x.
Assume H6: β x.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is H5.
Assume H4: β ' x.
Assume H5: β x.
We will prove False.
An exact proof term for the current goal is H3 H5.
Definition. We define SNo to be λx ⇒ α, ordinal α SNo_ α x of type setprop.
Theorem. (SNo_SNo) The following is provable:
∀α, ordinal α∀z, SNo_ α zSNo z
Proof:
Let α be given.
Assume Ha.
Let z be given.
Assume Hz: SNo_ α z.
We will prove α, ordinal α SNo_ α z.
We use α to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is Hz.
Definition. We define SNoLev to be λx ⇒ Eps_i (λα ⇒ ordinal α SNo_ α x) of type setset.
Theorem. (SNoLev_uniq_Subq) The following is provable:
∀x alpha beta, ordinal αordinal βSNo_ α xSNo_ β xα β
Proof:
Let x, α and β be given.
Assume Ha Hb Hax Hbx.
Let γ be given.
Assume Hc: γ α.
We will prove γ β.
Apply Hax to the current goal.
Assume Hax1 Hax2.
Apply Hbx to the current goal.
Assume Hbx1 Hbx2.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered α Ha γ Hc.
Apply exactly1of2_or (γ ' x) (γ x) (Hax2 γ Hc) to the current goal.
Assume H1: γ ' x.
We prove the intermediate claim L1: γ ' β {δ '|δβ}.
An exact proof term for the current goal is Hbx1 (γ ') H1.
We prove the intermediate claim L2: γ ' β γ ' {δ '|δβ}.
An exact proof term for the current goal is binunionE β {δ '|δβ} (γ ') L1.
Apply L2 to the current goal.
Assume H2: γ ' β.
We will prove False.
An exact proof term for the current goal is tagged_notin_ordinal β γ Hb H2.
Assume H2: γ ' {δ '|δβ}.
An exact proof term for the current goal is tagged_ReplE β γ Hb Lc H2.
Assume H1: γ x.
We prove the intermediate claim L1: γ β {δ '|δβ}.
An exact proof term for the current goal is Hbx1 γ H1.
We prove the intermediate claim L2: γ β γ {δ '|δβ}.
An exact proof term for the current goal is binunionE β {δ '|δβ} γ L1.
Apply L2 to the current goal.
Assume H2: γ β.
An exact proof term for the current goal is H2.
Assume H2: γ {δ '|δβ}.
We will prove False.
An exact proof term for the current goal is ordinal_notin_tagged_Repl γ β Lc H2.
Theorem. (SNoLev_uniq) The following is provable:
∀x alpha beta, ordinal αordinal βSNo_ α xSNo_ β xα = β
Proof:
Let x, α and β be given.
Assume Ha Hb Hax Hbx.
Apply set_ext to the current goal.
An exact proof term for the current goal is SNoLev_uniq_Subq x α β Ha Hb Hax Hbx.
An exact proof term for the current goal is SNoLev_uniq_Subq x β α Hb Ha Hbx Hax.
Theorem. (SNoLev_prop) The following is provable:
∀x, SNo xordinal (SNoLev x) SNo_ (SNoLev x) x
Proof:
Let x be given.
Assume Hx: SNo x.
An exact proof term for the current goal is Eps_i_ex (λα ⇒ ordinal α SNo_ α x) Hx.
Theorem. (SNoLev_ordinal) The following is provable:
∀x, SNo xordinal (SNoLev x)
Proof:
Let x be given.
Assume Hx.
Apply SNoLev_prop x Hx to the current goal.
Assume H1 _.
An exact proof term for the current goal is H1.
Theorem. (SNoLev_) The following is provable:
∀x, SNo xSNo_ (SNoLev x) x
Proof:
Let x be given.
Assume Hx.
Apply SNoLev_prop x Hx to the current goal.
Assume _ H1.
An exact proof term for the current goal is H1.
Theorem. (SNo_PSNo_eta) The following is provable:
∀x, SNo xx = PSNo (SNoLev x) (λβ ⇒ β x)
Proof:
Let x be given.
Assume Hx.
Apply SNoLev_prop x Hx to the current goal.
Assume Hx1: ordinal (SNoLev x).
Assume Hx2: SNo_ (SNoLev x) x.
Apply SNo_PSNo_eta_ to the current goal.
We will prove ordinal (SNoLev x).
An exact proof term for the current goal is Hx1.
We will prove SNo_ (SNoLev x) x.
An exact proof term for the current goal is Hx2.
Theorem. (SNoLev_PSNo) The following is provable:
∀α, ordinal α∀p : setprop, SNoLev (PSNo α p) = α
Proof:
Let α be given.
Assume Ha: ordinal α.
Let p be given.
We prove the intermediate claim L1: SNo_ α (PSNo α p).
An exact proof term for the current goal is SNo_PSNo α Ha p.
We prove the intermediate claim L2: SNo (PSNo α p).
We will prove β, ordinal β SNo_ β (PSNo α p).
We use α to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is L1.
Apply SNoLev_prop (PSNo α p) L2 to the current goal.
Assume H2: ordinal (SNoLev (PSNo α p)).
Assume H3: SNo_ (SNoLev (PSNo α p)) (PSNo α p).
An exact proof term for the current goal is SNoLev_uniq (PSNo α p) (SNoLev (PSNo α p)) α H2 Ha H3 L1.
Theorem. (SNo_Subq) The following is provable:
∀x y, SNo xSNo ySNoLev x SNoLev y(αSNoLev x, α x α y)x y
Proof:
Let x and y be given.
Assume Hx Hy H1 H2.
Apply SNoLev_ x Hx to the current goal.
Assume Hx2a: x SNoElts_ (SNoLev x).
Assume Hx2b: βSNoLev x, exactly1of2 (β ' x) (β x).
Apply SNoLev_ y Hy to the current goal.
Assume Hy2a: y SNoElts_ (SNoLev y).
Assume Hy2b: βSNoLev y, exactly1of2 (β ' y) (β y).
Let u be given.
Assume Hu: u x.
We prove the intermediate claim L1: u SNoLev x {β '|βSNoLev x}.
An exact proof term for the current goal is Hx2a u Hu.
Apply binunionE (SNoLev x) {β '|βSNoLev x} u L1 to the current goal.
Assume H3: u SNoLev x.
Apply H2 u H3 to the current goal.
Assume H4 _.
An exact proof term for the current goal is H4 Hu.
Assume H3: u {β '|βSNoLev x}.
Apply ReplE_impred (SNoLev x) (λγ ⇒ γ ') u H3 to the current goal.
Let β be given.
Assume H4: β SNoLev x.
Assume H5: u = β '.
We prove the intermediate claim L3: β SNoLev y.
An exact proof term for the current goal is H1 β H4.
Apply exactly1of2_E (β ' y) (β y) (Hy2b β L3) to the current goal.
Assume H6: β ' y.
Assume H7: β y.
We will prove u y.
rewrite the current goal using H5 (from left to right).
An exact proof term for the current goal is H6.
Assume H6: β ' y.
Assume H7: β y.
We will prove False.
Apply exactly1of2_E (β ' x) (β x) (Hx2b β H4) to the current goal.
Assume H8: β ' x.
Assume H9: β x.
Apply H9 to the current goal.
Apply H2 β H4 to the current goal.
Assume _ H10.
An exact proof term for the current goal is H10 H7.
Assume H8: β ' x.
Assume H9: β x.
Apply H8 to the current goal.
We will prove β ' x.
rewrite the current goal using H5 (from right to left).
An exact proof term for the current goal is Hu.
Definition. We define SNoEq_ to be λα x y ⇒ PNoEq_ α (λβ ⇒ β x) (λβ ⇒ β y) of type setsetsetprop.
Theorem. (SNoEq_I) The following is provable:
∀α x y, (βα, β x β y)SNoEq_ α x y
Proof:
Let α, x and y be given.
Assume Hxy.
An exact proof term for the current goal is Hxy.
Theorem. (SNo_eq) The following is provable:
∀x y, SNo xSNo ySNoLev x = SNoLev ySNoEq_ (SNoLev x) x yx = y
Proof:
Let x and y be given.
Assume Hx Hy H1 H2.
Apply set_ext to the current goal.
We will prove x y.
Apply SNo_Subq x y Hx Hy to the current goal.
We will prove SNoLev x SNoLev y.
rewrite the current goal using H1 (from right to left).
Apply Subq_ref to the current goal.
An exact proof term for the current goal is H2.
We will prove y x.
Apply SNo_Subq y x Hy Hx to the current goal.
We will prove SNoLev y SNoLev x.
rewrite the current goal using H1 (from left to right).
Apply Subq_ref to the current goal.
Let α be given.
Assume H3: α SNoLev y.
We will prove α y α x.
Apply iff_sym to the current goal.
We will prove α x α y.
Apply H2 α to the current goal.
We will prove α SNoLev x.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is H3.
End of Section TaggedSets
Definition. We define SNoLt to be λx y ⇒ PNoLt (SNoLev x) (λβ ⇒ β x) (SNoLev y) (λβ ⇒ β y) of type setsetprop.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Definition. We define SNoLe to be λx y ⇒ PNoLe (SNoLev x) (λβ ⇒ β x) (SNoLev y) (λβ ⇒ β y) of type setsetprop.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Theorem. (SNoLtLe) The following is provable:
∀x y, x < yx y
Proof:
Let x and y be given.
Assume H1.
We will prove PNoLe (SNoLev x) (λβ ⇒ β x) (SNoLev y) (λβ ⇒ β y).
Apply PNoLeI1 to the current goal.
An exact proof term for the current goal is H1.
Theorem. (SNoLeE) The following is provable:
∀x y, SNo xSNo yx yx < y x = y
Proof:
Let x and y be given.
Assume Hx Hy.
Assume H1: PNoLe (SNoLev x) (λβ ⇒ β x) (SNoLev y) (λβ ⇒ β y).
Apply H1 to the current goal.
Assume H2: PNoLt (SNoLev x) (λβ ⇒ β x) (SNoLev y) (λβ ⇒ β y).
Apply orIL to the current goal.
An exact proof term for the current goal is H2.
Assume H2.
Apply H2 to the current goal.
Assume H2: SNoLev x = SNoLev y.
Assume H3: PNoEq_ (SNoLev x) (λβ ⇒ β x) (λβ ⇒ β y).
Apply orIR to the current goal.
An exact proof term for the current goal is SNo_eq x y Hx Hy H2 H3.
Theorem. (SNoEq_sym_) The following is provable:
∀α x y, SNoEq_ α x ySNoEq_ α y x
Proof:
Let α, x and y be given.
An exact proof term for the current goal is PNoEq_sym_ α (λβ ⇒ β x) (λβ ⇒ β y).
Theorem. (SNoEq_tra_) The following is provable:
∀α x y z, SNoEq_ α x ySNoEq_ α y zSNoEq_ α x z
Proof:
Let α, x, y and z be given.
An exact proof term for the current goal is PNoEq_tra_ α (λβ ⇒ β x) (λβ ⇒ β y) (λβ ⇒ β z).
Theorem. (SNoLtE) The following is provable:
∀x y, SNo xSNo yx < y∀p : prop, (∀z, SNo zSNoLev z SNoLev x SNoLev ySNoEq_ (SNoLev z) z xSNoEq_ (SNoLev z) z yx < zz < ySNoLev z xSNoLev z yp)(SNoLev x SNoLev ySNoEq_ (SNoLev x) x ySNoLev x yp)(SNoLev y SNoLev xSNoEq_ (SNoLev y) x ySNoLev y xp)p
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hxy: PNoLt (SNoLev x) (λβ ⇒ β x) (SNoLev y) (λβ ⇒ β y).
Let p be given.
Assume Hp1 Hp2 Hp3.
We prove the intermediate claim LLx: ordinal (SNoLev x).
Apply SNoLev_ordinal x to the current goal.
An exact proof term for the current goal is Hx.
We prove the intermediate claim LLy: ordinal (SNoLev y).
Apply SNoLev_ordinal y to the current goal.
An exact proof term for the current goal is Hy.
Apply PNoLtE (SNoLev x) (SNoLev y) (λβ ⇒ β x) (λβ ⇒ β y) Hxy to the current goal.
Assume H1: PNoLt_ (SNoLev x SNoLev y) (λβ ⇒ β x) (λβ ⇒ β y).
Apply PNoLt_E_ (SNoLev x SNoLev y) (λβ ⇒ β x) (λβ ⇒ β y) H1 to the current goal.
Let α be given.
Assume Ha: α SNoLev x SNoLev y.
Assume H2: PNoEq_ α (λβ ⇒ β x) (λβ ⇒ β y).
Assume H3: α x.
Assume H4: α y.
Apply binintersectE (SNoLev x) (SNoLev y) α Ha to the current goal.
Assume Ha1: α SNoLev x.
Assume Ha2: α SNoLev y.
We prove the intermediate claim La: ordinal α.
An exact proof term for the current goal is ordinal_Hered (SNoLev x) LLx α Ha1.
Set z to be the term PSNo α (λβ ⇒ β x).
We prove the intermediate claim L1: SNo_ α z.
Apply SNo_PSNo to the current goal.
An exact proof term for the current goal is La.
We prove the intermediate claim L2: SNo z.
We will prove α, ordinal α SNo_ α z.
We use α to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is La.
An exact proof term for the current goal is L1.
Apply SNoLev_prop z L2 to the current goal.
Assume Hz1: ordinal (SNoLev z).
Assume Hz2: SNo_ (SNoLev z) z.
We prove the intermediate claim L3: SNoLev z = α.
An exact proof term for the current goal is SNoLev_uniq z (SNoLev z) α Hz1 La Hz2 L1.
We prove the intermediate claim L4: SNoEq_ α z x.
We will prove PNoEq_ α (λβ ⇒ β z) (λβ ⇒ β x).
We will prove PNoEq_ α (λβ ⇒ β PSNo α (λβ ⇒ β x)) (λβ ⇒ β x).
Apply PNoEq_PSNo to the current goal.
An exact proof term for the current goal is La.
We prove the intermediate claim L5: SNoEq_ α z y.
Apply SNoEq_tra_ α z x y L4 to the current goal.
We will prove SNoEq_ α x y.
We will prove PNoEq_ α (λβ ⇒ β x) (λβ ⇒ β y).
An exact proof term for the current goal is H2.
Apply Hp1 z L2 to the current goal.
We will prove SNoLev z SNoLev x SNoLev y.
rewrite the current goal using L3 (from left to right).
An exact proof term for the current goal is Ha.
We will prove SNoEq_ (SNoLev z) z x.
rewrite the current goal using L3 (from left to right).
An exact proof term for the current goal is L4.
We will prove SNoEq_ (SNoLev z) z y.
rewrite the current goal using L3 (from left to right).
An exact proof term for the current goal is L5.
We will prove x < z.
We will prove PNoLt (SNoLev x) (λβ ⇒ β x) (SNoLev z) (λβ ⇒ β z).
rewrite the current goal using L3 (from left to right).
We will prove PNoLt (SNoLev x) (λβ ⇒ β x) α (λβ ⇒ β z).
Apply PNoLtI3 to the current goal.
We will prove α SNoLev x.
An exact proof term for the current goal is Ha1.
We will prove PNoEq_ α (λβ ⇒ β x) (λβ ⇒ β z).
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is L4.
We will prove α x.
An exact proof term for the current goal is H3.
We will prove z < y.
We will prove PNoLt (SNoLev z) (λβ ⇒ β z) (SNoLev y) (λβ ⇒ β y).
rewrite the current goal using L3 (from left to right).
We will prove PNoLt α (λβ ⇒ β z) (SNoLev y) (λβ ⇒ β y).
Apply PNoLtI2 to the current goal.
We will prove α SNoLev y.
An exact proof term for the current goal is Ha2.
We will prove PNoEq_ α (λβ ⇒ β z) (λβ ⇒ β y).
An exact proof term for the current goal is L5.
We will prove α y.
An exact proof term for the current goal is H4.
We will prove SNoLev z x.
rewrite the current goal using L3 (from left to right).
An exact proof term for the current goal is H3.
We will prove SNoLev z y.
rewrite the current goal using L3 (from left to right).
An exact proof term for the current goal is H4.
Assume H1: SNoLev x SNoLev y.
Assume H2: PNoEq_ (SNoLev x) (λβ ⇒ β x) (λβ ⇒ β y).
Assume H3: SNoLev x y.
Apply Hp2 to the current goal.
We will prove SNoLev x SNoLev y.
An exact proof term for the current goal is H1.
We will prove SNoEq_ (SNoLev x) x y.
An exact proof term for the current goal is H2.
We will prove SNoLev x y.
An exact proof term for the current goal is H3.
Assume H1: SNoLev y SNoLev x.
Assume H2: PNoEq_ (SNoLev y) (λβ ⇒ β x) (λβ ⇒ β y).
Assume H3: SNoLev y x.
Apply Hp3 to the current goal.
We will prove SNoLev y SNoLev x.
An exact proof term for the current goal is H1.
We will prove SNoEq_ (SNoLev y) x y.
An exact proof term for the current goal is H2.
We will prove SNoLev y x.
An exact proof term for the current goal is H3.
Theorem. (SNoLtI2) The following is provable:
∀x y, SNoLev x SNoLev ySNoEq_ (SNoLev x) x ySNoLev x yx < y
Proof:
Let x and y be given.
Assume H1 H2 H3.
We will prove PNoLt (SNoLev x) (λβ ⇒ β x) (SNoLev y) (λβ ⇒ β y).
Apply PNoLtI2 to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
An exact proof term for the current goal is H3.
Theorem. (SNoLtI3) The following is provable:
∀x y, SNoLev y SNoLev xSNoEq_ (SNoLev y) x ySNoLev y xx < y
Proof:
Let x and y be given.
Assume H1 H2 H3.
We will prove PNoLt (SNoLev x) (λβ ⇒ β x) (SNoLev y) (λβ ⇒ β y).
Apply PNoLtI3 to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
An exact proof term for the current goal is H3.
Theorem. (SNoLt_irref) The following is provable:
∀x, ¬ SNoLt x x
Proof:
Let x be given.
An exact proof term for the current goal is PNoLt_irref (SNoLev x) (λβ ⇒ β x).
Theorem. (SNoLt_trichotomy_or) The following is provable:
∀x y, SNo xSNo yx < y x = y y < x
Proof:
Let x and y be given.
Assume Hx Hy.
Apply PNoLt_trichotomy_or (SNoLev x) (SNoLev y) (λβ ⇒ β x) (λβ ⇒ β y) (SNoLev_ordinal x Hx) (SNoLev_ordinal y Hy) to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1.
Apply or3I1 to the current goal.
An exact proof term for the current goal is H1.
Assume H1.
Apply H1 to the current goal.
Assume H2: SNoLev x = SNoLev y.
Assume H3: PNoEq_ (SNoLev x) (λβ ⇒ β x) (λβ ⇒ β y).
Apply or3I2 to the current goal.
An exact proof term for the current goal is SNo_eq x y Hx Hy H2 H3.
Assume H1.
Apply or3I3 to the current goal.
An exact proof term for the current goal is H1.
Theorem. (SNoLt_trichotomy_or_impred) The following is provable:
∀x y, SNo xSNo y∀p : prop, (x < yp)(x = yp)(y < xp)p
Proof:
Let x and y be given.
Assume Hx Hy.
Let p be given.
Assume Hp1 Hp2 Hp3.
Apply SNoLt_trichotomy_or x y Hx Hy to the current goal.
Assume H.
Apply H to the current goal.
An exact proof term for the current goal is Hp1.
An exact proof term for the current goal is Hp2.
An exact proof term for the current goal is Hp3.
Theorem. (SNoLt_tra) The following is provable:
∀x y z, SNo xSNo ySNo zx < yy < zx < z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz Hxy Hyz.
We will prove PNoLt (SNoLev x) (λβ ⇒ β x) (SNoLev z) (λβ ⇒ β z).
An exact proof term for the current goal is PNoLt_tra (SNoLev x) (SNoLev y) (SNoLev z) (SNoLev_ordinal x Hx) (SNoLev_ordinal y Hy) (SNoLev_ordinal z Hz) (λβ ⇒ β x) (λβ ⇒ β y) (λβ ⇒ β z) Hxy Hyz.
Theorem. (SNoLe_ref) The following is provable:
∀x, SNoLe x x
Proof:
Let x be given.
An exact proof term for the current goal is PNoLe_ref (SNoLev x) (λβ ⇒ β x).
Theorem. (SNoLe_antisym) The following is provable:
∀x y, SNo xSNo yx yy xx = y
Proof:
Let x and y be given.
Assume Hx Hy Hxy Hyx.
Apply PNoLe_antisym (SNoLev x) (SNoLev y) (SNoLev_ordinal x Hx) (SNoLev_ordinal y Hy) (λβ ⇒ β x) (λβ ⇒ β y) Hxy Hyx to the current goal.
Assume H1: SNoLev x = SNoLev y.
Assume H2: PNoEq_ (SNoLev x) (λβ ⇒ β x) (λβ ⇒ β y).
An exact proof term for the current goal is SNo_eq x y Hx Hy H1 H2.
Theorem. (SNoLtLe_tra) The following is provable:
∀x y z, SNo xSNo ySNo zx < yy zx < z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz Hxy Hyz.
An exact proof term for the current goal is PNoLtLe_tra (SNoLev x) (SNoLev y) (SNoLev z) (SNoLev_ordinal x Hx) (SNoLev_ordinal y Hy) (SNoLev_ordinal z Hz) (λβ ⇒ β x) (λβ ⇒ β y) (λβ ⇒ β z) Hxy Hyz.
Theorem. (SNoLeLt_tra) The following is provable:
∀x y z, SNo xSNo ySNo zx yy < zx < z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz Hxy Hyz.
An exact proof term for the current goal is PNoLeLt_tra (SNoLev x) (SNoLev y) (SNoLev z) (SNoLev_ordinal x Hx) (SNoLev_ordinal y Hy) (SNoLev_ordinal z Hz) (λβ ⇒ β x) (λβ ⇒ β y) (λβ ⇒ β z) Hxy Hyz.
Theorem. (SNoLe_tra) The following is provable:
∀x y z, SNo xSNo ySNo zx yy zx z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz Hxy Hyz.
An exact proof term for the current goal is PNoLe_tra (SNoLev x) (SNoLev y) (SNoLev z) (SNoLev_ordinal x Hx) (SNoLev_ordinal y Hy) (SNoLev_ordinal z Hz) (λβ ⇒ β x) (λβ ⇒ β y) (λβ ⇒ β z) Hxy Hyz.
Theorem. (SNoLtLe_or) The following is provable:
∀x y, SNo xSNo yx < y y x
Proof:
Let x and y be given.
Assume Hx Hy.
Apply SNoLt_trichotomy_or x y Hx Hy to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: x < y.
Apply orIL to the current goal.
An exact proof term for the current goal is H1.
Assume H1: x = y.
Apply orIR to the current goal.
We will prove y x.
rewrite the current goal using H1 (from left to right).
We will prove y y.
Apply SNoLe_ref to the current goal.
Assume H1: y < x.
Apply orIR to the current goal.
We will prove y x.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is H1.
Theorem. (SNoLt_PSNo_PNoLt) The following is provable:
∀α beta, ∀p q : setprop, ordinal αordinal βPSNo α p < PSNo β qPNoLt α p β q
Proof:
Let α, β, p and q be given.
Assume Ha Hb.
We will prove PNoLt (SNoLev (PSNo α p)) (λγ ⇒ γ PSNo α p) (SNoLev (PSNo β q)) (λγ ⇒ γ PSNo β q)PNoLt α p β q.
rewrite the current goal using SNoLev_PSNo α Ha p (from left to right).
rewrite the current goal using SNoLev_PSNo β Hb q (from left to right).
Assume H1: PNoLt α (λγ ⇒ γ PSNo α p) β (λγ ⇒ γ PSNo β q).
Apply PNoEqLt_tra α β Ha Hb p (λγ ⇒ γ PSNo α p) q to the current goal.
We will prove PNoEq_ α p (λγ ⇒ γ PSNo α p).
Apply PNoEq_sym_ to the current goal.
Apply PNoEq_PSNo to the current goal.
An exact proof term for the current goal is Ha.
We will prove PNoLt α (λγ ⇒ γ PSNo α p) β q.
Apply PNoLtEq_tra α β Ha Hb (λγ ⇒ γ PSNo α p) (λγ ⇒ γ PSNo β q) q to the current goal.
An exact proof term for the current goal is H1.
We will prove PNoEq_ β (λγ ⇒ γ PSNo β q) q.
Apply PNoEq_PSNo to the current goal.
An exact proof term for the current goal is Hb.
Theorem. (PNoLt_SNoLt_PSNo) The following is provable:
∀α beta, ∀p q : setprop, ordinal αordinal βPNoLt α p β qPSNo α p < PSNo β q
Proof:
Let α, β, p and q be given.
Assume Ha Hb.
Assume H1: PNoLt α p β q.
We will prove PNoLt (SNoLev (PSNo α p)) (λγ ⇒ γ PSNo α p) (SNoLev (PSNo β q)) (λγ ⇒ γ PSNo β q).
rewrite the current goal using SNoLev_PSNo α Ha p (from left to right).
rewrite the current goal using SNoLev_PSNo β Hb q (from left to right).
We will prove PNoLt α (λγ ⇒ γ PSNo α p) β (λγ ⇒ γ PSNo β q).
Apply PNoEqLt_tra α β Ha Hb (λγ ⇒ γ PSNo α p) p (λγ ⇒ γ PSNo β q) to the current goal.
We will prove PNoEq_ α (λγ ⇒ γ PSNo α p) p.
Apply PNoEq_PSNo to the current goal.
An exact proof term for the current goal is Ha.
We will prove PNoLt α p β (λγ ⇒ γ PSNo β q).
Apply PNoLtEq_tra α β Ha Hb p q (λγ ⇒ γ PSNo β q) to the current goal.
An exact proof term for the current goal is H1.
We will prove PNoEq_ β q (λγ ⇒ γ PSNo β q).
Apply PNoEq_sym_ to the current goal.
Apply PNoEq_PSNo to the current goal.
An exact proof term for the current goal is Hb.
Definition. We define SNoCut to be λL R ⇒ PSNo (PNo_bd (λα p ⇒ ordinal α PSNo α p L) (λα p ⇒ ordinal α PSNo α p R)) (PNo_pred (λα p ⇒ ordinal α PSNo α p L) (λα p ⇒ ordinal α PSNo α p R)) of type setsetset.
Definition. We define SNoCutP to be λL R ⇒ (xL, SNo x) (yR, SNo y) (xL, yR, x < y) of type setsetprop.
Theorem. (SNoCutP_SNoCut) The following is provable:
∀L R, SNoCutP L RSNo (SNoCut L R) SNoLev (SNoCut L R) ordsucc ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))) (xL, x < SNoCut L R) (yR, SNoCut L R < y) (∀z, SNo z(xL, x < z)(yR, z < y)SNoLev (SNoCut L R) SNoLev z SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) z)
Proof:
Let L and R be given.
Assume HC: SNoCutP L R.
Apply HC to the current goal.
Assume HC.
Apply HC to the current goal.
Assume HL: xL, SNo x.
Assume HR: yR, SNo y.
Assume HLR: xL, yR, x < y.
Set L' to be the term λα p ⇒ ordinal α PSNo α p L of type set(setprop)prop.
Set R' to be the term λα p ⇒ ordinal α PSNo α p R of type set(setprop)prop.
Set tau to be the term PNo_bd L' R'.
Set w to be the term PNo_pred L' R'.
Set alpha to be the term xLordsucc (SNoLev x).
Set beta to be the term yRordsucc (SNoLev y).
We will prove SNo (SNoCut L R) SNoLev (SNoCut L R) ordsucc (α β) (xL, x < SNoCut L R) (yR, SNoCut L R < y) (∀z, SNo z(xL, x < z)(yR, z < y)SNoLev (SNoCut L R) SNoLev z PNoEq_ (SNoLev (SNoCut L R)) (λγ ⇒ γ SNoCut L R) (λγ ⇒ γ z)).
We prove the intermediate claim LLR: PNoLt_pwise L' R'.
Let γ be given.
Assume Hc: ordinal γ.
Let p be given.
Assume H1: L' γ p.
Apply H1 to the current goal.
Assume _ H1.
Let δ be given.
Assume Hd: ordinal δ.
Let q be given.
Assume H2: R' δ q.
Apply H2 to the current goal.
Assume _ H2.
We will prove PNoLt γ p δ q.
Apply SNoLt_PSNo_PNoLt γ δ p q Hc Hd to the current goal.
We will prove PSNo γ p < PSNo δ q.
An exact proof term for the current goal is HLR (PSNo γ p) H1 (PSNo δ q) H2.
We prove the intermediate claim La: ordinal α.
Apply ordinal_famunion L (λx ⇒ ordsucc (SNoLev x)) to the current goal.
Let x be given.
Assume Hx: x L.
We will prove ordinal (ordsucc (SNoLev x)).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
We will prove SNo x.
An exact proof term for the current goal is HL x Hx.
We prove the intermediate claim Lb: ordinal β.
Apply ordinal_famunion R (λy ⇒ ordsucc (SNoLev y)) to the current goal.
Let y be given.
Assume Hy: y R.
We will prove ordinal (ordsucc (SNoLev y)).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
We will prove SNo y.
An exact proof term for the current goal is HR y Hy.
We prove the intermediate claim Lab: ordinal (α β).
Apply ordinal_linear α β La Lb to the current goal.
We will prove α βordinal (α β).
rewrite the current goal using Subq_binunion_eq α β (from left to right).
We will prove α β = βordinal (α β).
Assume H1.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is Lb.
We will prove β αordinal (α β).
rewrite the current goal using Subq_binunion_eq β α (from left to right).
We will prove β α = αordinal (α β).
Assume H1.
rewrite the current goal using binunion_com (from left to right).
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is La.
We prove the intermediate claim LLab: PNo_lenbdd (α β) L'.
Let γ be given.
Let p be given.
Assume H1.
Apply H1 to the current goal.
Assume H1: ordinal γ.
Assume H2: PSNo γ p L.
We will prove γ α β.
Apply binunionI1 to the current goal.
We will prove γ xLordsucc (SNoLev x).
Apply famunionI L (λx ⇒ ordsucc (SNoLev x)) (PSNo γ p) γ to the current goal.
We will prove PSNo γ p L.
An exact proof term for the current goal is H2.
We will prove γ ordsucc (SNoLev (PSNo γ p)).
rewrite the current goal using SNoLev_PSNo γ H1 p (from left to right).
We will prove γ ordsucc γ.
Apply ordsuccI2 to the current goal.
We prove the intermediate claim LRab: PNo_lenbdd (α β) R'.
Let γ be given.
Let p be given.
Assume H1.
Apply H1 to the current goal.
Assume H1: ordinal γ.
Assume H2: PSNo γ p R.
We will prove γ α β.
Apply binunionI2 to the current goal.
We will prove γ yRordsucc (SNoLev y).
Apply famunionI R (λy ⇒ ordsucc (SNoLev y)) (PSNo γ p) γ to the current goal.
We will prove PSNo γ p R.
An exact proof term for the current goal is H2.
We will prove γ ordsucc (SNoLev (PSNo γ p)).
rewrite the current goal using SNoLev_PSNo γ H1 p (from left to right).
We will prove γ ordsucc γ.
Apply ordsuccI2 to the current goal.
Apply PNo_bd_pred L' R' LLR (α β) Lab LLab LRab to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: ordinal tau.
Assume H2: PNo_strict_imv L' R' tau w.
Assume H3: γtau, ∀q : setprop, ¬ PNo_strict_imv L' R' γ q.
Apply H2 to the current goal.
Assume H4: PNo_strict_upperbd L' tau w.
Assume H5: PNo_strict_lowerbd R' tau w.
We prove the intermediate claim LNoC: SNo (SNoCut L R).
We will prove SNo (PSNo tau w).
We will prove α, ordinal α SNo_ α (PSNo tau w).
We use tau to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H1.
We will prove SNo_ tau (PSNo tau w).
Apply SNo_PSNo tau to the current goal.
We will prove ordinal tau.
An exact proof term for the current goal is H1.
We prove the intermediate claim LLleveqtau: SNoLev (SNoCut L R) = tau.
An exact proof term for the current goal is SNoLev_PSNo tau H1 (PNo_pred L' R').
We prove the intermediate claim LLbdtau: tau ordsucc (α β).
An exact proof term for the current goal is PNo_bd_In L' R' LLR (α β) Lab LLab LRab.
We prove the intermediate claim LLbd: SNoLev (SNoCut L R) ordsucc (α β).
rewrite the current goal using LLleveqtau (from left to right).
An exact proof term for the current goal is LLbdtau.
We prove the intermediate claim LLecw: PNoEq_ tau (λγ ⇒ γ SNoCut L R) w.
We will prove PNoEq_ tau (λγ ⇒ γ PSNo tau w) w.
An exact proof term for the current goal is PNoEq_PSNo tau H1 w.
We prove the intermediate claim LLC: ordinal (SNoLev (SNoCut L R)).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is LNoC.
We prove the intermediate claim LL: xL, x < SNoCut L R.
Let x be given.
Assume Hx: x L.
We will prove x < SNoCut L R.
We will prove x < PSNo tau w.
We prove the intermediate claim L1: SNo x.
An exact proof term for the current goal is HL x Hx.
We prove the intermediate claim LLx: ordinal (SNoLev x).
An exact proof term for the current goal is SNoLev_ordinal x L1.
We prove the intermediate claim L2: x = PSNo (SNoLev x) (λγ ⇒ γ x).
Apply SNo_PSNo_eta to the current goal.
An exact proof term for the current goal is L1.
We prove the intermediate claim L3: L' (SNoLev x) (λγ ⇒ γ x).
We will prove ordinal (SNoLev x) PSNo (SNoLev x) (λγ ⇒ γ x) L.
Apply andI to the current goal.
An exact proof term for the current goal is LLx.
rewrite the current goal using L2 (from right to left).
An exact proof term for the current goal is Hx.
We will prove x < PSNo tau w.
rewrite the current goal using L2 (from left to right).
Apply PNoLt_SNoLt_PSNo (SNoLev x) tau (λγ ⇒ γ x) w LLx H1 to the current goal.
We will prove PNoLt (SNoLev x) (λγ ⇒ γ x) tau w.
An exact proof term for the current goal is H4 (SNoLev x) LLx (λγ ⇒ γ x) L3.
We prove the intermediate claim LR: yR, SNoCut L R < y.
Let y be given.
Assume Hy: y R.
We will prove SNoCut L R < y.
We will prove PSNo tau w < y.
We prove the intermediate claim L1: SNo y.
An exact proof term for the current goal is HR y Hy.
We prove the intermediate claim LLy: ordinal (SNoLev y).
An exact proof term for the current goal is SNoLev_ordinal y L1.
We prove the intermediate claim L2: y = PSNo (SNoLev y) (λγ ⇒ γ y).
Apply SNo_PSNo_eta to the current goal.
An exact proof term for the current goal is L1.
We prove the intermediate claim L3: R' (SNoLev y) (λγ ⇒ γ y).
We will prove ordinal (SNoLev y) PSNo (SNoLev y) (λγ ⇒ γ y) R.
Apply andI to the current goal.
An exact proof term for the current goal is LLy.
rewrite the current goal using L2 (from right to left).
An exact proof term for the current goal is Hy.
We will prove PSNo tau w < y.
rewrite the current goal using L2 (from left to right).
Apply PNoLt_SNoLt_PSNo tau (SNoLev y) w (λγ ⇒ γ y) H1 LLy to the current goal.
We will prove PNoLt tau w (SNoLev y) (λγ ⇒ γ y).
An exact proof term for the current goal is H5 (SNoLev y) LLy (λγ ⇒ γ y) L3.
Apply and5I to the current goal.
An exact proof term for the current goal is LNoC.
An exact proof term for the current goal is LLbd.
An exact proof term for the current goal is LL.
An exact proof term for the current goal is LR.
We will prove ∀z, SNo z(xL, x < z)(yR, z < y)SNoLev (SNoCut L R) SNoLev z PNoEq_ (SNoLev (SNoCut L R)) (λγ ⇒ γ SNoCut L R) (λγ ⇒ γ z).
Let z be given.
Assume Hz: SNo z.
Assume H10: xL, x < z.
Assume H11: yR, z < y.
We prove the intermediate claim LLz: ordinal (SNoLev z).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hz.
We prove the intermediate claim Lzimv: PNo_strict_imv L' R' (SNoLev z) (λγ ⇒ γ z).
We will prove PNo_strict_upperbd L' (SNoLev z) (λγ ⇒ γ z) PNo_strict_lowerbd R' (SNoLev z) (λγ ⇒ γ z).
Apply andI to the current goal.
Let γ be given.
Assume Hc: ordinal γ.
Let q be given.
Assume Hq: L' γ q.
We will prove PNoLt γ q (SNoLev z) (λγ ⇒ γ z).
Apply Hq to the current goal.
Assume Hq1: ordinal γ.
Assume Hq2: PSNo γ q L.
Apply SNoLt_PSNo_PNoLt γ (SNoLev z) q (λγ ⇒ γ z) Hc LLz to the current goal.
We will prove PSNo γ q < PSNo (SNoLev z) (λγ ⇒ γ z).
rewrite the current goal using SNo_PSNo_eta z Hz (from right to left).
We will prove PSNo γ q < z.
An exact proof term for the current goal is H10 (PSNo γ q) Hq2.
Let γ be given.
Assume Hc: ordinal γ.
Let q be given.
Assume Hq: R' γ q.
We will prove PNoLt (SNoLev z) (λγ ⇒ γ z) γ q.
Apply Hq to the current goal.
Assume Hq1: ordinal γ.
Assume Hq2: PSNo γ q R.
Apply SNoLt_PSNo_PNoLt (SNoLev z) γ (λγ ⇒ γ z) q LLz Hc to the current goal.
We will prove PSNo (SNoLev z) (λγ ⇒ γ z) < PSNo γ q.
rewrite the current goal using SNo_PSNo_eta z Hz (from right to left).
We will prove z < PSNo γ q.
An exact proof term for the current goal is H11 (PSNo γ q) Hq2.
We prove the intermediate claim LLznt: SNoLev z tau.
Assume H12: SNoLev z tau.
An exact proof term for the current goal is H3 (SNoLev z) H12 (λγ ⇒ γ z) Lzimv.
We prove the intermediate claim LLzlet: tau SNoLev z.
Apply ordinal_In_Or_Subq (SNoLev z) tau LLz H1 to the current goal.
Assume H12: SNoLev z tau.
We will prove False.
An exact proof term for the current goal is LLznt H12.
Assume H12.
An exact proof term for the current goal is H12.
We will prove SNoLev (SNoCut L R) SNoLev z PNoEq_ (SNoLev (SNoCut L R)) (λγ ⇒ γ SNoCut L R) (λγ ⇒ γ z).
rewrite the current goal using LLleveqtau (from left to right).
We will prove tau SNoLev z PNoEq_ tau (λγ ⇒ γ SNoCut L R) (λγ ⇒ γ z).
Apply andI to the current goal.
We will prove tau SNoLev z.
An exact proof term for the current goal is LLzlet.
We will prove PNoEq_ tau (λγ ⇒ γ SNoCut L R) (λγ ⇒ γ z).
Apply PNoLt_trichotomy_or_ w (λγ ⇒ γ z) tau H1 to the current goal.
Assume H12.
Apply H12 to the current goal.
Assume H12: PNoLt_ tau w (λγ ⇒ γ z).
We will prove False.
Apply H12 to the current goal.
Let δ be given.
Assume H13.
Apply H13 to the current goal.
Assume Hd: δ tau.
Assume H13.
Apply H13 to the current goal.
Assume H13.
Apply H13 to the current goal.
Assume H13: PNoEq_ δ w (λγ ⇒ γ z).
Assume H14: ¬ w δ.
Assume H15: δ z.
We prove the intermediate claim Ld: ordinal δ.
An exact proof term for the current goal is ordinal_Hered tau H1 δ Hd.
We prove the intermediate claim Lsd: ordinal (ordsucc δ).
An exact proof term for the current goal is ordinal_ordsucc δ Ld.
Set z0 to be the term λeps ⇒ eps z eps δ of type setprop.
Set z1 to be the term λeps ⇒ eps z eps = δ of type setprop.
We prove the intermediate claim Lnz0d: ¬ z0 δ.
Assume H10.
Apply H10 to the current goal.
Assume H11: δ z.
Assume H12: δ δ.
Apply H12 to the current goal.
Use reflexivity.
We prove the intermediate claim Lz1d: z1 δ.
We will prove δ z δ = δ.
Apply orIR to the current goal.
Use reflexivity.
Apply H3 δ Hd (λγ ⇒ γ z) to the current goal.
We will prove PNo_strict_imv L' R' δ (λγ ⇒ γ z).
Apply PNo_rel_split_imv_imp_strict_imv L' R' δ Ld (λγ ⇒ γ z) to the current goal.
We will prove PNo_rel_strict_split_imv L' R' δ (λγ ⇒ γ z).
We will prove PNo_rel_strict_imv L' R' (ordsucc δ) z0 PNo_rel_strict_imv L' R' (ordsucc δ) z1.
Apply andI to the current goal.
We will prove PNo_rel_strict_imv L' R' (ordsucc δ) z0.
Apply PNoEq_rel_strict_imv L' R' (ordsucc δ) Lsd w z0 to the current goal.
We will prove PNoEq_ (ordsucc δ) w z0.
Let eps be given.
Assume He: eps ordsucc δ.
Apply ordsuccE δ eps He to the current goal.
Assume He1: eps δ.
Apply iff_trans (w eps) (eps z) (z0 eps) to the current goal.
An exact proof term for the current goal is H13 eps He1.
An exact proof term for the current goal is PNo_extend0_eq δ (λγ ⇒ γ z) eps He1.
Assume He1: eps = δ.
We will prove w eps z0 eps.
rewrite the current goal using He1 (from left to right).
We will prove w δ z0 δ.
Apply iffI to the current goal.
Assume H16: w δ.
We will prove False.
An exact proof term for the current goal is H14 H16.
Assume H16: z0 δ.
We will prove False.
An exact proof term for the current goal is Lnz0d H16.
We will prove PNo_rel_strict_imv L' R' (ordsucc δ) w.
Apply PNo_strict_imv_imp_rel_strict_imv L' R' tau H1 (ordsucc δ) to the current goal.
We will prove ordsucc δ ordsucc tau.
Apply ordinal_ordsucc_In tau H1 to the current goal.
An exact proof term for the current goal is Hd.
We will prove PNo_strict_imv L' R' tau w.
An exact proof term for the current goal is H2.
We will prove PNo_rel_strict_imv L' R' (ordsucc δ) z1.
Apply PNoEq_rel_strict_imv L' R' (ordsucc δ) Lsd (λγ ⇒ γ z) z1 to the current goal.
We will prove PNoEq_ (ordsucc δ) (λγ ⇒ γ z) z1.
Let eps be given.
Assume He: eps ordsucc δ.
Apply ordsuccE δ eps He to the current goal.
Assume He1: eps δ.
An exact proof term for the current goal is PNo_extend1_eq δ (λγ ⇒ γ z) eps He1.
Assume He1: eps = δ.
We will prove eps z z1 eps.
rewrite the current goal using He1 (from left to right).
We will prove δ z z1 δ.
Apply iffI to the current goal.
Assume _.
An exact proof term for the current goal is Lz1d.
Assume _.
An exact proof term for the current goal is H15.
We will prove PNo_rel_strict_imv L' R' (ordsucc δ) (λγ ⇒ γ z).
Apply PNo_strict_imv_imp_rel_strict_imv L' R' (SNoLev z) LLz (ordsucc δ) to the current goal.
We will prove ordsucc δ ordsucc (SNoLev z).
Apply ordinal_ordsucc_In (SNoLev z) LLz to the current goal.
We will prove δ SNoLev z.
Apply LLzlet to the current goal.
We will prove δ tau.
An exact proof term for the current goal is Hd.
We will prove PNo_strict_imv L' R' (SNoLev z) (λγ ⇒ γ z).
An exact proof term for the current goal is Lzimv.
Assume H12: PNoEq_ tau w (λγ ⇒ γ z).
Apply PNoEq_tra_ tau (λγ ⇒ γ SNoCut L R) w (λγ ⇒ γ z) to the current goal.
We will prove PNoEq_ tau (λγ ⇒ γ SNoCut L R) w.
An exact proof term for the current goal is LLecw.
We will prove PNoEq_ tau w (λγ ⇒ γ z).
An exact proof term for the current goal is H12.
Assume H12: PNoLt_ tau (λγ ⇒ γ z) w.
We will prove False.
Apply H12 to the current goal.
Let δ be given.
Assume H13.
Apply H13 to the current goal.
Assume Hd: δ tau.
Assume H13.
Apply H13 to the current goal.
Assume H13.
Apply H13 to the current goal.
Assume H13: PNoEq_ δ (λγ ⇒ γ z) w.
Assume H14: δ z.
Assume H15: w δ.
We prove the intermediate claim Ld: ordinal δ.
An exact proof term for the current goal is ordinal_Hered tau H1 δ Hd.
We prove the intermediate claim Lsd: ordinal (ordsucc δ).
An exact proof term for the current goal is ordinal_ordsucc δ Ld.
Set z0 to be the term λeps ⇒ eps z eps δ of type setprop.
Set z1 to be the term λeps ⇒ eps z eps = δ of type setprop.
We prove the intermediate claim Lnz0d: ¬ z0 δ.
Assume H10.
Apply H10 to the current goal.
Assume H11: δ z.
Assume H12: δ δ.
Apply H12 to the current goal.
Use reflexivity.
We prove the intermediate claim Lz1d: z1 δ.
We will prove δ z δ = δ.
Apply orIR to the current goal.
Use reflexivity.
Apply H3 δ Hd (λγ ⇒ γ z) to the current goal.
We will prove PNo_strict_imv L' R' δ (λγ ⇒ γ z).
Apply PNo_rel_split_imv_imp_strict_imv L' R' δ Ld (λγ ⇒ γ z) to the current goal.
We will prove PNo_rel_strict_split_imv L' R' δ (λγ ⇒ γ z).
We will prove PNo_rel_strict_imv L' R' (ordsucc δ) z0 PNo_rel_strict_imv L' R' (ordsucc δ) z1.
Apply andI to the current goal.
We will prove PNo_rel_strict_imv L' R' (ordsucc δ) z0.
Apply PNoEq_rel_strict_imv L' R' (ordsucc δ) Lsd (λγ ⇒ γ z) z0 to the current goal.
We will prove PNoEq_ (ordsucc δ) (λγ ⇒ γ z) z0.
Let eps be given.
Assume He: eps ordsucc δ.
Apply ordsuccE δ eps He to the current goal.
Assume He1: eps δ.
An exact proof term for the current goal is PNo_extend0_eq δ (λγ ⇒ γ z) eps He1.
Assume He1: eps = δ.
We will prove eps z z0 eps.
rewrite the current goal using He1 (from left to right).
We will prove δ z z0 δ.
Apply iffI to the current goal.
Assume H16: δ z.
We will prove False.
An exact proof term for the current goal is H14 H16.
Assume H16: z0 δ.
We will prove False.
An exact proof term for the current goal is Lnz0d H16.
We will prove PNo_rel_strict_imv L' R' (ordsucc δ) (λγ ⇒ γ z).
Apply PNo_strict_imv_imp_rel_strict_imv L' R' (SNoLev z) LLz (ordsucc δ) to the current goal.
We will prove ordsucc δ ordsucc (SNoLev z).
Apply ordinal_ordsucc_In (SNoLev z) LLz to the current goal.
We will prove δ SNoLev z.
Apply LLzlet to the current goal.
We will prove δ tau.
An exact proof term for the current goal is Hd.
We will prove PNo_strict_imv L' R' (SNoLev z) (λγ ⇒ γ z).
An exact proof term for the current goal is Lzimv.
We will prove PNo_rel_strict_imv L' R' (ordsucc δ) z1.
Apply PNoEq_rel_strict_imv L' R' (ordsucc δ) Lsd w z1 to the current goal.
We will prove PNoEq_ (ordsucc δ) w z1.
Let eps be given.
Assume He: eps ordsucc δ.
Apply ordsuccE δ eps He to the current goal.
Assume He1: eps δ.
Apply iff_trans (w eps) (eps z) (z1 eps) to the current goal.
Apply iff_sym to the current goal.
An exact proof term for the current goal is H13 eps He1.
An exact proof term for the current goal is PNo_extend1_eq δ (λγ ⇒ γ z) eps He1.
Assume He1: eps = δ.
We will prove w eps z1 eps.
rewrite the current goal using He1 (from left to right).
We will prove w δ z1 δ.
Apply iffI to the current goal.
Assume _.
An exact proof term for the current goal is Lz1d.
Assume _.
An exact proof term for the current goal is H15.
We will prove PNo_rel_strict_imv L' R' (ordsucc δ) w.
Apply PNo_strict_imv_imp_rel_strict_imv L' R' tau H1 (ordsucc δ) to the current goal.
We will prove ordsucc δ ordsucc tau.
Apply ordinal_ordsucc_In tau H1 to the current goal.
An exact proof term for the current goal is Hd.
We will prove PNo_strict_imv L' R' tau w.
An exact proof term for the current goal is H2.
Theorem. (SNoCutP_SNoCut_impred) The following is provable:
∀L R, SNoCutP L R∀p : prop, (SNo (SNoCut L R)SNoLev (SNoCut L R) ordsucc ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y)))(xL, x < SNoCut L R)(yR, SNoCut L R < y)(∀z, SNo z(xL, x < z)(yR, z < y)SNoLev (SNoCut L R) SNoLev z SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) z)p)p
Proof:
Let L and R be given.
Assume HLR.
Let p be given.
Assume Hp.
Apply SNoCutP_SNoCut L R HLR to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
An exact proof term for the current goal is Hp.
Theorem. (SNoCutP_L_0) The following is provable:
∀L, (xL, SNo x)SNoCutP L 0
Proof:
Let L be given.
Assume H1.
We will prove (xL, SNo x) (y0, SNo y) (xL, y0, x < y).
Apply and3I to the current goal.
An exact proof term for the current goal is H1.
Let y be given.
Assume Hy.
We will prove False.
An exact proof term for the current goal is EmptyE y Hy.
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
We will prove False.
An exact proof term for the current goal is EmptyE y Hy.
Theorem. (SNoCutP_0_0) The following is provable:
Proof:
Apply SNoCutP_L_0 to the current goal.
Let x be given.
Assume Hx.
We will prove False.
An exact proof term for the current goal is EmptyE x Hx.
Definition. We define SNoS_ to be λα ⇒ {x𝒫 (SNoElts_ α)|βα, SNo_ β x} of type setset.
Theorem. (SNoS_E) The following is provable:
∀α, ordinal αxSNoS_ α, βα, SNo_ β x
Proof:
Let α be given.
Assume Ha: ordinal α.
Let x be given.
Assume H1: x SNoS_ α.
We will prove βα, SNo_ β x.
An exact proof term for the current goal is SepE2 (𝒫 (SNoElts_ α)) (λx ⇒ βα, SNo_ β x) x H1.
Beginning of Section TaggedSets2
Let tag : setsetλα ⇒ SetAdjoin α {1}
Notation. We use ' as a postfix operator with priority 100 corresponding to applying term tag.
Theorem. (SNoS_I) The following is provable:
∀α, ordinal α∀x, βα, SNo_ β xx SNoS_ α
Proof:
Let α be given.
Assume Ha: ordinal α.
Let x be given.
Let β be given.
Assume Hb: β α.
Assume H1: SNo_ β x.
Apply H1 to the current goal.
Assume H2: x SNoElts_ β.
Assume H3: γβ, exactly1of2 (γ ' x) (γ x).
We will prove x SNoS_ α.
We will prove x {x𝒫 (SNoElts_ α)|γα, SNo_ γ x}.
Apply SepI to the current goal.
We will prove x 𝒫 (SNoElts_ α).
Apply PowerI to the current goal.
We will prove x SNoElts_ α.
Apply Subq_tra x (SNoElts_ β) (SNoElts_ α) H2 to the current goal.
We will prove SNoElts_ β SNoElts_ α.
Apply SNoElts_mon to the current goal.
Apply Ha to the current goal.
Assume Ha1 _.
An exact proof term for the current goal is Ha1 β Hb.
We will prove γα, SNo_ γ x.
We use β to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hb.
An exact proof term for the current goal is H1.
Theorem. (SNoS_I2) The following is provable:
∀x y, SNo xSNo ySNoLev x SNoLev yx SNoS_ (SNoLev y)
Proof:
Let x and y be given.
Assume Hx Hy Hxy.
An exact proof term for the current goal is SNoS_I (SNoLev y) (SNoLev_ordinal y Hy) x (SNoLev x) Hxy (SNoLev_ x Hx).
Theorem. (SNoS_Subq) The following is provable:
∀α beta, ordinal αordinal βα βSNoS_ α SNoS_ β
Proof:
Let α and β be given.
Assume Ha Hb Hab.
Let x be given.
Assume Hx: x SNoS_ α.
Apply SNoS_E α Ha x Hx to the current goal.
Let γ be given.
Assume Hc.
Apply Hc to the current goal.
Assume Hc1: γ α.
Assume Hc2: SNo_ γ x.
An exact proof term for the current goal is SNoS_I β Hb x γ (Hab γ Hc1) Hc2.
Theorem. (SNoLev_uniq2) The following is provable:
∀α, ordinal α∀x, SNo_ α xSNoLev x = α
Proof:
Let α be given.
Assume Ha.
Let x be given.
Assume Hx.
Apply SNoLev_prop x (SNo_SNo α Ha x Hx) to the current goal.
Assume Hx1: ordinal (SNoLev x).
Assume Hx2: SNo_ (SNoLev x) x.
Apply SNoLev_uniq x to the current goal.
An exact proof term for the current goal is Hx1.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is Hx2.
An exact proof term for the current goal is Hx.
Theorem. (SNoS_E2) The following is provable:
∀α, ordinal αxSNoS_ α, ∀p : prop, (SNoLev x αordinal (SNoLev x)SNo xSNo_ (SNoLev x) xp)p
Proof:
Let α be given.
Assume Ha.
Let x be given.
Assume Hx.
Let p be given.
Assume Hp.
Apply SNoS_E α Ha x Hx to the current goal.
Let β be given.
Assume H1.
Apply H1 to the current goal.
Assume Hb: β α.
Assume H1: SNo_ β x.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered α Ha β Hb.
We prove the intermediate claim Lx: SNo x.
An exact proof term for the current goal is SNo_SNo β Lb x H1.
Apply SNoLev_prop x Lx to the current goal.
Assume Hx1: ordinal (SNoLev x).
Assume Hx2: SNo_ (SNoLev x) x.
We prove the intermediate claim Lxb: SNoLev x = β.
An exact proof term for the current goal is SNoLev_uniq2 β Lb x H1.
We prove the intermediate claim Lxa: SNoLev x α.
rewrite the current goal using Lxb (from left to right).
An exact proof term for the current goal is Hb.
An exact proof term for the current goal is Hp Lxa Hx1 Lx Hx2.
Theorem. (SNoS_In_neq) The following is provable:
∀w, SNo wxSNoS_ (SNoLev w), x w
Proof:
Let w be given.
Assume Hw: SNo w.
Let x be given.
Assume Hx: x SNoS_ (SNoLev w).
Assume Hxw: x = w.
Apply SNoLev_prop w Hw to the current goal.
Assume Hw1: ordinal (SNoLev w).
Assume Hw2: SNo_ (SNoLev w) w.
Apply SNoS_E2 (SNoLev w) Hw1 x Hx to the current goal.
Assume Hx1: SNoLev x SNoLev w.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
We will prove False.
Apply In_irref (SNoLev x) to the current goal.
rewrite the current goal using Hxw (from left to right) at position 2.
An exact proof term for the current goal is Hx1.
Theorem. (SNoS_SNoLev) The following is provable:
∀z, SNo zz SNoS_ (ordsucc (SNoLev z))
Proof:
Let z be given.
Assume Hz: SNo z.
Apply SNoLev_prop z Hz to the current goal.
Assume Hz1: ordinal (SNoLev z).
Assume Hz2: SNo_ (SNoLev z) z.
An exact proof term for the current goal is SNoS_I (ordsucc (SNoLev z)) (ordinal_ordsucc (SNoLev z) Hz1) z (SNoLev z) (ordsuccI2 (SNoLev z)) Hz2.
Definition. We define SNoL to be λz ⇒ {xSNoS_ (SNoLev z)|x < z} of type setset.
Definition. We define SNoR to be λz ⇒ {ySNoS_ (SNoLev z)|z < y} of type setset.
Theorem. (SNoCutP_SNoL_SNoR) The following is provable:
∀z, SNo zSNoCutP (SNoL z) (SNoR z)
Proof:
Let z be given.
Assume Hz: SNo z.
Set L to be the term SNoL z.
Set R to be the term SNoR z.
We prove the intermediate claim LLz: ordinal (SNoLev z).
An exact proof term for the current goal is SNoLev_ordinal z Hz.
We prove the intermediate claim L1: xL, SNo x.
Let x be given.
Assume Hx: x L.
We will prove α, ordinal α SNo_ α x.
We prove the intermediate claim L1a: x SNoS_ (SNoLev z).
An exact proof term for the current goal is SepE1 (SNoS_ (SNoLev z)) (λx ⇒ x < z) x Hx.
Apply SNoS_E (SNoLev z) LLz x L1a to the current goal.
Let β be given.
Assume H1.
Apply H1 to the current goal.
Assume Hb: β SNoLev z.
Assume H1: SNo_ β x.
We use β to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is ordinal_Hered (SNoLev z) LLz β Hb.
An exact proof term for the current goal is H1.
We prove the intermediate claim L2: yR, SNo y.
Let y be given.
Assume Hy: y R.
We will prove α, ordinal α SNo_ α y.
We prove the intermediate claim L2a: y SNoS_ (SNoLev z).
An exact proof term for the current goal is SepE1 (SNoS_ (SNoLev z)) (λy ⇒ z < y) y Hy.
Apply SNoS_E (SNoLev z) LLz y L2a to the current goal.
Let β be given.
Assume H1.
Apply H1 to the current goal.
Assume Hb: β SNoLev z.
Assume H1: SNo_ β y.
We use β to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is ordinal_Hered (SNoLev z) LLz β Hb.
An exact proof term for the current goal is H1.
We prove the intermediate claim L3: xL, yR, x < y.
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
Apply SNoLt_tra x z y (L1 x Hx) Hz (L2 y Hy) to the current goal.
We will prove x < z.
An exact proof term for the current goal is SepE2 (SNoS_ (SNoLev z)) (λx ⇒ x < z) x Hx.
We will prove z < y.
An exact proof term for the current goal is SepE2 (SNoS_ (SNoLev z)) (λy ⇒ z < y) y Hy.
We will prove SNoCutP L R.
We will prove (xL, SNo x) (yR, SNo y) (xL, yR, x < y).
Apply and3I to the current goal.
An exact proof term for the current goal is L1.
An exact proof term for the current goal is L2.
An exact proof term for the current goal is L3.
Theorem. (SNoL_E) The following is provable:
∀x, SNo xwSNoL x, ∀p : prop, (SNo wSNoLev w SNoLev xw < xp)p
Proof:
Let x be given.
Assume Hx: SNo x.
Let w be given.
Assume Hw: w SNoL x.
Let p be given.
Assume Hp.
Apply SepE (SNoS_ (SNoLev x)) (λw ⇒ w < x) w Hw to the current goal.
Assume Hw1: w SNoS_ (SNoLev x).
Assume Hw2: w < x.
Apply SNoS_E2 (SNoLev x) (SNoLev_ordinal x Hx) w Hw1 to the current goal.
Assume Hw3: SNoLev w SNoLev x.
Assume Hw4: ordinal (SNoLev w).
Assume Hw5: SNo w.
Assume Hw6: SNo_ (SNoLev w) w.
An exact proof term for the current goal is Hp Hw5 Hw3 Hw2.
Theorem. (SNoR_E) The following is provable:
∀x, SNo xzSNoR x, ∀p : prop, (SNo zSNoLev z SNoLev xx < zp)p
Proof:
Let x be given.
Assume Hx: SNo x.
Let z be given.
Assume Hz: z SNoR x.
Let p be given.
Assume Hp.
Apply SepE (SNoS_ (SNoLev x)) (λz ⇒ x < z) z Hz to the current goal.
Assume Hz1: z SNoS_ (SNoLev x).
Assume Hz2: x < z.
Apply SNoS_E2 (SNoLev x) (SNoLev_ordinal x Hx) z Hz1 to the current goal.
Assume Hz3: SNoLev z SNoLev x.
Assume Hz4: ordinal (SNoLev z).
Assume Hz5: SNo z.
Assume Hz6: SNo_ (SNoLev z) z.
An exact proof term for the current goal is Hp Hz5 Hz3 Hz2.
Theorem. (SNoL_SNoS_) The following is provable:
∀z, SNoL z SNoS_ (SNoLev z)
Proof:
Let z be given.
An exact proof term for the current goal is Sep_Subq (SNoS_ (SNoLev z)) (λx ⇒ x < z).
Theorem. (SNoR_SNoS_) The following is provable:
∀z, SNoR z SNoS_ (SNoLev z)
Proof:
Let z be given.
An exact proof term for the current goal is Sep_Subq (SNoS_ (SNoLev z)) (λy ⇒ z < y).
Theorem. (SNoL_SNoS) The following is provable:
∀x, SNo xwSNoL x, w SNoS_ (SNoLev x)
Proof:
Let x be given.
Assume Hx.
Let w be given.
Assume Hw: w SNoL x.
Apply SNoL_E x Hx w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: w < x.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
Theorem. (SNoR_SNoS) The following is provable:
∀x, SNo xzSNoR x, z SNoS_ (SNoLev x)
Proof:
Let x be given.
Assume Hx.
Let z be given.
Assume Hz: z SNoR x.
Apply SNoR_E x Hx z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev x.
Assume Hz3: x < z.
We will prove z SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 z x Hz1 Hx Hz2.
Theorem. (SNoL_I) The following is provable:
∀z, SNo z∀x, SNo xSNoLev x SNoLev zx < zx SNoL z
Proof:
Let z be given.
Assume Hz.
Let x be given.
Assume Hx Hxz1 Hxz2.
We will prove x SNoL z.
We will prove x {xSNoS_ (SNoLev z)|x < z}.
Apply SepI to the current goal.
We will prove x SNoS_ (SNoLev z).
An exact proof term for the current goal is SNoS_I2 x z Hx Hz Hxz1.
We will prove x < z.
An exact proof term for the current goal is Hxz2.
Theorem. (SNoR_I) The following is provable:
∀z, SNo z∀y, SNo ySNoLev y SNoLev zz < yy SNoR z
Proof:
Let z be given.
Assume Hz.
Let y be given.
Assume Hy Hyz Hzy.
We will prove y SNoR z.
We will prove y {ySNoS_ (SNoLev z)|z < y}.
Apply SepI to the current goal.
We will prove y SNoS_ (SNoLev z).
An exact proof term for the current goal is SNoS_I2 y z Hy Hz Hyz.
We will prove z < y.
An exact proof term for the current goal is Hzy.
Theorem. (SNo_eta) The following is provable:
∀z, SNo zz = SNoCut (SNoL z) (SNoR z)
Proof:
Let z be given.
Assume Hz: SNo z.
Set L to be the term SNoL z.
Set R to be the term SNoR z.
We prove the intermediate claim LLz: ordinal (SNoLev z).
An exact proof term for the current goal is SNoLev_ordinal z Hz.
We prove the intermediate claim LC: SNoCutP L R.
An exact proof term for the current goal is SNoCutP_SNoL_SNoR z Hz.
Apply SNoCutP_SNoCut L R LC to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: SNo (SNoCut L R).
Assume H3: xL, x < SNoCut L R.
Assume H4: yR, SNoCut L R < y.
Assume H5: ∀z, SNo z(xL, x < z)(yR, z < y)SNoLev (SNoCut L R) SNoLev z PNoEq_ (SNoLev (SNoCut L R)) (λγ ⇒ γ SNoCut L R) (λγ ⇒ γ z).
We prove the intermediate claim L4: ordinal (SNoLev (SNoCut L R)).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is H1.
We prove the intermediate claim L5: xL, x < z.
Let x be given.
Assume Hx: x L.
An exact proof term for the current goal is SepE2 (SNoS_ (SNoLev z)) (λx ⇒ x < z) x Hx.
We prove the intermediate claim L6: yR, z < y.
Let y be given.
Assume Hy: y R.
An exact proof term for the current goal is SepE2 (SNoS_ (SNoLev z)) (λy ⇒ z < y) y Hy.
Apply H5 z Hz L5 L6 to the current goal.
Assume H6: SNoLev (SNoCut L R) SNoLev z.
Assume H7: PNoEq_ (SNoLev (SNoCut L R)) (λγ ⇒ γ SNoCut L R) (λγ ⇒ γ z).
We prove the intermediate claim L7: SNoLev (SNoCut L R) = SNoLev z.
Apply ordinal_trichotomy_or (SNoLev (SNoCut L R)) (SNoLev z) L4 LLz to the current goal.
Assume H8.
Apply H8 to the current goal.
Assume H8: SNoLev (SNoCut L R) SNoLev z.
We will prove False.
Apply SNoLt_trichotomy_or z (SNoCut L R) Hz H1 to the current goal.
Assume H9.
Apply H9 to the current goal.
Assume H9: z < SNoCut L R.
Apply SNoLt_irref (SNoCut L R) to the current goal.
Apply H4 to the current goal.
We will prove SNoCut L R R.
We will prove SNoCut L R {ySNoS_ (SNoLev z)|z < y}.
Apply SepI to the current goal.
Apply SNoS_I (SNoLev z) LLz (SNoCut L R) (SNoLev (SNoCut L R)) H8 to the current goal.
We will prove SNo_ (SNoLev (SNoCut L R)) (SNoCut L R).
An exact proof term for the current goal is SNoLev_ (SNoCut L R) H1.
We will prove z < SNoCut L R.
An exact proof term for the current goal is H9.
Assume H9: z = SNoCut L R.
Apply In_irref (SNoLev z) to the current goal.
rewrite the current goal using H9 (from left to right) at position 1.
An exact proof term for the current goal is H8.
Assume H9: SNoCut L R < z.
Apply SNoLt_irref (SNoCut L R) to the current goal.
Apply H3 to the current goal.
We will prove SNoCut L R L.
We will prove SNoCut L R {xSNoS_ (SNoLev z)|x < z}.
Apply SepI to the current goal.
Apply SNoS_I (SNoLev z) LLz (SNoCut L R) (SNoLev (SNoCut L R)) H8 to the current goal.
We will prove SNo_ (SNoLev (SNoCut L R)) (SNoCut L R).
An exact proof term for the current goal is SNoLev_ (SNoCut L R) H1.
We will prove SNoCut L R < z.
An exact proof term for the current goal is H9.
Assume H8: SNoLev (SNoCut L R) = SNoLev z.
An exact proof term for the current goal is H8.
Assume H8: SNoLev z SNoLev (SNoCut L R).
We will prove False.
Apply In_irref (SNoLev z) to the current goal.
Apply H6 to the current goal.
An exact proof term for the current goal is H8.
We will prove z = SNoCut L R.
Use symmetry.
We will prove SNoCut L R = z.
Apply SNo_eq to the current goal.
We will prove SNo (SNoCut L R).
An exact proof term for the current goal is H1.
We will prove SNo z.
An exact proof term for the current goal is Hz.
We will prove SNoLev (SNoCut L R) = SNoLev z.
An exact proof term for the current goal is L7.
We will prove αSNoLev (SNoCut L R), α SNoCut L R α z.
An exact proof term for the current goal is H7.
Theorem. (SNoCutP_SNo_SNoCut) The following is provable:
∀L R, SNoCutP L RSNo (SNoCut L R)
Proof:
Let L and R be given.
Assume H1: SNoCutP L R.
Apply SNoCutP_SNoCut L R H1 to the current goal.
Assume H2 _.
Apply H2 to the current goal.
Assume H2 _.
Apply H2 to the current goal.
Assume H2 _.
Apply H2 to the current goal.
Assume H2 _.
An exact proof term for the current goal is H2.
Theorem. (SNoCutP_SNoCut_L) The following is provable:
∀L R, SNoCutP L RxL, x < SNoCut L R
Proof:
Let L and R be given.
Assume H1: SNoCutP L R.
Apply SNoCutP_SNoCut L R H1 to the current goal.
Assume H2 _.
Apply H2 to the current goal.
Assume H2 _.
Apply H2 to the current goal.
Assume _ H2.
An exact proof term for the current goal is H2.
Theorem. (SNoCutP_SNoCut_R) The following is provable:
∀L R, SNoCutP L RyR, SNoCut L R < y
Proof:
Let L and R be given.
Assume H1: SNoCutP L R.
Apply SNoCutP_SNoCut L R H1 to the current goal.
Assume H2 _.
Apply H2 to the current goal.
Assume _ H2.
An exact proof term for the current goal is H2.
Theorem. (SNoCutP_SNoCut_fst) The following is provable:
∀L R, SNoCutP L R∀z, SNo z(xL, x < z)(yR, z < y)SNoLev (SNoCut L R) SNoLev z SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) z
Proof:
Let L and R be given.
Assume H1: SNoCutP L R.
Apply SNoCutP_SNoCut L R H1 to the current goal.
Assume _ H2.
An exact proof term for the current goal is H2.
Theorem. (SNoCut_Le) The following is provable:
∀L1 R1 L2 R2, SNoCutP L1 R1SNoCutP L2 R2(wL1, w < SNoCut L2 R2)(zR2, SNoCut L1 R1 < z)SNoCut L1 R1 SNoCut L2 R2
Proof:
Let L1, R1, L2 and R2 be given.
Assume HLR1 HLR2.
Assume H1: wL1, w < SNoCut L2 R2.
Assume H2: zR2, SNoCut L1 R1 < z.
Apply HLR1 to the current goal.
Assume HLR1a.
Apply HLR1a to the current goal.
Assume HLR1a: xL1, SNo x.
Assume HLR1b: yR1, SNo y.
Assume HLR1c: xL1, yR1, x < y.
Apply HLR2 to the current goal.
Assume HLR2a.
Apply HLR2a to the current goal.
Assume HLR2a: xL2, SNo x.
Assume HLR2b: yR2, SNo y.
Assume HLR2c: xL2, yR2, x < y.
Set alpha to be the term xL1ordsucc (SNoLev x).
Set beta to be the term yR1ordsucc (SNoLev y).
Set gamma to be the term xL2ordsucc (SNoLev x).
Set delta to be the term yR2ordsucc (SNoLev y).
Apply SNoCutP_SNoCut L1 R1 HLR1 to the current goal.
Assume H3.
Apply H3 to the current goal.
Assume H3.
Apply H3 to the current goal.
Assume H3.
Apply H3 to the current goal.
Assume H3: SNo (SNoCut L1 R1).
Assume H4: SNoLev (SNoCut L1 R1) ordsucc (α β).
Assume H5: xL1, x < SNoCut L1 R1.
Assume H6: yR1, SNoCut L1 R1 < y.
Assume H7: ∀z, SNo z(xL1, x < z)(yR1, z < y)SNoLev (SNoCut L1 R1) SNoLev z SNoEq_ (SNoLev (SNoCut L1 R1)) (SNoCut L1 R1) z.
Apply SNoCutP_SNoCut L2 R2 HLR2 to the current goal.
Assume H8.
Apply H8 to the current goal.
Assume H8.
Apply H8 to the current goal.
Assume H8.
Apply H8 to the current goal.
Assume H8: SNo (SNoCut L2 R2).
Assume H9: SNoLev (SNoCut L2 R2) ordsucc (γ δ).
Assume H10: xL2, x < SNoCut L2 R2.
Assume H11: yR2, SNoCut L2 R2 < y.
Assume H12: ∀z, SNo z(xL2, x < z)(yR2, z < y)SNoLev (SNoCut L2 R2) SNoLev z SNoEq_ (SNoLev (SNoCut L2 R2)) (SNoCut L2 R2) z.
Apply SNoLtLe_or (SNoCut L2 R2) (SNoCut L1 R1) H8 H3 to the current goal.
Assume H13: SNoCut L2 R2 < SNoCut L1 R1.
We will prove False.
Apply SNoLtE (SNoCut L2 R2) (SNoCut L1 R1) H8 H3 H13 to the current goal.
Let z be given.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev (SNoCut L2 R2) SNoLev (SNoCut L1 R1).
Assume Hz3: SNoEq_ (SNoLev z) z (SNoCut L2 R2).
Assume Hz4: SNoEq_ (SNoLev z) z (SNoCut L1 R1).
Assume Hz5: (SNoCut L2 R2) < z.
Assume Hz6: z < (SNoCut L1 R1).
Assume Hz7: SNoLev z (SNoCut L2 R2).
Assume Hz8: SNoLev z (SNoCut L1 R1).
We prove the intermediate claim LzL1: xL1, x < z.
Let x be given.
Assume Hx: x L1.
Apply SNoLt_tra x (SNoCut L2 R2) z (HLR1a x Hx) H8 Hz1 to the current goal.
We will prove x < SNoCut L2 R2.
An exact proof term for the current goal is H1 x Hx.
We will prove SNoCut L2 R2 < z.
An exact proof term for the current goal is Hz5.
We prove the intermediate claim LzR1: yR1, z < y.
Let y be given.
Assume Hy: y R1.
Apply SNoLt_tra z (SNoCut L1 R1) y Hz1 H3 (HLR1b y Hy) to the current goal.
We will prove z < SNoCut L1 R1.
An exact proof term for the current goal is Hz6.
We will prove SNoCut L1 R1 < y.
An exact proof term for the current goal is H6 y Hy.
Apply H7 z Hz1 LzL1 LzR1 to the current goal.
Assume H14: SNoLev (SNoCut L1 R1) SNoLev z.
Assume _.
Apply In_irref (SNoLev z) to the current goal.
Apply H14 to the current goal.
We will prove SNoLev z SNoLev (SNoCut L1 R1).
An exact proof term for the current goal is binintersectE2 (SNoLev (SNoCut L2 R2)) (SNoLev (SNoCut L1 R1)) (SNoLev z) Hz2.
Assume H14: SNoLev (SNoCut L2 R2) SNoLev (SNoCut L1 R1).
Assume H15: SNoEq_ (SNoLev (SNoCut L2 R2)) (SNoCut L2 R2) (SNoCut L1 R1).
Assume H16: SNoLev (SNoCut L2 R2) (SNoCut L1 R1).
Set z to be the term SNoCut L2 R2.
We prove the intermediate claim LzR1: yR1, z < y.
Let y be given.
Assume Hy: y R1.
Apply SNoLt_tra z (SNoCut L1 R1) y H8 H3 (HLR1b y Hy) to the current goal.
We will prove z < SNoCut L1 R1.
An exact proof term for the current goal is H13.
We will prove SNoCut L1 R1 < y.
An exact proof term for the current goal is H6 y Hy.
Apply H7 z H8 H1 LzR1 to the current goal.
Assume H17: SNoLev (SNoCut L1 R1) SNoLev z.
Assume _.
Apply In_irref (SNoLev z) to the current goal.
Apply H17 to the current goal.
We will prove SNoLev z SNoLev (SNoCut L1 R1).
An exact proof term for the current goal is H14.
Assume H14: SNoLev (SNoCut L1 R1) SNoLev (SNoCut L2 R2).
Assume H15: SNoEq_ (SNoLev (SNoCut L1 R1)) (SNoCut L2 R2) (SNoCut L1 R1).
Assume H16: SNoLev (SNoCut L1 R1) (SNoCut L2 R2).
Set z to be the term SNoCut L1 R1.
We prove the intermediate claim LzL2: xL2, x < z.
Let x be given.
Assume Hx: x L2.
Apply SNoLt_tra x (SNoCut L2 R2) z (HLR2a x Hx) H8 H3 to the current goal.
We will prove x < SNoCut L2 R2.
An exact proof term for the current goal is H10 x Hx.
We will prove SNoCut L2 R2 < z.
An exact proof term for the current goal is H13.
Apply H12 z H3 LzL2 H2 to the current goal.
Assume H17: SNoLev (SNoCut L2 R2) SNoLev z.
Assume _.
Apply In_irref (SNoLev z) to the current goal.
Apply H17 to the current goal.
We will prove SNoLev z SNoLev (SNoCut L2 R2).
An exact proof term for the current goal is H14.
Assume H13: SNoCut L1 R1 SNoCut L2 R2.
An exact proof term for the current goal is H13.
Theorem. (SNoCut_ext) The following is provable:
∀L1 R1 L2 R2, SNoCutP L1 R1SNoCutP L2 R2(wL1, w < SNoCut L2 R2)(zR1, SNoCut L2 R2 < z)(wL2, w < SNoCut L1 R1)(zR2, SNoCut L1 R1 < z)SNoCut L1 R1 = SNoCut L2 R2
Proof:
Let L1, R1, L2 and R2 be given.
Assume HLR1 HLR2.
Assume H1: wL1, w < SNoCut L2 R2.
Assume H2: zR1, SNoCut L2 R2 < z.
Assume H3: wL2, w < SNoCut L1 R1.
Assume H4: zR2, SNoCut L1 R1 < z.
We prove the intermediate claim LNLR1: SNo (SNoCut L1 R1).
An exact proof term for the current goal is SNoCutP_SNo_SNoCut L1 R1 HLR1.
We prove the intermediate claim LNLR2: SNo (SNoCut L2 R2).
An exact proof term for the current goal is SNoCutP_SNo_SNoCut L2 R2 HLR2.
Apply SNoLe_antisym (SNoCut L1 R1) (SNoCut L2 R2) LNLR1 LNLR2 to the current goal.
We will prove SNoCut L1 R1 SNoCut L2 R2.
An exact proof term for the current goal is SNoCut_Le L1 R1 L2 R2 HLR1 HLR2 H1 H4.
We will prove SNoCut L2 R2 SNoCut L1 R1.
An exact proof term for the current goal is SNoCut_Le L2 R2 L1 R1 HLR2 HLR1 H3 H2.
Theorem. (SNoLt_SNoL_or_SNoR_impred) The following is provable:
∀x y, SNo xSNo yx < y∀p : prop, (zSNoL y, z SNoR xp)(x SNoL yp)(y SNoR xp)p
Proof:
Let x and y be given.
Assume Hx Hy Hxy.
Let p be given.
Assume Hp1 Hp2 Hp3.
Apply SNoLtE x y Hx Hy Hxy to the current goal.
Let z be given.
Assume Hz1 Hz2 _ _ Hz3 Hz4 _ _.
Apply binintersectE (SNoLev x) (SNoLev y) (SNoLev z) Hz2 to the current goal.
Assume Hz2a Hz2b.
Apply Hp1 z to the current goal.
We will prove z SNoL y.
An exact proof term for the current goal is SNoL_I y Hy z Hz1 Hz2b Hz4.
We will prove z SNoR x.
An exact proof term for the current goal is SNoR_I x Hx z Hz1 Hz2a Hz3.
Assume H1 _ _.
Apply Hp2 to the current goal.
An exact proof term for the current goal is SNoL_I y Hy x Hx H1 Hxy.
Assume H1 _ _.
Apply Hp3 to the current goal.
An exact proof term for the current goal is SNoR_I x Hx y Hy H1 Hxy.
Theorem. (SNoL_or_SNoR_impred) The following is provable:
∀x y, SNo xSNo y∀p : prop, (x = yp)(zSNoL y, z SNoR xp)(x SNoL yp)(y SNoR xp)(zSNoR y, z SNoL xp)(x SNoR yp)(y SNoL xp)p
Proof:
Let x and y be given.
Assume Hx Hy.
Let p be given.
Assume Hp1 Hp2 Hp3 Hp4 Hp5 Hp6 Hp7.
Apply SNoLt_trichotomy_or_impred x y Hx Hy to the current goal.
Assume H1: x < y.
Apply SNoLt_SNoL_or_SNoR_impred x y Hx Hy H1 to the current goal.
An exact proof term for the current goal is Hp2.
An exact proof term for the current goal is Hp3.
An exact proof term for the current goal is Hp4.
Assume H1: x = y.
An exact proof term for the current goal is Hp1 H1.
Assume H1: y < x.
Apply SNoLt_SNoL_or_SNoR_impred y x Hy Hx H1 to the current goal.
Let z be given.
Assume H2 H3.
An exact proof term for the current goal is Hp5 z H3 H2.
An exact proof term for the current goal is Hp7.
An exact proof term for the current goal is Hp6.
Theorem. (SNoL_SNoCutP_ex) The following is provable:
∀L R, SNoCutP L RwSNoL (SNoCut L R), w'L, w w'
Proof:
Let L and R be given.
Assume HLR.
Set y to be the term SNoCut L R.
Let w be given.
Assume Hw: w SNoL y.
Apply dneg to the current goal.
Assume HC: ¬ w'L, w w'.
Apply HLR to the current goal.
Assume H.
Apply H to the current goal.
Assume HL HR HLR'.
Apply SNoCutP_SNoCut_impred L R HLR to the current goal.
Assume H1: SNo y.
Assume H3: wL, w < y.
Assume H4: zR, y < z.
Assume H5: ∀u, SNo u(wL, w < u)(zR, u < z)SNoLev y SNoLev u SNoEq_ (SNoLev y) y u.
Apply SNoL_E y H1 w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim L1: SNoLev y SNoLev w SNoEq_ (SNoLev y) y w.
Apply H5 w Hw1 to the current goal.
Let w' be given.
Assume Hw': w' L.
We will prove w' < w.
Apply SNoLtLe_or w' w (HL w' Hw') Hw1 to the current goal.
Assume H6.
An exact proof term for the current goal is H6.
Assume H6: w w'.
Apply HC to the current goal.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw'.
An exact proof term for the current goal is H6.
Let z be given.
Assume Hz: z R.
We will prove w < z.
Apply SNoLt_tra w y z Hw1 H1 (HR z Hz) Hw3 to the current goal.
We will prove y < z.
An exact proof term for the current goal is H4 z Hz.
Apply In_irref (SNoLev w) to the current goal.
We will prove SNoLev w SNoLev w.
Apply andEL (SNoLev y SNoLev w) (SNoEq_ (SNoLev y) y w) L1 to the current goal.
We will prove SNoLev w SNoLev y.
An exact proof term for the current goal is Hw2.
Theorem. (SNoR_SNoCutP_ex) The following is provable:
∀L R, SNoCutP L RzSNoR (SNoCut L R), z'R, z' z
Proof:
Let L and R be given.
Assume HLR.
Set y to be the term SNoCut L R.
Let z be given.
Assume Hz: z SNoR y.
Apply dneg to the current goal.
Assume HC: ¬ z'R, z' z.
Apply HLR to the current goal.
Assume H.
Apply H to the current goal.
Assume HL HR HLR'.
Apply SNoCutP_SNoCut_impred L R HLR to the current goal.
Assume H1: SNo y.
Assume H3: wL, w < y.
Assume H4: zR, y < z.
Assume H5: ∀u, SNo u(wL, w < u)(zR, u < z)SNoLev y SNoLev u SNoEq_ (SNoLev y) y u.
Apply SNoR_E y H1 z Hz to the current goal.
Assume Hz1 Hz2 Hz3.
We prove the intermediate claim L1: SNoLev y SNoLev z SNoEq_ (SNoLev y) y z.
Apply H5 z Hz1 to the current goal.
Let w be given.
Assume Hw: w L.
We will prove w < z.
Apply SNoLt_tra w y z (HL w Hw) H1 Hz1 to the current goal.
We will prove w < y.
An exact proof term for the current goal is H3 w Hw.
We will prove y < z.
An exact proof term for the current goal is Hz3.
Let z' be given.
Assume Hz': z' R.
We will prove z < z'.
Apply SNoLtLe_or z z' Hz1 (HR z' Hz') to the current goal.
Assume H6.
An exact proof term for the current goal is H6.
Assume H6: z' z.
Apply HC to the current goal.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz'.
An exact proof term for the current goal is H6.
Apply In_irref (SNoLev z) to the current goal.
We will prove SNoLev z SNoLev z.
Apply andEL (SNoLev y SNoLev z) (SNoEq_ (SNoLev y) y z) L1 to the current goal.
We will prove SNoLev z SNoLev y.
An exact proof term for the current goal is Hz2.
Theorem. (ordinal_SNo_) The following is provable:
∀α, ordinal αSNo_ α α
Proof:
Let α be given.
Assume Ha: ordinal α.
We will prove α SNoElts_ α βα, exactly1of2 (β ' α) (β α).
Apply andI to the current goal.
We will prove α SNoElts_ α.
Let β be given.
Assume Hb: β α.
We will prove β α {β '|βα}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hb.
We will prove βα, exactly1of2 (β ' α) (β α).
Let β be given.
Assume Hb: β α.
Apply exactly1of2_I2 to the current goal.
We will prove β ' α.
Assume H1: β ' α.
We will prove False.
Apply tagged_not_ordinal β to the current goal.
We will prove ordinal (β ').
An exact proof term for the current goal is ordinal_Hered α Ha (β ') H1.
We will prove β α.
An exact proof term for the current goal is Hb.
Theorem. (ordinal_SNo) The following is provable:
∀α, ordinal αSNo α
Proof:
Let α be given.
Assume Ha: ordinal α.
We will prove β, ordinal β SNo_ β α.
We use α to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is ordinal_SNo_ α Ha.
Theorem. (ordinal_SNoLev) The following is provable:
∀α, ordinal αSNoLev α = α
Proof:
Let α be given.
Assume Ha: ordinal α.
Apply SNoLev_prop α (ordinal_SNo α Ha) to the current goal.
Assume H1: ordinal (SNoLev α).
Assume H2: SNo_ (SNoLev α) α.
An exact proof term for the current goal is SNoLev_uniq α (SNoLev α) α H1 Ha H2 (ordinal_SNo_ α Ha).
Theorem. (ordinal_SNoLev_max) The following is provable:
∀α, ordinal α∀z, SNo zSNoLev z αz < α
Proof:
Let α be given.
Assume Ha: ordinal α.
Let z be given.
Assume Hz: SNo z.
Assume Hz2: SNoLev z α.
We prove the intermediate claim La1: SNo α.
An exact proof term for the current goal is ordinal_SNo α Ha.
We prove the intermediate claim La2: SNoLev α = α.
An exact proof term for the current goal is ordinal_SNoLev α Ha.
We will prove z < α.
Apply SNoLt_trichotomy_or z α Hz (ordinal_SNo α Ha) to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: z < α.
An exact proof term for the current goal is H1.
Assume H1: z = α.
We will prove False.
Apply In_irref α to the current goal.
rewrite the current goal using La2 (from right to left) at position 1.
We will prove SNoLev α α.
rewrite the current goal using H1 (from right to left) at position 1.
We will prove SNoLev z α.
An exact proof term for the current goal is Hz2.
Assume H1: α < z.
We will prove False.
Apply SNoLtE α z La1 Hz H1 to the current goal.
Let w be given.
rewrite the current goal using La2 (from left to right).
Assume Hw: SNo w.
Assume H2: SNoLev w α SNoLev z.
Assume H3: SNoEq_ (SNoLev w) w α.
Assume H4: SNoEq_ (SNoLev w) w z.
Assume H5: α < w.
Assume H6: w < z.
Assume H7: SNoLev w α.
We will prove False.
Apply H7 to the current goal.
An exact proof term for the current goal is binintersectE1 α (SNoLev z) (SNoLev w) H2.
rewrite the current goal using La2 (from left to right).
Assume H2: α SNoLev z.
We will prove False.
An exact proof term for the current goal is In_no2cycle α (SNoLev z) H2 Hz2.
rewrite the current goal using La2 (from left to right).
Assume H2: SNoLev z α.
Assume H3: SNoEq_ (SNoLev z) α z.
Assume H4: SNoLev z α.
An exact proof term for the current goal is H4 H2.
Theorem. (ordinal_SNoL) The following is provable:
∀α, ordinal αSNoL α = SNoS_ α
Proof:
Let α be given.
Assume Ha: ordinal α.
We prove the intermediate claim La1: SNo α.
An exact proof term for the current goal is ordinal_SNo α Ha.
We prove the intermediate claim La2: SNoLev α = α.
An exact proof term for the current goal is ordinal_SNoLev α Ha.
Apply set_ext to the current goal.
Let x be given.
Assume Hx: x SNoL α.
Apply SNoL_E α La1 x Hx to the current goal.
Assume Hx1: SNo x.
Assume Hx2: SNoLev x SNoLev α.
Assume Hx3: x < α.
We will prove x SNoS_ α.
rewrite the current goal using La2 (from right to left).
We will prove x SNoS_ (SNoLev α).
Apply SNoS_I2 x α Hx1 La1 to the current goal.
We will prove SNoLev x SNoLev α.
An exact proof term for the current goal is Hx2.
Let x be given.
Assume Hx: x SNoS_ α.
Apply SNoS_E2 α Ha x Hx to the current goal.
Assume Hx1: SNoLev x α.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
We will prove x SNoL α.
Apply SNoL_I α La1 x Hx3 to the current goal.
We will prove SNoLev x SNoLev α.
rewrite the current goal using La2 (from left to right).
An exact proof term for the current goal is Hx1.
We will prove x < α.
An exact proof term for the current goal is ordinal_SNoLev_max α Ha x Hx3 Hx1.
Theorem. (ordinal_SNoR) The following is provable:
∀α, ordinal αSNoR α = Empty
Proof:
Let α be given.
Assume Ha: ordinal α.
We prove the intermediate claim La1: SNo α.
An exact proof term for the current goal is ordinal_SNo α Ha.
We prove the intermediate claim La2: SNoLev α = α.
An exact proof term for the current goal is ordinal_SNoLev α Ha.
Apply Empty_Subq_eq to the current goal.
Let x be given.
Assume Hx: x SNoR α.
Apply SNoR_E α La1 x Hx to the current goal.
Assume Hx1: SNo x.
rewrite the current goal using La2 (from left to right).
Assume Hx2: SNoLev x α.
Assume Hx3: α < x.
We will prove False.
Apply SNoLt_irref x to the current goal.
Apply SNoLt_tra x α x Hx1 La1 Hx1 to the current goal.
We will prove x < α.
An exact proof term for the current goal is ordinal_SNoLev_max α Ha x Hx1 Hx2.
We will prove α < x.
An exact proof term for the current goal is Hx3.
Theorem. (nat_p_SNo) The following is provable:
∀n, nat_p nSNo n
Proof:
Let n be given.
Assume Hn.
Apply ordinal_SNo to the current goal.
We will prove ordinal n.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is Hn.
Theorem. (omega_SNo) The following is provable:
Proof:
Let n be given.
Assume Hn.
Apply nat_p_SNo to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hn.
Theorem. (omega_SNoS_omega) The following is provable:
Proof:
Let n be given.
Assume Hn: n ω.
Apply SNoS_I ω omega_ordinal n n to the current goal.
An exact proof term for the current goal is Hn.
We will prove SNo_ n n.
rewrite the current goal using ordinal_SNoLev n (nat_p_ordinal n (omega_nat_p n Hn)) (from right to left) at position 1.
We will prove SNo_ (SNoLev n) n.
Apply SNoLev_ to the current goal.
Apply omega_SNo to the current goal.
An exact proof term for the current goal is Hn.
Theorem. (ordinal_In_SNoLt) The following is provable:
∀α, ordinal αβα, β < α
Proof:
Let α be given.
Assume Ha: ordinal α.
Let β be given.
Assume Hb: β α.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered α Ha β Hb.
We prove the intermediate claim Lb1: SNo β.
An exact proof term for the current goal is ordinal_SNo β Lb.
We prove the intermediate claim Lb2: SNoLev β = β.
An exact proof term for the current goal is ordinal_SNoLev β Lb.
Apply ordinal_SNoLev_max α Ha β Lb1 to the current goal.
We will prove SNoLev β α.
rewrite the current goal using Lb2 (from left to right).
An exact proof term for the current goal is Hb.
Theorem. (ordinal_SNoLev_max_2) The following is provable:
∀α, ordinal α∀z, SNo zSNoLev z ordsucc αz α
Proof:
Let α be given.
Assume Ha: ordinal α.
Apply Ha to the current goal.
Assume Ha1 _.
Let z be given.
Assume Hz: SNo z.
Assume Hz2: SNoLev z ordsucc α.
We prove the intermediate claim La1: SNo α.
An exact proof term for the current goal is ordinal_SNo α Ha.
We prove the intermediate claim La2: SNoLev α = α.
An exact proof term for the current goal is ordinal_SNoLev α Ha.
Apply ordsuccE α (SNoLev z) Hz2 to the current goal.
Assume Hz3: SNoLev z α.
We will prove z α.
Apply SNoLtLe to the current goal.
We will prove z < α.
An exact proof term for the current goal is ordinal_SNoLev_max α Ha z Hz Hz3.
Assume Hz3: SNoLev z = α.
Apply dneg to the current goal.
Assume H1: ¬ (z α).
We prove the intermediate claim L1: ∀β, ordinal ββ αβ z.
Apply ordinal_ind to the current goal.
Let β be given.
Assume Hb: ordinal β.
Assume IH: γβ, γ αγ z.
Assume Hb2: β α.
Apply dneg to the current goal.
Assume H2: β z.
Apply H1 to the current goal.
Apply SNoLtLe to the current goal.
We will prove z < α.
We prove the intermediate claim Lb1: SNo β.
An exact proof term for the current goal is ordinal_SNo β Hb.
We prove the intermediate claim Lb2: SNoLev β = β.
An exact proof term for the current goal is ordinal_SNoLev β Hb.
Apply SNoLt_tra z β α Hz Lb1 La1 to the current goal.
We will prove z < β.
Apply SNoLtI3 to the current goal.
We will prove SNoLev β SNoLev z.
rewrite the current goal using Lb2 (from left to right).
rewrite the current goal using Hz3 (from left to right).
We will prove β α.
An exact proof term for the current goal is Hb2.
We will prove SNoEq_ (SNoLev β) z β.
rewrite the current goal using Lb2 (from left to right).
Let γ be given.
Assume Hc: γ β.
We will prove γ z γ β.
Apply iffI to the current goal.
Assume _.
An exact proof term for the current goal is Hc.
Assume _.
We will prove γ z.
Apply IH γ Hc to the current goal.
We will prove γ α.
An exact proof term for the current goal is Ha1 β Hb2 γ Hc.
We will prove SNoLev β z.
rewrite the current goal using Lb2 (from left to right).
We will prove β z.
An exact proof term for the current goal is H2.
We will prove β < α.
An exact proof term for the current goal is ordinal_In_SNoLt α Ha β Hb2.
We prove the intermediate claim L2: α z.
Let β be given.
Assume Hb: β α.
An exact proof term for the current goal is L1 β (ordinal_Hered α Ha β Hb) Hb.
We prove the intermediate claim L3: z = α.
Apply SNo_eq z α Hz La1 to the current goal.
We will prove SNoLev z = SNoLev α.
rewrite the current goal using La2 (from left to right).
An exact proof term for the current goal is Hz3.
We will prove SNoEq_ (SNoLev z) z α.
rewrite the current goal using Hz3 (from left to right).
Let β be given.
Assume Hb: β α.
We will prove β z β α.
Apply iffI to the current goal.
Assume _.
An exact proof term for the current goal is Hb.
Assume _.
An exact proof term for the current goal is L2 β Hb.
Apply H1 to the current goal.
We will prove z α.
rewrite the current goal using L3 (from left to right).
We will prove α α.
Apply SNoLe_ref to the current goal.
Theorem. (ordinal_Subq_SNoLe) The following is provable:
∀α beta, ordinal αordinal βα βα β
Proof:
Let α and β be given.
Assume Ha Hb Hab.
We prove the intermediate claim L1: α ordsucc β.
Apply ordinal_In_Or_Subq α β Ha Hb to the current goal.
Assume H1: α β.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is H1.
Assume H1: β α.
We prove the intermediate claim L1a: α = β.
Apply set_ext to the current goal.
An exact proof term for the current goal is Hab.
An exact proof term for the current goal is H1.
rewrite the current goal using L1a (from left to right).
Apply ordsuccI2 to the current goal.
We prove the intermediate claim La1: SNo α.
An exact proof term for the current goal is ordinal_SNo α Ha.
We prove the intermediate claim La2: SNoLev α = α.
An exact proof term for the current goal is ordinal_SNoLev α Ha.
Apply ordinal_SNoLev_max_2 β Hb α La1 to the current goal.
We will prove SNoLev α ordsucc β.
rewrite the current goal using La2 (from left to right).
An exact proof term for the current goal is L1.
Theorem. (ordinal_SNoLt_In) The following is provable:
∀α beta, ordinal αordinal βα < βα β
Proof:
Let α and β be given.
Assume Ha Hb.
Assume H1.
Apply ordinal_In_Or_Subq α β Ha Hb to the current goal.
Assume H2.
An exact proof term for the current goal is H2.
Assume H2: β α.
We will prove False.
Apply SNoLt_irref α to the current goal.
We will prove α < α.
Apply SNoLtLe_tra α β α (ordinal_SNo α Ha) (ordinal_SNo β Hb) (ordinal_SNo α Ha) H1 to the current goal.
We will prove β α.
An exact proof term for the current goal is ordinal_Subq_SNoLe β α Hb Ha H2.
Theorem. (omega_nonneg) The following is provable:
Proof:
Let m be given.
Assume Hm.
Apply ordinal_Subq_SNoLe 0 m ordinal_Empty (nat_p_ordinal m (omega_nat_p m Hm)) to the current goal.
We will prove 0 m.
Apply Subq_Empty to the current goal.
Theorem. (SNo_0) The following is provable:
Proof:
An exact proof term for the current goal is ordinal_SNo 0 ordinal_Empty.
Theorem. (SNo_1) The following is provable:
Proof:
Apply ordinal_SNo to the current goal.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is nat_1.
Theorem. (SNo_2) The following is provable:
Proof:
Apply ordinal_SNo to the current goal.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is nat_2.
Theorem. (SNoLev_0) The following is provable:
Proof:
An exact proof term for the current goal is ordinal_SNoLev 0 ordinal_Empty.
Theorem. (SNoCut_0_0) The following is provable:
Proof:
Apply SNoCutP_SNoCut_impred 0 0 SNoCutP_0_0 to the current goal.
Assume H1: SNo (SNoCut 0 0).
rewrite the current goal using famunion_Empty (λx ⇒ ordsucc (SNoLev x)) (from left to right).
rewrite the current goal using binunion_idl 0 (from left to right).
Assume H2: SNoLev (SNoCut 0 0) 1.
Assume _ _ _.
We prove the intermediate claim L1: SNoLev (SNoCut 0 0) = 0.
Apply cases_1 (SNoLev (SNoCut 0 0)) H2 (λu ⇒ u = 0) to the current goal.
We will prove 0 = 0.
Use reflexivity.
Apply SNo_eq (SNoCut 0 0) 0 H1 SNo_0 to the current goal.
We will prove SNoLev (SNoCut 0 0) = SNoLev 0.
Use transitivity with and 0.
An exact proof term for the current goal is L1.
Use symmetry.
An exact proof term for the current goal is SNoLev_0.
We will prove SNoEq_ (SNoLev (SNoCut 0 0)) (SNoCut 0 0) 0.
rewrite the current goal using L1 (from left to right).
We will prove SNoEq_ 0 (SNoCut 0 0) 0.
Apply SNoEq_I to the current goal.
Let β be given.
Assume Hb: β 0.
We will prove False.
An exact proof term for the current goal is EmptyE β Hb.
Theorem. (SNoL_0) The following is provable:
Proof:
Apply Empty_Subq_eq to the current goal.
We will prove SNoL 0 Empty.
Let z be given.
Assume Hz: z SNoL 0.
We prove the intermediate claim Lz: z SNoS_ 0.
rewrite the current goal using SNoLev_0 (from right to left).
We will prove z SNoS_ (SNoLev 0).
An exact proof term for the current goal is SNoL_SNoS_ 0 z Hz.
Apply SNoS_E2 0 ordinal_Empty z Lz to the current goal.
Assume Hz1: SNoLev z 0.
We will prove False.
An exact proof term for the current goal is EmptyE (SNoLev z) Hz1.
Theorem. (SNoR_0) The following is provable:
Proof:
Apply Empty_Subq_eq to the current goal.
We will prove SNoR 0 Empty.
Let z be given.
Assume Hz: z SNoR 0.
We prove the intermediate claim Lz: z SNoS_ 0.
rewrite the current goal using SNoLev_0 (from right to left).
We will prove z SNoS_ (SNoLev 0).
An exact proof term for the current goal is SNoR_SNoS_ 0 z Hz.
Apply SNoS_E2 0 ordinal_Empty z Lz to the current goal.
Assume Hz1: SNoLev z 0.
We will prove False.
An exact proof term for the current goal is EmptyE (SNoLev z) Hz1.
Theorem. (SNoL_1) The following is provable:
Proof:
Apply set_ext to the current goal.
Let x be given.
Assume Hx: x SNoL 1.
We will prove x 1.
Apply SNoL_E 1 SNo_1 x Hx to the current goal.
Assume Hxa: SNo x.
rewrite the current goal using ordinal_SNoLev 1 (nat_p_ordinal 1 nat_1) (from left to right).
Assume Hxb: SNoLev x 1.
Assume _.
We prove the intermediate claim L1: 0 = x.
Apply SNo_eq 0 x SNo_0 Hxa to the current goal.
We will prove SNoLev 0 = SNoLev x.
rewrite the current goal using SNoLev_0 (from left to right).
We will prove 0 = SNoLev x.
Apply cases_1 (SNoLev x) Hxb (λu ⇒ 0 = u) to the current goal.
We will prove 0 = 0.
Use reflexivity.
We will prove SNoEq_ (SNoLev 0) 0 x.
rewrite the current goal using SNoLev_0 (from left to right).
We will prove SNoEq_ 0 0 x.
Apply SNoEq_I to the current goal.
Let β be given.
Assume Hb: β 0.
We will prove False.
An exact proof term for the current goal is EmptyE β Hb.
rewrite the current goal using L1 (from right to left).
An exact proof term for the current goal is In_0_1.
Let x be given.
Assume Hx: x 1.
We will prove x SNoL 1.
Apply cases_1 x Hx (λx ⇒ x SNoL 1) to the current goal.
We will prove 0 SNoL 1.
Apply SNoL_I 1 SNo_1 0 SNo_0 to the current goal.
We will prove SNoLev 0 SNoLev 1.
rewrite the current goal using SNoLev_0 (from left to right).
rewrite the current goal using ordinal_SNoLev 1 (nat_p_ordinal 1 nat_1) (from left to right).
An exact proof term for the current goal is In_0_1.
We will prove 0 < 1.
An exact proof term for the current goal is ordinal_In_SNoLt 1 (nat_p_ordinal 1 nat_1) 0 In_0_1.
Theorem. (SNoR_1) The following is provable:
Proof:
An exact proof term for the current goal is ordinal_SNoR 1 (nat_p_ordinal 1 nat_1).
Theorem. (SNo_max_SNoLev) The following is provable:
∀x, SNo x(ySNoS_ (SNoLev x), y < x)SNoLev x = x
Proof:
Let x be given.
Assume Hx: SNo x.
Assume H2: ySNoS_ (SNoLev x), y < x.
We prove the intermediate claim LLx1: ordinal (SNoLev x).
An exact proof term for the current goal is SNoLev_ordinal x Hx.
We prove the intermediate claim LLx2: SNo (SNoLev x).
An exact proof term for the current goal is ordinal_SNo (SNoLev x) LLx1.
We prove the intermediate claim L3: x SNoLev x.
Apply ordinal_SNoLev_max_2 (SNoLev x) LLx1 x Hx to the current goal.
We will prove SNoLev x ordsucc (SNoLev x).
Apply ordsuccI2 to the current goal.
Apply SNoLeE x (SNoLev x) Hx LLx2 L3 to the current goal.
Assume H3: x < SNoLev x.
We will prove False.
Apply SNoLtE x (SNoLev x) Hx LLx2 H3 to the current goal.
Let z be given.
Assume Hz: SNo z.
Assume Hz1: SNoLev z SNoLev x SNoLev (SNoLev x).
Assume Hz2: SNoEq_ (SNoLev z) z x.
Assume Hz3: SNoEq_ (SNoLev z) z (SNoLev x).
Assume Hz4: x < z.
Assume Hz5: z < SNoLev x.
Assume Hz6: SNoLev z x.
Assume Hz7: SNoLev z SNoLev x.
Apply SNoLt_irref z to the current goal.
Apply SNoLt_tra z x z Hz Hx Hz to the current goal.
We will prove z < x.
Apply H2 to the current goal.
We will prove z SNoS_ (SNoLev x).
Apply SNoS_I (SNoLev x) LLx1 z (SNoLev z) to the current goal.
We will prove SNoLev z SNoLev x.
An exact proof term for the current goal is Hz7.
We will prove SNo_ (SNoLev z) z.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hz.
We will prove x < z.
An exact proof term for the current goal is Hz4.
Assume H4: SNoLev x SNoLev (SNoLev x).
We will prove False.
Apply In_irref (SNoLev x) to the current goal.
rewrite the current goal using ordinal_SNoLev (SNoLev x) LLx1 (from right to left) at position 2.
An exact proof term for the current goal is H4.
Assume H4: SNoLev (SNoLev x) SNoLev x.
We will prove False.
Apply In_irref (SNoLev x) to the current goal.
rewrite the current goal using ordinal_SNoLev (SNoLev x) LLx1 (from right to left) at position 1.
An exact proof term for the current goal is H4.
Assume H3: x = SNoLev x.
Use symmetry.
An exact proof term for the current goal is H3.
Theorem. (SNo_max_ordinal) The following is provable:
∀x, SNo x(ySNoS_ (SNoLev x), y < x)ordinal x
Proof:
Let x be given.
Assume Hx: SNo x.
Assume H2: ySNoS_ (SNoLev x), y < x.
We will prove ordinal x.
rewrite the current goal using SNo_max_SNoLev x Hx H2 (from right to left).
We will prove ordinal (SNoLev x).
An exact proof term for the current goal is SNoLev_ordinal x Hx.
Theorem. (pos_low_eq_one) The following is provable:
∀x, SNo x0 < xSNoLev x 1x = 1
Proof:
Let x be given.
Assume Hx Hxpos Hxlow.
Apply SNoLtE 0 x SNo_0 Hx Hxpos to the current goal.
Let y be given.
Assume Hy1: SNo y.
Assume Hy2: SNoLev y SNoLev 0 SNoLev x.
We will prove False.
Apply EmptyE (SNoLev y) to the current goal.
We will prove SNoLev y 0.
rewrite the current goal using ordinal_SNoLev 0 ordinal_Empty (from right to left).
We will prove SNoLev y SNoLev 0.
An exact proof term for the current goal is binintersectE1 (SNoLev 0) (SNoLev x) (SNoLev y) Hy2.
rewrite the current goal using ordinal_SNoLev 0 ordinal_Empty (from left to right).
Assume H1: 0 SNoLev x.
Assume _.
Assume H2: 0 x.
We prove the intermediate claim L1: SNoLev x = 1.
Apply set_ext to the current goal.
An exact proof term for the current goal is Hxlow.
Let n be given.
Assume Hn: n 1.
Apply cases_1 n Hn to the current goal.
We will prove 0 SNoLev x.
An exact proof term for the current goal is H1.
Apply SNo_eq x 1 Hx SNo_1 to the current goal.
We will prove SNoLev x = SNoLev 1.
rewrite the current goal using ordinal_SNoLev 1 (nat_p_ordinal 1 nat_1) (from left to right).
We will prove SNoLev x = 1.
An exact proof term for the current goal is L1.
We will prove SNoEq_ (SNoLev x) x 1.
rewrite the current goal using L1 (from left to right).
We will prove SNoEq_ 1 x 1.
Let n be given.
Assume Hn: n 1.
We will prove n x n 1.
Apply cases_1 n Hn (λn ⇒ n x n 1) to the current goal.
We will prove 0 x 0 1.
Apply iffI to the current goal.
Assume _.
An exact proof term for the current goal is In_0_1.
Assume _.
An exact proof term for the current goal is H2.
Assume H1: SNoLev x SNoLev 0.
We will prove False.
Apply EmptyE (SNoLev x) to the current goal.
We will prove SNoLev x 0.
rewrite the current goal using ordinal_SNoLev 0 ordinal_Empty (from right to left).
We will prove SNoLev x SNoLev 0.
An exact proof term for the current goal is H1.
Definition. We define SNo_extend0 to be λx ⇒ PSNo (ordsucc (SNoLev x)) (λδ ⇒ δ x δ SNoLev x) of type setset.
Definition. We define SNo_extend1 to be λx ⇒ PSNo (ordsucc (SNoLev x)) (λδ ⇒ δ x δ = SNoLev x) of type setset.
Theorem. (SNo_extend0_SNo_) The following is provable:
∀x, SNo xSNo_ (ordsucc (SNoLev x)) (SNo_extend0 x)
Proof:
Let x be given.
Assume Hx: SNo x.
Set alpha to be the term SNoLev x.
We prove the intermediate claim La: ordinal α.
An exact proof term for the current goal is SNoLev_ordinal x Hx.
An exact proof term for the current goal is SNo_PSNo (ordsucc α) (ordinal_ordsucc α La) (λδ ⇒ δ x δ α).
Theorem. (SNo_extend1_SNo_) The following is provable:
∀x, SNo xSNo_ (ordsucc (SNoLev x)) (SNo_extend1 x)
Proof:
Let x be given.
Assume Hx: SNo x.
Set alpha to be the term SNoLev x.
We prove the intermediate claim La: ordinal α.
An exact proof term for the current goal is SNoLev_ordinal x Hx.
An exact proof term for the current goal is SNo_PSNo (ordsucc α) (ordinal_ordsucc α La) (λδ ⇒ δ x δ = α).
Theorem. (SNo_extend0_SNo) The following is provable:
∀x, SNo xSNo (SNo_extend0 x)
Proof:
Let x be given.
Assume Hx.
An exact proof term for the current goal is SNo_SNo (ordsucc (SNoLev x)) (ordinal_ordsucc (SNoLev x) (SNoLev_ordinal x Hx)) (SNo_extend0 x) (SNo_extend0_SNo_ x Hx).
Theorem. (SNo_extend1_SNo) The following is provable:
∀x, SNo xSNo (SNo_extend1 x)
Proof:
Let x be given.
Assume Hx.
An exact proof term for the current goal is SNo_SNo (ordsucc (SNoLev x)) (ordinal_ordsucc (SNoLev x) (SNoLev_ordinal x Hx)) (SNo_extend1 x) (SNo_extend1_SNo_ x Hx).
Theorem. (SNo_extend0_SNoLev) The following is provable:
∀x, SNo xSNoLev (SNo_extend0 x) = ordsucc (SNoLev x)
Proof:
Let x be given.
Assume Hx.
An exact proof term for the current goal is SNoLev_uniq2 (ordsucc (SNoLev x)) (ordinal_ordsucc (SNoLev x) (SNoLev_ordinal x Hx)) (SNo_extend0 x) (SNo_extend0_SNo_ x Hx).
Theorem. (SNo_extend1_SNoLev) The following is provable:
∀x, SNo xSNoLev (SNo_extend1 x) = ordsucc (SNoLev x)
Proof:
Let x be given.
Assume Hx.
An exact proof term for the current goal is SNoLev_uniq2 (ordsucc (SNoLev x)) (ordinal_ordsucc (SNoLev x) (SNoLev_ordinal x Hx)) (SNo_extend1 x) (SNo_extend1_SNo_ x Hx).
Theorem. (SNo_extend0_nIn) The following is provable:
∀x, SNo xSNoLev x SNo_extend0 x
Proof:
Let x be given.
Assume Hx: SNo x.
Set alpha to be the term SNoLev x.
Assume H2: α PSNo (ordsucc α) (λδ ⇒ δ x δ α).
Set p to be the term λδ ⇒ δ x δ α of type setprop.
Apply binunionE {βordsucc α|p β} {β '|βordsucc α, ¬ p β} α H2 to the current goal.
Assume H3: α {βordsucc α|p β}.
Apply SepE2 (ordsucc α) p α H3 to the current goal.
Assume _.
Assume H4: α α.
Apply H4 to the current goal.
Use reflexivity.
Assume H3: α {β '|βordsucc α, ¬ p β}.
Apply ReplSepE_impred (ordsucc α) (λβ ⇒ ¬ p β) (λx ⇒ x ') α H3 to the current goal.
Let β be given.
Assume Hb: β ordsucc α.
Assume H4: ¬ p β.
Assume H5: α = β '.
Apply tagged_not_ordinal β to the current goal.
We will prove ordinal (β ').
rewrite the current goal using H5 (from right to left).
We will prove ordinal α.
An exact proof term for the current goal is SNoLev_ordinal x Hx.
Theorem. (SNo_extend1_In) The following is provable:
∀x, SNo xSNoLev x SNo_extend1 x
Proof:
Let x be given.
Assume Hx: SNo x.
Set alpha to be the term SNoLev x.
Set p to be the term λδ ⇒ δ x δ = α of type setprop.
We will prove α {βordsucc α|p β} {β '|βordsucc α, ¬ p β}.
Apply binunionI1 to the current goal.
Apply SepI to the current goal.
We will prove α ordsucc α.
Apply ordsuccI2 to the current goal.
We will prove α x α = α.
Apply orIR to the current goal.
Use reflexivity.
Theorem. (SNo_extend0_SNoEq) The following is provable:
∀x, SNo xSNoEq_ (SNoLev x) (SNo_extend0 x) x
Proof:
Let x be given.
Assume Hx: SNo x.
Set alpha to be the term SNoLev x.
We prove the intermediate claim La: ordinal α.
An exact proof term for the current goal is SNoLev_ordinal x Hx.
We will prove SNoEq_ α (SNo_extend0 x) x.
Set p to be the term λβ ⇒ β x of type setprop.
Set q to be the term λβ ⇒ β x β α of type setprop.
We will prove PNoEq_ α (λβ ⇒ β PSNo (ordsucc α) q) p.
Apply PNoEq_tra_ α (λβ ⇒ β PSNo (ordsucc α) q) q p to the current goal.
We will prove PNoEq_ α (λβ ⇒ β PSNo (ordsucc α) q) q.
Apply PNoEq_antimon_ (λβ ⇒ β PSNo (ordsucc α) q) q (ordsucc α) (ordinal_ordsucc α La) α (ordsuccI2 α) to the current goal.
We will prove PNoEq_ (ordsucc α) (λβ ⇒ β PSNo (ordsucc α) q) q.
An exact proof term for the current goal is PNoEq_PSNo (ordsucc α) (ordinal_ordsucc α La) q.
We will prove PNoEq_ α q p.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is PNo_extend0_eq α p.
Theorem. (SNo_extend1_SNoEq) The following is provable:
∀x, SNo xSNoEq_ (SNoLev x) (SNo_extend1 x) x
Proof:
Let x be given.
Assume Hx: SNo x.
Set alpha to be the term SNoLev x.
We prove the intermediate claim La: ordinal α.
An exact proof term for the current goal is SNoLev_ordinal x Hx.
We will prove SNoEq_ α (SNo_extend1 x) x.
Set p to be the term λβ ⇒ β x of type setprop.
Set q to be the term λβ ⇒ β x β = α of type setprop.
We will prove PNoEq_ α (λβ ⇒ β PSNo (ordsucc α) q) p.
Apply PNoEq_tra_ α (λβ ⇒ β PSNo (ordsucc α) q) q p to the current goal.
We will prove PNoEq_ α (λβ ⇒ β PSNo (ordsucc α) q) q.
Apply PNoEq_antimon_ (λβ ⇒ β PSNo (ordsucc α) q) q (ordsucc α) (ordinal_ordsucc α La) α (ordsuccI2 α) to the current goal.
We will prove PNoEq_ (ordsucc α) (λβ ⇒ β PSNo (ordsucc α) q) q.
An exact proof term for the current goal is PNoEq_PSNo (ordsucc α) (ordinal_ordsucc α La) q.
We will prove PNoEq_ α q p.
Apply PNoEq_sym_ to the current goal.
An exact proof term for the current goal is PNo_extend1_eq α p.
Theorem. (SNoLev_0_eq_0) The following is provable:
∀x, SNo xSNoLev x = 0x = 0
Proof:
Let x be given.
Assume Hx Hx0.
Apply SNo_eq x 0 Hx SNo_0 to the current goal.
We will prove SNoLev x = SNoLev 0.
rewrite the current goal using SNoLev_0 (from left to right).
An exact proof term for the current goal is Hx0.
We will prove SNoEq_ (SNoLev x) x 0.
rewrite the current goal using Hx0 (from left to right).
Let α be given.
Assume Ha: α 0.
We will prove False.
An exact proof term for the current goal is EmptyE α Ha.
Definition. We define eps_ to be λn ⇒ {0} {(ordsucc m) '|mn} of type setset.
Theorem. (eps_ordinal_In_eq_0) The following is provable:
∀n alpha, ordinal αα eps_ nα = 0
Proof:
Let n and α be given.
Assume Ha.
Assume H1: α {0} {(ordsucc m) '|mn}.
Apply binunionE {0} {(ordsucc m) '|mn} α H1 to the current goal.
Assume H2: α {0}.
An exact proof term for the current goal is SingE 0 α H2.
Assume H2: α {(ordsucc m) '|mn}.
We will prove False.
Apply ReplE_impred n (λm ⇒ (ordsucc m) ') α H2 to the current goal.
Let m be given.
Assume Hm: m n.
Assume H3: α = (ordsucc m) '.
Apply tagged_not_ordinal (ordsucc m) to the current goal.
We will prove ordinal ((ordsucc m) ').
rewrite the current goal using H3 (from right to left).
An exact proof term for the current goal is Ha.
Theorem. (eps_0_1) The following is provable:
Proof:
Apply set_ext to the current goal.
Let x be given.
Assume Hx: x {0} {(ordsucc m) '|m0}.
Apply binunionE {0} {(ordsucc m) '|m0} x Hx to the current goal.
Assume Hx: x {0}.
rewrite the current goal using SingE 0 x Hx (from left to right).
We will prove 0 1.
An exact proof term for the current goal is In_0_1.
Assume Hx: x {(ordsucc m) '|m0}.
Apply ReplE_impred 0 (λm ⇒ (ordsucc m) ') x Hx to the current goal.
Let m be given.
Assume Hm: m 0.
We will prove False.
An exact proof term for the current goal is EmptyE m Hm.
Let x be given.
Assume Hx: x 1.
Apply cases_1 x Hx (λx ⇒ x eps_ 0) to the current goal.
We will prove 0 {0} {(ordsucc m) '|m0}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
Theorem. (SNo__eps_) The following is provable:
Proof:
Let n be given.
Assume Hn.
We prove the intermediate claim Ln: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We will prove eps_ n SNoElts_ (ordsucc n) mordsucc n, exactly1of2 (m ' eps_ n) (m eps_ n).
Apply andI to the current goal.
Let x be given.
Assume Hx: x {0} {(ordsucc m) '|mn}.
Apply binunionE {0} {(ordsucc m) '|mn} x Hx to the current goal.
Assume Hx: x {0}.
rewrite the current goal using SingE 0 x Hx (from left to right).
We will prove 0 SNoElts_ (ordsucc n).
We will prove 0 ordsucc n {β '|βordsucc n}.
Apply binunionI1 to the current goal.
We will prove 0 ordsucc n.
An exact proof term for the current goal is nat_0_in_ordsucc n Ln.
Assume Hx: x {(ordsucc m) '|mn}.
Apply ReplE_impred n (λm ⇒ (ordsucc m) ') x Hx to the current goal.
Let m be given.
Assume Hm: m n.
Assume Hxm: x = (ordsucc m) '.
We will prove x SNoElts_ (ordsucc n).
We will prove x ordsucc n {β '|βordsucc n}.
Apply binunionI2 to the current goal.
We will prove x {β '|βordsucc n}.
rewrite the current goal using Hxm (from left to right).
We will prove (ordsucc m) ' {β '|βordsucc n}.
An exact proof term for the current goal is ReplI (ordsucc n) (λβ ⇒ β ') (ordsucc m) (nat_ordsucc_in_ordsucc n Ln m Hm).
Let m be given.
Assume Hm: m ordsucc n.
We prove the intermediate claim Lm: nat_p m.
An exact proof term for the current goal is nat_p_trans (ordsucc n) (nat_ordsucc n Ln) m Hm.
Apply nat_inv m Lm to the current goal.
Assume Hm: m = 0.
rewrite the current goal using Hm (from left to right).
Apply exactly1of2_I2 to the current goal.
We will prove 0 ' eps_ n.
Assume H1: 0 ' {0} {(ordsucc m) '|mn}.
Apply binunionE {0} {(ordsucc m) '|mn} (0 ') H1 to the current goal.
Assume H2: 0 ' {0}.
Apply EmptyE {1} to the current goal.
We will prove {1} 0.
rewrite the current goal using SingE 0 (0 ') H2 (from right to left) at position 2.
We will prove {1} 0 '.
We will prove {1} 0 {{1}}.
Apply binunionI2 to the current goal.
We will prove {1} {{1}}.
Apply SingI to the current goal.
Assume H2: 0 ' {(ordsucc m) '|mn}.
Apply ReplE_impred n (λm ⇒ (ordsucc m) ') (0 ') H2 to the current goal.
Let m be given.
Assume Hm: m n.
Assume H3: 0 ' = (ordsucc m) '.
Apply neq_0_ordsucc m to the current goal.
We will prove 0 = ordsucc m.
Apply tagged_eqE_eq to the current goal.
We will prove ordinal 0.
An exact proof term for the current goal is ordinal_Empty.
We will prove ordinal (ordsucc m).
An exact proof term for the current goal is (nat_p_ordinal (ordsucc m) (nat_ordsucc m (nat_p_trans n Ln m Hm))).
We will prove 0 ' = (ordsucc m) '.
An exact proof term for the current goal is H3.
We will prove 0 eps_ n.
We will prove 0 {0} {(ordsucc m) '|mn}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is SingI 0.
Assume H1.
Apply H1 to the current goal.
Let k be given.
Assume H1.
Apply H1 to the current goal.
Assume Hk: nat_p k.
Assume Hmk: m = ordsucc k.
We prove the intermediate claim Lm: nat_p m.
rewrite the current goal using Hmk (from left to right).
An exact proof term for the current goal is nat_ordsucc k Hk.
We prove the intermediate claim LSk: ordsucc k ordsucc n.
rewrite the current goal using Hmk (from right to left).
An exact proof term for the current goal is Hm.
We prove the intermediate claim Lk: k n.
Apply ordsuccE n (ordsucc k) LSk to the current goal.
Assume H2: ordsucc k n.
Apply nat_trans n Ln (ordsucc k) H2 to the current goal.
We will prove k ordsucc k.
Apply ordsuccI2 to the current goal.
Assume H2: ordsucc k = n.
rewrite the current goal using H2 (from right to left).
Apply ordsuccI2 to the current goal.
Apply exactly1of2_I1 to the current goal.
We will prove m ' eps_ n.
We will prove m ' {0} {(ordsucc m) '|mn}.
Apply binunionI2 to the current goal.
rewrite the current goal using Hmk (from left to right).
We will prove (ordsucc k) ' {(ordsucc m) '|mn}.
An exact proof term for the current goal is ReplI n (λk ⇒ (ordsucc k) ') k Lk.
We will prove m eps_ n.
Assume H1: m {0} {(ordsucc m) '|mn}.
Apply binunionE {0} {(ordsucc m) '|mn} m H1 to the current goal.
Assume H2: m {0}.
Apply EmptyE 0 to the current goal.
We will prove 0 0.
rewrite the current goal using SingE 0 m H2 (from right to left) at position 2.
We will prove 0 m.
rewrite the current goal using Hmk (from left to right).
An exact proof term for the current goal is nat_0_in_ordsucc k Hk.
Assume H2: m {(ordsucc j) '|jn}.
Apply ReplE_impred n (λj ⇒ (ordsucc j) ') m H2 to the current goal.
Let j be given.
Assume Hj: j n.
Assume Hmj: m = (ordsucc j) '.
Apply tagged_not_ordinal (ordsucc j) to the current goal.
We will prove ordinal ((ordsucc j) ').
rewrite the current goal using Hmj (from right to left).
We will prove ordinal m.
An exact proof term for the current goal is nat_p_ordinal m Lm.
Theorem. (SNo_eps_) The following is provable:
Proof:
Let n be given.
Assume Hn.
We prove the intermediate claim Ln: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
An exact proof term for the current goal is SNo_SNo (ordsucc n) (ordinal_ordsucc n (nat_p_ordinal n Ln)) (eps_ n) (SNo__eps_ n Hn).
Theorem. (SNo_eps_1) The following is provable:
Proof:
An exact proof term for the current goal is SNo_eps_ 1 (nat_p_omega 1 nat_1).
Theorem. (SNoLev_eps_) The following is provable:
Proof:
Let n be given.
Assume Hn.
We prove the intermediate claim Ln: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
Apply SNoLev_uniq2 (ordsucc n) (ordinal_ordsucc n (nat_p_ordinal n Ln)) (eps_ n) (SNo__eps_ n Hn) to the current goal.
Proof:
Let n be given.
Assume Hn.
Apply SNoS_I ω omega_ordinal (eps_ n) (ordsucc n) to the current goal.
We will prove ordsucc n ω.
An exact proof term for the current goal is omega_ordsucc n Hn.
We will prove SNo_ (ordsucc n) (eps_ n).
An exact proof term for the current goal is SNo__eps_ n Hn.
Theorem. (SNo_eps_decr) The following is provable:
Proof:
Let n be given.
Assume Hn.
Let m be given.
Assume Hm.
We prove the intermediate claim Lnn: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We prove the intermediate claim Lmn: nat_p m.
An exact proof term for the current goal is nat_p_trans n Lnn m Hm.
We prove the intermediate claim Lm: m ω.
An exact proof term for the current goal is nat_p_omega m Lmn.
Apply SNoLtI3 to the current goal.
We will prove SNoLev (eps_ m) SNoLev (eps_ n).
rewrite the current goal using SNoLev_eps_ m Lm (from left to right).
rewrite the current goal using SNoLev_eps_ n Hn (from left to right).
We will prove ordsucc m ordsucc n.
An exact proof term for the current goal is nat_ordsucc_in_ordsucc n Lnn m Hm.
We will prove SNoEq_ (SNoLev (eps_ m)) (eps_ n) (eps_ m).
rewrite the current goal using SNoLev_eps_ m Lm (from left to right).
We will prove SNoEq_ (ordsucc m) (eps_ n) (eps_ m).
Let k be given.
Assume Hk: k ordsucc m.
We will prove k eps_ n k eps_ m.
We prove the intermediate claim Lk: ordinal k.
An exact proof term for the current goal is nat_p_ordinal k (nat_p_trans (ordsucc m) (nat_ordsucc m Lmn) k Hk).
Apply iffI to the current goal.
Assume H1: k eps_ n.
rewrite the current goal using eps_ordinal_In_eq_0 n k Lk H1 (from left to right).
We will prove 0 eps_ m.
We will prove 0 {0} {(ordsucc j) '|jm}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
Assume H1: k eps_ m.
rewrite the current goal using eps_ordinal_In_eq_0 m k Lk H1 (from left to right).
We will prove 0 eps_ n.
We will prove 0 {0} {(ordsucc j) '|jn}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
We will prove SNoLev (eps_ m) eps_ n.
rewrite the current goal using SNoLev_eps_ m Lm (from left to right).
Assume H1: ordsucc m eps_ n.
Apply neq_ordsucc_0 m to the current goal.
We will prove ordsucc m = 0.
An exact proof term for the current goal is eps_ordinal_In_eq_0 n (ordsucc m) (ordinal_ordsucc m (nat_p_ordinal m Lmn)) H1.
Theorem. (SNo_eps_pos) The following is provable:
Proof:
Let n be given.
Assume Hn.
Apply SNoLtI2 0 (eps_ n) to the current goal.
We will prove SNoLev 0 SNoLev (eps_ n).
rewrite the current goal using SNoLev_0 (from left to right).
rewrite the current goal using SNoLev_eps_ n Hn (from left to right).
We will prove 0 ordsucc n.
An exact proof term for the current goal is nat_0_in_ordsucc n (omega_nat_p n Hn).
We will prove SNoEq_ (SNoLev 0) 0 (eps_ n).
rewrite the current goal using SNoLev_0 (from left to right).
Let α be given.
Assume Ha: α 0.
We will prove False.
An exact proof term for the current goal is EmptyE α Ha.
We will prove SNoLev 0 eps_ n.
rewrite the current goal using SNoLev_0 (from left to right).
We will prove 0 eps_ n.
We will prove 0 {0} {(ordsucc m) '|mn}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
Theorem. (SNo_pos_eps_Lt) The following is provable:
∀n, nat_p nxSNoS_ (ordsucc n), 0 < xeps_ n < x
Proof:
Let n be given.
Assume Hn: nat_p n.
Let x be given.
Assume Hx: x SNoS_ (ordsucc n).
Assume Hxpos: 0 < x.
We prove the intermediate claim Ln: n ω.
An exact proof term for the current goal is nat_p_omega n Hn.
Apply SNoS_E2 (ordsucc n) (nat_p_ordinal (ordsucc n) (nat_ordsucc n Hn)) x Hx to the current goal.
Assume Hx1: SNoLev x ordsucc n.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
We will prove eps_ n < x.
Apply SNoLt_trichotomy_or_impred (eps_ n) x (SNo_eps_ n Ln) Hx3 to the current goal.
Assume H2: eps_ n < x.
An exact proof term for the current goal is H2.
Assume H2: eps_ n = x.
We will prove False.
Apply In_irref (ordsucc n) to the current goal.
rewrite the current goal using SNoLev_eps_ n Ln (from right to left) at position 1.
We will prove SNoLev (eps_ n) ordsucc n.
rewrite the current goal using H2 (from left to right).
An exact proof term for the current goal is Hx1.
Assume H2: x < eps_ n.
We will prove False.
Apply SNoLtE x (eps_ n) Hx3 (SNo_eps_ n Ln) H2 to the current goal.
Let z be given.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev x SNoLev (eps_ n).
Assume Hz3: SNoEq_ (SNoLev z) z x.
Assume Hz4: SNoEq_ (SNoLev z) z (eps_ n).
Assume Hz5: x < z.
Assume Hz6: z < eps_ n.
Assume Hz7: SNoLev z x.
Assume Hz8: SNoLev z eps_ n.
We prove the intermediate claim Lz0: z = 0.
Apply SNoLev_0_eq_0 z Hz1 to the current goal.
An exact proof term for the current goal is eps_ordinal_In_eq_0 n (SNoLev z) (SNoLev_ordinal z Hz1) Hz8.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLt_tra x z x Hx3 Hz1 Hx3 Hz5 to the current goal.
We will prove z < x.
rewrite the current goal using Lz0 (from left to right).
An exact proof term for the current goal is Hxpos.
Assume H1: SNoLev x SNoLev (eps_ n).
Assume H2: SNoEq_ (SNoLev x) x (eps_ n).
Assume H3: SNoLev x (eps_ n).
We prove the intermediate claim Lx0: x = 0.
Apply SNoLev_0_eq_0 x Hx3 to the current goal.
An exact proof term for the current goal is eps_ordinal_In_eq_0 n (SNoLev x) Hx2 H3.
Apply SNoLt_irref x to the current goal.
rewrite the current goal using Lx0 (from left to right) at position 1.
An exact proof term for the current goal is Hxpos.
rewrite the current goal using SNoLev_eps_ n Ln (from left to right).
Assume H1: ordsucc n SNoLev x.
We will prove False.
An exact proof term for the current goal is In_no2cycle (SNoLev x) (ordsucc n) Hx1 H1.
Theorem. (SNo_pos_eps_Le) The following is provable:
∀n, nat_p nxSNoS_ (ordsucc (ordsucc n)), 0 < xeps_ n x
Proof:
Let n be given.
Assume Hn.
Let x be given.
Assume Hx: x SNoS_ (ordsucc (ordsucc n)).
Assume Hxpos: 0 < x.
We prove the intermediate claim Ln: n ω.
An exact proof term for the current goal is nat_p_omega n Hn.
Apply SNoS_E2 (ordsucc (ordsucc n)) (nat_p_ordinal (ordsucc (ordsucc n)) (nat_ordsucc (ordsucc n) (nat_ordsucc n Hn))) x Hx to the current goal.
Assume Hx1: SNoLev x ordsucc (ordsucc n).
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
We will prove eps_ n x.
Apply SNoLtLe_or x (eps_ n) Hx3 (SNo_eps_ n Ln) to the current goal.
Assume H2: x < eps_ n.
We will prove False.
Apply SNoLtE x (eps_ n) Hx3 (SNo_eps_ n Ln) H2 to the current goal.
Let z be given.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev x SNoLev (eps_ n).
Assume Hz3: SNoEq_ (SNoLev z) z x.
Assume Hz4: SNoEq_ (SNoLev z) z (eps_ n).
Assume Hz5: x < z.
Assume Hz6: z < eps_ n.
Assume Hz7: SNoLev z x.
Assume Hz8: SNoLev z eps_ n.
We prove the intermediate claim Lz0: z = 0.
Apply SNoLev_0_eq_0 z Hz1 to the current goal.
An exact proof term for the current goal is eps_ordinal_In_eq_0 n (SNoLev z) (SNoLev_ordinal z Hz1) Hz8.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLt_tra x z x Hx3 Hz1 Hx3 Hz5 to the current goal.
We will prove z < x.
rewrite the current goal using Lz0 (from left to right).
An exact proof term for the current goal is Hxpos.
Assume H1: SNoLev x SNoLev (eps_ n).
Assume H2: SNoEq_ (SNoLev x) x (eps_ n).
Assume H3: SNoLev x (eps_ n).
We prove the intermediate claim Lx0: x = 0.
Apply SNoLev_0_eq_0 x Hx3 to the current goal.
An exact proof term for the current goal is eps_ordinal_In_eq_0 n (SNoLev x) Hx2 H3.
Apply SNoLt_irref x to the current goal.
rewrite the current goal using Lx0 (from left to right) at position 1.
An exact proof term for the current goal is Hxpos.
rewrite the current goal using SNoLev_eps_ n Ln (from left to right).
Assume H3: ordsucc n SNoLev x.
We will prove False.
Apply ordsuccE (ordsucc n) (SNoLev x) Hx1 to the current goal.
Assume H4: SNoLev x ordsucc n.
An exact proof term for the current goal is In_no2cycle (SNoLev x) (ordsucc n) H4 H3.
Assume H4: SNoLev x = ordsucc n.
Apply In_irref (SNoLev x) to the current goal.
rewrite the current goal using H4 (from left to right) at position 1.
An exact proof term for the current goal is H3.
Assume H2: eps_ n x.
An exact proof term for the current goal is H2.
Theorem. (eps_SNo_eq) The following is provable:
∀n, nat_p nxSNoS_ (ordsucc n), 0 < xSNoEq_ (SNoLev x) (eps_ n) xmn, x = eps_ m
Proof:
Let n be given.
Assume Hn.
Let x be given.
Assume Hx1: x SNoS_ (ordsucc n).
Assume Hx2: 0 < x.
Assume Hx3: SNoEq_ (SNoLev x) (eps_ n) x.
Apply SNoS_E2 (ordsucc n) (nat_p_ordinal (ordsucc n) (nat_ordsucc n Hn)) x Hx1 to the current goal.
Assume Hx1a: SNoLev x ordsucc n.
Assume Hx1b: ordinal (SNoLev x).
Assume Hx1c: SNo x.
Assume Hx1d: SNo_ (SNoLev x) x.
We prove the intermediate claim L1: nat_p (SNoLev x).
Apply nat_p_trans (ordsucc n) (nat_ordsucc n Hn) to the current goal.
We will prove SNoLev x ordsucc n.
An exact proof term for the current goal is Hx1a.
Apply nat_inv (SNoLev x) L1 to the current goal.
Assume H1: SNoLev x = 0.
We will prove False.
We prove the intermediate claim L2: x = 0.
An exact proof term for the current goal is SNoLev_0_eq_0 x Hx1c H1.
Apply SNoLt_irref x to the current goal.
rewrite the current goal using L2 (from left to right) at position 1.
An exact proof term for the current goal is Hx2.
Assume H1.
Apply H1 to the current goal.
Let m be given.
Assume H1.
Apply H1 to the current goal.
Assume Hm1: nat_p m.
Assume Hm2: SNoLev x = ordsucc m.
We use m to witness the existential quantifier.
Apply andI to the current goal.
We will prove m n.
Apply nat_ordsucc_trans n Hn (SNoLev x) Hx1a to the current goal.
We will prove m SNoLev x.
rewrite the current goal using Hm2 (from left to right).
Apply ordsuccI2 to the current goal.
We will prove x = eps_ m.
Apply SNo_eq x (eps_ m) Hx1c (SNo_eps_ m (nat_p_omega m Hm1)) to the current goal.
We will prove SNoLev x = SNoLev (eps_ m).
rewrite the current goal using SNoLev_eps_ m (nat_p_omega m Hm1) (from left to right).
An exact proof term for the current goal is Hm2.
We will prove SNoEq_ (SNoLev x) x (eps_ m).
Apply SNoEq_tra_ (SNoLev x) x (eps_ n) (eps_ m) to the current goal.
Apply SNoEq_sym_ to the current goal.
An exact proof term for the current goal is Hx3.
We will prove SNoEq_ (SNoLev x) (eps_ n) (eps_ m).
rewrite the current goal using Hm2 (from left to right).
We will prove SNoEq_ (ordsucc m) (eps_ n) (eps_ m).
Apply SNoEq_I to the current goal.
Let k be given.
Assume Hk: k ordsucc m.
We prove the intermediate claim L3: ordinal k.
An exact proof term for the current goal is nat_p_ordinal k (nat_p_trans (ordsucc m) (nat_ordsucc m Hm1) k Hk).
Apply iffI to the current goal.
Assume H2: k eps_ n.
rewrite the current goal using eps_ordinal_In_eq_0 n k L3 H2 (from left to right).
We will prove 0 eps_ m.
We will prove 0 {0} {SetAdjoin (ordsucc k) {1}|km}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
Assume H2: k eps_ m.
rewrite the current goal using eps_ordinal_In_eq_0 m k L3 H2 (from left to right).
We will prove 0 eps_ n.
We will prove 0 {0} {SetAdjoin (ordsucc k) {1}|kn}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
Proof:
Let n be given.
Assume Hn.
Set L to be the term {0}.
Set R to be the term {eps_ m|mn}.
We prove the intermediate claim Ln: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We will prove (wL, SNo w) (zR, SNo z) (wL, zR, w < z).
Apply and3I to the current goal.
Let w be given.
Assume Hw.
rewrite the current goal using SingE 0 w Hw (from left to right).
An exact proof term for the current goal is SNo_0.
Let z be given.
Assume Hz.
Apply ReplE_impred n eps_ z Hz to the current goal.
Let m be given.
Assume Hm1: m n.
Assume Hm2: z = eps_ m.
rewrite the current goal using Hm2 (from left to right).
Apply SNo_eps_ to the current goal.
We will prove m ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_p_trans n Ln m Hm1.
Let w be given.
Assume Hw.
Let z be given.
Assume Hz.
Apply ReplE_impred n eps_ z Hz to the current goal.
Let m be given.
Assume Hm1: m n.
Assume Hm2: z = eps_ m.
rewrite the current goal using SingE 0 w Hw (from left to right).
rewrite the current goal using Hm2 (from left to right).
We will prove 0 < eps_ m.
Apply SNo_eps_pos to the current goal.
We will prove m ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_p_trans n Ln m Hm1.
Theorem. (eps_SNoCut) The following is provable:
Proof:
Let n be given.
Assume Hn.
Set L to be the term {0}.
Set R to be the term {eps_ m|mn}.
We prove the intermediate claim Ln: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We prove the intermediate claim L1: SNoCutP L R.
An exact proof term for the current goal is eps_SNoCutP n Hn.
We prove the intermediate claim LRS: zR, SNo z.
Apply L1 to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim L2: (xLordsucc (SNoLev x)) = 1.
Apply set_ext to the current goal.
Let k be given.
Assume Hk.
Apply famunionE_impred L (λx ⇒ ordsucc (SNoLev x)) k Hk to the current goal.
Let w be given.
Assume Hw: w L.
rewrite the current goal using SingE 0 w Hw (from left to right).
rewrite the current goal using SNoLev_0 (from left to right).
Assume H2: k 1.
We will prove k 1.
An exact proof term for the current goal is H2.
Let i be given.
Assume Hi.
Apply cases_1 i Hi (λi ⇒ i xLordsucc (SNoLev x)) to the current goal.
We will prove 0 xLordsucc (SNoLev x).
Apply famunionI L (λx ⇒ ordsucc (SNoLev x)) 0 0 (SingI 0) to the current goal.
We will prove 0 ordsucc (SNoLev 0).
rewrite the current goal using SNoLev_0 (from left to right).
An exact proof term for the current goal is In_0_1.
We prove the intermediate claim L3: n 0(yRordsucc (SNoLev y)) = ordsucc n.
Assume Hn0: n 0.
Apply set_ext to the current goal.
Let k be given.
Assume Hk.
Apply famunionE_impred R (λy ⇒ ordsucc (SNoLev y)) k Hk to the current goal.
Let z be given.
Assume Hz: z R.
Apply ReplE_impred n eps_ z Hz to the current goal.
Let m be given.
Assume Hm1: m n.
Assume Hm2: z = eps_ m.
rewrite the current goal using Hm2 (from left to right).
rewrite the current goal using SNoLev_eps_ m (nat_p_omega m (nat_p_trans n Ln m Hm1)) (from left to right).
Assume H2: k ordsucc (ordsucc m).
We will prove k ordsucc n.
We prove the intermediate claim L3a: ordsucc m ordsucc n.
Apply ordinal_ordsucc_In to the current goal.
We will prove ordinal n.
Apply nat_p_ordinal n to the current goal.
An exact proof term for the current goal is Ln.
An exact proof term for the current goal is Hm1.
We prove the intermediate claim L3b: ordsucc m ordsucc n.
An exact proof term for the current goal is nat_trans (ordsucc n) (nat_ordsucc n Ln) (ordsucc m) L3a.
Apply ordsuccE (ordsucc m) k H2 to the current goal.
Assume H3: k ordsucc m.
Apply L3b to the current goal.
An exact proof term for the current goal is H3.
Assume H3: k = ordsucc m.
rewrite the current goal using H3 (from left to right).
An exact proof term for the current goal is L3a.
Let i be given.
Assume Hi: i ordsucc n.
We will prove i yRordsucc (SNoLev y).
Apply nat_inv n Ln to the current goal.
Assume H2: n = 0.
We will prove False.
An exact proof term for the current goal is Hn0 H2.
Assume H2.
Apply H2 to the current goal.
Let n' be given.
Assume H2.
Apply H2 to the current goal.
Assume Hn'1: nat_p n'.
Assume Hn'2: n = ordsucc n'.
Apply famunionI R (λy ⇒ ordsucc (SNoLev y)) (eps_ n') i to the current goal.
We will prove eps_ n' R.
Apply ReplI to the current goal.
We will prove n' n.
rewrite the current goal using Hn'2 (from left to right).
Apply ordsuccI2 to the current goal.
We will prove i ordsucc (SNoLev (eps_ n')).
rewrite the current goal using SNoLev_eps_ n' (nat_p_omega n' Hn'1) (from left to right).
We will prove i ordsucc (ordsucc n').
rewrite the current goal using Hn'2 (from right to left).
An exact proof term for the current goal is Hi.
We prove the intermediate claim L4: (xLordsucc (SNoLev x)) (yRordsucc (SNoLev y)) = ordsucc n.
Apply xm (n = 0) to the current goal.
Assume H2: n = 0.
We prove the intermediate claim L4a: R = 0.
Apply Empty_eq to the current goal.
Let z be given.
Assume Hz.
Apply ReplE_impred n eps_ z Hz to the current goal.
Let m be given.
rewrite the current goal using H2 (from left to right).
Assume Hm1: m 0.
We will prove False.
An exact proof term for the current goal is EmptyE m Hm1.
rewrite the current goal using L4a (from left to right).
rewrite the current goal using famunion_Empty (λy ⇒ ordsucc (SNoLev y)) (from left to right).
We will prove (xLordsucc (SNoLev x)) 0 = ordsucc n.
rewrite the current goal using binunion_idr (from left to right).
We will prove (xLordsucc (SNoLev x)) = ordsucc n.
rewrite the current goal using H2 (from left to right).
An exact proof term for the current goal is L2.
Assume H2: n 0.
rewrite the current goal using L3 H2 (from right to left).
rewrite the current goal using Subq_binunion_eq (from right to left).
rewrite the current goal using L2 (from left to right).
rewrite the current goal using L3 H2 (from left to right).
We will prove 1 ordsucc n.
Let i be given.
Assume Hi.
Apply cases_1 i Hi (λi ⇒ i ordsucc n) to the current goal.
We will prove 0 ordsucc n.
Apply nat_0_in_ordsucc to the current goal.
An exact proof term for the current goal is Ln.
Apply SNoCutP_SNoCut_impred L R L1 to the current goal.
Assume H1: SNo (SNoCut L R).
rewrite the current goal using L4 (from left to right).
Assume H2: SNoLev (SNoCut L R) ordsucc (ordsucc n).
Assume H3: wL, w < SNoCut L R.
Assume H4: zR, SNoCut L R < z.
Assume H5: ∀u, SNo u(wL, w < u)(zR, u < z)SNoLev (SNoCut L R) SNoLev u SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) u.
We prove the intermediate claim L5: SNo (eps_ n).
An exact proof term for the current goal is SNo_eps_ n Hn.
We prove the intermediate claim L6: wL, w < eps_ n.
Let w be given.
Assume Hw.
rewrite the current goal using SingE 0 w Hw (from left to right).
We will prove 0 < eps_ n.
An exact proof term for the current goal is SNo_eps_pos n Hn.
We prove the intermediate claim L7: zR, eps_ n < z.
Let z be given.
Assume Hz.
Apply ReplE_impred n eps_ z Hz to the current goal.
Let m be given.
Assume Hm1: m n.
Assume Hm2: z = eps_ m.
rewrite the current goal using Hm2 (from left to right).
We will prove eps_ n < eps_ m.
An exact proof term for the current goal is SNo_eps_decr n Hn m Hm1.
Apply H5 (eps_ n) L5 L6 L7 to the current goal.
Assume H6: SNoLev (SNoCut L R) SNoLev (eps_ n).
Assume H7: SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) (eps_ n).
Use symmetry.
Apply SNo_eq (SNoCut L R) (eps_ n) H1 L5 to the current goal.
We will prove SNoLev (SNoCut L R) = SNoLev (eps_ n).
rewrite the current goal using SNoLev_eps_ n Hn (from left to right).
We will prove SNoLev (SNoCut L R) = ordsucc n.
Apply ordsuccE (ordsucc n) (SNoLev (SNoCut L R)) H2 to the current goal.
Assume H8: SNoLev (SNoCut L R) ordsucc n.
We will prove False.
We prove the intermediate claim L8: eps_ n < SNoCut L R.
Apply SNo_pos_eps_Lt n (omega_nat_p n Hn) (SNoCut L R) to the current goal.
We will prove SNoCut L R SNoS_ (ordsucc n).
Apply SNoS_I (ordsucc n) (nat_p_ordinal (ordsucc n) (nat_ordsucc n (omega_nat_p n Hn))) (SNoCut L R) (SNoLev (SNoCut L R)) H8 to the current goal.
We will prove SNo_ (SNoLev (SNoCut L R)) (SNoCut L R).
An exact proof term for the current goal is SNoLev_ (SNoCut L R) H1.
We will prove 0 < SNoCut L R.
Apply H3 to the current goal.
Apply SingI to the current goal.
Apply SNoLtE (eps_ n) (SNoCut L R) (SNo_eps_ n Hn) H1 L8 to the current goal.
Let z be given.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev (eps_ n) SNoLev (SNoCut L R).
Assume Hz3: SNoEq_ (SNoLev z) z (eps_ n).
Assume Hz4: SNoEq_ (SNoLev z) z (SNoCut L R).
Assume Hz5: eps_ n < z.
Assume Hz6: z < SNoCut L R.
Assume Hz7: SNoLev z eps_ n.
Assume Hz8: SNoLev z SNoCut L R.
We prove the intermediate claim L9: wL, w < z.
Let w be given.
Assume Hw.
rewrite the current goal using SingE 0 w Hw (from left to right).
We will prove 0 < z.
Apply SNoLt_tra 0 (eps_ n) z SNo_0 (SNo_eps_ n Hn) Hz1 to the current goal.
An exact proof term for the current goal is SNo_eps_pos n Hn.
An exact proof term for the current goal is Hz5.
We prove the intermediate claim L10: vR, z < v.
Let v be given.
Assume Hv.
Apply SNoLt_tra z (SNoCut L R) v Hz1 H1 (LRS v Hv) Hz6 to the current goal.
We will prove SNoCut L R < v.
Apply H4 to the current goal.
An exact proof term for the current goal is Hv.
Apply H5 z Hz1 L9 L10 to the current goal.
Assume H9: SNoLev (SNoCut L R) SNoLev z.
We will prove False.
Apply In_irref (SNoLev z) to the current goal.
Apply H9 to the current goal.
An exact proof term for the current goal is binintersectE2 (SNoLev (eps_ n)) (SNoLev (SNoCut L R)) (SNoLev z) Hz2.
rewrite the current goal using SNoLev_eps_ n Hn (from left to right).
Assume H9: ordsucc n SNoLev (SNoCut L R).
We will prove False.
An exact proof term for the current goal is In_no2cycle (SNoLev (SNoCut L R)) (ordsucc n) H8 H9.
rewrite the current goal using SNoLev_eps_ n Hn (from left to right).
Assume H9: SNoLev (SNoCut L R) ordsucc n.
Assume H10: SNoEq_ (SNoLev (SNoCut L R)) (eps_ n) (SNoCut L R).
Assume H11: SNoLev (SNoCut L R) eps_ n.
We prove the intermediate claim L11: mn, SNoCut L R = eps_ m.
Apply eps_SNo_eq n (omega_nat_p n Hn) (SNoCut L R) to the current goal.
We will prove SNoCut L R SNoS_ (ordsucc n).
Apply SNoS_I (ordsucc n) (nat_p_ordinal (ordsucc n) (nat_ordsucc n (omega_nat_p n Hn))) (SNoCut L R) (SNoLev (SNoCut L R)) to the current goal.
We will prove SNoLev (SNoCut L R) ordsucc n.
An exact proof term for the current goal is H9.
We will prove SNo_ (SNoLev (SNoCut L R)) (SNoCut L R).
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is H1.
We will prove 0 < SNoCut L R.
Apply H3 to the current goal.
Apply SingI to the current goal.
We will prove SNoEq_ (SNoLev (SNoCut L R)) (eps_ n) (SNoCut L R).
An exact proof term for the current goal is H10.
Apply L11 to the current goal.
Let m be given.
Assume H12.
Apply H12 to the current goal.
Assume Hm1: m n.
Assume Hm2: SNoCut L R = eps_ m.
Apply SNoLt_irref (eps_ m) to the current goal.
We will prove eps_ m < eps_ m.
rewrite the current goal using Hm2 (from right to left) at position 1.
We will prove SNoCut L R < eps_ m.
Apply H4 to the current goal.
We will prove eps_ m {eps_ m|mn}.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hm1.
Assume H8: SNoLev (SNoCut L R) = ordsucc n.
An exact proof term for the current goal is H8.
An exact proof term for the current goal is H7.
End of Section TaggedSets2
Theorem. (SNo_etaE) The following is provable:
∀z, SNo z∀p : prop, (∀L R, SNoCutP L R(xL, SNoLev x SNoLev z)(yR, SNoLev y SNoLev z)z = SNoCut L Rp)p
Proof:
Let z be given.
Assume Hz: SNo z.
Let p be given.
Assume H1.
We prove the intermediate claim LLz: ordinal (SNoLev z).
An exact proof term for the current goal is SNoLev_ordinal z Hz.
Set L to be the term {xSNoS_ (SNoLev z)|x < z}.
Set R to be the term {ySNoS_ (SNoLev z)|z < y}.
We prove the intermediate claim L1: z = SNoCut L R.
An exact proof term for the current goal is SNo_eta z Hz.
We prove the intermediate claim LL: ∀x, x LSNo x SNoLev x SNoLev z x < z.
Let x be given.
Assume Hx: x L.
Apply SepE (SNoS_ (SNoLev z)) (λx ⇒ x < z) x Hx to the current goal.
Assume Hx1: x SNoS_ (SNoLev z).
Assume Hx2: x < z.
Apply SNoS_E (SNoLev z) LLz x Hx1 to the current goal.
Let β be given.
Assume Hx3.
Apply Hx3 to the current goal.
Assume Hb: β SNoLev z.
Assume Hx3: SNo_ β x.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered (SNoLev z) LLz β Hb.
We prove the intermediate claim Lx1: SNo x.
We will prove α, ordinal α SNo_ α x.
We use β to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Lb.
An exact proof term for the current goal is Hx3.
We prove the intermediate claim Lx2: SNoLev x = β.
Apply SNoLev_prop x Lx1 to the current goal.
Assume Hx4: ordinal (SNoLev x).
Assume Hx5: SNo_ (SNoLev x) x.
Apply SNoLev_uniq x to the current goal.
An exact proof term for the current goal is Hx4.
An exact proof term for the current goal is Lb.
Apply Hx5 to the current goal.
An exact proof term for the current goal is Hx3.
We prove the intermediate claim Lx3: SNoLev x SNoLev z.
rewrite the current goal using Lx2 (from left to right).
An exact proof term for the current goal is Hb.
Apply and3I to the current goal.
We will prove SNo x.
An exact proof term for the current goal is Lx1.
We will prove SNoLev x SNoLev z.
An exact proof term for the current goal is Lx3.
We will prove x < z.
An exact proof term for the current goal is Hx2.
We prove the intermediate claim LR: ∀y, y RSNo y SNoLev y SNoLev z z < y.
Let y be given.
Assume Hy: y R.
Apply SepE (SNoS_ (SNoLev z)) (λy ⇒ z < y) y Hy to the current goal.
Assume Hy1: y SNoS_ (SNoLev z).
Assume Hy2: z < y.
Apply SNoS_E (SNoLev z) LLz y Hy1 to the current goal.
Let β be given.
Assume Hy3.
Apply Hy3 to the current goal.
Assume Hb: β SNoLev z.
Assume Hy3: SNo_ β y.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered (SNoLev z) LLz β Hb.
We prove the intermediate claim Ly1: SNo y.
We will prove α, ordinal α SNo_ α y.
We use β to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Lb.
An exact proof term for the current goal is Hy3.
We prove the intermediate claim Ly2: SNoLev y = β.
Apply SNoLev_prop y Ly1 to the current goal.
Assume Hy4: ordinal (SNoLev y).
Assume Hy5: SNo_ (SNoLev y) y.
Apply SNoLev_uniq y to the current goal.
An exact proof term for the current goal is Hy4.
An exact proof term for the current goal is Lb.
Apply Hy5 to the current goal.
An exact proof term for the current goal is Hy3.
We prove the intermediate claim Ly3: SNoLev y SNoLev z.
rewrite the current goal using Ly2 (from left to right).
An exact proof term for the current goal is Hb.
Apply and3I to the current goal.
We will prove SNo y.
An exact proof term for the current goal is Ly1.
We will prove SNoLev y SNoLev z.
An exact proof term for the current goal is Ly3.
We will prove z < y.
An exact proof term for the current goal is Hy2.
Apply H1 L R to the current goal.
We will prove SNoCutP L R.
We will prove (xL, SNo x) (yR, SNo y) (xL, yR, x < y).
Apply and3I to the current goal.
Let x be given.
Assume Hx.
Apply LL x Hx to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Let y be given.
Assume Hy.
Apply LR y Hy to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
Apply LL x Hx to the current goal.
Assume H2.
Apply H2 to the current goal.
Assume H2: SNo x.
Assume H3: SNoLev x SNoLev z.
Assume H4: x < z.
Apply LR y Hy to the current goal.
Assume H5.
Apply H5 to the current goal.
Assume H5: SNo y.
Assume H6: SNoLev y SNoLev z.
Assume H7: z < y.
An exact proof term for the current goal is SNoLt_tra x z y H2 Hz H5 H4 H7.
We will prove xL, SNoLev x SNoLev z.
Let x be given.
Assume Hx.
Apply LL x Hx to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We will prove yR, SNoLev y SNoLev z.
Let y be given.
Assume Hy.
Apply LR y Hy to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We will prove z = SNoCut L R.
An exact proof term for the current goal is L1.
Theorem. (SNo_ind) The following is provable:
∀P : setprop, (∀L R, SNoCutP L R(xL, P x)(yR, P y)P (SNoCut L R))∀z, SNo zP z
Proof:
Let P be given.
Assume H1.
We prove the intermediate claim L1: ∀α, ordinal α∀z, SNo zSNoLev z αP z.
Apply ordinal_ind to the current goal.
Let α be given.
Assume Ha: ordinal α.
Assume IH: βα, ∀z, SNo zSNoLev z βP z.
Let z be given.
Assume Hz: SNo z.
Assume Hz2: SNoLev z α.
We will prove P z.
We prove the intermediate claim LLz: ordinal (SNoLev z).
An exact proof term for the current goal is SNoLev_ordinal z Hz.
Apply SNo_etaE z Hz to the current goal.
Let L and R be given.
Assume H2: SNoCutP L R.
Assume H3: xL, SNoLev x SNoLev z.
Assume H4: yR, SNoLev y SNoLev z.
Assume H5: z = SNoCut L R.
Apply H2 to the current goal.
Assume H6.
Apply H6 to the current goal.
Assume H6: xL, SNo x.
Assume H7: yR, SNo y.
Assume H8: xL, yR, x < y.
rewrite the current goal using H5 (from left to right).
We will prove P (SNoCut L R).
Apply H1 to the current goal.
We will prove SNoCutP L R.
An exact proof term for the current goal is H2.
We will prove ∀x, x LP x.
Let x be given.
Assume Hx: x L.
Apply IH (SNoLev z) Hz2 x to the current goal.
We will prove SNo x.
An exact proof term for the current goal is H6 x Hx.
We will prove SNoLev x SNoLev z.
An exact proof term for the current goal is H3 x Hx.
We will prove ∀y, y RP y.
Let y be given.
Assume Hy: y R.
Apply IH (SNoLev z) Hz2 y to the current goal.
We will prove SNo y.
An exact proof term for the current goal is H7 y Hy.
We will prove SNoLev y SNoLev z.
An exact proof term for the current goal is H4 y Hy.
Let z be given.
Assume Hz: SNo z.
We prove the intermediate claim L2: ordinal (ordsucc (SNoLev z)).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hz.
Apply L1 (ordsucc (SNoLev z)) L2 z Hz to the current goal.
Apply ordsuccI2 to the current goal.
Beginning of Section SurrealRecI
Variable F : set(setset)set
Let default : setEps_i (λ_ ⇒ True)
Let G : set(setsetset)setsetλα g ⇒ If_ii (ordinal α) (λz : setif z SNoS_ (ordsucc α) then F z (λw ⇒ g (SNoLev w) w) else default) (λz : setdefault)
Definition. We define SNo_rec_i to be λz ⇒ In_rec_ii G (SNoLev z) z of type setset.
Hypothesis Fr : ∀z, SNo z∀g h : setset, (wSNoS_ (SNoLev z), g w = h w)F z g = F z h
Theorem. (SNo_rec_i_eq) The following is provable:
∀z, SNo zSNo_rec_i z = F z SNo_rec_i
Proof:
Let z be given.
Assume Hz: SNo z.
We will prove SNo_rec_i z = F z SNo_rec_i.
We will prove In_rec_ii G (SNoLev z) z = F z (λz ⇒ In_rec_ii G (SNoLev z) z).
We prove the intermediate claim L1: ∀α, ∀g h : setsetset, (xα, g x = h x)G α g = G α h.
Let α, g and h be given.
Assume Hgh: xα, g x = h x.
We will prove G α g = G α h.
We will prove (If_ii (ordinal α) (λz : setif z SNoS_ (ordsucc α) then F z (λw ⇒ g (SNoLev w) w) else default) (λz : setdefault)) = (If_ii (ordinal α) (λz : setif z SNoS_ (ordsucc α) then F z (λw ⇒ h (SNoLev w) w) else default) (λz : setdefault)).
Apply xm (ordinal α) to the current goal.
Assume H1: ordinal α.
rewrite the current goal using If_ii_1 (ordinal α) (λz ⇒ if z SNoS_ (ordsucc α) then F z (λw ⇒ h (SNoLev w) w) else default) (λz : setdefault) H1 (from left to right).
rewrite the current goal using If_ii_1 (ordinal α) (λz ⇒ if z SNoS_ (ordsucc α) then F z (λw ⇒ g (SNoLev w) w) else default) (λz : setdefault) H1 (from left to right).
We will prove (λz : setif z SNoS_ (ordsucc α) then F z (λw ⇒ g (SNoLev w) w) else default) = (λz : setif z SNoS_ (ordsucc α) then F z (λw ⇒ h (SNoLev w) w) else default).
Apply func_ext set set to the current goal.
Let z be given.
We will prove (if z SNoS_ (ordsucc α) then F z (λw ⇒ g (SNoLev w) w) else default) = (if z SNoS_ (ordsucc α) then F z (λw ⇒ h (SNoLev w) w) else default).
Apply xm (z SNoS_ (ordsucc α)) to the current goal.
Assume Hz: z SNoS_ (ordsucc α).
rewrite the current goal using If_i_1 (z SNoS_ (ordsucc α)) (F z (λw ⇒ g (SNoLev w) w)) default Hz (from left to right).
rewrite the current goal using If_i_1 (z SNoS_ (ordsucc α)) (F z (λw ⇒ h (SNoLev w) w)) default Hz (from left to right).
We will prove F z (λw ⇒ g (SNoLev w) w) = F z (λw ⇒ h (SNoLev w) w).
We prove the intermediate claim Lsa: ordinal (ordsucc α).
An exact proof term for the current goal is ordinal_ordsucc α H1.
Apply SNoS_E2 (ordsucc α) Lsa z Hz to the current goal.
Assume Hz1: SNoLev z ordsucc α.
Assume Hz2: ordinal (SNoLev z).
Assume Hz3: SNo z.
Assume Hz4: SNo_ (SNoLev z) z.
We will prove F z (λw ⇒ g (SNoLev w) w) = F z (λw ⇒ h (SNoLev w) w).
Apply Fr to the current goal.
We will prove SNo z.
An exact proof term for the current goal is Hz3.
We will prove wSNoS_ (SNoLev z), g (SNoLev w) w = h (SNoLev w) w.
Let w be given.
Assume Hw: w SNoS_ (SNoLev z).
Apply SNoS_E2 (SNoLev z) Hz2 w Hw to the current goal.
Assume Hw1: SNoLev w SNoLev z.
Assume Hw2: ordinal (SNoLev w).
Assume Hw3: SNo w.
Assume Hw4: SNo_ (SNoLev w) w.
We prove the intermediate claim LLw: SNoLev w α.
Apply ordsuccE α (SNoLev z) Hz1 to the current goal.
Assume H2: SNoLev z α.
Apply H1 to the current goal.
Assume Ha1 _.
An exact proof term for the current goal is Ha1 (SNoLev z) H2 (SNoLev w) Hw1.
Assume H2: SNoLev z = α.
rewrite the current goal using H2 (from right to left).
An exact proof term for the current goal is Hw1.
rewrite the current goal using Hgh (SNoLev w) LLw (from left to right).
Use reflexivity.
Assume Hz: z SNoS_ (ordsucc α).
rewrite the current goal using If_i_0 (z SNoS_ (ordsucc α)) (F z (λw ⇒ h (SNoLev w) w)) default Hz (from left to right).
An exact proof term for the current goal is If_i_0 (z SNoS_ (ordsucc α)) (F z (λw ⇒ g (SNoLev w) w)) default Hz.
Assume H1: ¬ ordinal α.
rewrite the current goal using If_ii_0 (ordinal α) (λz ⇒ if z SNoS_ (ordsucc α) then F z (λw ⇒ h (SNoLev w) w) else default) (λz : setdefault) H1 (from left to right).
An exact proof term for the current goal is If_ii_0 (ordinal α) (λz ⇒ if z SNoS_ (ordsucc α) then F z (λw ⇒ g (SNoLev w) w) else default) (λz : setdefault) H1.
rewrite the current goal using In_rec_ii_eq G L1 (from left to right).
We will prove G (SNoLev z) (In_rec_ii G) z = F z (λz ⇒ In_rec_ii G (SNoLev z) z).
We will prove (If_ii (ordinal (SNoLev z)) (λu : setif u SNoS_ (ordsucc (SNoLev z)) then F u (λw : setIn_rec_ii G (SNoLev w) w) else default) (λ_ : setdefault)) z = F z (λz ⇒ In_rec_ii G (SNoLev z) z).
We prove the intermediate claim L2: ordinal (SNoLev z).
An exact proof term for the current goal is SNoLev_ordinal z Hz.
rewrite the current goal using If_ii_1 (ordinal (SNoLev z)) (λu : setif u SNoS_ (ordsucc (SNoLev z)) then F u (λw : setIn_rec_ii G (SNoLev w) w) else default) (λ_ : setdefault) L2 (from left to right).
We will prove (if z SNoS_ (ordsucc (SNoLev z)) then F z (λw : setIn_rec_ii G (SNoLev w) w) else default) = F z (λz ⇒ In_rec_ii G (SNoLev z) z).
We prove the intermediate claim L3: z SNoS_ (ordsucc (SNoLev z)).
An exact proof term for the current goal is SNoS_SNoLev z Hz.
An exact proof term for the current goal is If_i_1 (z SNoS_ (ordsucc (SNoLev z))) (F z (λw : setIn_rec_ii G (SNoLev w) w)) default L3.
End of Section SurrealRecI
Beginning of Section SurrealRecII
Variable F : set(set(setset))(setset)
Let default : (setset)Descr_ii (λ_ ⇒ True)
Let G : set(setset(setset))set(setset)λα g ⇒ If_iii (ordinal α) (λz : setIf_ii (z SNoS_ (ordsucc α)) (F z (λw ⇒ g (SNoLev w) w)) default) (λz : setdefault)
Definition. We define SNo_rec_ii to be λz ⇒ In_rec_iii G (SNoLev z) z of type set(setset).
Hypothesis Fr : ∀z, SNo z∀g h : set(setset), (wSNoS_ (SNoLev z), g w = h w)F z g = F z h
Theorem. (SNo_rec_ii_eq) The following is provable:
∀z, SNo zSNo_rec_ii z = F z SNo_rec_ii
Proof:
Let z be given.
Assume Hz: SNo z.
We will prove SNo_rec_ii z = F z SNo_rec_ii.
We will prove In_rec_iii G (SNoLev z) z = F z (λz ⇒ In_rec_iii G (SNoLev z) z).
We prove the intermediate claim L1: ∀α, ∀g h : setset(setset), (xα, g x = h x)G α g = G α h.
Let α, g and h be given.
Assume Hgh: xα, g x = h x.
We will prove G α g = G α h.
We will prove (If_iii (ordinal α) (λz : setIf_ii (z SNoS_ (ordsucc α)) (F z (λw ⇒ g (SNoLev w) w)) default) (λz : setdefault)) = (If_iii (ordinal α) (λz : setIf_ii (z SNoS_ (ordsucc α)) (F z (λw ⇒ h (SNoLev w) w)) default) (λz : setdefault)).
Apply xm (ordinal α) to the current goal.
Assume H1: ordinal α.
rewrite the current goal using If_iii_1 (ordinal α) (λz ⇒ If_ii (z SNoS_ (ordsucc α)) (F z (λw ⇒ h (SNoLev w) w)) default) (λz : setdefault) H1 (from left to right).
rewrite the current goal using If_iii_1 (ordinal α) (λz ⇒ If_ii (z SNoS_ (ordsucc α)) (F z (λw ⇒ g (SNoLev w) w)) default) (λz : setdefault) H1 (from left to right).
We will prove (λz : setIf_ii (z SNoS_ (ordsucc α)) (F z (λw ⇒ g (SNoLev w) w)) default) = (λz : setIf_ii (z SNoS_ (ordsucc α)) (F z (λw ⇒ h (SNoLev w) w)) default).
Apply func_ext set (setset) to the current goal.
Let z be given.
We will prove (If_ii (z SNoS_ (ordsucc α)) (F z (λw ⇒ g (SNoLev w) w)) default) = (If_ii (z SNoS_ (ordsucc α)) (F z (λw ⇒ h (SNoLev w) w)) default).
Apply xm (z SNoS_ (ordsucc α)) to the current goal.
Assume Hz: z SNoS_ (ordsucc α).
rewrite the current goal using If_ii_1 (z SNoS_ (ordsucc α)) (F z (λw ⇒ g (SNoLev w) w)) default Hz (from left to right).
rewrite the current goal using If_ii_1 (z SNoS_ (ordsucc α)) (F z (λw ⇒ h (SNoLev w) w)) default Hz (from left to right).
We will prove F z (λw ⇒ g (SNoLev w) w) = F z (λw ⇒ h (SNoLev w) w).
We prove the intermediate claim Lsa: ordinal (ordsucc α).
An exact proof term for the current goal is ordinal_ordsucc α H1.
Apply SNoS_E2 (ordsucc α) Lsa z Hz to the current goal.
Assume Hz1: SNoLev z ordsucc α.
Assume Hz2: ordinal (SNoLev z).
Assume Hz3: SNo z.
Assume Hz4: SNo_ (SNoLev z) z.
We will prove F z (λw ⇒ g (SNoLev w) w) = F z (λw ⇒ h (SNoLev w) w).
Apply Fr to the current goal.
We will prove SNo z.
An exact proof term for the current goal is Hz3.
We will prove wSNoS_ (SNoLev z), g (SNoLev w) w = h (SNoLev w) w.
Let w be given.
Assume Hw: w SNoS_ (SNoLev z).
Apply SNoS_E2 (SNoLev z) Hz2 w Hw to the current goal.
Assume Hw1: SNoLev w SNoLev z.
Assume Hw2: ordinal (SNoLev w).
Assume Hw3: SNo w.
Assume Hw4: SNo_ (SNoLev w) w.
We prove the intermediate claim LLw: SNoLev w α.
Apply ordsuccE α (SNoLev z) Hz1 to the current goal.
Assume H2: SNoLev z α.
Apply H1 to the current goal.
Assume Ha1 _.
An exact proof term for the current goal is Ha1 (SNoLev z) H2 (SNoLev w) Hw1.
Assume H2: SNoLev z = α.
rewrite the current goal using H2 (from right to left).
An exact proof term for the current goal is Hw1.
rewrite the current goal using Hgh (SNoLev w) LLw (from left to right).
Use reflexivity.
Assume Hz: z SNoS_ (ordsucc α).
rewrite the current goal using If_ii_0 (z SNoS_ (ordsucc α)) (F z (λw ⇒ h (SNoLev w) w)) default Hz (from left to right).
An exact proof term for the current goal is If_ii_0 (z SNoS_ (ordsucc α)) (F z (λw ⇒ g (SNoLev w) w)) default Hz.
Assume H1: ¬ ordinal α.
rewrite the current goal using If_iii_0 (ordinal α) (λz ⇒ If_ii (z SNoS_ (ordsucc α)) (F z (λw ⇒ h (SNoLev w) w)) default) (λz : setdefault) H1 (from left to right).
An exact proof term for the current goal is If_iii_0 (ordinal α) (λz ⇒ If_ii (z SNoS_ (ordsucc α)) (F z (λw ⇒ g (SNoLev w) w)) default) (λz : setdefault) H1.
rewrite the current goal using In_rec_iii_eq G L1 (from left to right).
We will prove G (SNoLev z) (In_rec_iii G) z = F z (λz ⇒ In_rec_iii G (SNoLev z) z).
We will prove (If_iii (ordinal (SNoLev z)) (λu : setIf_ii (u SNoS_ (ordsucc (SNoLev z))) (F u (λw : setIn_rec_iii G (SNoLev w) w)) default) (λ_ : setdefault)) z = F z (λz ⇒ In_rec_iii G (SNoLev z) z).
We prove the intermediate claim L2: ordinal (SNoLev z).
An exact proof term for the current goal is SNoLev_ordinal z Hz.
rewrite the current goal using If_iii_1 (ordinal (SNoLev z)) (λu : setIf_ii (u SNoS_ (ordsucc (SNoLev z))) (F u (λw : setIn_rec_iii G (SNoLev w) w)) default) (λ_ : setdefault) L2 (from left to right).
We will prove (If_ii (z SNoS_ (ordsucc (SNoLev z))) (F z (λw : setIn_rec_iii G (SNoLev w) w)) default) = F z (λz ⇒ In_rec_iii G (SNoLev z) z).
We prove the intermediate claim L3: z SNoS_ (ordsucc (SNoLev z)).
An exact proof term for the current goal is SNoS_SNoLev z Hz.
An exact proof term for the current goal is If_ii_1 (z SNoS_ (ordsucc (SNoLev z))) (F z (λw : setIn_rec_iii G (SNoLev w) w)) default L3.
End of Section SurrealRecII
Beginning of Section SurrealRec2
Variable F : setset(setsetset)set
Let G : set(setsetset)set(setset)setλw f z g ⇒ F w z (λx y ⇒ if x = w then g y else f x y)
Let H : set(setsetset)setsetλw f z ⇒ if SNo z then SNo_rec_i (G w f) z else Empty
Definition. We define SNo_rec2 to be SNo_rec_ii H of type setsetset.
Hypothesis Fr : ∀w, SNo w∀z, SNo z∀g h : setsetset, (xSNoS_ (SNoLev w), ∀y, SNo yg x y = h x y)(ySNoS_ (SNoLev z), g w y = h w y)F w z g = F w z h
Theorem. (SNo_rec2_G_prop) The following is provable:
∀w, SNo w∀f k : setsetset, (xSNoS_ (SNoLev w), f x = k x)∀z, SNo z∀g h : setset, (uSNoS_ (SNoLev z), g u = h u)G w f z g = G w k z h
Proof:
Let w be given.
Assume Hw: SNo w.
Let f and k be given.
Assume Hfk: xSNoS_ (SNoLev w), f x = k x.
Let z be given.
Assume Hz: SNo z.
Let g and h be given.
Assume Hgh: uSNoS_ (SNoLev z), g u = h u.
We will prove G w f z g = G w k z h.
We will prove F w z (λx y ⇒ if x = w then g y else f x y) = F w z (λx y ⇒ if x = w then h y else k x y).
Apply Fr to the current goal.
We will prove SNo w.
An exact proof term for the current goal is Hw.
We will prove SNo z.
An exact proof term for the current goal is Hz.
Let x be given.
Assume Hx: x SNoS_ (SNoLev w).
Let y be given.
Assume Hy: SNo y.
We will prove (if x = w then g y else f x y) = (if x = w then h y else k x y).
We prove the intermediate claim Lxw: x w.
An exact proof term for the current goal is SNoS_In_neq w Hw x Hx.
rewrite the current goal using If_i_0 (x = w) (g y) (f x y) Lxw (from left to right).
rewrite the current goal using If_i_0 (x = w) (h y) (k x y) Lxw (from left to right).
We will prove f x y = k x y.
rewrite the current goal using Hfk x Hx (from left to right).
Use reflexivity.
Let y be given.
Assume Hy: y SNoS_ (SNoLev z).
We will prove (if w = w then g y else f w y) = (if w = w then h y else k w y).
rewrite the current goal using If_i_1 (w = w) (g y) (f w y) (λq H ⇒ H) (from left to right).
rewrite the current goal using If_i_1 (w = w) (h y) (k w y) (λq H ⇒ H) (from left to right).
We will prove g y = h y.
An exact proof term for the current goal is Hgh y Hy.
Theorem. (SNo_rec2_eq_1) The following is provable:
∀w, SNo w∀f : setsetset, ∀z, SNo zSNo_rec_i (G w f) z = G w f z (SNo_rec_i (G w f))
Proof:
Let w be given.
Assume Hw: SNo w.
Let f be given.
We prove the intermediate claim L1: ∀z, SNo z∀g h : setset, (uSNoS_ (SNoLev z), g u = h u)G w f z g = G w f z h.
Let z be given.
Assume Hz.
Let g and h be given.
Assume Hgh.
We prove the intermediate claim L1a: xSNoS_ (SNoLev w), f x = f x.
Let x be given.
Assume Hx.
Use reflexivity.
An exact proof term for the current goal is SNo_rec2_G_prop w Hw f f L1a z Hz g h Hgh.
An exact proof term for the current goal is SNo_rec_i_eq (G w f) L1.
Theorem. (SNo_rec2_eq) The following is provable:
∀w, SNo w∀z, SNo zSNo_rec2 w z = F w z SNo_rec2
Proof:
Let w be given.
Assume Hw: SNo w.
Let z be given.
Assume Hz: SNo z.
We will prove SNo_rec2 w z = F w z SNo_rec2.
We will prove SNo_rec_ii H w z = F w z SNo_rec2.
We prove the intermediate claim L1: ∀w, SNo w∀g h : setsetset, (xSNoS_ (SNoLev w), g x = h x)H w g = H w h.
Let w be given.
Assume Hw: SNo w.
Let g and h be given.
Assume Hgh: xSNoS_ (SNoLev w), g x = h x.
We will prove H w g = H w h.
We will prove (λz : setif SNo z then SNo_rec_i (G w g) z else Empty) = (λz : setif SNo z then SNo_rec_i (G w h) z else Empty).
Apply func_ext set set to the current goal.
Let z be given.
We will prove (if SNo z then SNo_rec_i (G w g) z else Empty) = (if SNo z then SNo_rec_i (G w h) z else Empty).
Apply xm (SNo z) to the current goal.
Assume Hz: SNo z.
rewrite the current goal using If_i_1 (SNo z) (SNo_rec_i (G w g) z) Empty Hz (from left to right).
rewrite the current goal using If_i_1 (SNo z) (SNo_rec_i (G w h) z) Empty Hz (from left to right).
We will prove SNo_rec_i (G w g) z = SNo_rec_i (G w h) z.
We prove the intermediate claim L1a: ∀α, ordinal αzSNoS_ α, SNo_rec_i (G w g) z = SNo_rec_i (G w h) z.
Apply ordinal_ind to the current goal.
Let α be given.
Assume Ha: ordinal α.
Assume IH: βα, zSNoS_ β, SNo_rec_i (G w g) z = SNo_rec_i (G w h) z.
Let z be given.
Assume Hz: z SNoS_ α.
Apply SNoS_E2 α Ha z Hz to the current goal.
Assume Hz1: SNoLev z α.
Assume Hz2: ordinal (SNoLev z).
Assume Hz3: SNo z.
Assume Hz4: SNo_ (SNoLev z) z.
We will prove SNo_rec_i (G w g) z = SNo_rec_i (G w h) z.
rewrite the current goal using SNo_rec2_eq_1 w Hw g z Hz3 (from left to right).
rewrite the current goal using SNo_rec2_eq_1 w Hw h z Hz3 (from left to right).
We will prove G w g z (SNo_rec_i (G w g)) = G w h z (SNo_rec_i (G w h)).
Apply SNo_rec2_G_prop w Hw g h Hgh z Hz3 (SNo_rec_i (G w g)) (SNo_rec_i (G w h)) to the current goal.
We will prove ySNoS_ (SNoLev z), SNo_rec_i (G w g) y = SNo_rec_i (G w h) y.
Let y be given.
Assume Hy: y SNoS_ (SNoLev z).
An exact proof term for the current goal is IH (SNoLev z) Hz1 y Hy.
An exact proof term for the current goal is L1a (ordsucc (SNoLev z)) (ordinal_ordsucc (SNoLev z) (SNoLev_ordinal z Hz)) z (SNoS_SNoLev z Hz).
Assume Hz: ¬ SNo z.
rewrite the current goal using If_i_0 (SNo z) (SNo_rec_i (G w h) z) Empty Hz (from left to right).
An exact proof term for the current goal is If_i_0 (SNo z) (SNo_rec_i (G w g) z) Empty Hz.
We prove the intermediate claim L2: H w (SNo_rec_ii H) z = F w z SNo_rec2.
We will prove (if SNo z then SNo_rec_i (G w (SNo_rec_ii H)) z else Empty) = F w z SNo_rec2.
rewrite the current goal using If_i_1 (SNo z) (SNo_rec_i (G w (SNo_rec_ii H)) z) Empty Hz (from left to right).
We will prove SNo_rec_i (G w (SNo_rec_ii H)) z = F w z SNo_rec2.
We will prove SNo_rec_i (G w (SNo_rec_ii H)) z = F w z (SNo_rec_ii H).
rewrite the current goal using SNo_rec2_eq_1 w Hw (SNo_rec_ii H) z Hz (from left to right).
We will prove G w (SNo_rec_ii H) z (SNo_rec_i (G w (SNo_rec_ii H))) = F w z (SNo_rec_ii H).
We will prove F w z (λx y ⇒ if x = w then SNo_rec_i (G w (SNo_rec_ii H)) y else SNo_rec_ii H x y) = F w z (SNo_rec_ii H).
We prove the intermediate claim L2a: xSNoS_ (SNoLev w), ∀y, SNo y(if x = w then SNo_rec_i (G w (SNo_rec_ii H)) y else SNo_rec_ii H x y) = SNo_rec_ii H x y.
Let x be given.
Assume Hx: x SNoS_ (SNoLev w).
Let y be given.
Assume Hy: SNo y.
We prove the intermediate claim Lxw: x w.
An exact proof term for the current goal is SNoS_In_neq w Hw x Hx.
An exact proof term for the current goal is If_i_0 (x = w) (SNo_rec_i (G w (SNo_rec_ii H)) y) (SNo_rec_ii H x y) Lxw.
We prove the intermediate claim L2b: ySNoS_ (SNoLev z), (if w = w then SNo_rec_i (G w (SNo_rec_ii H)) y else SNo_rec_ii H w y) = SNo_rec_ii H w y.
Let y be given.
Assume Hy: y SNoS_ (SNoLev z).
rewrite the current goal using If_i_1 (w = w) (SNo_rec_i (G w (SNo_rec_ii H)) y) (SNo_rec_ii H w y) (λq H ⇒ H) (from left to right).
We prove the intermediate claim Ly: SNo y.
Apply SNoS_E2 (SNoLev z) (SNoLev_ordinal z Hz) y Hy to the current goal.
Assume Hy1: SNoLev y SNoLev z.
Assume Hy2: ordinal (SNoLev y).
Assume Hy3: SNo y.
Assume Hy4: SNo_ (SNoLev y) y.
An exact proof term for the current goal is Hy3.
We will prove SNo_rec_i (G w (SNo_rec_ii H)) y = SNo_rec_ii H w y.
Apply eq_i_tra (SNo_rec_i (G w (SNo_rec_ii H)) y) (H w (SNo_rec_ii H) y) (SNo_rec_ii H w y) to the current goal.
We will prove SNo_rec_i (G w (SNo_rec_ii H)) y = H w (SNo_rec_ii H) y.
We will prove SNo_rec_i (G w (SNo_rec_ii H)) y = if SNo y then (SNo_rec_i (G w (SNo_rec_ii H)) y) else Empty.
Use symmetry.
An exact proof term for the current goal is If_i_1 (SNo y) (SNo_rec_i (G w (SNo_rec_ii H)) y) Empty Ly.
We will prove H w (SNo_rec_ii H) y = SNo_rec_ii H w y.
rewrite the current goal using SNo_rec_ii_eq H L1 w Hw (from left to right).
We will prove H w (SNo_rec_ii H) y = H w (SNo_rec_ii H) y.
An exact proof term for the current goal is (λq H ⇒ H).
An exact proof term for the current goal is Fr w Hw z Hz (λx y ⇒ if x = w then SNo_rec_i (G w (SNo_rec_ii H)) y else SNo_rec_ii H x y) (SNo_rec_ii H) L2a L2b.
We will prove SNo_rec_ii H w z = F w z SNo_rec2.
rewrite the current goal using SNo_rec_ii_eq H L1 w Hw (from left to right).
We will prove H w (SNo_rec_ii H) z = F w z SNo_rec2.
An exact proof term for the current goal is L2.
End of Section SurrealRec2
Theorem. (SNo_ordinal_ind) The following is provable:
∀P : setprop, (∀α, ordinal αxSNoS_ α, P x)(∀x, SNo xP x)
Proof:
Let P be given.
Assume H1.
Let x be given.
Assume Hx: SNo x.
We prove the intermediate claim LLx: ordinal (SNoLev x).
An exact proof term for the current goal is SNoLev_ordinal x Hx.
We prove the intermediate claim LsLx: ordinal (ordsucc (SNoLev x)).
An exact proof term for the current goal is ordinal_ordsucc (SNoLev x) LLx.
We prove the intermediate claim LxsLx: x SNoS_ (ordsucc (SNoLev x)).
An exact proof term for the current goal is SNoS_SNoLev x Hx.
An exact proof term for the current goal is H1 (ordsucc (SNoLev x)) LsLx x LxsLx.
Theorem. (SNo_ordinal_ind2) The following is provable:
∀P : setsetprop, (∀α, ordinal α∀β, ordinal βxSNoS_ α, ySNoS_ β, P x y)(∀x y, SNo xSNo yP x y)
Proof:
Let P be given.
Assume H1.
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
We prove the intermediate claim LLx: ordinal (SNoLev x).
An exact proof term for the current goal is SNoLev_ordinal x Hx.
We prove the intermediate claim LsLx: ordinal (ordsucc (SNoLev x)).
An exact proof term for the current goal is ordinal_ordsucc (SNoLev x) LLx.
We prove the intermediate claim LxsLx: x SNoS_ (ordsucc (SNoLev x)).
An exact proof term for the current goal is SNoS_SNoLev x Hx.
We prove the intermediate claim LLy: ordinal (SNoLev y).
An exact proof term for the current goal is SNoLev_ordinal y Hy.
We prove the intermediate claim LsLy: ordinal (ordsucc (SNoLev y)).
An exact proof term for the current goal is ordinal_ordsucc (SNoLev y) LLy.
We prove the intermediate claim LysLy: y SNoS_ (ordsucc (SNoLev y)).
An exact proof term for the current goal is SNoS_SNoLev y Hy.
An exact proof term for the current goal is H1 (ordsucc (SNoLev x)) LsLx (ordsucc (SNoLev y)) LsLy x LxsLx y LysLy.
Theorem. (SNo_ordinal_ind3) The following is provable:
∀P : setsetsetprop, (∀α, ordinal α∀β, ordinal β∀γ, ordinal γxSNoS_ α, ySNoS_ β, zSNoS_ γ, P x y z)(∀x y z, SNo xSNo ySNo zP x y z)
Proof:
Let P be given.
Assume H1.
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
We prove the intermediate claim LLx: ordinal (SNoLev x).
An exact proof term for the current goal is SNoLev_ordinal x Hx.
We prove the intermediate claim LsLx: ordinal (ordsucc (SNoLev x)).
An exact proof term for the current goal is ordinal_ordsucc (SNoLev x) LLx.
We prove the intermediate claim LxsLx: x SNoS_ (ordsucc (SNoLev x)).
An exact proof term for the current goal is SNoS_SNoLev x Hx.
We prove the intermediate claim LLy: ordinal (SNoLev y).
An exact proof term for the current goal is SNoLev_ordinal y Hy.
We prove the intermediate claim LsLy: ordinal (ordsucc (SNoLev y)).
An exact proof term for the current goal is ordinal_ordsucc (SNoLev y) LLy.
We prove the intermediate claim LysLy: y SNoS_ (ordsucc (SNoLev y)).
An exact proof term for the current goal is SNoS_SNoLev y Hy.
We prove the intermediate claim LLz: ordinal (SNoLev z).
An exact proof term for the current goal is SNoLev_ordinal z Hz.
We prove the intermediate claim LsLz: ordinal (ordsucc (SNoLev z)).
An exact proof term for the current goal is ordinal_ordsucc (SNoLev z) LLz.
We prove the intermediate claim LzsLz: z SNoS_ (ordsucc (SNoLev z)).
An exact proof term for the current goal is SNoS_SNoLev z Hz.
An exact proof term for the current goal is H1 (ordsucc (SNoLev x)) LsLx (ordsucc (SNoLev y)) LsLy (ordsucc (SNoLev z)) LsLz x LxsLx y LysLy z LzsLz.
Theorem. (SNoLev_ind) The following is provable:
∀P : setprop, (∀x, SNo x(wSNoS_ (SNoLev x), P w)P x)(∀x, SNo xP x)
Proof:
Let P be given.
Assume H1: ∀x, SNo x(wSNoS_ (SNoLev x), P w)P x.
We prove the intermediate claim L1: ∀α, ordinal αxSNoS_ α, P x.
Apply ordinal_ind to the current goal.
Let α be given.
Assume Ha: ordinal α.
Assume IH: βα, xSNoS_ β, P x.
Let x be given.
Assume Hx: x SNoS_ α.
Apply SNoS_E2 α Ha x Hx to the current goal.
Assume Hx1: SNoLev x α.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
Apply H1 x Hx3 to the current goal.
We will prove wSNoS_ (SNoLev x), P w.
An exact proof term for the current goal is IH (SNoLev x) Hx1.
An exact proof term for the current goal is SNo_ordinal_ind P L1.
Theorem. (SNoLev_ind2) The following is provable:
∀P : setsetprop, (∀x y, SNo xSNo y(wSNoS_ (SNoLev x), P w y)(zSNoS_ (SNoLev y), P x z)(wSNoS_ (SNoLev x), zSNoS_ (SNoLev y), P w z)P x y)∀x y, SNo xSNo yP x y
Proof:
Let P be given.
Assume H1: ∀x y, SNo xSNo y(wSNoS_ (SNoLev x), P w y)(zSNoS_ (SNoLev y), P x z)(wSNoS_ (SNoLev x), zSNoS_ (SNoLev y), P w z)P x y.
We prove the intermediate claim L1: ∀α, ordinal α∀β, ordinal βxSNoS_ α, ySNoS_ β, P x y.
Apply ordinal_ind to the current goal.
Let α be given.
Assume Ha: ordinal α.
Assume IHa: γα, ∀β, ordinal βxSNoS_ γ, ySNoS_ β, P x y.
Apply ordinal_ind to the current goal.
Let β be given.
Assume Hb: ordinal β.
Assume IHb: δβ, xSNoS_ α, ySNoS_ δ, P x y.
Let x be given.
Assume Hx: x SNoS_ α.
Let y be given.
Assume Hy: y SNoS_ β.
Apply SNoS_E2 α Ha x Hx to the current goal.
Assume Hx1: SNoLev x α.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
Apply SNoS_E2 β Hb y Hy to the current goal.
Assume Hy1: SNoLev y β.
Assume Hy2: ordinal (SNoLev y).
Assume Hy3: SNo y.
Assume Hy4: SNo_ (SNoLev y) y.
Apply H1 x y Hx3 Hy3 to the current goal.
We will prove wSNoS_ (SNoLev x), P w y.
Let w be given.
Assume Hw: w SNoS_ (SNoLev x).
An exact proof term for the current goal is IHa (SNoLev x) Hx1 β Hb w Hw y Hy.
We will prove zSNoS_ (SNoLev y), P x z.
An exact proof term for the current goal is IHb (SNoLev y) Hy1 x Hx.
We will prove wSNoS_ (SNoLev x), zSNoS_ (SNoLev y), P w z.
Let w be given.
Assume Hw: w SNoS_ (SNoLev x).
Let z be given.
Assume Hz: z SNoS_ (SNoLev y).
An exact proof term for the current goal is IHa (SNoLev x) Hx1 (SNoLev y) Hy2 w Hw z Hz.
An exact proof term for the current goal is SNo_ordinal_ind2 P L1.
Theorem. (SNoLev_ind3) The following is provable:
∀P : setsetsetprop, (∀x y z, SNo xSNo ySNo z(uSNoS_ (SNoLev x), P u y z)(vSNoS_ (SNoLev y), P x v z)(wSNoS_ (SNoLev z), P x y w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), P u v z)(uSNoS_ (SNoLev x), wSNoS_ (SNoLev z), P u y w)(vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), P x v w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), P u v w)P x y z)∀x y z, SNo xSNo ySNo zP x y z
Proof:
Let P be given.
Assume H1: ∀x y z, SNo xSNo ySNo z(uSNoS_ (SNoLev x), P u y z)(vSNoS_ (SNoLev y), P x v z)(wSNoS_ (SNoLev z), P x y w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), P u v z)(uSNoS_ (SNoLev x), wSNoS_ (SNoLev z), P u y w)(vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), P x v w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), P u v w)P x y z.
We prove the intermediate claim L1: ∀α, ordinal α∀β, ordinal β∀γ, ordinal γxSNoS_ α, ySNoS_ β, zSNoS_ γ, P x y z.
Apply ordinal_ind to the current goal.
Let α be given.
Assume Ha: ordinal α.
Assume IHa: δα, ∀β, ordinal β∀γ, ordinal γxSNoS_ δ, ySNoS_ β, zSNoS_ γ, P x y z.
Apply ordinal_ind to the current goal.
Let β be given.
Assume Hb: ordinal β.
Assume IHb: δβ, ∀γ, ordinal γxSNoS_ α, ySNoS_ δ, zSNoS_ γ, P x y z.
Apply ordinal_ind to the current goal.
Let γ be given.
Assume Hc: ordinal γ.
Let x be given.
Assume Hx: x SNoS_ α.
Let y be given.
Assume Hy: y SNoS_ β.
Let z be given.
Assume Hz: z SNoS_ γ.
Apply SNoS_E2 α Ha x Hx to the current goal.
Assume Hx1: SNoLev x α.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
Apply SNoS_E2 β Hb y Hy to the current goal.
Assume Hy1: SNoLev y β.
Assume Hy2: ordinal (SNoLev y).
Assume Hy3: SNo y.
Assume Hy4: SNo_ (SNoLev y) y.
Apply SNoS_E2 γ Hc z Hz to the current goal.
Assume Hz1: SNoLev z γ.
Assume Hz2: ordinal (SNoLev z).
Assume Hz3: SNo z.
Assume Hz4: SNo_ (SNoLev z) z.
Apply H1 x y z Hx3 Hy3 Hz3 to the current goal.
We will prove uSNoS_ (SNoLev x), P u y z.
Let u be given.
Assume Hu: u SNoS_ (SNoLev x).
An exact proof term for the current goal is IHa (SNoLev x) Hx1 β Hb γ Hc u Hu y Hy z Hz.
We will prove vSNoS_ (SNoLev y), P x v z.
Let v be given.
Assume Hv: v SNoS_ (SNoLev y).
An exact proof term for the current goal is IHb (SNoLev y) Hy1 γ Hc x Hx v Hv z Hz.
We will prove wSNoS_ (SNoLev z), P x y w.
An exact proof term for the current goal is IHc (SNoLev z) Hz1 x Hx y Hy.
We will prove uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), P u v z.
Let u be given.
Assume Hu: u SNoS_ (SNoLev x).
Let v be given.
Assume Hv: v SNoS_ (SNoLev y).
An exact proof term for the current goal is IHa (SNoLev x) Hx1 (SNoLev y) Hy2 γ Hc u Hu v Hv z Hz.
We will prove uSNoS_ (SNoLev x), wSNoS_ (SNoLev z), P u y w.
Let u be given.
Assume Hu: u SNoS_ (SNoLev x).
Let w be given.
Assume Hw: w SNoS_ (SNoLev z).
An exact proof term for the current goal is IHa (SNoLev x) Hx1 β Hb (SNoLev z) Hz2 u Hu y Hy w Hw.
We will prove vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), P x v w.
Let v be given.
Assume Hv: v SNoS_ (SNoLev y).
Let w be given.
Assume Hw: w SNoS_ (SNoLev z).
An exact proof term for the current goal is IHb (SNoLev y) Hy1 (SNoLev z) Hz2 x Hx v Hv w Hw.
Let u be given.
Assume Hu: u SNoS_ (SNoLev x).
Let v be given.
Assume Hv: v SNoS_ (SNoLev y).
Let w be given.
Assume Hw: w SNoS_ (SNoLev z).
An exact proof term for the current goal is IHa (SNoLev x) Hx1 (SNoLev y) Hy2 (SNoLev z) Hz2 u Hu v Hv w Hw.
An exact proof term for the current goal is SNo_ordinal_ind3 P L1.
Theorem. (SNo_omega) The following is provable:
Proof:
An exact proof term for the current goal is ordinal_SNo ω omega_ordinal.
Theorem. (SNoLt_0_1) The following is provable:
0 < 1
Proof:
Apply ordinal_In_SNoLt 1 ordinal_1 0 to the current goal.
We will prove 0 1.
An exact proof term for the current goal is In_0_1.
Theorem. (SNoLt_0_2) The following is provable:
0 < 2
Proof:
Apply ordinal_In_SNoLt 2 ordinal_2 0 to the current goal.
We will prove 0 2.
An exact proof term for the current goal is In_0_2.
Theorem. (SNoLt_1_2) The following is provable:
1 < 2
Proof:
Apply ordinal_In_SNoLt 2 ordinal_2 1 to the current goal.
We will prove 1 2.
An exact proof term for the current goal is In_1_2.
Theorem. (restr_SNo_) The following is provable:
∀x, SNo xαSNoLev x, SNo_ α (x SNoElts_ α)
Proof:
Let x be given.
Assume Hx.
Let α be given.
Assume Ha.
We prove the intermediate claim Lx1: SNo_ (SNoLev x) x.
An exact proof term for the current goal is SNoLev_ x Hx.
Apply Lx1 to the current goal.
Assume Hx1: x SNoElts_ (SNoLev x).
Assume Hx2: βSNoLev x, exactly1of2 (SetAdjoin β {1} x) (β x).
We will prove x SNoElts_ α SNoElts_ α βα, exactly1of2 (SetAdjoin β {1} x SNoElts_ α) (β x SNoElts_ α).
Apply andI to the current goal.
An exact proof term for the current goal is binintersect_Subq_2 x (SNoElts_ α).
Let β be given.
Assume Hb: β α.
We prove the intermediate claim Lb: β SNoLev x.
An exact proof term for the current goal is ordinal_TransSet (SNoLev x) (SNoLev_ordinal x Hx) α Ha β Hb.
Apply exactly1of2_E (SetAdjoin β {1} x) (β x) (Hx2 β Lb) to the current goal.
Assume H1: SetAdjoin β {1} x.
Assume H2: β x.
Apply exactly1of2_I1 to the current goal.
Apply binintersectI to the current goal.
An exact proof term for the current goal is H1.
We will prove SetAdjoin β {1} SNoElts_ α.
We will prove SetAdjoin β {1} α {SetAdjoin β {1}|βα}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is ReplI α (λβ ⇒ SetAdjoin β {1}) β Hb.
We will prove β x SNoElts_ α.
Assume H3.
An exact proof term for the current goal is H2 (binintersectE1 x (SNoElts_ α) β H3).
Assume H1: SetAdjoin β {1} x.
Assume H2: β x.
Apply exactly1of2_I2 to the current goal.
Assume H3: SetAdjoin β {1} x SNoElts_ α.
An exact proof term for the current goal is H1 (binintersectE1 x (SNoElts_ α) (SetAdjoin β {1}) H3).
Apply binintersectI to the current goal.
An exact proof term for the current goal is H2.
We will prove β SNoElts_ α.
We will prove β α {SetAdjoin β {1}|βα}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hb.
Theorem. (restr_SNo) The following is provable:
∀x, SNo xαSNoLev x, SNo (x SNoElts_ α)
Proof:
Let x be given.
Assume Hx.
Let α be given.
Assume Ha.
We prove the intermediate claim La: ordinal α.
An exact proof term for the current goal is ordinal_Hered (SNoLev x) (SNoLev_ordinal x Hx) α Ha.
We prove the intermediate claim L1: SNo_ α (x SNoElts_ α).
An exact proof term for the current goal is restr_SNo_ x Hx α Ha.
An exact proof term for the current goal is SNo_SNo α La (x SNoElts_ α) L1.
Theorem. (restr_SNoLev) The following is provable:
∀x, SNo xαSNoLev x, SNoLev (x SNoElts_ α) = α
Proof:
Let x be given.
Assume Hx.
Let α be given.
Assume Ha.
We prove the intermediate claim La: ordinal α.
An exact proof term for the current goal is ordinal_Hered (SNoLev x) (SNoLev_ordinal x Hx) α Ha.
We prove the intermediate claim L1: SNo_ α (x SNoElts_ α).
An exact proof term for the current goal is restr_SNo_ x Hx α Ha.
An exact proof term for the current goal is SNoLev_uniq2 α La (x SNoElts_ α) L1.
Theorem. (restr_SNoEq) The following is provable:
∀x, SNo xαSNoLev x, SNoEq_ α (x SNoElts_ α) x
Proof:
Let x be given.
Assume Hx.
Let α be given.
Assume Ha.
Apply SNoEq_I to the current goal.
Let β be given.
Assume Hb: β α.
We will prove β x SNoElts_ α β x.
Apply iffI to the current goal.
Assume H1: β x SNoElts_ α.
An exact proof term for the current goal is binintersectE1 x (SNoElts_ α) β H1.
Assume H1: β x.
Apply binintersectI to the current goal.
An exact proof term for the current goal is H1.
We will prove β α {SetAdjoin β {1}|βα}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hb.
Theorem. (SNo_extend0_restr_eq) The following is provable:
∀x, SNo xx = SNo_extend0 x SNoElts_ (SNoLev x)
Proof:
Let x be given.
Assume Hx.
We prove the intermediate claim L1: SNo (SNo_extend0 x).
An exact proof term for the current goal is SNo_extend0_SNo x Hx.
We prove the intermediate claim L2: SNoLev x SNoLev (SNo_extend0 x).
rewrite the current goal using SNo_extend0_SNoLev x Hx (from left to right).
Apply ordsuccI2 to the current goal.
Apply SNo_eq to the current goal.
An exact proof term for the current goal is Hx.
Apply restr_SNo to the current goal.
An exact proof term for the current goal is L1.
An exact proof term for the current goal is L2.
We will prove SNoLev x = SNoLev (SNo_extend0 x SNoElts_ (SNoLev x)).
Use symmetry.
Apply restr_SNoLev to the current goal.
An exact proof term for the current goal is L1.
An exact proof term for the current goal is L2.
We will prove SNoEq_ (SNoLev x) x (SNo_extend0 x SNoElts_ (SNoLev x)).
Apply SNoEq_sym_ to the current goal.
Apply SNoEq_tra_ (SNoLev x) (SNo_extend0 x SNoElts_ (SNoLev x)) (SNo_extend0 x) x to the current goal.
We will prove SNoEq_ (SNoLev x) (SNo_extend0 x SNoElts_ (SNoLev x)) (SNo_extend0 x).
An exact proof term for the current goal is restr_SNoEq (SNo_extend0 x) L1 (SNoLev x) L2.
We will prove SNoEq_ (SNoLev x) (SNo_extend0 x) x.
An exact proof term for the current goal is SNo_extend0_SNoEq x Hx.
Theorem. (SNo_extend1_restr_eq) The following is provable:
∀x, SNo xx = SNo_extend1 x SNoElts_ (SNoLev x)
Proof:
Let x be given.
Assume Hx.
We prove the intermediate claim L1: SNo (SNo_extend1 x).
An exact proof term for the current goal is SNo_extend1_SNo x Hx.
We prove the intermediate claim L2: SNoLev x SNoLev (SNo_extend1 x).
rewrite the current goal using SNo_extend1_SNoLev x Hx (from left to right).
Apply ordsuccI2 to the current goal.
Apply SNo_eq to the current goal.
An exact proof term for the current goal is Hx.
Apply restr_SNo to the current goal.
An exact proof term for the current goal is L1.
An exact proof term for the current goal is L2.
We will prove SNoLev x = SNoLev (SNo_extend1 x SNoElts_ (SNoLev x)).
Use symmetry.
Apply restr_SNoLev to the current goal.
An exact proof term for the current goal is L1.
An exact proof term for the current goal is L2.
We will prove SNoEq_ (SNoLev x) x (SNo_extend1 x SNoElts_ (SNoLev x)).
Apply SNoEq_sym_ to the current goal.
Apply SNoEq_tra_ (SNoLev x) (SNo_extend1 x SNoElts_ (SNoLev x)) (SNo_extend1 x) x to the current goal.
We will prove SNoEq_ (SNoLev x) (SNo_extend1 x SNoElts_ (SNoLev x)) (SNo_extend1 x).
An exact proof term for the current goal is restr_SNoEq (SNo_extend1 x) L1 (SNoLev x) L2.
We will prove SNoEq_ (SNoLev x) (SNo_extend1 x) x.
An exact proof term for the current goal is SNo_extend1_SNoEq x Hx.
Beginning of Section SurrealMinus
Definition. We define minus_SNo to be SNo_rec_i (λx m ⇒ SNoCut {m z|zSNoR x} {m w|wSNoL x}) of type setset.
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Theorem. (minus_SNo_eq) The following is provable:
∀x, SNo x- x = SNoCut {- z|zSNoR x} {- w|wSNoL x}
Proof:
We prove the intermediate claim L1: ∀x, SNo x∀g h : setset, (wSNoS_ (SNoLev x), g w = h w)SNoCut {g z|zSNoR x} {g w|wSNoL x} = SNoCut {h z|zSNoR x} {h w|wSNoL x}.
Let x be given.
Assume Hx: SNo x.
Let g and h be given.
Assume Hgh: wSNoS_ (SNoLev x), g w = h w.
We will prove SNoCut {g z|zSNoR x} {g w|wSNoL x} = SNoCut {h z|zSNoR x} {h w|wSNoL x}.
We prove the intermediate claim L1a: {g z|zSNoR x} = {h z|zSNoR x}.
Apply ReplEq_ext to the current goal.
Let z be given.
Assume Hz: z SNoR x.
We will prove g z = h z.
Apply Hgh to the current goal.
We will prove z SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoR_SNoS x Hx z Hz.
We prove the intermediate claim L1b: {g w|wSNoL x} = {h w|wSNoL x}.
Apply ReplEq_ext to the current goal.
Let w be given.
Assume Hw: w SNoL x.
We will prove g w = h w.
Apply Hgh to the current goal.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoL_SNoS x Hx w Hw.
rewrite the current goal using L1a (from left to right).
rewrite the current goal using L1b (from left to right).
Use reflexivity.
An exact proof term for the current goal is SNo_rec_i_eq (λx m ⇒ SNoCut {m z|zSNoR x} {m w|wSNoL x}) L1.
Theorem. (minus_SNo_prop1) The following is provable:
∀x, SNo xSNo (- x) (uSNoL x, - x < - u) (uSNoR x, - u < - x) SNoCutP {- z|zSNoR x} {- w|wSNoL x}
Proof:
Apply SNoLev_ind to the current goal.
Let x be given.
Assume Hx: SNo x.
We prove the intermediate claim IHLx: wSNoL x, SNo (- w) (uSNoL w, - w < - u) (uSNoR w, - u < - w).
Let w be given.
Assume Hw: w SNoL x.
Apply SNoL_E x Hx w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: w < x.
We prove the intermediate claim Lw: w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
Apply IH w Lw to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim IHRx: zSNoR x, SNo (- z) (uSNoL z, - z < - u) (uSNoR z, - u < - z).
Let w be given.
Assume Hw: w SNoR x.
Apply SNoR_E x Hx w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: x < w.
We prove the intermediate claim Lw: w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
Apply IH w Lw to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Set L to be the term {- z|zSNoR x}.
Set R to be the term {- w|wSNoL x}.
We prove the intermediate claim LLR: SNoCutP L R.
We will prove (wL, SNo w) (zR, SNo z) (wL, zR, w < z).
Apply and3I to the current goal.
Let w be given.
Assume Hw: w L.
We will prove SNo w.
Apply ReplE_impred (SNoR x) (λz ⇒ - z) w Hw to the current goal.
Let z be given.
Assume Hz: z SNoR x.
Assume Hwz: w = - z.
Apply IHRx z Hz to the current goal.
Assume H2.
Apply H2 to the current goal.
Assume H2: SNo (- z).
Assume _ _.
We will prove SNo w.
rewrite the current goal using Hwz (from left to right).
An exact proof term for the current goal is H2.
Let z be given.
Assume Hz: z R.
We will prove SNo z.
Apply ReplE_impred (SNoL x) (λw ⇒ - w) z Hz to the current goal.
Let w be given.
Assume Hw: w SNoL x.
Assume Hzw: z = - w.
Apply IHLx w Hw to the current goal.
Assume H2.
Apply H2 to the current goal.
Assume H2: SNo (- w).
Assume _ _.
We will prove SNo z.
rewrite the current goal using Hzw (from left to right).
An exact proof term for the current goal is H2.
Let w be given.
Assume Hw: w L.
Let z be given.
Assume Hz: z R.
Apply ReplE_impred (SNoR x) (λz ⇒ - z) w Hw to the current goal.
Let u be given.
Assume Hu: u SNoR x.
Assume Hwu: w = - u.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x.
Assume Hu3: x < u.
Apply SNoLev_prop u Hu1 to the current goal.
Assume Hu1a: ordinal (SNoLev u).
Assume Hu1b: SNo_ (SNoLev u) u.
Apply ReplE_impred (SNoL x) (λw ⇒ - w) z Hz to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Assume Hzv: z = - v.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: v < x.
Apply SNoLev_prop v Hv1 to the current goal.
Assume Hv1a: ordinal (SNoLev v).
Assume Hv1b: SNo_ (SNoLev v) v.
Apply IHLx v Hv to the current goal.
Assume H2.
Apply H2 to the current goal.
Assume H2: SNo (- v).
Assume H3: uSNoL v, - v < - u.
Assume H4: uSNoR v, - u < - v.
Apply IHRx u Hu to the current goal.
Assume H5.
Apply H5 to the current goal.
Assume H5: SNo (- u).
Assume H6: vSNoL u, - u < - v.
Assume H7: vSNoR u, - v < - u.
We will prove w < z.
rewrite the current goal using Hwu (from left to right).
rewrite the current goal using Hzv (from left to right).
We will prove - u < - v.
We prove the intermediate claim Lvu: v < u.
An exact proof term for the current goal is SNoLt_tra v x u Hv1 Hx Hu1 Hv3 Hu3.
Apply SNoLtE v u Hv1 Hu1 Lvu to the current goal.
Let z be given.
Assume Hz: SNo z.
Assume Hz1: SNoLev z SNoLev v SNoLev u.
Assume Hz2: SNoEq_ (SNoLev z) z v.
Assume Hz3: SNoEq_ (SNoLev z) z u.
Assume Hz4: v < z.
Assume Hz5: z < u.
Assume Hz6: SNoLev z v.
Assume Hz7: SNoLev z u.
Apply SNoLev_prop z Hz to the current goal.
Assume Hza: ordinal (SNoLev z).
Assume Hzb: SNo_ (SNoLev z) z.
Apply binintersectE (SNoLev v) (SNoLev u) (SNoLev z) Hz1 to the current goal.
Assume Hz1a: SNoLev z SNoLev v.
Assume Hz1b: SNoLev z SNoLev u.
We prove the intermediate claim LzLx: z SNoS_ (SNoLev x).
Apply SNoS_I2 z x Hz Hx to the current goal.
We will prove SNoLev z SNoLev x.
Apply SNoLev_ordinal x Hx to the current goal.
Assume Hx2: TransSet (SNoLev x).
Assume _.
An exact proof term for the current goal is Hx2 (SNoLev u) Hu2 (SNoLev z) Hz1b.
We prove the intermediate claim Lmz: SNo (- z).
Apply IH z LzLx to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H _ _ _.
An exact proof term for the current goal is H.
We will prove - u < - v.
Apply SNoLt_tra (- u) (- z) (- v) H5 Lmz H2 to the current goal.
We will prove - u < - z.
Apply H6 to the current goal.
We will prove z SNoL u.
We will prove z {xSNoS_ (SNoLev u)|x < u}.
Apply SepI to the current goal.
We will prove z SNoS_ (SNoLev u).
Apply SNoS_I2 z u Hz Hu1 Hz1b to the current goal.
We will prove z < u.
An exact proof term for the current goal is Hz5.
We will prove - z < - v.
Apply H4 to the current goal.
We will prove z SNoR v.
We will prove z {xSNoS_ (SNoLev v)|v < x}.
Apply SepI to the current goal.
We will prove z SNoS_ (SNoLev v).
An exact proof term for the current goal is SNoS_I2 z v Hz Hv1 Hz1a.
We will prove v < z.
An exact proof term for the current goal is Hz4.
Assume H8: SNoLev v SNoLev u.
Assume H9: SNoEq_ (SNoLev v) v u.
Assume H10: SNoLev v u.
We will prove - u < - v.
Apply H6 to the current goal.
We will prove v SNoL u.
We will prove v {xSNoS_ (SNoLev u)|x < u}.
Apply SepI to the current goal.
We will prove v SNoS_ (SNoLev u).
An exact proof term for the current goal is SNoS_I2 v u Hv1 Hu1 H8.
We will prove v < u.
An exact proof term for the current goal is Lvu.
Assume H8: SNoLev u SNoLev v.
Assume H9: SNoEq_ (SNoLev u) v u.
Assume H10: SNoLev u v.
We will prove - u < - v.
Apply H4 to the current goal.
We will prove u SNoR v.
We will prove u {xSNoS_ (SNoLev v)|v < x}.
Apply SepI to the current goal.
We will prove u SNoS_ (SNoLev v).
An exact proof term for the current goal is SNoS_I2 u v Hu1 Hv1 H8.
We will prove v < u.
An exact proof term for the current goal is Lvu.
We prove the intermediate claim LNLR: SNo (SNoCut L R).
An exact proof term for the current goal is SNoCutP_SNo_SNoCut L R LLR.
Apply andI to the current goal.
rewrite the current goal using minus_SNo_eq x Hx (from left to right).
Apply and3I to the current goal.
We will prove SNo (SNoCut L R).
An exact proof term for the current goal is LNLR.
We will prove uSNoL x, SNoCut L R < - u.
Let u be given.
Assume Hu: u SNoL x.
We will prove SNoCut L R < - u.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x.
Assume Hu3: u < x.
We prove the intermediate claim LmuR: - u R.
Apply ReplI to the current goal.
We will prove u SNoL x.
An exact proof term for the current goal is Hu.
We will prove SNoCut L R < - u.
An exact proof term for the current goal is SNoCutP_SNoCut_R L R LLR (- u) LmuR.
We will prove uSNoR x, - u < SNoCut L R.
Let u be given.
Assume Hu: u SNoR x.
We will prove - u < SNoCut L R.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x.
Assume Hu3: x < u.
We prove the intermediate claim LmuL: - u L.
Apply ReplI to the current goal.
We will prove u SNoR x.
An exact proof term for the current goal is Hu.
We will prove - u < SNoCut L R.
An exact proof term for the current goal is SNoCutP_SNoCut_L L R LLR (- u) LmuL.
We will prove SNoCutP L R.
An exact proof term for the current goal is LLR.
Theorem. (SNo_minus_SNo) The following is provable:
∀x, SNo xSNo (- x)
Proof:
Let x be given.
Assume Hx.
Apply minus_SNo_prop1 x Hx to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H _ _ _.
An exact proof term for the current goal is H.
Theorem. (minus_SNo_Lt_contra) The following is provable:
∀x y, SNo xSNo yx < y- y < - x
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hxy: x < y.
Apply minus_SNo_prop1 x Hx to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: SNo (- x).
Assume H2: uSNoL x, - x < - u.
Assume H3: uSNoR x, - u < - x.
Assume _.
Apply minus_SNo_prop1 y Hy to the current goal.
Assume H4.
Apply H4 to the current goal.
Assume H4.
Apply H4 to the current goal.
Assume H4: SNo (- y).
Assume H5: uSNoL y, - y < - u.
Assume H6: uSNoR y, - u < - y.
Assume _.
Apply SNoLtE x y Hx Hy Hxy to the current goal.
Let z be given.
Assume Hz: SNo z.
Assume Hz1: SNoLev z SNoLev x SNoLev y.
Assume Hz2: SNoEq_ (SNoLev z) z x.
Assume Hz3: SNoEq_ (SNoLev z) z y.
Assume Hz4: x < z.
Assume Hz5: z < y.
Assume Hz6: SNoLev z x.
Assume Hz7: SNoLev z y.
Apply binintersectE (SNoLev x) (SNoLev y) (SNoLev z) Hz1 to the current goal.
Assume Hz1x Hz1y.
We will prove - y < - x.
Apply SNoLt_tra (- y) (- z) (- x) H4 (SNo_minus_SNo z Hz) H1 to the current goal.
We will prove - y < - z.
Apply H5 z to the current goal.
We will prove z SNoL y.
We will prove z {xSNoS_ (SNoLev y)|x < y}.
Apply SepI to the current goal.
We will prove z SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 z y Hz Hy Hz1y.
We will prove z < y.
An exact proof term for the current goal is Hz5.
We will prove - z < - x.
Apply H3 z to the current goal.
We will prove z SNoR x.
We will prove z {zSNoS_ (SNoLev x)|x < z}.
Apply SepI to the current goal.
We will prove z SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 z x Hz Hx Hz1x.
We will prove x < z.
An exact proof term for the current goal is Hz4.
Assume H7: SNoLev x SNoLev y.
Assume H8: SNoEq_ (SNoLev x) x y.
Assume H9: SNoLev x y.
Apply H5 x to the current goal.
We will prove x SNoL y.
We will prove x {xSNoS_ (SNoLev y)|x < y}.
Apply SepI to the current goal.
We will prove x SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 x y Hx Hy H7.
We will prove x < y.
An exact proof term for the current goal is Hxy.
Assume H7: SNoLev y SNoLev x.
Assume H8: SNoEq_ (SNoLev y) x y.
Assume H9: SNoLev y x.
We will prove - y < - x.
Apply H3 y to the current goal.
We will prove y SNoR x.
We will prove y {ySNoS_ (SNoLev x)|x < y}.
Apply SepI to the current goal.
We will prove y SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 y x Hy Hx H7.
We will prove x < y.
An exact proof term for the current goal is Hxy.
Theorem. (minus_SNo_Le_contra) The following is provable:
∀x y, SNo xSNo yx y- y - x
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hxy: x y.
Apply SNoLeE x y Hx Hy Hxy to the current goal.
Assume H1: x < y.
We will prove - y - x.
Apply SNoLtLe to the current goal.
We will prove - y < - x.
An exact proof term for the current goal is minus_SNo_Lt_contra x y Hx Hy H1.
Assume H1: x = y.
We will prove - y - x.
rewrite the current goal using H1 (from left to right).
We will prove - y - y.
Apply SNoLe_ref to the current goal.
Theorem. (minus_SNo_SNoCutP) The following is provable:
∀x, SNo xSNoCutP {- z|zSNoR x} {- w|wSNoL x}
Proof:
Let x be given.
Assume Hx: SNo x.
Apply minus_SNo_prop1 x Hx to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume _ _ _ H1.
An exact proof term for the current goal is H1.
Theorem. (minus_SNo_SNoCutP_gen) The following is provable:
∀L R, SNoCutP L RSNoCutP {- z|zR} {- w|wL}
Proof:
Let L and R be given.
Assume HLR: SNoCutP L R.
Apply HLR to the current goal.
Assume H.
Apply H to the current goal.
Assume HLR1: xL, SNo x.
Assume HLR2: yR, SNo y.
Assume HLR3: xL, yR, x < y.
Set Lm to be the term {- z|zR}.
Set Rm to be the term {- w|wL}.
We will prove (wLm, SNo w) (zRm, SNo z) (wLm, zRm, w < z).
Apply and3I to the current goal.
Let w be given.
Assume Hw: w Lm.
We will prove SNo w.
Apply ReplE_impred R (λz ⇒ - z) w Hw to the current goal.
Let z be given.
Assume Hz: z R.
Assume Hwz: w = - z.
rewrite the current goal using Hwz (from left to right).
We will prove SNo (- z).
Apply SNo_minus_SNo to the current goal.
Apply HLR2 to the current goal.
An exact proof term for the current goal is Hz.
Let z be given.
Assume Hz: z Rm.
We will prove SNo z.
Apply ReplE_impred L (λw ⇒ - w) z Hz to the current goal.
Let w be given.
Assume Hw: w L.
Assume Hzw: z = - w.
rewrite the current goal using Hzw (from left to right).
We will prove SNo (- w).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is HLR1 w Hw.
Let w be given.
Assume Hw: w Lm.
Let z be given.
Assume Hz: z Rm.
Apply ReplE_impred R (λz ⇒ - z) w Hw to the current goal.
Let u be given.
Assume Hu: u R.
Assume Hwu: w = - u.
Apply ReplE_impred L (λw ⇒ - w) z Hz to the current goal.
Let v be given.
Assume Hv: v L.
Assume Hzv: z = - v.
We will prove w < z.
rewrite the current goal using Hwu (from left to right).
rewrite the current goal using Hzv (from left to right).
We will prove - u < - v.
Apply minus_SNo_Lt_contra v u (HLR1 v Hv) (HLR2 u Hu) to the current goal.
We will prove v < u.
An exact proof term for the current goal is HLR3 v Hv u Hu.
Theorem. (minus_SNo_Lev_lem1) The following is provable:
∀α, ordinal αxSNoS_ α, SNoLev (- x) SNoLev x
Proof:
Apply ordinal_ind to the current goal.
Let α be given.
Assume Ha: ordinal α.
Apply Ha to the current goal.
Assume Ha1 Ha2.
Assume IH: βα, xSNoS_ β, SNoLev (- x) SNoLev x.
Let x be given.
Assume Hx: x SNoS_ α.
Apply SNoS_E2 α Ha x Hx to the current goal.
Assume Hx1: SNoLev x α.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
Set L to be the term {- z|zSNoR x}.
Set R to be the term {- w|wSNoL x}.
We prove the intermediate claim LLR: SNoCutP L R.
An exact proof term for the current goal is minus_SNo_SNoCutP x Hx3.
We will prove SNoLev (- x) SNoLev x.
rewrite the current goal using minus_SNo_eq x Hx3 (from left to right).
We will prove SNoLev (SNoCut L R) SNoLev x.
Apply SNoCutP_SNoCut_impred L R LLR to the current goal.
Assume H2: SNo (SNoCut L R).
Assume _ _ _.
We prove the intermediate claim L3: ordinal ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))).
Apply ordinal_binunion to the current goal.
Apply ordinal_famunion to the current goal.
Let w be given.
Assume Hw: w L.
We will prove ordinal (ordsucc (SNoLev w)).
Apply ReplE_impred (SNoR x) (λz ⇒ - z) w Hw to the current goal.
Let u be given.
Assume Hu: u SNoR x.
Assume Hwu: w = - u.
Apply SNoR_E x Hx3 u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x.
Assume Hu3: x < u.
Apply ordinal_ordsucc to the current goal.
We will prove ordinal (SNoLev w).
Apply SNoLev_ordinal to the current goal.
We will prove SNo w.
rewrite the current goal using Hwu (from left to right).
An exact proof term for the current goal is SNo_minus_SNo u Hu1.
Apply ordinal_famunion to the current goal.
Let w be given.
Assume Hw: w R.
We will prove ordinal (ordsucc (SNoLev w)).
Apply ReplE_impred (SNoL x) (λz ⇒ - z) w Hw to the current goal.
Let u be given.
Assume Hu: u SNoL x.
Assume Hwu: w = - u.
Apply SNoL_E x Hx3 u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x.
Assume Hu3: u < x.
Apply ordinal_ordsucc to the current goal.
We will prove ordinal (SNoLev w).
Apply SNoLev_ordinal to the current goal.
We will prove SNo w.
rewrite the current goal using Hwu (from left to right).
An exact proof term for the current goal is SNo_minus_SNo u Hu1.
We prove the intermediate claim L3a: TransSet ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))).
Apply L3 to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Let β be given.
Assume Hb: β SNoLev (SNoCut L R).
We prove the intermediate claim Lb: β ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))).
Apply ordsuccE ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))) (SNoLev (SNoCut L R)) H3 to the current goal.
Assume H4.
An exact proof term for the current goal is L3a (SNoLev (SNoCut L R)) H4 β Hb.
Assume H4.
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is Hb.
We will prove β SNoLev x.
Apply binunionE (xLordsucc (SNoLev x)) (yRordsucc (SNoLev y)) β Lb to the current goal.
Assume H4: β xLordsucc (SNoLev x).
Apply famunionE L (λx ⇒ ordsucc (SNoLev x)) β H4 to the current goal.
Let w be given.
Assume Hw.
Apply Hw to the current goal.
Assume Hw1: w L.
Assume Hw2: β ordsucc (SNoLev w).
We will prove β SNoLev x.
Apply ReplE_impred (SNoR x) (λz ⇒ - z) w Hw1 to the current goal.
Let u be given.
Assume Hu: u SNoR x.
Assume Hwu: w = - u.
Apply SNoR_E x Hx3 u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x.
Assume Hu3: x < u.
We prove the intermediate claim Lu: u SNoS_ (ordsucc (SNoLev u)).
An exact proof term for the current goal is SNoS_SNoLev u Hu1.
We prove the intermediate claim LsLu: ordsucc (SNoLev u) α.
Apply ordinal_ordsucc_In_eq (SNoLev x) (SNoLev u) Hx2 Hu2 to the current goal.
Assume H2: ordsucc (SNoLev u) SNoLev x.
An exact proof term for the current goal is Ha1 (SNoLev x) Hx1 (ordsucc (SNoLev u)) H2.
Assume H2: SNoLev x = ordsucc (SNoLev u).
rewrite the current goal using H2 (from right to left).
An exact proof term for the current goal is Hx1.
We prove the intermediate claim IHu: SNoLev (- u) SNoLev u.
An exact proof term for the current goal is IH (ordsucc (SNoLev u)) LsLu u Lu.
We prove the intermediate claim LLu: ordinal (SNoLev u).
An exact proof term for the current goal is SNoLev_ordinal u Hu1.
We prove the intermediate claim Lmu: SNo (- u).
An exact proof term for the current goal is SNo_minus_SNo u Hu1.
We prove the intermediate claim LLmu: ordinal (SNoLev (- u)).
An exact proof term for the current goal is SNoLev_ordinal (- u) Lmu.
We prove the intermediate claim LsLw: ordinal (ordsucc (SNoLev w)).
Apply ordinal_ordsucc to the current goal.
rewrite the current goal using Hwu (from left to right).
An exact proof term for the current goal is LLmu.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered (ordsucc (SNoLev w)) LsLw β Hw2.
Apply ordinal_In_Or_Subq β (SNoLev x) Lb Hx2 to the current goal.
Assume H5: β SNoLev x.
An exact proof term for the current goal is H5.
Assume H5: SNoLev x β.
We will prove False.
We prove the intermediate claim LLub: SNoLev u β.
An exact proof term for the current goal is H5 (SNoLev u) Hu2.
Apply ordsuccE (SNoLev w) β Hw2 to the current goal.
rewrite the current goal using Hwu (from left to right).
Assume H5: β SNoLev (- u).
Apply In_no2cycle (SNoLev u) β LLub to the current goal.
We will prove β SNoLev u.
An exact proof term for the current goal is IHu β H5.
rewrite the current goal using Hwu (from left to right).
Assume H5: β = SNoLev (- u).
Apply In_irref (SNoLev u) to the current goal.
Apply IHu (SNoLev u) to the current goal.
We will prove SNoLev u SNoLev (- u).
rewrite the current goal using H5 (from right to left).
An exact proof term for the current goal is LLub.
Assume H4: β yRordsucc (SNoLev y).
Apply famunionE R (λx ⇒ ordsucc (SNoLev x)) β H4 to the current goal.
Let w be given.
Assume Hw.
Apply Hw to the current goal.
Assume Hw1: w R.
Assume Hw2: β ordsucc (SNoLev w).
We will prove β SNoLev x.
Apply ReplE_impred (SNoL x) (λz ⇒ - z) w Hw1 to the current goal.
Let u be given.
Assume Hu: u SNoL x.
Assume Hwu: w = - u.
Apply SNoL_E x Hx3 u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x.
Assume Hu3: u < x.
We prove the intermediate claim Lu: u SNoS_ (ordsucc (SNoLev u)).
An exact proof term for the current goal is SNoS_SNoLev u Hu1.
We prove the intermediate claim LsLu: ordsucc (SNoLev u) α.
Apply ordinal_ordsucc_In_eq (SNoLev x) (SNoLev u) Hx2 Hu2 to the current goal.
Assume H2: ordsucc (SNoLev u) SNoLev x.
An exact proof term for the current goal is Ha1 (SNoLev x) Hx1 (ordsucc (SNoLev u)) H2.
Assume H2: SNoLev x = ordsucc (SNoLev u).
rewrite the current goal using H2 (from right to left).
An exact proof term for the current goal is Hx1.
We prove the intermediate claim IHu: SNoLev (- u) SNoLev u.
An exact proof term for the current goal is IH (ordsucc (SNoLev u)) LsLu u Lu.
We prove the intermediate claim LLu: ordinal (SNoLev u).
An exact proof term for the current goal is SNoLev_ordinal u Hu1.
We prove the intermediate claim Lmu: SNo (- u).
An exact proof term for the current goal is SNo_minus_SNo u Hu1.
We prove the intermediate claim LLmu: ordinal (SNoLev (- u)).
An exact proof term for the current goal is SNoLev_ordinal (- u) Lmu.
We prove the intermediate claim LsLw: ordinal (ordsucc (SNoLev w)).
Apply ordinal_ordsucc to the current goal.
rewrite the current goal using Hwu (from left to right).
An exact proof term for the current goal is LLmu.
We prove the intermediate claim Lb: ordinal β.
An exact proof term for the current goal is ordinal_Hered (ordsucc (SNoLev w)) LsLw β Hw2.
Apply ordinal_In_Or_Subq β (SNoLev x) Lb Hx2 to the current goal.
Assume H5: β SNoLev x.
An exact proof term for the current goal is H5.
Assume H5: SNoLev x β.
We will prove False.
We prove the intermediate claim LLub: SNoLev u β.
An exact proof term for the current goal is H5 (SNoLev u) Hu2.
Apply ordsuccE (SNoLev w) β Hw2 to the current goal.
rewrite the current goal using Hwu (from left to right).
Assume H5: β SNoLev (- u).
Apply In_no2cycle (SNoLev u) β LLub to the current goal.
We will prove β SNoLev u.
An exact proof term for the current goal is IHu β H5.
rewrite the current goal using Hwu (from left to right).
Assume H5: β = SNoLev (- u).
Apply In_irref (SNoLev u) to the current goal.
Apply IHu (SNoLev u) to the current goal.
We will prove SNoLev u SNoLev (- u).
rewrite the current goal using H5 (from right to left).
An exact proof term for the current goal is LLub.
Theorem. (minus_SNo_Lev_lem2) The following is provable:
∀x, SNo xSNoLev (- x) SNoLev x
Proof:
Let x be given.
Assume Hx: SNo x.
We prove the intermediate claim LLx: ordinal (SNoLev x).
An exact proof term for the current goal is SNoLev_ordinal x Hx.
We prove the intermediate claim LsLx: ordinal (ordsucc (SNoLev x)).
An exact proof term for the current goal is ordinal_ordsucc (SNoLev x) LLx.
We prove the intermediate claim LxsLx: x SNoS_ (ordsucc (SNoLev x)).
An exact proof term for the current goal is SNoS_SNoLev x Hx.
An exact proof term for the current goal is minus_SNo_Lev_lem1 (ordsucc (SNoLev x)) LsLx x LxsLx.
Theorem. (minus_SNo_invol) The following is provable:
∀x, SNo x- - x = x
Proof:
Apply SNo_ind to the current goal.
Let L and R be given.
Assume HLR: SNoCutP L R.
Assume IHL: xL, - - x = x.
Assume IHR: yR, - - y = y.
Apply HLR to the current goal.
Assume H.
Apply H to the current goal.
Assume HLR1: xL, SNo x.
Assume HLR2: yR, SNo y.
Assume HLR3: xL, yR, x < y.
We prove the intermediate claim LCLR: SNo (SNoCut L R).
An exact proof term for the current goal is SNoCutP_SNo_SNoCut L R HLR.
We prove the intermediate claim LmCLR: SNo (- SNoCut L R).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is LCLR.
We prove the intermediate claim LmmCLR: SNo (- - SNoCut L R).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is LmCLR.
We prove the intermediate claim L1: SNoLev (SNoCut L R) SNoLev (- - SNoCut L R) SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) (- - SNoCut L R).
Apply SNoCutP_SNoCut_fst to the current goal.
An exact proof term for the current goal is HLR.
We will prove SNo (- - SNoCut L R).
An exact proof term for the current goal is LmmCLR.
We will prove xL, x < - - SNoCut L R.
Let x be given.
Assume Hx.
rewrite the current goal using IHL x Hx (from right to left).
We prove the intermediate claim Lx: SNo x.
An exact proof term for the current goal is HLR1 x Hx.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Lx.
We will prove - - x < - - SNoCut L R.
Apply minus_SNo_Lt_contra (- SNoCut L R) (- x) LmCLR Lmx to the current goal.
We will prove - SNoCut L R < - x.
Apply minus_SNo_Lt_contra x (SNoCut L R) Lx LCLR to the current goal.
We will prove x < SNoCut L R.
An exact proof term for the current goal is SNoCutP_SNoCut_L L R HLR x Hx.
We will prove yR, - - SNoCut L R < y.
Let y be given.
Assume Hy.
rewrite the current goal using IHR y Hy (from right to left).
We prove the intermediate claim Ly: SNo y.
An exact proof term for the current goal is HLR2 y Hy.
We prove the intermediate claim Lmy: SNo (- y).
An exact proof term for the current goal is SNo_minus_SNo y Ly.
We will prove - - SNoCut L R < - - y.
Apply minus_SNo_Lt_contra (- y) (- SNoCut L R) Lmy LmCLR to the current goal.
We will prove - y < - SNoCut L R.
Apply minus_SNo_Lt_contra (SNoCut L R) y LCLR Ly to the current goal.
We will prove SNoCut L R < y.
An exact proof term for the current goal is SNoCutP_SNoCut_R L R HLR y Hy.
Apply L1 to the current goal.
Assume L1a: SNoLev (SNoCut L R) SNoLev (- - SNoCut L R).
Assume L1b: SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) (- - SNoCut L R).
We will prove - - SNoCut L R = SNoCut L R.
Use symmetry.
Apply SNo_eq to the current goal.
An exact proof term for the current goal is LCLR.
An exact proof term for the current goal is LmmCLR.
We will prove SNoLev (SNoCut L R) = SNoLev (- - SNoCut L R).
Apply set_ext to the current goal.
We will prove SNoLev (SNoCut L R) SNoLev (- - SNoCut L R).
An exact proof term for the current goal is L1a.
We will prove SNoLev (- - SNoCut L R) SNoLev (SNoCut L R).
Apply Subq_tra (SNoLev (- - SNoCut L R)) (SNoLev (- SNoCut L R)) (SNoLev (SNoCut L R)) to the current goal.
We will prove SNoLev (- - SNoCut L R) SNoLev (- SNoCut L R).
Apply minus_SNo_Lev_lem2 (- SNoCut L R) LmCLR to the current goal.
We will prove SNoLev (- SNoCut L R) SNoLev (SNoCut L R).
Apply minus_SNo_Lev_lem2 (SNoCut L R) LCLR to the current goal.
We will prove SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) (- - SNoCut L R).
An exact proof term for the current goal is L1b.
Theorem. (minus_SNo_Lev) The following is provable:
∀x, SNo xSNoLev (- x) = SNoLev x
Proof:
Let x be given.
Assume Hx.
Apply set_ext to the current goal.
We will prove SNoLev (- x) SNoLev x.
An exact proof term for the current goal is minus_SNo_Lev_lem2 x Hx.
We will prove SNoLev x SNoLev (- x).
rewrite the current goal using minus_SNo_invol x Hx (from right to left) at position 1.
We will prove SNoLev (- - x) SNoLev (- x).
An exact proof term for the current goal is minus_SNo_Lev_lem2 (- x) (SNo_minus_SNo x Hx).
Theorem. (minus_SNo_SNo_) The following is provable:
∀α, ordinal α∀x, SNo_ α xSNo_ α (- x)
Proof:
Let α be given.
Assume Ha.
Let x be given.
Assume Hx: SNo_ α x.
We prove the intermediate claim Lx: SNo x.
An exact proof term for the current goal is SNo_SNo α Ha x Hx.
We prove the intermediate claim Lxa: SNoLev x = α.
An exact proof term for the current goal is SNoLev_uniq2 α Ha x Hx.
We prove the intermediate claim Lmxa: SNoLev (- x) = α.
rewrite the current goal using minus_SNo_Lev x Lx (from left to right).
An exact proof term for the current goal is Lxa.
We will prove SNo_ α (- x).
rewrite the current goal using Lmxa (from right to left).
We will prove SNo_ (SNoLev (- x)) (- x).
Apply SNoLev_ to the current goal.
We will prove SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Lx.
Theorem. (minus_SNo_SNoS_) The following is provable:
∀α, ordinal α∀x, x SNoS_ α- x SNoS_ α
Proof:
Let α be given.
Assume Ha.
Let x be given.
Assume Hx: x SNoS_ α.
Apply SNoS_E2 α Ha x Hx to the current goal.
Assume Hx1: SNoLev x α.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
We prove the intermediate claim Lbmx: SNo_ (SNoLev x) (- x).
An exact proof term for the current goal is minus_SNo_SNo_ (SNoLev x) Hx2 x Hx4.
An exact proof term for the current goal is SNoS_I α Ha (- x) (SNoLev x) Hx1 Lbmx.
Theorem. (minus_SNoCut_eq_lem) The following is provable:
∀v, SNo v∀L R, SNoCutP L Rv = SNoCut L R- v = SNoCut {- z|zR} {- w|wL}
Proof:
Apply SNoLev_ind to the current goal.
Let v be given.
Assume Hv: SNo v.
Assume IHv: uSNoS_ (SNoLev v), ∀L R, SNoCutP L Ru = SNoCut L R- u = SNoCut {- z|zR} {- w|wL}.
Let L and R be given.
Assume HLR: SNoCutP L R.
Apply HLR to the current goal.
Assume HLR1.
Apply HLR1 to the current goal.
Assume HLR1: xL, SNo x.
Assume HLR2: yR, SNo y.
Assume HLR3: xL, yR, x < y.
Assume HvLR: v = SNoCut L R.
Set mL to be the term {- w|wL}.
Set mR to be the term {- z|zR}.
Set mLv to be the term {- w|wSNoL v}.
Set mRv to be the term {- z|zSNoR v}.
We prove the intermediate claim L1: SNo (SNoCut L R).
An exact proof term for the current goal is SNoCutP_SNo_SNoCut L R HLR.
We prove the intermediate claim L2: SNoCutP mR mL.
An exact proof term for the current goal is minus_SNo_SNoCutP_gen L R HLR.
Apply SNoCutP_SNoCut_impred mR mL L2 to the current goal.
Assume H1: SNo (SNoCut mR mL).
Assume H2: SNoLev (SNoCut mR mL) ordsucc ((xmRordsucc (SNoLev x)) (ymLordsucc (SNoLev y))).
Assume H3: xmR, x < SNoCut mR mL.
Assume H4: ymL, SNoCut mR mL < y.
Assume H5: ∀z, SNo z(xmR, x < z)(ymL, z < y)SNoLev (SNoCut mR mL) SNoLev z SNoEq_ (SNoLev (SNoCut mR mL)) (SNoCut mR mL) z.
We prove the intermediate claim L3: xmR, x < - v.
Let x be given.
Assume Hx: x mR.
Apply ReplE_impred R minus_SNo x Hx to the current goal.
Let z be given.
Assume Hz: z R.
Assume Hxz: x = - z.
We will prove x < - v.
rewrite the current goal using Hxz (from left to right).
We will prove - z < - v.
Apply minus_SNo_Lt_contra v z Hv (HLR2 z Hz) to the current goal.
We will prove v < z.
rewrite the current goal using HvLR (from left to right).
We will prove SNoCut L R < z.
An exact proof term for the current goal is SNoCutP_SNoCut_R L R HLR z Hz.
We prove the intermediate claim L4: ymL, - v < y.
Let y be given.
Assume Hy: y mL.
Apply ReplE_impred L minus_SNo y Hy to the current goal.
Let w be given.
Assume Hw: w L.
Assume Hyw: y = - w.
We will prove - v < y.
rewrite the current goal using Hyw (from left to right).
We will prove - v < - w.
Apply minus_SNo_Lt_contra w v (HLR1 w Hw) Hv to the current goal.
We will prove w < v.
rewrite the current goal using HvLR (from left to right).
We will prove w < SNoCut L R.
An exact proof term for the current goal is SNoCutP_SNoCut_L L R HLR w Hw.
Apply H5 (- v) (SNo_minus_SNo v Hv) L3 L4 to the current goal.
Assume H6: SNoLev (SNoCut mR mL) SNoLev (- v).
Assume H7: SNoEq_ (SNoLev (SNoCut mR mL)) (SNoCut mR mL) (- v).
We prove the intermediate claim L5: ordinal (SNoLev (SNoCut mR mL)).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is H1.
We prove the intermediate claim L6: ordinal (SNoLev (- v)).
Apply SNoLev_ordinal to the current goal.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hv.
Apply ordinal_In_Or_Subq (SNoLev (SNoCut mR mL)) (SNoLev (- v)) L5 L6 to the current goal.
Assume H8: SNoLev (SNoCut mR mL) SNoLev (- v).
We will prove False.
We prove the intermediate claim L7: SNoCut mR mL SNoS_ (SNoLev v).
Apply SNoS_I2 to the current goal.
We will prove SNo (SNoCut mR mL).
An exact proof term for the current goal is H1.
We will prove SNo v.
An exact proof term for the current goal is Hv.
We will prove SNoLev (SNoCut mR mL) SNoLev v.
rewrite the current goal using minus_SNo_Lev v Hv (from right to left).
An exact proof term for the current goal is H8.
We prove the intermediate claim LIH: - SNoCut mR mL = SNoCut {- z|zmL} {- w|wmR}.
An exact proof term for the current goal is IHv (SNoCut mR mL) L7 mR mL L2 (λq H ⇒ H).
We prove the intermediate claim L8: {- z|zmL} = L.
Apply Repl_invol_eq (λx ⇒ x L) minus_SNo to the current goal.
Let x be given.
Assume Hx: x L.
We will prove - - x = x.
An exact proof term for the current goal is minus_SNo_invol x (HLR1 x Hx).
Let x be given.
Assume Hx: x L.
An exact proof term for the current goal is Hx.
We prove the intermediate claim L9: {- z|zmR} = R.
Apply Repl_invol_eq (λy ⇒ y R) minus_SNo to the current goal.
Let y be given.
Assume Hy: y R.
We will prove - - y = y.
An exact proof term for the current goal is minus_SNo_invol y (HLR2 y Hy).
Let y be given.
Assume Hy: y R.
An exact proof term for the current goal is Hy.
We prove the intermediate claim L10: - SNoCut mR mL = v.
rewrite the current goal using LIH (from left to right).
rewrite the current goal using L8 (from left to right).
rewrite the current goal using L9 (from left to right).
Use symmetry.
An exact proof term for the current goal is HvLR.
Apply In_irref (SNoLev v) to the current goal.
We will prove SNoLev v SNoLev v.
rewrite the current goal using L10 (from right to left) at position 1.
We will prove SNoLev (- SNoCut mR mL) SNoLev v.
rewrite the current goal using minus_SNo_Lev (SNoCut mR mL) H1 (from left to right).
rewrite the current goal using minus_SNo_Lev v Hv (from right to left).
An exact proof term for the current goal is H8.
Assume H8: SNoLev (- v) SNoLev (SNoCut mR mL).
We will prove - v = SNoCut mR mL.
Use symmetry.
Apply SNo_eq (SNoCut mR mL) (- v) H1 (SNo_minus_SNo v Hv) to the current goal.
We will prove SNoLev (SNoCut mR mL) = SNoLev (- v).
Apply set_ext to the current goal.
An exact proof term for the current goal is H6.
An exact proof term for the current goal is H8.
We will prove SNoEq_ (SNoLev (SNoCut mR mL)) (SNoCut mR mL) (- v).
An exact proof term for the current goal is H7.
Theorem. (minus_SNoCut_eq) The following is provable:
∀L R, SNoCutP L R- SNoCut L R = SNoCut {- z|zR} {- w|wL}
Proof:
Let L and R be given.
Assume HLR.
An exact proof term for the current goal is minus_SNoCut_eq_lem (SNoCut L R) (SNoCutP_SNo_SNoCut L R HLR) L R HLR (λq H ⇒ H).
Theorem. (minus_SNo_Lt_contra1) The following is provable:
∀x y, SNo xSNo y- x < y- y < x
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hxy: - x < y.
We will prove - y < x.
rewrite the current goal using minus_SNo_invol x Hx (from right to left).
We will prove - y < - - x.
Apply minus_SNo_Lt_contra (- x) y (SNo_minus_SNo x Hx) Hy to the current goal.
We will prove - x < y.
An exact proof term for the current goal is Hxy.
Theorem. (minus_SNo_Lt_contra2) The following is provable:
∀x y, SNo xSNo yx < - yy < - x
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hxy: x < - y.
We will prove y < - x.
rewrite the current goal using minus_SNo_invol y Hy (from right to left).
We will prove - - y < - x.
Apply minus_SNo_Lt_contra x (- y) Hx (SNo_minus_SNo y Hy) to the current goal.
We will prove x < - y.
An exact proof term for the current goal is Hxy.
Theorem. (mordinal_SNoLev_min_2) The following is provable:
∀α, ordinal α∀z, SNo zSNoLev z ordsucc α- α z
Proof:
Let α be given.
Assume Ha.
Let z be given.
Assume Hz: SNo z.
Assume H1: SNoLev z ordsucc α.
We prove the intermediate claim Lz1: SNo (- z).
An exact proof term for the current goal is SNo_minus_SNo z Hz.
We prove the intermediate claim Lz2: SNoLev (- z) ordsucc α.
rewrite the current goal using minus_SNo_Lev z Hz (from left to right).
An exact proof term for the current goal is H1.
We will prove - α z.
rewrite the current goal using minus_SNo_invol z Hz (from right to left).
We will prove - α - - z.
Apply minus_SNo_Le_contra (- z) α Lz1 (ordinal_SNo α Ha) to the current goal.
We will prove - z α.
An exact proof term for the current goal is ordinal_SNoLev_max_2 α Ha (- z) Lz1 Lz2.
Proof:
Let x be given.
Assume Hx.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume Hx1: SNoLev x ω.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
Apply SNoS_I ω omega_ordinal (- x) (SNoLev (- x)) to the current goal.
We will prove SNoLev (- x) ω.
rewrite the current goal using minus_SNo_Lev x Hx3 (from left to right).
We will prove SNoLev x ω.
An exact proof term for the current goal is Hx1.
We will prove SNo_ (SNoLev (- x)) (- x).
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is SNo_minus_SNo x Hx3.
Theorem. (SNoL_minus_SNoR) The following is provable:
∀x, SNo xSNoL (- x) = {- w|wSNoR x}
Proof:
Let x be given.
Assume Hx.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Hx.
Apply set_ext to the current goal.
Let z be given.
Assume Hz: z SNoL (- x).
Apply SNoL_E (- x) Lmx z Hz to the current goal.
Assume Hz1: SNo z.
rewrite the current goal using minus_SNo_Lev x Hx (from left to right).
Assume Hz2: SNoLev z SNoLev x.
Assume Hz3: z < - x.
We will prove z {- w|wSNoR x}.
rewrite the current goal using minus_SNo_invol z Hz1 (from right to left).
Apply ReplI to the current goal.
We will prove - z SNoR x.
Apply SNoR_I x Hx (- z) (SNo_minus_SNo z Hz1) to the current goal.
We will prove SNoLev (- z) SNoLev x.
rewrite the current goal using minus_SNo_Lev z Hz1 (from left to right).
An exact proof term for the current goal is Hz2.
We will prove x < - z.
Apply minus_SNo_Lt_contra2 z x Hz1 Hx to the current goal.
An exact proof term for the current goal is Hz3.
Let z be given.
Assume Hz: z {- w|wSNoR x}.
Apply ReplE_impred (SNoR x) minus_SNo z Hz to the current goal.
Let w be given.
Assume Hw: w SNoR x.
Assume Hzw: z = - w.
We will prove z SNoL (- x).
rewrite the current goal using Hzw (from left to right).
We will prove - w SNoL (- x).
Apply SNoR_E x Hx w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: x < w.
Apply SNoL_I (- x) Lmx (- w) (SNo_minus_SNo w Hw1) to the current goal.
We will prove SNoLev (- w) SNoLev (- x).
rewrite the current goal using minus_SNo_Lev w Hw1 (from left to right).
rewrite the current goal using minus_SNo_Lev x Hx (from left to right).
An exact proof term for the current goal is Hw2.
We will prove - w < - x.
Apply minus_SNo_Lt_contra x w Hx Hw1 to the current goal.
An exact proof term for the current goal is Hw3.
End of Section SurrealMinus
Beginning of Section SurrealAdd
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Definition. We define add_SNo to be SNo_rec2 (λx y a ⇒ SNoCut ({a w y|wSNoL x} {a x w|wSNoL y}) ({a z y|zSNoR x} {a x z|zSNoR y})) of type setsetset.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Theorem. (add_SNo_eq) The following is provable:
∀x, SNo x∀y, SNo yx + y = SNoCut ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y})
Proof:
Set F to be the term λx y a ⇒ SNoCut ({a w y|wSNoL x} {a x w|wSNoL y}) ({a z y|zSNoR x} {a x z|zSNoR y}) of type setset(setsetset)set.
We prove the intermediate claim L1: ∀x, SNo x∀y, SNo y∀g h : setsetset, (wSNoS_ (SNoLev x), ∀z, SNo zg w z = h w z)(zSNoS_ (SNoLev y), g x z = h x z)F x y g = F x y h.
Let x be given.
Assume Hx: SNo x.
Let y be given.
Assume Hy: SNo y.
Let g and h be given.
Assume Hgh1: wSNoS_ (SNoLev x), ∀z, SNo zg w z = h w z.
Assume Hgh2: zSNoS_ (SNoLev y), g x z = h x z.
We will prove F x y g = F x y h.
We prove the intermediate claim L1a: {g w y|wSNoL x} = {h w y|wSNoL x}.
Apply ReplEq_ext to the current goal.
Let w be given.
Assume Hw: w SNoL x.
We will prove g w y = h w y.
Apply Hgh1 to the current goal.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoL_SNoS x Hx w Hw.
We will prove SNo y.
An exact proof term for the current goal is Hy.
We prove the intermediate claim L1b: {g x w|wSNoL y} = {h x w|wSNoL y}.
Apply ReplEq_ext to the current goal.
Let w be given.
Assume Hw: w SNoL y.
We will prove g x w = h x w.
Apply Hgh2 to the current goal.
We will prove w SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoL_SNoS y Hy w Hw.
We prove the intermediate claim L1c: {g z y|zSNoR x} = {h z y|zSNoR x}.
Apply ReplEq_ext to the current goal.
Let z be given.
Assume Hz: z SNoR x.
We will prove g z y = h z y.
Apply Hgh1 to the current goal.
We will prove z SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoR_SNoS x Hx z Hz.
We will prove SNo y.
An exact proof term for the current goal is Hy.
We prove the intermediate claim L1d: {g x z|zSNoR y} = {h x z|zSNoR y}.
Apply ReplEq_ext to the current goal.
Let z be given.
Assume Hz: z SNoR y.
We will prove g x z = h x z.
Apply Hgh2 to the current goal.
We will prove z SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoR_SNoS y Hy z Hz.
We will prove SNoCut ({g w y|wSNoL x} {g x w|wSNoL y}) ({g z y|zSNoR x} {g x z|zSNoR y}) = SNoCut ({h w y|wSNoL x} {h x w|wSNoL y}) ({h z y|zSNoR x} {h x z|zSNoR y}).
rewrite the current goal using L1a (from left to right).
rewrite the current goal using L1b (from left to right).
rewrite the current goal using L1c (from left to right).
rewrite the current goal using L1d (from left to right).
Use reflexivity.
An exact proof term for the current goal is SNo_rec2_eq F L1.
Theorem. (add_SNo_prop1) The following is provable:
∀x y, SNo xSNo ySNo (x + y) (uSNoL x, u + y < x + y) (uSNoR x, x + y < u + y) (uSNoL y, x + u < x + y) (uSNoR y, x + y < x + u) SNoCutP ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y})
Proof:
Set P to be the term λx y ⇒ SNo (x + y) (uSNoL x, u + y < x + y) (uSNoR x, x + y < u + y) (uSNoL y, x + u < x + y) (uSNoR y, x + y < x + u) SNoCutP ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y}) of type setsetprop.
We prove the intermediate claim LPE: ∀x y, P x y∀p : prop, (SNo (x + y)(uSNoL x, u + y < x + y)(uSNoR x, x + y < u + y)(uSNoL y, x + u < x + y)(uSNoR y, x + y < x + u)p)p.
Let x and y be given.
Assume Hxy.
Let p be given.
Assume Hp.
Apply Hxy to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H1 H2 H3 H4 H5 _.
An exact proof term for the current goal is Hp H1 H2 H3 H4 H5.
We will prove ∀x y, SNo xSNo yP x y.
Apply SNoLev_ind2 to the current goal.
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume IHx: wSNoS_ (SNoLev x), P w y.
Assume IHy: zSNoS_ (SNoLev y), P x z.
Assume IHxy: wSNoS_ (SNoLev x), zSNoS_ (SNoLev y), P w z.
We prove the intermediate claim LLx: ordinal (SNoLev x).
An exact proof term for the current goal is SNoLev_ordinal x Hx.
We prove the intermediate claim LLxa: TransSet (SNoLev x).
An exact proof term for the current goal is ordinal_TransSet (SNoLev x) LLx.
We prove the intermediate claim LLy: ordinal (SNoLev y).
An exact proof term for the current goal is SNoLev_ordinal y Hy.
We prove the intermediate claim LLya: TransSet (SNoLev y).
An exact proof term for the current goal is ordinal_TransSet (SNoLev y) LLy.
Set L1 to be the term {w + y|wSNoL x}.
Set L2 to be the term {x + w|wSNoL y}.
Set L to be the term L1 L2.
Set R1 to be the term {z + y|zSNoR x}.
Set R2 to be the term {x + z|zSNoR y}.
Set R to be the term R1 R2.
We prove the intermediate claim IHLx: wSNoL x, P w y.
Let w be given.
Assume Hw: w SNoL x.
Apply SNoL_E x Hx w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: w < x.
We prove the intermediate claim Lw: w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
An exact proof term for the current goal is IHx w Lw.
We prove the intermediate claim IHRx: wSNoR x, P w y.
Let w be given.
Assume Hw: w SNoR x.
Apply SNoR_E x Hx w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: x < w.
We prove the intermediate claim Lw: w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
An exact proof term for the current goal is IHx w Lw.
We prove the intermediate claim IHLy: wSNoL y, P x w.
Let w be given.
Assume Hw: w SNoL y.
Apply SNoL_E y Hy w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev y.
Assume Hw3: w < y.
We prove the intermediate claim Lw: w SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 w y Hw1 Hy Hw2.
An exact proof term for the current goal is IHy w Lw.
We prove the intermediate claim IHRy: wSNoR y, P x w.
Let w be given.
Assume Hw: w SNoR y.
Apply SNoR_E y Hy w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev y.
Assume Hw3: y < w.
We prove the intermediate claim Lw: w SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 w y Hw1 Hy Hw2.
An exact proof term for the current goal is IHy w Lw.
We prove the intermediate claim LLR: SNoCutP L R.
We will prove (wL, SNo w) (zR, SNo z) (wL, zR, w < z).
Apply and3I to the current goal.
Let w be given.
Assume Hw: w L1 L2.
We will prove SNo w.
Apply binunionE L1 L2 w Hw to the current goal.
Assume Hw: w {w + y|wSNoL x}.
Apply ReplE_impred (SNoL x) (λz ⇒ z + y) w Hw to the current goal.
Let z be given.
Assume Hz: z SNoL x.
Assume Hwz: w = z + y.
Apply LPE z y (IHLx z Hz) to the current goal.
Assume H2: SNo (z + y).
Assume _ _ _ _.
We will prove SNo w.
rewrite the current goal using Hwz (from left to right).
An exact proof term for the current goal is H2.
Assume Hw: w {x + w|wSNoL y}.
Apply ReplE_impred (SNoL y) (λz ⇒ x + z) w Hw to the current goal.
Let z be given.
Assume Hz: z SNoL y.
Assume Hwz: w = x + z.
Apply LPE x z (IHLy z Hz) to the current goal.
Assume H2: SNo (x + z).
Assume _ _ _ _.
We will prove SNo w.
rewrite the current goal using Hwz (from left to right).
An exact proof term for the current goal is H2.
Let w be given.
Assume Hw: w R1 R2.
We will prove SNo w.
Apply binunionE R1 R2 w Hw to the current goal.
Assume Hw: w {z + y|zSNoR x}.
Apply ReplE_impred (SNoR x) (λz ⇒ z + y) w Hw to the current goal.
Let z be given.
Assume Hz: z SNoR x.
Assume Hwz: w = z + y.
Apply LPE z y (IHRx z Hz) to the current goal.
Assume H2: SNo (z + y).
Assume _ _ _ _.
We will prove SNo w.
rewrite the current goal using Hwz (from left to right).
An exact proof term for the current goal is H2.
Assume Hw: w {x + z|zSNoR y}.
Apply ReplE_impred (SNoR y) (λz ⇒ x + z) w Hw to the current goal.
Let z be given.
Assume Hz: z SNoR y.
Assume Hwz: w = x + z.
Apply LPE x z (IHRy z Hz) to the current goal.
Assume H2: SNo (x + z).
Assume _ _ _ _.
We will prove SNo w.
rewrite the current goal using Hwz (from left to right).
An exact proof term for the current goal is H2.
Let w be given.
Assume Hw: w L.
Let z be given.
Assume Hz: z R.
We will prove w < z.
Apply binunionE L1 L2 w Hw to the current goal.
Assume Hw: w {w + y|wSNoL x}.
Apply ReplE_impred (SNoL x) (λz ⇒ z + y) w Hw to the current goal.
Let u be given.
Assume Hu: u SNoL x.
Assume Hwu: w = u + y.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x.
Assume Hu3: u < x.
We prove the intermediate claim Lux: u SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 u x Hu1 Hx Hu2.
Apply LPE u y (IHLx u Hu) to the current goal.
Assume IHu1: SNo (u + y).
Assume IHu2: zSNoL u, z + y < u + y.
Assume IHu3: zSNoR u, u + y < z + y.
Assume IHu4: zSNoL y, u + z < u + y.
Assume IHu5: zSNoR y, u + y < u + z.
We will prove w < z.
rewrite the current goal using Hwu (from left to right).
We will prove u + y < z.
Apply binunionE R1 R2 z Hz to the current goal.
Assume Hz: z {z + y|zSNoR x}.
Apply ReplE_impred (SNoR x) (λz ⇒ z + y) z Hz to the current goal.
Let v be given.
Assume Hv: v SNoR x.
Assume Hzv: z = v + y.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: x < v.
Apply LPE v y (IHRx v Hv) to the current goal.
Assume IHv1: SNo (v + y).
Assume IHv2: uSNoL v, u + y < v + y.
Assume IHv3: uSNoR v, v + y < u + y.
Assume IHv4: uSNoL y, v + u < v + y.
Assume IHv5: uSNoR y, v + y < v + u.
rewrite the current goal using Hzv (from left to right).
We will prove u + y < v + y.
We prove the intermediate claim Luv: u < v.
An exact proof term for the current goal is SNoLt_tra u x v Hu1 Hx Hv1 Hu3 Hv3.
Apply SNoLtE u v Hu1 Hv1 Luv to the current goal.
Let q be given.
Assume Hq1: SNo q.
Assume Hq2: SNoLev q SNoLev u SNoLev v.
Assume _ _.
Assume Hq5: u < q.
Assume Hq6: q < v.
Assume _ _.
Apply binintersectE (SNoLev u) (SNoLev v) (SNoLev q) Hq2 to the current goal.
Assume Hq2u Hq2v.
We prove the intermediate claim Lqx: SNoLev q SNoLev x.
An exact proof term for the current goal is LLxa (SNoLev u) Hu2 (SNoLev q) Hq2u.
We prove the intermediate claim Lqx2: q SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 q x Hq1 Hx Lqx.
We prove the intermediate claim Lqy: SNo (q + y).
Apply LPE q y (IHx q Lqx2) to the current goal.
Assume IHq1 _ _ _ _.
An exact proof term for the current goal is IHq1.
Apply SNoLt_tra (u + y) (q + y) (v + y) IHu1 Lqy IHv1 to the current goal.
We will prove u + y < q + y.
Apply IHu3 to the current goal.
We will prove q SNoR u.
An exact proof term for the current goal is SNoR_I u Hu1 q Hq1 Hq2u Hq5.
We will prove q + y < v + y.
Apply IHv2 to the current goal.
We will prove q SNoL v.
An exact proof term for the current goal is SNoL_I v Hv1 q Hq1 Hq2v Hq6.
Assume Huv: SNoLev u SNoLev v.
Assume _ _.
We will prove u + y < v + y.
Apply IHv2 to the current goal.
We will prove u SNoL v.
An exact proof term for the current goal is SNoL_I v Hv1 u Hu1 Huv Luv.
Assume Hvu: SNoLev v SNoLev u.
Assume _ _.
We will prove u + y < v + y.
Apply IHu3 to the current goal.
We will prove v SNoR u.
An exact proof term for the current goal is SNoR_I u Hu1 v Hv1 Hvu Luv.
Assume Hz: z {x + z|zSNoR y}.
Apply ReplE_impred (SNoR y) (λz ⇒ x + z) z Hz to the current goal.
Let v be given.
Assume Hv: v SNoR y.
Assume Hzv: z = x + v.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: y < v.
We prove the intermediate claim Lvy: v SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 v y Hv1 Hy Hv2.
Apply LPE x v (IHRy v Hv) to the current goal.
Assume IHv1: SNo (x + v).
Assume IHv2: uSNoL x, u + v < x + v.
Assume IHv3: uSNoR x, x + v < u + v.
Assume IHv4: uSNoL v, x + u < x + v.
Assume IHv5: uSNoR v, x + v < x + u.
rewrite the current goal using Hzv (from left to right).
We will prove u + y < x + v.
Apply LPE u v (IHxy u Lux v Lvy) to the current goal.
Assume IHuv1: SNo (u + v).
Assume _ _ _ _.
We will prove u + y < x + v.
Apply SNoLt_tra (u + y) (u + v) (x + v) IHu1 IHuv1 IHv1 to the current goal.
We will prove u + y < u + v.
Apply IHu5 to the current goal.
We will prove v SNoR y.
An exact proof term for the current goal is SNoR_I y Hy v Hv1 Hv2 Hv3.
We will prove u + v < x + v.
Apply IHv2 to the current goal.
We will prove u SNoL x.
An exact proof term for the current goal is SNoL_I x Hx u Hu1 Hu2 Hu3.
Assume Hw: w {x + w|wSNoL y}.
Apply ReplE_impred (SNoL y) (λz ⇒ x + z) w Hw to the current goal.
Let u be given.
Assume Hu: u SNoL y.
Assume Hwu: w = x + u.
Apply SNoL_E y Hy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev y.
Assume Hu3: u < y.
We prove the intermediate claim Luy: u SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 u y Hu1 Hy Hu2.
Apply LPE x u (IHLy u Hu) to the current goal.
Assume IHu1: SNo (x + u).
Assume IHu2: zSNoL x, z + u < x + u.
Assume IHu3: zSNoR x, x + u < z + u.
Assume IHu4: zSNoL u, x + z < x + u.
Assume IHu5: zSNoR u, x + u < x + z.
We will prove w < z.
rewrite the current goal using Hwu (from left to right).
We will prove x + u < z.
Apply binunionE R1 R2 z Hz to the current goal.
Assume Hz: z {z + y|zSNoR x}.
Apply ReplE_impred (SNoR x) (λz ⇒ z + y) z Hz to the current goal.
Let v be given.
Assume Hv: v SNoR x.
Assume Hzv: z = v + y.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: x < v.
We prove the intermediate claim Lvx: v SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 v x Hv1 Hx Hv2.
Apply LPE v y (IHRx v Hv) to the current goal.
Assume IHv1: SNo (v + y).
Assume IHv2: uSNoL v, u + y < v + y.
Assume IHv3: uSNoR v, v + y < u + y.
Assume IHv4: uSNoL y, v + u < v + y.
Assume IHv5: uSNoR y, v + y < v + u.
rewrite the current goal using Hzv (from left to right).
We will prove x + u < v + y.
Apply LPE v u (IHxy v Lvx u Luy) to the current goal.
Assume IHvu1: SNo (v + u).
Assume _ _ _ _.
We will prove x + u < v + y.
Apply SNoLt_tra (x + u) (v + u) (v + y) IHu1 IHvu1 IHv1 to the current goal.
We will prove x + u < v + u.
Apply IHu3 to the current goal.
We will prove v SNoR x.
An exact proof term for the current goal is SNoR_I x Hx v Hv1 Hv2 Hv3.
We will prove v + u < v + y.
Apply IHv4 to the current goal.
We will prove u SNoL y.
An exact proof term for the current goal is SNoL_I y Hy u Hu1 Hu2 Hu3.
Assume Hz: z {x + z|zSNoR y}.
Apply ReplE_impred (SNoR y) (λz ⇒ x + z) z Hz to the current goal.
Let v be given.
Assume Hv: v SNoR y.
Assume Hzv: z = x + v.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: y < v.
Apply LPE x v (IHRy v Hv) to the current goal.
Assume IHv1: SNo (x + v).
Assume IHv2: uSNoL x, u + v < x + v.
Assume IHv3: uSNoR x, x + v < u + v.
Assume IHv4: uSNoL v, x + u < x + v.
Assume IHv5: uSNoR v, x + v < x + u.
rewrite the current goal using Hzv (from left to right).
We will prove x + u < x + v.
We prove the intermediate claim Luv: u < v.
An exact proof term for the current goal is SNoLt_tra u y v Hu1 Hy Hv1 Hu3 Hv3.
Apply SNoLtE u v Hu1 Hv1 Luv to the current goal.
Let q be given.
Assume Hq1: SNo q.
Assume Hq2: SNoLev q SNoLev u SNoLev v.
Assume _ _.
Assume Hq5: u < q.
Assume Hq6: q < v.
Assume _ _.
Apply binintersectE (SNoLev u) (SNoLev v) (SNoLev q) Hq2 to the current goal.
Assume Hq2u Hq2v.
We prove the intermediate claim Lqy: SNoLev q SNoLev y.
An exact proof term for the current goal is LLya (SNoLev v) Hv2 (SNoLev q) Hq2v.
We prove the intermediate claim Lqy2: q SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 q y Hq1 Hy Lqy.
We prove the intermediate claim Lxq: SNo (x + q).
Apply LPE x q (IHy q Lqy2) to the current goal.
Assume IHq1 _ _ _ _.
An exact proof term for the current goal is IHq1.
We will prove x + u < x + v.
Apply SNoLt_tra (x + u) (x + q) (x + v) IHu1 Lxq IHv1 to the current goal.
We will prove x + u < x + q.
Apply IHu5 to the current goal.
We will prove q SNoR u.
An exact proof term for the current goal is SNoR_I u Hu1 q Hq1 Hq2u Hq5.
We will prove x + q < x + v.
Apply IHv4 to the current goal.
We will prove q SNoL v.
An exact proof term for the current goal is SNoL_I v Hv1 q Hq1 Hq2v Hq6.
Assume Huv: SNoLev u SNoLev v.
Assume _ _.
We will prove x + u < x + v.
Apply IHv4 to the current goal.
We will prove u SNoL v.
An exact proof term for the current goal is SNoL_I v Hv1 u Hu1 Huv Luv.
Assume Hvu: SNoLev v SNoLev u.
Assume _ _.
We will prove x + u < x + v.
Apply IHu5 to the current goal.
We will prove v SNoR u.
An exact proof term for the current goal is SNoR_I u Hu1 v Hv1 Hvu Luv.
We will prove P x y.
We will prove SNo (x + y) (uSNoL x, u + y < x + y) (uSNoR x, x + y < u + y) (uSNoL y, x + u < x + y) (uSNoR y, x + y < x + u) SNoCutP L R.
We prove the intermediate claim LNLR: SNo (SNoCut L R).
An exact proof term for the current goal is SNoCutP_SNo_SNoCut L R LLR.
Apply andI to the current goal.
rewrite the current goal using add_SNo_eq x Hx y Hy (from left to right).
Apply and5I to the current goal.
We will prove SNo (SNoCut L R).
An exact proof term for the current goal is LNLR.
We will prove uSNoL x, u + y < SNoCut L R.
Let u be given.
Assume Hu: u SNoL x.
We will prove u + y < SNoCut L R.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x.
Assume Hu3: u < x.
We prove the intermediate claim LuyL: u + y L.
We will prove u + y L1 L2.
Apply binunionI1 to the current goal.
We will prove u + y {w + y|wSNoL x}.
Apply ReplI (SNoL x) (λw ⇒ w + y) u to the current goal.
We will prove u SNoL x.
An exact proof term for the current goal is Hu.
We will prove u + y < SNoCut L R.
An exact proof term for the current goal is SNoCutP_SNoCut_L L R LLR (u + y) LuyL.
We will prove uSNoR x, SNoCut L R < u + y.
Let u be given.
Assume Hu: u SNoR x.
We will prove SNoCut L R < u + y.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x.
Assume Hu3: x < u.
We prove the intermediate claim LuyR: u + y R.
We will prove u + y R1 R2.
Apply binunionI1 to the current goal.
We will prove u + y {z + y|zSNoR x}.
Apply ReplI (SNoR x) (λw ⇒ w + y) u to the current goal.
We will prove u SNoR x.
An exact proof term for the current goal is Hu.
We will prove SNoCut L R < u + y.
An exact proof term for the current goal is SNoCutP_SNoCut_R L R LLR (u + y) LuyR.
We will prove uSNoL y, x + u < SNoCut L R.
Let u be given.
Assume Hu: u SNoL y.
We will prove x + u < SNoCut L R.
Apply SNoL_E y Hy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev y.
Assume Hu3: u < y.
We prove the intermediate claim LxuL: x + u L.
We will prove x + u L1 L2.
Apply binunionI2 to the current goal.
We will prove x + u {x + w|wSNoL y}.
Apply ReplI (SNoL y) (λw ⇒ x + w) u to the current goal.
We will prove u SNoL y.
An exact proof term for the current goal is Hu.
We will prove x + u < SNoCut L R.
An exact proof term for the current goal is SNoCutP_SNoCut_L L R LLR (x + u) LxuL.
We will prove uSNoR y, SNoCut L R < x + u.
Let u be given.
Assume Hu: u SNoR y.
We will prove SNoCut L R < x + u.
Apply SNoR_E y Hy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev y.
Assume Hu3: y < u.
We prove the intermediate claim LxuR: x + u R.
We will prove x + u R1 R2.
Apply binunionI2 to the current goal.
We will prove x + u {x + z|zSNoR y}.
Apply ReplI (SNoR y) (λz ⇒ x + z) u to the current goal.
We will prove u SNoR y.
An exact proof term for the current goal is Hu.
We will prove SNoCut L R < x + u.
An exact proof term for the current goal is SNoCutP_SNoCut_R L R LLR (x + u) LxuR.
An exact proof term for the current goal is LLR.
Theorem. (SNo_add_SNo) The following is provable:
∀x y, SNo xSNo ySNo (x + y)
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Apply add_SNo_prop1 x y Hx Hy to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H _ _ _ _ _.
An exact proof term for the current goal is H.
Theorem. (SNo_add_SNo_3) The following is provable:
∀x y z, SNo xSNo ySNo zSNo (x + y + z)
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hx.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hz.
Theorem. (SNo_add_SNo_3c) The following is provable:
∀x y z, SNo xSNo ySNo zSNo (x + y + - z)
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
Apply SNo_add_SNo_3 to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hy.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hz.
Theorem. (SNo_add_SNo_4) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wSNo (x + y + z + w)
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
An exact proof term for the current goal is SNo_add_SNo_3 x y (z + w) Hx Hy (SNo_add_SNo z w Hz Hw).
Theorem. (add_SNo_Lt1) The following is provable:
∀x y z, SNo xSNo ySNo zx < zx + y < z + y
Proof:
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hxz: x < z.
Apply add_SNo_prop1 x y Hx Hy to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H1: SNo (x + y).
Assume _.
Assume H2: uSNoR x, x + y < u + y.
Assume _ _ _.
Apply add_SNo_prop1 z y Hz Hy to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H3: SNo (z + y).
Assume H4: uSNoL z, u + y < z + y.
Assume _ _ _ _.
Apply SNoLtE x z Hx Hz Hxz to the current goal.
Let w be given.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x SNoLev z.
Assume _ _.
Assume Hw5: x < w.
Assume Hw6: w < z.
Assume _ _.
Apply binintersectE (SNoLev x) (SNoLev z) (SNoLev w) Hw2 to the current goal.
Assume Hw2x Hw2z.
We will prove x + y < z + y.
Apply SNoLt_tra (x + y) (w + y) (z + y) H1 (SNo_add_SNo w y Hw1 Hy) H3 to the current goal.
We will prove x + y < w + y.
Apply H2 to the current goal.
We will prove w SNoR x.
Apply SNoR_I x Hx w Hw1 to the current goal.
We will prove SNoLev w SNoLev x.
An exact proof term for the current goal is Hw2x.
We will prove x < w.
An exact proof term for the current goal is Hw5.
We will prove w + y < z + y.
Apply H4 to the current goal.
We will prove w SNoL z.
Apply SNoL_I z Hz w Hw1 to the current goal.
We will prove SNoLev w SNoLev z.
An exact proof term for the current goal is Hw2z.
We will prove w < z.
An exact proof term for the current goal is Hw6.
Assume Hxz1: SNoLev x SNoLev z.
Assume _ _.
We will prove x + y < z + y.
Apply H4 to the current goal.
We will prove x SNoL z.
Apply SNoL_I z Hz x Hx to the current goal.
We will prove SNoLev x SNoLev z.
An exact proof term for the current goal is Hxz1.
We will prove x < z.
An exact proof term for the current goal is Hxz.
Assume Hzx: SNoLev z SNoLev x.
Assume _ _.
We will prove x + y < z + y.
Apply H2 to the current goal.
We will prove z SNoR x.
Apply SNoR_I x Hx z Hz to the current goal.
We will prove SNoLev z SNoLev x.
An exact proof term for the current goal is Hzx.
We will prove x < z.
An exact proof term for the current goal is Hxz.
Theorem. (add_SNo_Le1) The following is provable:
∀x y z, SNo xSNo ySNo zx zx + y z + y
Proof:
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hxz: x z.
We will prove x + y z + y.
Apply SNoLeE x z Hx Hz Hxz to the current goal.
Assume H1: x < z.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is add_SNo_Lt1 x y z Hx Hy Hz H1.
Assume H1: x = z.
rewrite the current goal using H1 (from left to right).
Apply SNoLe_ref to the current goal.
Theorem. (add_SNo_Lt2) The following is provable:
∀x y z, SNo xSNo ySNo zy < zx + y < x + z
Proof:
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hyz: y < z.
Apply add_SNo_prop1 x y Hx Hy to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H1: SNo (x + y).
Assume _ _ _.
Assume H2: uSNoR y, x + y < x + u.
Assume _.
Apply add_SNo_prop1 x z Hx Hz to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H3: SNo (x + z).
Assume _ _.
Assume H4: uSNoL z, x + u < x + z.
Assume _ _.
Apply SNoLtE y z Hy Hz Hyz to the current goal.
Let w be given.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev y SNoLev z.
Assume _ _.
Assume Hw5: y < w.
Assume Hw6: w < z.
Assume _ _.
Apply binintersectE (SNoLev y) (SNoLev z) (SNoLev w) Hw2 to the current goal.
Assume Hw2y Hw2z.
We will prove x + y < x + z.
Apply SNoLt_tra (x + y) (x + w) (x + z) H1 (SNo_add_SNo x w Hx Hw1) H3 to the current goal.
We will prove x + y < x + w.
Apply H2 to the current goal.
We will prove w SNoR y.
Apply SNoR_I y Hy w Hw1 to the current goal.
We will prove SNoLev w SNoLev y.
An exact proof term for the current goal is Hw2y.
We will prove y < w.
An exact proof term for the current goal is Hw5.
We will prove x + w < x + z.
Apply H4 to the current goal.
We will prove w SNoL z.
Apply SNoL_I z Hz w Hw1 to the current goal.
We will prove SNoLev w SNoLev z.
An exact proof term for the current goal is Hw2z.
We will prove w < z.
An exact proof term for the current goal is Hw6.
Assume Hyz1: SNoLev y SNoLev z.
Assume _ _.
We will prove x + y < x + z.
Apply H4 to the current goal.
We will prove y SNoL z.
Apply SNoL_I z Hz y Hy to the current goal.
We will prove SNoLev y SNoLev z.
An exact proof term for the current goal is Hyz1.
We will prove y < z.
An exact proof term for the current goal is Hyz.
Assume Hzy: SNoLev z SNoLev y.
Assume _ _.
We will prove x + y < x + z.
Apply H2 to the current goal.
We will prove z SNoR y.
Apply SNoR_I y Hy z Hz to the current goal.
We will prove SNoLev z SNoLev y.
An exact proof term for the current goal is Hzy.
We will prove y < z.
An exact proof term for the current goal is Hyz.
Theorem. (add_SNo_Le2) The following is provable:
∀x y z, SNo xSNo ySNo zy zx + y x + z
Proof:
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hyz: y z.
We will prove x + y x + z.
Apply SNoLeE y z Hy Hz Hyz to the current goal.
Assume H1: y < z.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is add_SNo_Lt2 x y z Hx Hy Hz H1.
Assume H1: y = z.
rewrite the current goal using H1 (from left to right).
Apply SNoLe_ref to the current goal.
Theorem. (add_SNo_Lt3a) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wx < zy wx + y < z + w
Proof:
Let x, y, z and w be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hw: SNo w.
Assume Hxz: x < z.
Assume Hyw: y w.
Apply SNoLtLe_tra (x + y) (z + y) (z + w) (SNo_add_SNo x y Hx Hy) (SNo_add_SNo z y Hz Hy) (SNo_add_SNo z w Hz Hw) to the current goal.
We will prove x + y < z + y.
An exact proof term for the current goal is add_SNo_Lt1 x y z Hx Hy Hz Hxz.
We will prove z + y z + w.
An exact proof term for the current goal is add_SNo_Le2 z y w Hz Hy Hw Hyw.
Theorem. (add_SNo_Lt3b) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wx zy < wx + y < z + w
Proof:
Let x, y, z and w be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hw: SNo w.
Assume Hxz: x z.
Assume Hyw: y < w.
Apply SNoLeLt_tra (x + y) (z + y) (z + w) (SNo_add_SNo x y Hx Hy) (SNo_add_SNo z y Hz Hy) (SNo_add_SNo z w Hz Hw) to the current goal.
We will prove x + y z + y.
An exact proof term for the current goal is add_SNo_Le1 x y z Hx Hy Hz Hxz.
We will prove z + y < z + w.
An exact proof term for the current goal is add_SNo_Lt2 z y w Hz Hy Hw Hyw.
Theorem. (add_SNo_Lt3) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wx < zy < wx + y < z + w
Proof:
Let x, y, z and w be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hw: SNo w.
Assume Hxz: x < z.
Assume Hyw: y < w.
Apply add_SNo_Lt3a x y z w Hx Hy Hz Hw Hxz to the current goal.
We will prove y w.
Apply SNoLtLe to the current goal.
We will prove y < w.
An exact proof term for the current goal is Hyw.
Theorem. (add_SNo_Le3) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wx zy wx + y z + w
Proof:
Let x, y, z and w be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hw: SNo w.
Assume Hxz: x z.
Assume Hyw: y w.
Apply SNoLe_tra (x + y) (z + y) (z + w) (SNo_add_SNo x y Hx Hy) (SNo_add_SNo z y Hz Hy) (SNo_add_SNo z w Hz Hw) to the current goal.
We will prove x + y z + y.
An exact proof term for the current goal is add_SNo_Le1 x y z Hx Hy Hz Hxz.
We will prove z + y z + w.
An exact proof term for the current goal is add_SNo_Le2 z y w Hz Hy Hw Hyw.
Theorem. (add_SNo_SNoCutP) The following is provable:
∀x y, SNo xSNo ySNoCutP ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y})
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Apply add_SNo_prop1 x y Hx Hy to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
Theorem. (add_SNo_com) The following is provable:
∀x y, SNo xSNo yx + y = y + x
Proof:
Apply SNoLev_ind2 to the current goal.
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume IHx: wSNoS_ (SNoLev x), w + y = y + w.
Assume IHy: zSNoS_ (SNoLev y), x + z = z + x.
Assume IHxy: wSNoS_ (SNoLev x), zSNoS_ (SNoLev y), w + z = z + w.
We prove the intermediate claim IHLx: wSNoL x, w + y = y + w.
Let w be given.
Assume Hw: w SNoL x.
Apply SNoL_E x Hx w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: w < x.
We prove the intermediate claim Lw: w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
An exact proof term for the current goal is IHx w Lw.
We prove the intermediate claim IHRx: wSNoR x, w + y = y + w.
Let w be given.
Assume Hw: w SNoR x.
Apply SNoR_E x Hx w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: x < w.
We prove the intermediate claim Lw: w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
An exact proof term for the current goal is IHx w Lw.
We prove the intermediate claim IHLy: wSNoL y, x + w = w + x.
Let w be given.
Assume Hw: w SNoL y.
Apply SNoL_E y Hy w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev y.
Assume Hw3: w < y.
We prove the intermediate claim Lw: w SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 w y Hw1 Hy Hw2.
An exact proof term for the current goal is IHy w Lw.
We prove the intermediate claim IHRy: wSNoR y, x + w = w + x.
Let w be given.
Assume Hw: w SNoR y.
Apply SNoR_E y Hy w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev y.
Assume Hw3: y < w.
We prove the intermediate claim Lw: w SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 w y Hw1 Hy Hw2.
An exact proof term for the current goal is IHy w Lw.
We will prove x + y = y + x.
Set Lxy1 to be the term {w + y|wSNoL x}.
Set Lxy2 to be the term {x + w|wSNoL y}.
Set Rxy1 to be the term {z + y|zSNoR x}.
Set Rxy2 to be the term {x + z|zSNoR y}.
rewrite the current goal using add_SNo_eq x Hx y Hy (from left to right).
We will prove (SNoCut (Lxy1 Lxy2) (Rxy1 Rxy2)) = y + x.
Set Lyx1 to be the term {w + x|wSNoL y}.
Set Lyx2 to be the term {y + w|wSNoL x}.
Set Ryx1 to be the term {z + x|zSNoR y}.
Set Ryx2 to be the term {y + z|zSNoR x}.
rewrite the current goal using add_SNo_eq y Hy x Hx (from left to right).
We will prove (SNoCut (Lxy1 Lxy2) (Rxy1 Rxy2)) = (SNoCut (Lyx1 Lyx2) (Ryx1 Ryx2)).
We prove the intermediate claim Lxy1yx2: Lxy1 = Lyx2.
We will prove {w + y|wSNoL x} = {y + w|wSNoL x}.
Apply ReplEq_ext (SNoL x) (λw ⇒ w + y) (λw ⇒ y + w) to the current goal.
Let w be given.
Assume Hw: w SNoL x.
We will prove w + y = y + w.
An exact proof term for the current goal is IHLx w Hw.
We prove the intermediate claim Lxy2yx1: Lxy2 = Lyx1.
We will prove {x + w|wSNoL y} = {w + x|wSNoL y}.
Apply ReplEq_ext (SNoL y) (λw ⇒ x + w) (λw ⇒ w + x) to the current goal.
Let w be given.
Assume Hw: w SNoL y.
We will prove x + w = w + x.
An exact proof term for the current goal is IHLy w Hw.
We prove the intermediate claim Rxy1yx2: Rxy1 = Ryx2.
We will prove {w + y|wSNoR x} = {y + w|wSNoR x}.
Apply ReplEq_ext (SNoR x) (λw ⇒ w + y) (λw ⇒ y + w) to the current goal.
Let w be given.
Assume Hw: w SNoR x.
We will prove w + y = y + w.
An exact proof term for the current goal is IHRx w Hw.
We prove the intermediate claim Rxy2yx1: Rxy2 = Ryx1.
We will prove {x + w|wSNoR y} = {w + x|wSNoR y}.
Apply ReplEq_ext (SNoR y) (λw ⇒ x + w) (λw ⇒ w + x) to the current goal.
Let w be given.
Assume Hw: w SNoR y.
We will prove x + w = w + x.
An exact proof term for the current goal is IHRy w Hw.
rewrite the current goal using Lxy1yx2 (from left to right).
rewrite the current goal using Lxy2yx1 (from left to right).
rewrite the current goal using Rxy1yx2 (from left to right).
rewrite the current goal using Rxy2yx1 (from left to right).
We will prove (SNoCut (Lyx2 Lyx1) (Ryx2 Ryx1)) = (SNoCut (Lyx1 Lyx2) (Ryx1 Ryx2)).
rewrite the current goal using binunion_com Lyx2 Lyx1 (from left to right).
rewrite the current goal using binunion_com Ryx2 Ryx1 (from left to right).
Use reflexivity.
Theorem. (add_SNo_0L) The following is provable:
∀x, SNo x0 + x = x
Proof:
Apply SNoLev_ind to the current goal.
Let x be given.
Assume Hx: SNo x.
Assume IH: wSNoS_ (SNoLev x), 0 + w = w.
We will prove 0 + x = x.
rewrite the current goal using add_SNo_eq 0 SNo_0 x Hx (from left to right).
We will prove SNoCut ({w + x|wSNoL 0} {0 + w|wSNoL x}) ({w + x|wSNoR 0} {0 + w|wSNoR x}) = x.
We prove the intermediate claim L1: {w + x|wSNoL 0} {0 + w|wSNoL x} = SNoL x.
rewrite the current goal using SNoL_0 (from left to right).
We will prove {w + x|wEmpty} {0 + w|wSNoL x} = SNoL x.
rewrite the current goal using Repl_Empty (λw ⇒ w + x) (from left to right).
We will prove Empty {0 + w|wSNoL x} = SNoL x.
rewrite the current goal using binunion_idl (from left to right).
We will prove {0 + w|wSNoL x} = SNoL x.
Apply set_ext to the current goal.
Let u be given.
Assume Hu: u {0 + w|wSNoL x}.
Apply ReplE_impred (SNoL x) (λw ⇒ 0 + w) u Hu to the current goal.
Let w be given.
Assume Hw: w SNoL x.
Assume H1: u = 0 + w.
We will prove u SNoL x.
rewrite the current goal using H1 (from left to right).
We will prove 0 + w SNoL x.
rewrite the current goal using IH w (SNoL_SNoS_ x w Hw) (from left to right).
We will prove w SNoL x.
An exact proof term for the current goal is Hw.
Let u be given.
Assume Hu: u SNoL x.
We will prove u {0 + w|wSNoL x}.
rewrite the current goal using IH u (SNoL_SNoS_ x u Hu) (from right to left).
We will prove 0 + u {0 + w|wSNoL x}.
An exact proof term for the current goal is ReplI (SNoL x) (λw ⇒ 0 + w) u Hu.
We prove the intermediate claim L2: {w + x|wSNoR 0} {0 + w|wSNoR x} = SNoR x.
rewrite the current goal using SNoR_0 (from left to right).
We will prove {w + x|wEmpty} {0 + w|wSNoR x} = SNoR x.
rewrite the current goal using Repl_Empty (λw ⇒ w + x) (from left to right).
We will prove Empty {0 + w|wSNoR x} = SNoR x.
rewrite the current goal using binunion_idl (from left to right).
We will prove {0 + w|wSNoR x} = SNoR x.
Apply set_ext to the current goal.
Let u be given.
Assume Hu: u {0 + w|wSNoR x}.
Apply ReplE_impred (SNoR x) (λw ⇒ 0 + w) u Hu to the current goal.
Let w be given.
Assume Hw: w SNoR x.
Assume H1: u = 0 + w.
We will prove u SNoR x.
rewrite the current goal using H1 (from left to right).
We will prove 0 + w SNoR x.
rewrite the current goal using IH w (SNoR_SNoS_ x w Hw) (from left to right).
We will prove w SNoR x.
An exact proof term for the current goal is Hw.
Let u be given.
Assume Hu: u SNoR x.
We will prove u {0 + w|wSNoR x}.
rewrite the current goal using IH u (SNoR_SNoS_ x u Hu) (from right to left).
We will prove 0 + u {0 + w|wSNoR x}.
An exact proof term for the current goal is ReplI (SNoR x) (λw ⇒ 0 + w) u Hu.
rewrite the current goal using L1 (from left to right).
rewrite the current goal using L2 (from left to right).
We will prove SNoCut (SNoL x) (SNoR x) = x.
Use symmetry.
An exact proof term for the current goal is SNo_eta x Hx.
Theorem. (add_SNo_0R) The following is provable:
∀x, SNo xx + 0 = x
Proof:
Let x be given.
Assume Hx: SNo x.
rewrite the current goal using add_SNo_com x 0 Hx SNo_0 (from left to right).
An exact proof term for the current goal is add_SNo_0L x Hx.
Theorem. (add_SNo_minus_SNo_linv) The following is provable:
∀x, SNo x- x + x = 0
Proof:
Apply SNoLev_ind to the current goal.
Let x be given.
Assume Hx: SNo x.
Assume IH: wSNoS_ (SNoLev x), - w + w = 0.
We will prove - x + x = 0.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Hx.
Set L1 to be the term {w + x|wSNoL (- x)}.
Set L2 to be the term {- x + w|wSNoL x}.
Set R1 to be the term {z + x|zSNoR (- x)}.
Set R2 to be the term {- x + z|zSNoR x}.
Set L to be the term L1 L2.
Set R to be the term R1 R2.
rewrite the current goal using add_SNo_eq (- x) Lmx x Hx (from left to right).
We will prove SNoCut L R = 0.
We prove the intermediate claim LLR: SNoCutP L R.
An exact proof term for the current goal is add_SNo_SNoCutP (- x) x Lmx Hx.
We prove the intermediate claim LNLR: SNo (SNoCut L R).
An exact proof term for the current goal is SNoCutP_SNo_SNoCut L R LLR.
We prove the intermediate claim Lfst: SNoLev (SNoCut L R) SNoLev 0 SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) 0.
Apply SNoCutP_SNoCut_fst L R LLR 0 SNo_0 to the current goal.
We will prove wL, w < 0.
Let w be given.
Assume Hw: w L.
Apply binunionE L1 L2 w Hw to the current goal.
Assume Hw: w {w + x|wSNoL (- x)}.
Apply ReplE_impred (SNoL (- x)) (λz ⇒ z + x) w Hw to the current goal.
Let u be given.
Assume Hu: u SNoL (- x).
Assume Hwu: w = u + x.
Apply SNoL_E (- x) Lmx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev (- x).
Assume Hu3: u < - x.
We prove the intermediate claim Lmu: SNo (- u).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hu1.
We prove the intermediate claim Lmuu: - u + u = 0.
Apply IH to the current goal.
We will prove u SNoS_ (SNoLev x).
Apply SNoS_I2 u x Hu1 Hx to the current goal.
We will prove SNoLev u SNoLev x.
rewrite the current goal using minus_SNo_Lev x Hx (from right to left).
We will prove SNoLev u SNoLev (- x).
An exact proof term for the current goal is Hu2.
We prove the intermediate claim Lxmu: x < - u.
rewrite the current goal using minus_SNo_invol x Hx (from right to left).
We will prove - - x < - u.
Apply minus_SNo_Lt_contra u (- x) Hu1 Lmx to the current goal.
We will prove u < - x.
An exact proof term for the current goal is Hu3.
We will prove w < 0.
rewrite the current goal using Hwu (from left to right).
We will prove u + x < 0.
rewrite the current goal using add_SNo_com u x Hu1 Hx (from left to right).
We will prove x + u < 0.
rewrite the current goal using Lmuu (from right to left).
We will prove x + u < - u + u.
Apply add_SNo_Lt1 x u (- u) Hx Hu1 Lmu to the current goal.
We will prove x < - u.
An exact proof term for the current goal is Lxmu.
Assume Hw: w {- x + w|wSNoL x}.
Apply ReplE_impred (SNoL x) (λz ⇒ - x + z) w Hw to the current goal.
Let u be given.
Assume Hu: u SNoL x.
Assume Hwu: w = - x + u.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x.
Assume Hu3: u < x.
We prove the intermediate claim Lmu: SNo (- u).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hu1.
We prove the intermediate claim Lmuu: - u + u = 0.
Apply IH to the current goal.
We will prove u SNoS_ (SNoLev x).
Apply SNoS_I2 u x Hu1 Hx to the current goal.
We will prove SNoLev u SNoLev x.
An exact proof term for the current goal is Hu2.
We prove the intermediate claim Lmxmu: - x < - u.
Apply minus_SNo_Lt_contra u x Hu1 Hx to the current goal.
We will prove u < x.
An exact proof term for the current goal is Hu3.
We will prove w < 0.
rewrite the current goal using Hwu (from left to right).
We will prove - x + u < 0.
rewrite the current goal using Lmuu (from right to left).
We will prove - x + u < - u + u.
Apply add_SNo_Lt1 (- x) u (- u) Lmx Hu1 Lmu to the current goal.
We will prove - x < - u.
An exact proof term for the current goal is Lmxmu.
We will prove zR, 0 < z.
Let z be given.
Assume Hz: z R.
Apply binunionE R1 R2 z Hz to the current goal.
Assume Hz: z {z + x|zSNoR (- x)}.
Apply ReplE_impred (SNoR (- x)) (λz ⇒ z + x) z Hz to the current goal.
Let v be given.
Assume Hv: v SNoR (- x).
Assume Hzv: z = v + x.
Apply SNoR_E (- x) Lmx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev (- x).
Assume Hv3: - x < v.
We prove the intermediate claim Lmv: SNo (- v).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hv1.
We prove the intermediate claim Lmvv: - v + v = 0.
Apply IH to the current goal.
We will prove v SNoS_ (SNoLev x).
Apply SNoS_I2 v x Hv1 Hx to the current goal.
We will prove SNoLev v SNoLev x.
rewrite the current goal using minus_SNo_Lev x Hx (from right to left).
We will prove SNoLev v SNoLev (- x).
An exact proof term for the current goal is Hv2.
We prove the intermediate claim Lmvx: - v < x.
rewrite the current goal using minus_SNo_invol x Hx (from right to left).
We will prove - v < - - x.
Apply minus_SNo_Lt_contra (- x) v Lmx Hv1 to the current goal.
We will prove - x < v.
An exact proof term for the current goal is Hv3.
We will prove 0 < z.
rewrite the current goal using Hzv (from left to right).
We will prove 0 < v + x.
rewrite the current goal using add_SNo_com v x Hv1 Hx (from left to right).
We will prove 0 < x + v.
rewrite the current goal using Lmvv (from right to left).
We will prove - v + v < x + v.
Apply add_SNo_Lt1 (- v) v x Lmv Hv1 Hx to the current goal.
We will prove - v < x.
An exact proof term for the current goal is Lmvx.
Assume Hz: z {- x + z|zSNoR x}.
Apply ReplE_impred (SNoR x) (λz ⇒ - x + z) z Hz to the current goal.
Let v be given.
Assume Hv: v SNoR x.
Assume Hzv: z = - x + v.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: x < v.
We prove the intermediate claim Lmv: SNo (- v).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hv1.
We prove the intermediate claim Lmvv: - v + v = 0.
Apply IH to the current goal.
We will prove v SNoS_ (SNoLev x).
Apply SNoS_I2 v x Hv1 Hx to the current goal.
We will prove SNoLev v SNoLev x.
An exact proof term for the current goal is Hv2.
We prove the intermediate claim Lmvmx: - v < - x.
Apply minus_SNo_Lt_contra x v Hx Hv1 to the current goal.
We will prove x < v.
An exact proof term for the current goal is Hv3.
We will prove 0 < z.
rewrite the current goal using Hzv (from left to right).
We will prove 0 < - x + v.
rewrite the current goal using Lmvv (from right to left).
We will prove - v + v < - x + v.
Apply add_SNo_Lt1 (- v) v (- x) Lmv Hv1 Lmx to the current goal.
We will prove - v < - x.
An exact proof term for the current goal is Lmvmx.
Apply Lfst to the current goal.
Assume H1: SNoLev (SNoCut L R) SNoLev 0.
Assume H2: SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) 0.
Apply SNo_eq (SNoCut L R) 0 LNLR SNo_0 to the current goal.
We will prove SNoLev (SNoCut L R) = SNoLev 0.
Apply set_ext to the current goal.
An exact proof term for the current goal is H1.
rewrite the current goal using ordinal_SNoLev 0 ordinal_Empty (from left to right).
We will prove 0 SNoLev (SNoCut L R).
Apply Subq_Empty to the current goal.
We will prove SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) 0.
An exact proof term for the current goal is H2.
Theorem. (add_SNo_minus_SNo_rinv) The following is provable:
∀x, SNo xx + - x = 0
Proof:
Let x be given.
Assume Hx: SNo x.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Hx.
We will prove x + - x = 0.
rewrite the current goal using add_SNo_com x (- x) Hx Lmx (from left to right).
We will prove - x + x = 0.
An exact proof term for the current goal is add_SNo_minus_SNo_linv x Hx.
Theorem. (add_SNo_ordinal_SNoCutP) The following is provable:
∀α, ordinal α∀β, ordinal βSNoCutP ({x + β|xSNoS_ α} {α + x|xSNoS_ β}) Empty
Proof:
Let α be given.
Assume Ha: ordinal α.
Let β be given.
Assume Hb: ordinal β.
Set Lo1 to be the term {x + β|xSNoS_ α}.
Set Lo2 to be the term {α + x|xSNoS_ β}.
We will prove (xLo1 Lo2, SNo x) (yEmpty, SNo y) (xLo1 Lo2, yEmpty, x < y).
Apply and3I to the current goal.
Let w be given.
Assume Hw: w Lo1 Lo2.
Apply binunionE Lo1 Lo2 w Hw to the current goal.
Assume H1: w Lo1.
Apply ReplE_impred (SNoS_ α) (λx ⇒ x + β) w H1 to the current goal.
Let x be given.
Assume Hx: x SNoS_ α.
Assume H2: w = x + β.
Apply SNoS_E2 α Ha x Hx to the current goal.
Assume _ _.
Assume Hx2: SNo x.
Assume _.
We will prove SNo w.
rewrite the current goal using H2 (from left to right).
We will prove SNo (x + β).
An exact proof term for the current goal is SNo_add_SNo x β Hx2 (ordinal_SNo β Hb).
Assume H1: w Lo2.
Apply ReplE_impred (SNoS_ β) (λx ⇒ α + x) w H1 to the current goal.
Let x be given.
Assume Hx: x SNoS_ β.
Assume H2: w = α + x.
Apply SNoS_E2 β Hb x Hx to the current goal.
Assume _ _.
Assume Hx2: SNo x.
Assume _.
We will prove SNo w.
rewrite the current goal using H2 (from left to right).
We will prove SNo (α + x).
An exact proof term for the current goal is SNo_add_SNo α x (ordinal_SNo α Ha) Hx2.
Let y be given.
Assume Hy: y Empty.
We will prove False.
An exact proof term for the current goal is EmptyE y Hy.
Let x be given.
Assume _.
Let y be given.
Assume Hy: y Empty.
We will prove False.
An exact proof term for the current goal is EmptyE y Hy.
Theorem. (add_SNo_ordinal_eq) The following is provable:
∀α, ordinal α∀β, ordinal βα + β = SNoCut ({x + β|xSNoS_ α} {α + x|xSNoS_ β}) Empty
Proof:
Let α be given.
Assume Ha: ordinal α.
Let β be given.
Assume Hb: ordinal β.
Set Lo1 to be the term {x + β|xSNoS_ α}.
Set Lo2 to be the term {α + x|xSNoS_ β}.
We will prove α + β = SNoCut (Lo1 Lo2) Empty.
We prove the intermediate claim La: SNo α.
An exact proof term for the current goal is ordinal_SNo α Ha.
We prove the intermediate claim Lb: SNo β.
An exact proof term for the current goal is ordinal_SNo β Hb.
rewrite the current goal using add_SNo_eq α La β Lb (from left to right).
We will prove SNoCut ({x + β|xSNoL α} {α + x|xSNoL β}) ({x + β|xSNoR α} {α + x|xSNoR β}) = SNoCut (Lo1 Lo2) Empty.
rewrite the current goal using ordinal_SNoL α Ha (from left to right).
rewrite the current goal using ordinal_SNoL β Hb (from left to right).
We will prove SNoCut (Lo1 Lo2) ({x + β|xSNoR α} {α + x|xSNoR β}) = SNoCut (Lo1 Lo2) Empty.
rewrite the current goal using ordinal_SNoR α Ha (from left to right).
rewrite the current goal using ordinal_SNoR β Hb (from left to right).
We will prove SNoCut (Lo1 Lo2) ({x + β|xEmpty} {α + x|xEmpty}) = SNoCut (Lo1 Lo2) Empty.
rewrite the current goal using Repl_Empty (from left to right).
rewrite the current goal using Repl_Empty (from left to right).
We will prove SNoCut (Lo1 Lo2) (Empty Empty) = SNoCut (Lo1 Lo2) Empty.
rewrite the current goal using binunion_idl (from left to right).
Use reflexivity.
Theorem. (add_SNo_ordinal_ordinal) The following is provable:
∀α, ordinal α∀β, ordinal βordinal (α + β)
Proof:
Let α be given.
Assume Ha: ordinal α.
Let β be given.
Assume Hb: ordinal β.
We prove the intermediate claim La: SNo α.
An exact proof term for the current goal is ordinal_SNo α Ha.
We prove the intermediate claim Lb: SNo β.
An exact proof term for the current goal is ordinal_SNo β Hb.
We prove the intermediate claim Lab1: SNo (α + β).
An exact proof term for the current goal is SNo_add_SNo α β La Lb.
We prove the intermediate claim Lab2: ordinal (SNoLev (α + β)).
An exact proof term for the current goal is SNoLev_ordinal (α + β) Lab1.
We will prove ordinal (α + β).
Apply SNo_max_ordinal (α + β) Lab1 to the current goal.
We will prove ySNoS_ (SNoLev (α + β)), y < α + β.
Let y be given.
Assume Hy: y SNoS_ (SNoLev (α + β)).
Apply SNoS_E2 (SNoLev (α + β)) Lab2 y Hy to the current goal.
Assume Hy1: SNoLev y SNoLev (α + β).
Assume Hy2: ordinal (SNoLev y).
Assume Hy3: SNo y.
Assume Hy4: SNo_ (SNoLev y) y.
Set Lo1 to be the term {x + β|xSNoS_ α}.
Set Lo2 to be the term {α + x|xSNoS_ β}.
Apply SNoLt_trichotomy_or y (α + β) Hy3 Lab1 to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: y < α + β.
An exact proof term for the current goal is H1.
Assume H1: y = α + β.
We will prove False.
Apply In_irref (SNoLev y) to the current goal.
rewrite the current goal using H1 (from left to right) at position 2.
An exact proof term for the current goal is Hy1.
Assume H1: α + β < y.
We will prove False.
Apply add_SNo_ordinal_SNoCutP α Ha β Hb to the current goal.
Assume H2.
Apply H2 to the current goal.
Assume H2: xLo1 Lo2, SNo x.
Assume _ _.
Apply SNoCutP_SNoCut (Lo1 Lo2) Empty (add_SNo_ordinal_SNoCutP α Ha β Hb) to the current goal.
Assume H3.
Apply H3 to the current goal.
Assume H3.
Apply H3 to the current goal.
Assume _.
Assume H3: xLo1 Lo2, x < SNoCut (Lo1 Lo2) Empty.
Assume _.
Assume H4: ∀z, SNo z(xLo1 Lo2, x < z)(yEmpty, z < y)SNoLev (SNoCut (Lo1 Lo2) Empty) SNoLev z SNoEq_ (SNoLev (SNoCut (Lo1 Lo2) Empty)) (SNoCut (Lo1 Lo2) Empty) z.
We prove the intermediate claim L1: SNoLev (α + β) SNoLev y SNoEq_ (SNoLev (α + β)) (α + β) y.
rewrite the current goal using add_SNo_ordinal_eq α Ha β Hb (from left to right).
Apply H4 y Hy3 to the current goal.
Let w be given.
Assume Hw: w Lo1 Lo2.
We will prove w < y.
Apply SNoLt_tra w (α + β) y (H2 w Hw) Lab1 Hy3 to the current goal.
We will prove w < α + β.
rewrite the current goal using add_SNo_ordinal_eq α Ha β Hb (from left to right).
An exact proof term for the current goal is H3 w Hw.
We will prove α + β < y.
An exact proof term for the current goal is H1.
Let w be given.
Assume Hw: w Empty.
We will prove False.
An exact proof term for the current goal is EmptyE w Hw.
Apply L1 to the current goal.
Assume H5: SNoLev (α + β) SNoLev y.
Assume _.
Apply In_irref (SNoLev y) to the current goal.
Apply H5 to the current goal.
An exact proof term for the current goal is Hy1.
Theorem. (add_SNo_ordinal_SL) The following is provable:
∀α, ordinal α∀β, ordinal βordsucc α + β = ordsucc (α + β)
Proof:
Let α be given.
Assume Ha: ordinal α.
Apply ordinal_ind to the current goal.
Let β be given.
Assume Hb: ordinal β.
Assume IH: δβ, ordsucc α + δ = ordsucc (α + δ).
We prove the intermediate claim La: SNo α.
An exact proof term for the current goal is ordinal_SNo α Ha.
We prove the intermediate claim Lb: SNo β.
An exact proof term for the current goal is ordinal_SNo β Hb.
We prove the intermediate claim Lab: ordinal (α + β).
An exact proof term for the current goal is add_SNo_ordinal_ordinal α Ha β Hb.
We prove the intermediate claim LSa: ordinal (ordsucc α).
Apply ordinal_ordsucc to the current goal.
An exact proof term for the current goal is Ha.
We prove the intermediate claim LSa2: SNo (ordsucc α).
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is LSa.
We prove the intermediate claim LSab: ordinal (ordsucc α + β).
An exact proof term for the current goal is add_SNo_ordinal_ordinal (ordsucc α) LSa β Hb.
Set Lo1 to be the term {x + β|xSNoS_ (ordsucc α)}.
Set Lo2 to be the term {ordsucc α + x|xSNoS_ β}.
Apply SNoCutP_SNoCut (Lo1 Lo2) Empty (add_SNo_ordinal_SNoCutP (ordsucc α) LSa β Hb) to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume _.
rewrite the current goal using add_SNo_ordinal_eq (ordsucc α) LSa β Hb (from right to left).
Assume H1: xLo1 Lo2, x < ordsucc α + β.
Assume _.
Assume H2: ∀z, SNo z(xLo1 Lo2, x < z)(yEmpty, z < y)SNoLev (ordsucc α + β) SNoLev z SNoEq_ (SNoLev (ordsucc α + β)) (ordsucc α + β) z.
We prove the intermediate claim L1: α + β ordsucc α + β.
Apply ordinal_SNoLt_In (α + β) (ordsucc α + β) Lab LSab to the current goal.
We will prove α + β < ordsucc α + β.
Apply H1 to the current goal.
We will prove α + β Lo1 Lo2.
Apply binunionI1 to the current goal.
We will prove α + β {x + β|xSNoS_ (ordsucc α)}.
Apply ReplI (SNoS_ (ordsucc α)) (λx ⇒ x + β) α to the current goal.
We will prove α SNoS_ (ordsucc α).
Apply SNoS_I (ordsucc α) LSa α α (ordsuccI2 α) to the current goal.
We will prove SNo_ α α.
An exact proof term for the current goal is ordinal_SNo_ α Ha.
Apply ordinal_ordsucc_In_eq (ordsucc α + β) (α + β) LSab L1 to the current goal.
Assume H3: ordsucc (α + β) ordsucc α + β.
We will prove False.
Set z to be the term ordsucc (α + β).
We prove the intermediate claim Lz: ordinal z.
An exact proof term for the current goal is ordinal_ordsucc (α + β) Lab.
We prove the intermediate claim Lz1: TransSet z.
An exact proof term for the current goal is ordinal_TransSet z Lz.
We prove the intermediate claim Lz2: SNo z.
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is Lz.
We prove the intermediate claim L2: SNoLev (ordsucc α + β) SNoLev z SNoEq_ (SNoLev (ordsucc α + β)) (ordsucc α + β) z.
Apply H2 z (ordinal_SNo z Lz) to the current goal.
Let w be given.
Assume Hw: w Lo1 Lo2.
We will prove w < z.
Apply binunionE Lo1 Lo2 w Hw to the current goal.
Assume H4: w Lo1.
Apply ReplE_impred (SNoS_ (ordsucc α)) (λx ⇒ x + β) w H4 to the current goal.
Let x be given.
Assume Hx: x SNoS_ (ordsucc α).
Assume Hwx: w = x + β.
Apply SNoS_E2 (ordsucc α) LSa x Hx to the current goal.
Assume Hx1: SNoLev x ordsucc α.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
We will prove w < z.
rewrite the current goal using Hwx (from left to right).
We will prove x + β < z.
We prove the intermediate claim LLxb: ordinal (SNoLev x + β).
An exact proof term for the current goal is add_SNo_ordinal_ordinal (SNoLev x) Hx2 β Hb.
We prove the intermediate claim LLxb2: SNo (SNoLev x + β).
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is LLxb.
Apply SNoLeLt_tra (x + β) (SNoLev x + β) z (SNo_add_SNo x β Hx3 Lb) LLxb2 Lz2 to the current goal.
We will prove x + β SNoLev x + β.
Apply add_SNo_Le1 x β (SNoLev x) Hx3 Lb (ordinal_SNo (SNoLev x) Hx2) to the current goal.
We will prove x SNoLev x.
An exact proof term for the current goal is ordinal_SNoLev_max_2 (SNoLev x) Hx2 x Hx3 (ordsuccI2 (SNoLev x)).
We will prove SNoLev x + β < z.
Apply SNoLeLt_tra (SNoLev x + β) (α + β) z LLxb2 (ordinal_SNo (α + β) Lab) Lz2 to the current goal.
We will prove SNoLev x + β α + β.
Apply add_SNo_Le1 (SNoLev x) β α (ordinal_SNo (SNoLev x) Hx2) Lb La to the current goal.
We will prove SNoLev x α.
Apply ordinal_Subq_SNoLe (SNoLev x) α Hx2 Ha to the current goal.
We will prove SNoLev x α.
Apply ordsuccE α (SNoLev x) Hx1 to the current goal.
Assume H5: SNoLev x α.
Apply Ha to the current goal.
Assume Ha1 _.
An exact proof term for the current goal is Ha1 (SNoLev x) H5.
Assume H5: SNoLev x = α.
rewrite the current goal using H5 (from left to right).
Apply Subq_ref to the current goal.
We will prove α + β < z.
An exact proof term for the current goal is ordinal_In_SNoLt z Lz (α + β) (ordsuccI2 (α + β)).
Assume H4: w Lo2.
Apply ReplE_impred (SNoS_ β) (λx ⇒ ordsucc α + x) w H4 to the current goal.
Let x be given.
Assume Hx: x SNoS_ β.
Assume Hwx: w = ordsucc α + x.
Apply SNoS_E2 β Hb x Hx to the current goal.
Assume Hx1: SNoLev x β.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
We will prove w < z.
rewrite the current goal using Hwx (from left to right).
We will prove ordsucc α + x < z.
We prove the intermediate claim IHLx: ordsucc α + SNoLev x = ordsucc (α + SNoLev x).
An exact proof term for the current goal is IH (SNoLev x) Hx1.
We prove the intermediate claim LSax: SNo (ordsucc α + x).
An exact proof term for the current goal is SNo_add_SNo (ordsucc α) x LSa2 Hx3.
We prove the intermediate claim LaLx: ordinal (α + SNoLev x).
An exact proof term for the current goal is add_SNo_ordinal_ordinal α Ha (SNoLev x) Hx2.
We prove the intermediate claim LSaLx: ordinal (ordsucc α + SNoLev x).
An exact proof term for the current goal is add_SNo_ordinal_ordinal (ordsucc α) LSa (SNoLev x) Hx2.
We prove the intermediate claim LSaLx2: SNo (ordsucc α + SNoLev x).
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is LSaLx.
Apply SNoLeLt_tra (ordsucc α + x) (ordsucc α + SNoLev x) z LSax LSaLx2 Lz2 to the current goal.
We will prove ordsucc α + x ordsucc α + SNoLev x.
Apply add_SNo_Le2 (ordsucc α) x (SNoLev x) LSa2 Hx3 (ordinal_SNo (SNoLev x) Hx2) to the current goal.
We will prove x SNoLev x.
An exact proof term for the current goal is ordinal_SNoLev_max_2 (SNoLev x) Hx2 x Hx3 (ordsuccI2 (SNoLev x)).
We will prove ordsucc α + SNoLev x < z.
rewrite the current goal using IHLx (from left to right).
We will prove ordsucc (α + SNoLev x) < ordsucc (α + β).
Apply ordinal_In_SNoLt z Lz (ordsucc (α + SNoLev x)) to the current goal.
We will prove ordsucc (α + SNoLev x) ordsucc (α + β).
Apply ordinal_ordsucc_In (α + β) Lab to the current goal.
We will prove α + SNoLev x α + β.
Apply ordinal_SNoLt_In (α + SNoLev x) (α + β) LaLx Lab to the current goal.
We will prove α + SNoLev x < α + β.
Apply add_SNo_Lt2 α (SNoLev x) β La (ordinal_SNo (SNoLev x) Hx2) Lb to the current goal.
We will prove SNoLev x < β.
Apply ordinal_In_SNoLt β Hb (SNoLev x) to the current goal.
We will prove SNoLev x β.
An exact proof term for the current goal is Hx1.
Let w be given.
Assume Hw: w Empty.
We will prove False.
An exact proof term for the current goal is EmptyE w Hw.
Apply L2 to the current goal.
rewrite the current goal using ordinal_SNoLev (ordsucc α + β) LSab (from left to right).
rewrite the current goal using ordinal_SNoLev z Lz (from left to right).
Assume H4: ordsucc α + β z.
Assume _.
Apply In_irref z to the current goal.
Apply H4 to the current goal.
We will prove z ordsucc α + β.
An exact proof term for the current goal is H3.
Assume H3: ordsucc α + β = ordsucc (α + β).
An exact proof term for the current goal is H3.
Theorem. (add_SNo_ordinal_SR) The following is provable:
∀α, ordinal α∀β, ordinal βα + ordsucc β = ordsucc (α + β)
Proof:
Let α be given.
Assume Ha: ordinal α.
Let β be given.
Assume Hb: ordinal β.
We prove the intermediate claim La: SNo α.
An exact proof term for the current goal is ordinal_SNo α Ha.
We prove the intermediate claim Lb: SNo β.
An exact proof term for the current goal is ordinal_SNo β Hb.
We prove the intermediate claim La: SNo α.
An exact proof term for the current goal is ordinal_SNo α Ha.
We prove the intermediate claim LSb: ordinal (ordsucc β).
Apply ordinal_ordsucc to the current goal.
An exact proof term for the current goal is Hb.
We prove the intermediate claim LSb2: SNo (ordsucc β).
An exact proof term for the current goal is ordinal_SNo (ordsucc β) LSb.
rewrite the current goal using add_SNo_com α (ordsucc β) La LSb2 (from left to right).
We will prove ordsucc β + α = ordsucc (α + β).
rewrite the current goal using add_SNo_ordinal_SL β Hb α Ha (from left to right).
We will prove ordsucc (β + α) = ordsucc (α + β).
rewrite the current goal using add_SNo_com β α Lb La (from left to right).
Use reflexivity.
Theorem. (add_SNo_ordinal_InL) The following is provable:
∀α, ordinal α∀β, ordinal βγα, γ + β α + β
Proof:
Let α be given.
Assume Ha.
Let β be given.
Assume Hb.
Let γ be given.
Assume Hc.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered α Ha γ Hc.
We prove the intermediate claim Lab: ordinal (α + β).
Apply add_SNo_ordinal_ordinal to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is Hb.
We prove the intermediate claim Lcb: ordinal (γ + β).
Apply add_SNo_ordinal_ordinal to the current goal.
An exact proof term for the current goal is Lc.
An exact proof term for the current goal is Hb.
We will prove γ + β α + β.
Apply ordinal_SNoLt_In (γ + β) (α + β) Lcb Lab to the current goal.
We will prove γ + β < α + β.
Apply add_SNo_Lt1 to the current goal.
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is Lc.
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is Hb.
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is ordinal_In_SNoLt α Ha γ Hc.
Theorem. (add_SNo_ordinal_InR) The following is provable:
∀α, ordinal α∀β, ordinal βγβ, α + γ α + β
Proof:
Let α be given.
Assume Ha: ordinal α.
Let β be given.
Assume Hb: ordinal β.
Let γ be given.
Assume Hc: γ β.
We prove the intermediate claim La: SNo α.
An exact proof term for the current goal is ordinal_SNo α Ha.
We prove the intermediate claim Lb: SNo β.
An exact proof term for the current goal is ordinal_SNo β Hb.
We prove the intermediate claim Lc: ordinal γ.
An exact proof term for the current goal is ordinal_Hered β Hb γ Hc.
We prove the intermediate claim Lc2: SNo γ.
An exact proof term for the current goal is ordinal_SNo γ Lc.
rewrite the current goal using add_SNo_com α γ La Lc2 (from left to right).
rewrite the current goal using add_SNo_com α β La Lb (from left to right).
An exact proof term for the current goal is add_SNo_ordinal_InL β Hb α Ha γ Hc.
Theorem. (add_nat_add_SNo) The following is provable:
Proof:
Let n be given.
Assume Hn: n ω.
We prove the intermediate claim Ln1: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We prove the intermediate claim Ln2: ordinal n.
An exact proof term for the current goal is nat_p_ordinal n Ln1.
We prove the intermediate claim Ln3: SNo n.
An exact proof term for the current goal is ordinal_SNo n Ln2.
We prove the intermediate claim L1: ∀m, nat_p madd_nat n m = n + m.
Apply nat_ind to the current goal.
We will prove add_nat n 0 = n + 0.
rewrite the current goal using add_SNo_0R n Ln3 (from left to right).
We will prove add_nat n 0 = n.
An exact proof term for the current goal is add_nat_0R n.
Let m be given.
Assume Hm: nat_p m.
Assume IH: add_nat n m = n + m.
We will prove add_nat n (ordsucc m) = n + (ordsucc m).
rewrite the current goal using add_SNo_ordinal_SR n Ln2 m (nat_p_ordinal m Hm) (from left to right).
We will prove add_nat n (ordsucc m) = ordsucc (n + m).
rewrite the current goal using IH (from right to left).
We will prove add_nat n (ordsucc m) = ordsucc (add_nat n m).
An exact proof term for the current goal is add_nat_SR n m Hm.
Let m be given.
Assume Hm: m ω.
We will prove add_nat n m = n + m.
An exact proof term for the current goal is L1 m (omega_nat_p m Hm).
Theorem. (add_SNo_In_omega) The following is provable:
Proof:
Let n be given.
Assume Hn.
Let m be given.
Assume Hm.
rewrite the current goal using add_nat_add_SNo n Hn m Hm (from right to left).
Apply nat_p_omega to the current goal.
Apply add_nat_p to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hn.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hm.
Theorem. (add_SNo_1_1_2) The following is provable:
1 + 1 = 2
Proof:
rewrite the current goal using add_nat_add_SNo 1 (nat_p_omega 1 nat_1) 1 (nat_p_omega 1 nat_1) (from right to left).
An exact proof term for the current goal is add_nat_1_1_2.
Theorem. (add_SNo_SNoL_interpolate) The following is provable:
∀x y, SNo xSNo yuSNoL (x + y), (vSNoL x, u v + y) (vSNoL y, u x + v)
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim LI: ∀u, SNo uSNoLev u SNoLev (x + y)u < x + y(vSNoL x, u v + y) (vSNoL y, u x + v).
Apply SNoLev_ind to the current goal.
Let u be given.
Assume Hu1: SNo u.
Assume IH: zSNoS_ (SNoLev u), SNoLev z SNoLev (x + y)z < x + y(vSNoL x, z v + y) (vSNoL y, z x + v).
Assume Hu2: SNoLev u SNoLev (x + y).
Assume Hu3: u < x + y.
Apply dneg to the current goal.
Assume HNC: ¬ ((vSNoL x, u v + y) (vSNoL y, u x + v)).
Apply SNoLt_irref u to the current goal.
We will prove u < u.
Apply SNoLtLe_tra u (x + y) u Hu1 Lxy Hu1 Hu3 to the current goal.
We will prove x + y u.
Set Lxy1 to be the term {w + y|wSNoL x}.
Set Lxy2 to be the term {x + w|wSNoL y}.
Set Rxy1 to be the term {z + y|zSNoR x}.
Set Rxy2 to be the term {x + z|zSNoR y}.
rewrite the current goal using add_SNo_eq x Hx y Hy (from left to right).
We will prove SNoCut (Lxy1 Lxy2) (Rxy1 Rxy2) u.
rewrite the current goal using SNo_eta u Hu1 (from left to right).
We will prove SNoCut (Lxy1 Lxy2) (Rxy1 Rxy2) SNoCut (SNoL u) (SNoR u).
Apply SNoCut_Le (Lxy1 Lxy2) (Rxy1 Rxy2) (SNoL u) (SNoR u) to the current goal.
An exact proof term for the current goal is add_SNo_SNoCutP x y Hx Hy.
An exact proof term for the current goal is SNoCutP_SNoL_SNoR u Hu1.
rewrite the current goal using SNo_eta u Hu1 (from right to left).
We will prove wLxy1 Lxy2, w < u.
Let w be given.
Assume Hw: w Lxy1 Lxy2.
Apply binunionE Lxy1 Lxy2 w Hw to the current goal.
Assume Hw2: w Lxy1.
We will prove w < u.
Apply ReplE_impred (SNoL x) (λw ⇒ w + y) w Hw2 to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Assume Hwv: w = v + y.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: v < x.
rewrite the current goal using Hwv (from left to right).
We will prove v + y < u.
We prove the intermediate claim Lvy: SNo (v + y).
An exact proof term for the current goal is SNo_add_SNo v y Hv1 Hy.
Apply SNoLtLe_or (v + y) u Lvy Hu1 to the current goal.
Assume H1: v + y < u.
An exact proof term for the current goal is H1.
Assume H1: u v + y.
We will prove False.
Apply HNC to the current goal.
Apply orIL to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
We will prove v SNoL x.
An exact proof term for the current goal is Hv.
We will prove u v + y.
An exact proof term for the current goal is H1.
Assume Hw2: w Lxy2.
We will prove w < u.
Apply ReplE_impred (SNoL y) (λw ⇒ x + w) w Hw2 to the current goal.
Let v be given.
Assume Hv: v SNoL y.
Assume Hwv: w = x + v.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: v < y.
rewrite the current goal using Hwv (from left to right).
We will prove x + v < u.
We prove the intermediate claim Lxv: SNo (x + v).
An exact proof term for the current goal is SNo_add_SNo x v Hx Hv1.
Apply SNoLtLe_or (x + v) u Lxv Hu1 to the current goal.
Assume H1: x + v < u.
An exact proof term for the current goal is H1.
Assume H1: u x + v.
We will prove False.
Apply HNC to the current goal.
Apply orIR to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
We will prove v SNoL y.
An exact proof term for the current goal is Hv.
We will prove u x + v.
An exact proof term for the current goal is H1.
rewrite the current goal using add_SNo_eq x Hx y Hy (from right to left).
We will prove zSNoR u, x + y < z.
Let z be given.
Assume Hz: z SNoR u.
Apply SNoR_E u Hu1 z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev u.
Assume Hz3: u < z.
Apply SNoLt_trichotomy_or (x + y) z Lxy Hz1 to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: x + y < z.
An exact proof term for the current goal is H1.
Assume H1: x + y = z.
We will prove False.
Apply In_no2cycle (SNoLev z) (SNoLev u) Hz2 to the current goal.
We will prove SNoLev u SNoLev z.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hu2.
Assume H1: z < x + y.
We will prove False.
We prove the intermediate claim Lz1: z SNoS_ (SNoLev u).
An exact proof term for the current goal is SNoR_SNoS_ u z Hz.
We prove the intermediate claim Lz2: SNoLev z SNoLev (x + y).
Apply SNoLev_ordinal (x + y) Lxy to the current goal.
Assume Hxy1 _.
An exact proof term for the current goal is Hxy1 (SNoLev u) Hu2 (SNoLev z) Hz2.
Apply IH z Lz1 Lz2 H1 to the current goal.
Assume H2: vSNoL x, z v + y.
Apply H2 to the current goal.
Let v be given.
Assume H3.
Apply H3 to the current goal.
Assume Hv: v SNoL x.
Assume H3: z v + y.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: v < x.
Apply HNC to the current goal.
Apply orIL to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We will prove u v + y.
Apply SNoLe_tra u z (v + y) Hu1 Hz1 (SNo_add_SNo v y Hv1 Hy) to the current goal.
We will prove u z.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz3.
We will prove z v + y.
An exact proof term for the current goal is H3.
Assume H2: vSNoL y, z x + v.
Apply H2 to the current goal.
Let v be given.
Assume H3.
Apply H3 to the current goal.
Assume Hv: v SNoL y.
Assume H3: z x + v.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: v < y.
Apply HNC to the current goal.
Apply orIR to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We will prove u x + v.
Apply SNoLe_tra u z (x + v) Hu1 Hz1 (SNo_add_SNo x v Hx Hv1) to the current goal.
We will prove u z.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz3.
We will prove z x + v.
An exact proof term for the current goal is H3.
Let u be given.
Assume Hu: u SNoL (x + y).
Apply SNoL_E (x + y) Lxy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev (x + y).
Assume Hu3: u < x + y.
An exact proof term for the current goal is LI u Hu1 Hu2 Hu3.
Theorem. (add_SNo_SNoR_interpolate) The following is provable:
∀x y, SNo xSNo yuSNoR (x + y), (vSNoR x, v + y u) (vSNoR y, x + v u)
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim LI: ∀u, SNo uSNoLev u SNoLev (x + y)x + y < u(vSNoR x, v + y u) (vSNoR y, x + v u).
Apply SNoLev_ind to the current goal.
Let u be given.
Assume Hu1: SNo u.
Assume IH: zSNoS_ (SNoLev u), SNoLev z SNoLev (x + y)x + y < z(vSNoR x, v + y z) (vSNoR y, x + v z).
Assume Hu2: SNoLev u SNoLev (x + y).
Assume Hu3: x + y < u.
Apply dneg to the current goal.
Assume HNC: ¬ ((vSNoR x, v + y u) (vSNoR y, x + v u)).
Apply SNoLt_irref u to the current goal.
We will prove u < u.
Apply (λH : u x + ySNoLeLt_tra u (x + y) u Hu1 Lxy Hu1 H Hu3) to the current goal.
We will prove u x + y.
Set Lxy1 to be the term {w + y|wSNoL x}.
Set Lxy2 to be the term {x + w|wSNoL y}.
Set Rxy1 to be the term {z + y|zSNoR x}.
Set Rxy2 to be the term {x + z|zSNoR y}.
rewrite the current goal using add_SNo_eq x Hx y Hy (from left to right).
We will prove u SNoCut (Lxy1 Lxy2) (Rxy1 Rxy2).
rewrite the current goal using SNo_eta u Hu1 (from left to right).
We will prove SNoCut (SNoL u) (SNoR u) SNoCut (Lxy1 Lxy2) (Rxy1 Rxy2).
Apply SNoCut_Le (SNoL u) (SNoR u) (Lxy1 Lxy2) (Rxy1 Rxy2) to the current goal.
An exact proof term for the current goal is SNoCutP_SNoL_SNoR u Hu1.
An exact proof term for the current goal is add_SNo_SNoCutP x y Hx Hy.
rewrite the current goal using add_SNo_eq x Hx y Hy (from right to left).
We will prove zSNoL u, z < x + y.
Let z be given.
Assume Hz: z SNoL u.
Apply SNoL_E u Hu1 z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev u.
Assume Hz3: z < u.
Apply SNoLt_trichotomy_or z (x + y) Hz1 Lxy to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: z < x + y.
An exact proof term for the current goal is H1.
Assume H1: z = x + y.
We will prove False.
Apply In_no2cycle (SNoLev z) (SNoLev u) Hz2 to the current goal.
We will prove SNoLev u SNoLev z.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is Hu2.
Assume H1: x + y < z.
We will prove False.
We prove the intermediate claim Lz1: z SNoS_ (SNoLev u).
An exact proof term for the current goal is SNoL_SNoS_ u z Hz.
We prove the intermediate claim Lz2: SNoLev z SNoLev (x + y).
Apply SNoLev_ordinal (x + y) Lxy to the current goal.
Assume Hxy1 _.
An exact proof term for the current goal is Hxy1 (SNoLev u) Hu2 (SNoLev z) Hz2.
Apply IH z Lz1 Lz2 H1 to the current goal.
Assume H2: vSNoR x, v + y z.
Apply H2 to the current goal.
Let v be given.
Assume H3.
Apply H3 to the current goal.
Assume Hv: v SNoR x.
Assume H3: v + y z.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: x < v.
Apply HNC to the current goal.
Apply orIL to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We will prove v + y u.
Apply SNoLe_tra (v + y) z u (SNo_add_SNo v y Hv1 Hy) Hz1 Hu1 to the current goal.
We will prove v + y z.
An exact proof term for the current goal is H3.
We will prove z u.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz3.
Assume H2: vSNoR y, x + v z.
Apply H2 to the current goal.
Let v be given.
Assume H3.
Apply H3 to the current goal.
Assume Hv: v SNoR y.
Assume H3: x + v z.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: y < v.
Apply HNC to the current goal.
Apply orIR to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We will prove x + v u.
Apply SNoLe_tra (x + v) z u (SNo_add_SNo x v Hx Hv1) Hz1 Hu1 to the current goal.
We will prove x + v z.
An exact proof term for the current goal is H3.
We will prove z u.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz3.
rewrite the current goal using SNo_eta u Hu1 (from right to left).
We will prove wRxy1 Rxy2, u < w.
Let w be given.
Assume Hw: w Rxy1 Rxy2.
Apply binunionE Rxy1 Rxy2 w Hw to the current goal.
Assume Hw2: w Rxy1.
We will prove u < w.
Apply ReplE_impred (SNoR x) (λw ⇒ w + y) w Hw2 to the current goal.
Let v be given.
Assume Hv: v SNoR x.
Assume Hwv: w = v + y.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: x < v.
rewrite the current goal using Hwv (from left to right).
We will prove u < v + y.
We prove the intermediate claim Lvy: SNo (v + y).
An exact proof term for the current goal is SNo_add_SNo v y Hv1 Hy.
Apply SNoLtLe_or u (v + y) Hu1 Lvy to the current goal.
Assume H1: u < v + y.
An exact proof term for the current goal is H1.
Assume H1: v + y u.
We will prove False.
Apply HNC to the current goal.
Apply orIL to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
We will prove v SNoR x.
An exact proof term for the current goal is Hv.
We will prove v + y u.
An exact proof term for the current goal is H1.
Assume Hw2: w Rxy2.
We will prove u < w.
Apply ReplE_impred (SNoR y) (λw ⇒ x + w) w Hw2 to the current goal.
Let v be given.
Assume Hv: v SNoR y.
Assume Hwv: w = x + v.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: y < v.
rewrite the current goal using Hwv (from left to right).
We will prove u < x + v.
We prove the intermediate claim Lxv: SNo (x + v).
An exact proof term for the current goal is SNo_add_SNo x v Hx Hv1.
Apply SNoLtLe_or u (x + v) Hu1 Lxv to the current goal.
Assume H1: u < x + v.
An exact proof term for the current goal is H1.
Assume H1: x + v u.
We will prove False.
Apply HNC to the current goal.
Apply orIR to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
We will prove v SNoR y.
An exact proof term for the current goal is Hv.
We will prove x + v u.
An exact proof term for the current goal is H1.
Let u be given.
Assume Hu: u SNoR (x + y).
Apply SNoR_E (x + y) Lxy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev (x + y).
Assume Hu3: x + y < u.
An exact proof term for the current goal is LI u Hu1 Hu2 Hu3.
Theorem. (add_SNo_assoc) The following is provable:
∀x y z, SNo xSNo ySNo zx + (y + z) = (x + y) + z
Proof:
Set P to be the term λx y z ⇒ x + (y + z) = (x + y) + z of type setsetsetprop.
Apply SNoLev_ind3 to the current goal.
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume IH1: uSNoS_ (SNoLev x), P u y z.
Assume IH2: vSNoS_ (SNoLev y), P x v z.
Assume IH3: wSNoS_ (SNoLev z), P x y w.
Assume IH4: uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), P u v z.
Assume IH5: uSNoS_ (SNoLev x), wSNoS_ (SNoLev z), P u y w.
Assume IH6: vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), P x v w.
We will prove x + (y + z) = (x + y) + z.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim Lyz: SNo (y + z).
An exact proof term for the current goal is SNo_add_SNo y z Hy Hz.
Set Lxyz1 to be the term {w + (y + z)|wSNoL x}.
Set Lxyz2 to be the term {x + w|wSNoL (y + z)}.
Set Rxyz1 to be the term {w + (y + z)|wSNoR x}.
Set Rxyz2 to be the term {x + w|wSNoR (y + z)}.
Set Lxyz3 to be the term {w + z|wSNoL (x + y)}.
Set Lxyz4 to be the term {(x + y) + w|wSNoL z}.
Set Rxyz3 to be the term {w + z|wSNoR (x + y)}.
Set Rxyz4 to be the term {(x + y) + w|wSNoR z}.
rewrite the current goal using add_SNo_eq x Hx (y + z) Lyz (from left to right).
rewrite the current goal using add_SNo_eq (x + y) Lxy z Hz (from left to right).
We will prove (SNoCut (Lxyz1 Lxyz2) (Rxyz1 Rxyz2)) = (SNoCut (Lxyz3 Lxyz4) (Rxyz3 Rxyz4)).
We prove the intermediate claim Lxyz12: SNoCutP (Lxyz1 Lxyz2) (Rxyz1 Rxyz2).
An exact proof term for the current goal is add_SNo_SNoCutP x (y + z) Hx Lyz.
We prove the intermediate claim Lxyz34: SNoCutP (Lxyz3 Lxyz4) (Rxyz3 Rxyz4).
An exact proof term for the current goal is add_SNo_SNoCutP (x + y) z Lxy Hz.
Apply SNoCut_ext to the current goal.
An exact proof term for the current goal is Lxyz12.
An exact proof term for the current goal is Lxyz34.
We will prove wLxyz1 Lxyz2, w < SNoCut (Lxyz3 Lxyz4) (Rxyz3 Rxyz4).
rewrite the current goal using add_SNo_eq (x + y) Lxy z Hz (from right to left).
We will prove wLxyz1 Lxyz2, w < (x + y) + z.
Let w be given.
Assume Hw: w Lxyz1 Lxyz2.
Apply binunionE Lxyz1 Lxyz2 w Hw to the current goal.
Assume Hw: w Lxyz1.
Apply ReplE_impred (SNoL x) (λw ⇒ w + (y + z)) w Hw to the current goal.
Let u be given.
Assume Hu: u SNoL x.
Assume Hwu: w = u + (y + z).
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x.
Assume Hu3: u < x.
We will prove w < (x + y) + z.
rewrite the current goal using Hwu (from left to right).
We will prove u + (y + z) < (x + y) + z.
We prove the intermediate claim IH1u: u + (y + z) = (u + y) + z.
An exact proof term for the current goal is IH1 u (SNoL_SNoS_ x u Hu).
rewrite the current goal using IH1u (from left to right).
We will prove (u + y) + z < (x + y) + z.
Apply add_SNo_Lt1 (u + y) z (x + y) (SNo_add_SNo u y Hu1 Hy) Hz Lxy to the current goal.
We will prove u + y < x + y.
Apply add_SNo_Lt1 u y x Hu1 Hy Hx to the current goal.
We will prove u < x.
An exact proof term for the current goal is Hu3.
Assume Hw: w Lxyz2.
Apply ReplE_impred (SNoL (y + z)) (λw ⇒ x + w) w Hw to the current goal.
Let u be given.
Assume Hu: u SNoL (y + z).
Assume Hwu: w = x + u.
Apply SNoL_E (y + z) Lyz u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev (y + z).
Assume Hu3: u < y + z.
rewrite the current goal using Hwu (from left to right).
We will prove x + u < (x + y) + z.
Apply add_SNo_SNoL_interpolate y z Hy Hz u Hu to the current goal.
Assume H1: vSNoL y, u v + z.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v SNoL y.
Assume H2: u v + z.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: v < y.
We prove the intermediate claim IH2v: x + (v + z) = (x + v) + z.
An exact proof term for the current goal is IH2 v (SNoL_SNoS_ y v Hv).
We will prove x + u < (x + y) + z.
Apply SNoLeLt_tra (x + u) (x + (v + z)) ((x + y) + z) (SNo_add_SNo x u Hx Hu1) (SNo_add_SNo x (v + z) Hx (SNo_add_SNo v z Hv1 Hz)) (SNo_add_SNo (x + y) z Lxy Hz) to the current goal.
We will prove x + u x + (v + z).
Apply add_SNo_Le2 x u (v + z) Hx Hu1 (SNo_add_SNo v z Hv1 Hz) to the current goal.
We will prove u v + z.
An exact proof term for the current goal is H2.
We will prove x + (v + z) < (x + y) + z.
rewrite the current goal using IH2v (from left to right).
We will prove (x + v) + z < (x + y) + z.
Apply add_SNo_Lt1 (x + v) z (x + y) (SNo_add_SNo x v Hx Hv1) Hz Lxy to the current goal.
We will prove x + v < x + y.
Apply add_SNo_Lt2 x v y Hx Hv1 Hy to the current goal.
We will prove v < y.
An exact proof term for the current goal is Hv3.
Assume H1: vSNoL z, u y + v.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v SNoL z.
Assume H2: u y + v.
Apply SNoL_E z Hz v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev z.
Assume Hv3: v < z.
We prove the intermediate claim IH3v: x + (y + v) = (x + y) + v.
An exact proof term for the current goal is IH3 v (SNoL_SNoS_ z v Hv).
We will prove x + u < (x + y) + z.
Apply SNoLeLt_tra (x + u) (x + (y + v)) ((x + y) + z) (SNo_add_SNo x u Hx Hu1) (SNo_add_SNo x (y + v) Hx (SNo_add_SNo y v Hy Hv1)) (SNo_add_SNo (x + y) z Lxy Hz) to the current goal.
We will prove x + u x + (y + v).
Apply add_SNo_Le2 x u (y + v) Hx Hu1 (SNo_add_SNo y v Hy Hv1) to the current goal.
We will prove u y + v.
An exact proof term for the current goal is H2.
We will prove x + (y + v) < (x + y) + z.
rewrite the current goal using IH3v (from left to right).
We will prove (x + y) + v < (x + y) + z.
Apply add_SNo_Lt2 (x + y) v z Lxy Hv1 Hz to the current goal.
We will prove v < z.
An exact proof term for the current goal is Hv3.
We will prove vRxyz1 Rxyz2, SNoCut (Lxyz3 Lxyz4) (Rxyz3 Rxyz4) < v.
rewrite the current goal using add_SNo_eq (x + y) Lxy z Hz (from right to left).
We will prove vRxyz1 Rxyz2, (x + y) + z < v.
Let v be given.
Assume Hv: v Rxyz1 Rxyz2.
Apply binunionE Rxyz1 Rxyz2 v Hv to the current goal.
Assume Hv: v Rxyz1.
Apply ReplE_impred (SNoR x) (λw ⇒ w + (y + z)) v Hv to the current goal.
Let u be given.
Assume Hu: u SNoR x.
Assume Hvu: v = u + (y + z).
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x.
Assume Hu3: x < u.
We will prove (x + y) + z < v.
rewrite the current goal using Hvu (from left to right).
We will prove (x + y) + z < u + (y + z).
We prove the intermediate claim IH1u: u + (y + z) = (u + y) + z.
An exact proof term for the current goal is IH1 u (SNoR_SNoS_ x u Hu).
rewrite the current goal using IH1u (from left to right).
We will prove (x + y) + z < (u + y) + z.
Apply add_SNo_Lt1 (x + y) z (u + y) Lxy Hz (SNo_add_SNo u y Hu1 Hy) to the current goal.
We will prove x + y < u + y.
Apply add_SNo_Lt1 x y u Hx Hy Hu1 to the current goal.
We will prove x < u.
An exact proof term for the current goal is Hu3.
Assume Hv: v Rxyz2.
Apply ReplE_impred (SNoR (y + z)) (λw ⇒ x + w) v Hv to the current goal.
Let u be given.
Assume Hu: u SNoR (y + z).
Assume Hvu: v = x + u.
Apply SNoR_E (y + z) Lyz u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev (y + z).
Assume Hu3: y + z < u.
rewrite the current goal using Hvu (from left to right).
We will prove (x + y) + z < x + u.
Apply add_SNo_SNoR_interpolate y z Hy Hz u Hu to the current goal.
Assume H1: vSNoR y, v + z u.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v SNoR y.
Assume H2: v + z u.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: y < v.
We prove the intermediate claim IH2v: x + (v + z) = (x + v) + z.
An exact proof term for the current goal is IH2 v (SNoR_SNoS_ y v Hv).
We will prove (x + y) + z < x + u.
Apply SNoLtLe_tra ((x + y) + z) (x + (v + z)) (x + u) (SNo_add_SNo (x + y) z Lxy Hz) (SNo_add_SNo x (v + z) Hx (SNo_add_SNo v z Hv1 Hz)) (SNo_add_SNo x u Hx Hu1) to the current goal.
We will prove (x + y) + z < x + (v + z).
rewrite the current goal using IH2v (from left to right).
We will prove (x + y) + z < (x + v) + z.
Apply add_SNo_Lt1 (x + y) z (x + v) Lxy Hz (SNo_add_SNo x v Hx Hv1) to the current goal.
We will prove x + y < x + v.
Apply add_SNo_Lt2 x y v Hx Hy Hv1 to the current goal.
We will prove y < v.
An exact proof term for the current goal is Hv3.
We will prove x + (v + z) x + u.
Apply add_SNo_Le2 x (v + z) u Hx (SNo_add_SNo v z Hv1 Hz) Hu1 to the current goal.
We will prove v + z u.
An exact proof term for the current goal is H2.
Assume H1: vSNoR z, y + v u.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v SNoR z.
Assume H2: y + v u.
Apply SNoR_E z Hz v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev z.
Assume Hv3: z < v.
We prove the intermediate claim IH3v: x + (y + v) = (x + y) + v.
An exact proof term for the current goal is IH3 v (SNoR_SNoS_ z v Hv).
We will prove (x + y) + z < x + u.
Apply SNoLtLe_tra ((x + y) + z) (x + (y + v)) (x + u) (SNo_add_SNo (x + y) z Lxy Hz) (SNo_add_SNo x (y + v) Hx (SNo_add_SNo y v Hy Hv1)) (SNo_add_SNo x u Hx Hu1) to the current goal.
We will prove (x + y) + z < x + (y + v).
rewrite the current goal using IH3v (from left to right).
We will prove (x + y) + z < (x + y) + v.
Apply add_SNo_Lt2 (x + y) z v Lxy Hz Hv1 to the current goal.
We will prove z < v.
An exact proof term for the current goal is Hv3.
We will prove x + (y + v) x + u.
Apply add_SNo_Le2 x (y + v) u Hx (SNo_add_SNo y v Hy Hv1) Hu1 to the current goal.
We will prove y + v u.
An exact proof term for the current goal is H2.
We will prove wLxyz3 Lxyz4, w < SNoCut (Lxyz1 Lxyz2) (Rxyz1 Rxyz2).
rewrite the current goal using add_SNo_eq x Hx (y + z) Lyz (from right to left).
We will prove wLxyz3 Lxyz4, w < x + (y + z).
Let w be given.
Assume Hw: w Lxyz3 Lxyz4.
Apply binunionE Lxyz3 Lxyz4 w Hw to the current goal.
Assume Hw: w Lxyz3.
Apply ReplE_impred (SNoL (x + y)) (λw ⇒ w + z) w Hw to the current goal.
Let u be given.
Assume Hu: u SNoL (x + y).
Assume Hwu: w = u + z.
Apply SNoL_E (x + y) Lxy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev (x + y).
Assume Hu3: u < x + y.
rewrite the current goal using Hwu (from left to right).
We will prove u + z < x + (y + z).
Apply add_SNo_SNoL_interpolate x y Hx Hy u Hu to the current goal.
Assume H1: vSNoL x, u v + y.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v SNoL x.
Assume H2: u v + y.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: v < x.
We prove the intermediate claim IH1v: v + (y + z) = (v + y) + z.
An exact proof term for the current goal is IH1 v (SNoL_SNoS_ x v Hv).
We will prove u + z < x + (y + z).
Apply SNoLeLt_tra (u + z) ((v + y) + z) (x + (y + z)) (SNo_add_SNo u z Hu1 Hz) (SNo_add_SNo (v + y) z (SNo_add_SNo v y Hv1 Hy) Hz) (SNo_add_SNo x (y + z) Hx Lyz) to the current goal.
We will prove u + z (v + y) + z.
Apply add_SNo_Le1 u z (v + y) Hu1 Hz (SNo_add_SNo v y Hv1 Hy) to the current goal.
We will prove u v + y.
An exact proof term for the current goal is H2.
We will prove (v + y) + z < x + (y + z).
rewrite the current goal using IH1v (from right to left).
We will prove v + (y + z) < x + (y + z).
Apply add_SNo_Lt1 v (y + z) x Hv1 Lyz Hx to the current goal.
We will prove v < x.
An exact proof term for the current goal is Hv3.
Assume H1: vSNoL y, u x + v.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v SNoL y.
Assume H2: u x + v.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: v < y.
We prove the intermediate claim IH2v: x + (v + z) = (x + v) + z.
An exact proof term for the current goal is IH2 v (SNoL_SNoS_ y v Hv).
We will prove u + z < x + (y + z).
Apply SNoLeLt_tra (u + z) ((x + v) + z) (x + (y + z)) (SNo_add_SNo u z Hu1 Hz) (SNo_add_SNo (x + v) z (SNo_add_SNo x v Hx Hv1) Hz) (SNo_add_SNo x (y + z) Hx Lyz) to the current goal.
We will prove u + z (x + v) + z.
Apply add_SNo_Le1 u z (x + v) Hu1 Hz (SNo_add_SNo x v Hx Hv1) to the current goal.
We will prove u x + v.
An exact proof term for the current goal is H2.
We will prove (x + v) + z < x + (y + z).
rewrite the current goal using IH2v (from right to left).
We will prove x + (v + z) < x + (y + z).
Apply add_SNo_Lt2 x (v + z) (y + z) Hx (SNo_add_SNo v z Hv1 Hz) Lyz to the current goal.
We will prove v + z < y + z.
Apply add_SNo_Lt1 v z y Hv1 Hz Hy to the current goal.
We will prove v < y.
An exact proof term for the current goal is Hv3.
Assume Hw: w Lxyz4.
Apply ReplE_impred (SNoL z) (λw ⇒ (x + y) + w) w Hw to the current goal.
Let u be given.
Assume Hu: u SNoL z.
Assume Hwu: w = (x + y) + u.
Apply SNoL_E z Hz u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev z.
Assume Hu3: u < z.
We will prove w < x + (y + z).
rewrite the current goal using Hwu (from left to right).
We will prove (x + y) + u < x + (y + z).
We prove the intermediate claim IH3u: x + (y + u) = (x + y) + u.
An exact proof term for the current goal is IH3 u (SNoL_SNoS_ z u Hu).
rewrite the current goal using IH3u (from right to left).
We will prove x + (y + u) < x + (y + z).
Apply add_SNo_Lt2 x (y + u) (y + z) Hx (SNo_add_SNo y u Hy Hu1) Lyz to the current goal.
We will prove y + u < y + z.
Apply add_SNo_Lt2 y u z Hy Hu1 Hz to the current goal.
We will prove u < z.
An exact proof term for the current goal is Hu3.
We will prove vRxyz3 Rxyz4, SNoCut (Lxyz1 Lxyz2) (Rxyz1 Rxyz2) < v.
rewrite the current goal using add_SNo_eq x Hx (y + z) Lyz (from right to left).
We will prove vRxyz3 Rxyz4, x + (y + z) < v.
Let v be given.
Assume Hv: v Rxyz3 Rxyz4.
Apply binunionE Rxyz3 Rxyz4 v Hv to the current goal.
Assume Hv: v Rxyz3.
Apply ReplE_impred (SNoR (x + y)) (λw ⇒ w + z) v Hv to the current goal.
Let u be given.
Assume Hu: u SNoR (x + y).
Assume Hvu: v = u + z.
Apply SNoR_E (x + y) Lxy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev (x + y).
Assume Hu3: x + y < u.
rewrite the current goal using Hvu (from left to right).
We will prove x + (y + z) < u + z.
Apply add_SNo_SNoR_interpolate x y Hx Hy u Hu to the current goal.
Assume H1: vSNoR x, v + y u.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v SNoR x.
Assume H2: v + y u.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: x < v.
We prove the intermediate claim IH1v: v + (y + z) = (v + y) + z.
An exact proof term for the current goal is IH1 v (SNoR_SNoS_ x v Hv).
We will prove x + (y + z) < u + z.
Apply SNoLtLe_tra (x + (y + z)) ((v + y) + z) (u + z) (SNo_add_SNo x (y + z) Hx Lyz) (SNo_add_SNo (v + y) z (SNo_add_SNo v y Hv1 Hy) Hz) (SNo_add_SNo u z Hu1 Hz) to the current goal.
We will prove x + (y + z) < (v + y) + z.
rewrite the current goal using IH1v (from right to left).
We will prove x + (y + z) < v + (y + z).
Apply add_SNo_Lt1 x (y + z) v Hx Lyz Hv1 to the current goal.
We will prove x < v.
An exact proof term for the current goal is Hv3.
We will prove (v + y) + z u + z.
Apply add_SNo_Le1 (v + y) z u (SNo_add_SNo v y Hv1 Hy) Hz Hu1 to the current goal.
We will prove v + y u.
An exact proof term for the current goal is H2.
Assume H1: vSNoR y, x + v u.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v SNoR y.
Assume H2: x + v u.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: y < v.
We prove the intermediate claim IH2v: x + (v + z) = (x + v) + z.
An exact proof term for the current goal is IH2 v (SNoR_SNoS_ y v Hv).
We will prove x + (y + z) < u + z.
Apply SNoLtLe_tra (x + (y + z)) ((x + v) + z) (u + z) (SNo_add_SNo x (y + z) Hx Lyz) (SNo_add_SNo (x + v) z (SNo_add_SNo x v Hx Hv1) Hz) (SNo_add_SNo u z Hu1 Hz) to the current goal.
We will prove x + (y + z) < (x + v) + z.
rewrite the current goal using IH2v (from right to left).
We will prove x + (y + z) < x + (v + z).
Apply add_SNo_Lt2 x (y + z) (v + z) Hx Lyz (SNo_add_SNo v z Hv1 Hz) to the current goal.
We will prove y + z < v + z.
Apply add_SNo_Lt1 y z v Hy Hz Hv1 to the current goal.
We will prove y < v.
An exact proof term for the current goal is Hv3.
We will prove (x + v) + z u + z.
Apply add_SNo_Le1 (x + v) z u (SNo_add_SNo x v Hx Hv1) Hz Hu1 to the current goal.
We will prove x + v u.
An exact proof term for the current goal is H2.
Assume Hv: v Rxyz4.
Apply ReplE_impred (SNoR z) (λw ⇒ (x + y) + w) v Hv to the current goal.
Let u be given.
Assume Hu: u SNoR z.
Assume Hvu: v = (x + y) + u.
Apply SNoR_E z Hz u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev z.
Assume Hu3: z < u.
We will prove x + (y + z) < v.
rewrite the current goal using Hvu (from left to right).
We will prove x + (y + z) < (x + y) + u.
We prove the intermediate claim IH3u: x + (y + u) = (x + y) + u.
An exact proof term for the current goal is IH3 u (SNoR_SNoS_ z u Hu).
rewrite the current goal using IH3u (from right to left).
We will prove x + (y + z) < x + (y + u).
Apply add_SNo_Lt2 x (y + z) (y + u) Hx Lyz (SNo_add_SNo y u Hy Hu1) to the current goal.
We will prove y + z < y + u.
Apply add_SNo_Lt2 y z u Hy Hz Hu1 to the current goal.
We will prove z < u.
An exact proof term for the current goal is Hu3.
Theorem. (add_SNo_minus_R2) The following is provable:
∀x y, SNo xSNo y(x + y) + - y = x
Proof:
Let x and y be given.
Assume Hx Hy.
Use transitivity with x + (y + - y), and x + 0.
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc x y (- y) Hx Hy (SNo_minus_SNo y Hy).
Use f_equal.
An exact proof term for the current goal is add_SNo_minus_SNo_rinv y Hy.
An exact proof term for the current goal is add_SNo_0R x Hx.
Theorem. (add_SNo_minus_R2') The following is provable:
∀x y, SNo xSNo y(x + - y) + y = x
Proof:
Let x and y be given.
Assume Hx Hy.
rewrite the current goal using minus_SNo_invol y Hy (from right to left) at position 2.
An exact proof term for the current goal is add_SNo_minus_R2 x (- y) Hx (SNo_minus_SNo y Hy).
Theorem. (add_SNo_minus_L2) The following is provable:
∀x y, SNo xSNo y- x + (x + y) = y
Proof:
Let x and y be given.
Assume Hx Hy.
rewrite the current goal using add_SNo_com (- x) (x + y) (SNo_minus_SNo x Hx) (SNo_add_SNo x y Hx Hy) (from left to right).
We will prove (x + y) + - x = y.
rewrite the current goal using add_SNo_com x y Hx Hy (from left to right).
We will prove (y + x) + - x = y.
An exact proof term for the current goal is add_SNo_minus_R2 y x Hy Hx.
Theorem. (add_SNo_minus_L2') The following is provable:
∀x y, SNo xSNo yx + (- x + y) = y
Proof:
Let x and y be given.
Assume Hx Hy.
rewrite the current goal using minus_SNo_invol x Hx (from right to left) at position 1.
An exact proof term for the current goal is add_SNo_minus_L2 (- x) y (SNo_minus_SNo x Hx) Hy.
Theorem. (add_SNo_cancel_L) The following is provable:
∀x y z, SNo xSNo ySNo zx + y = x + zy = z
Proof:
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hxyz: x + y = x + z.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Hx.
rewrite the current goal using add_SNo_minus_L2 x y Hx Hy (from right to left).
rewrite the current goal using Hxyz (from left to right).
An exact proof term for the current goal is add_SNo_minus_L2 x z Hx Hz.
Theorem. (add_SNo_cancel_R) The following is provable:
∀x y z, SNo xSNo ySNo zx + y = z + yx = z
Proof:
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hxyz: x + y = z + y.
We prove the intermediate claim L1: y + x = y + z.
rewrite the current goal using add_SNo_com y x Hy Hx (from left to right).
rewrite the current goal using add_SNo_com y z Hy Hz (from left to right).
An exact proof term for the current goal is Hxyz.
An exact proof term for the current goal is add_SNo_cancel_L y x z Hy Hx Hz L1.
Theorem. (minus_SNo_0) The following is provable:
- 0 = 0
Proof:
Apply add_SNo_cancel_L 0 (- 0) 0 SNo_0 (SNo_minus_SNo 0 SNo_0) SNo_0 to the current goal.
We will prove 0 + - 0 = 0 + 0.
Use transitivity with and 0.
An exact proof term for the current goal is add_SNo_minus_SNo_rinv 0 SNo_0.
Use symmetry.
An exact proof term for the current goal is add_SNo_0L 0 SNo_0.
Theorem. (minus_add_SNo_distr) The following is provable:
∀x y, SNo xSNo y- (x + y) = (- x) + (- y)
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Hx.
We prove the intermediate claim Lmy: SNo (- y).
An exact proof term for the current goal is SNo_minus_SNo y Hy.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim L1: (x + y) + - (x + y) = (x + y) + ((- x) + (- y)).
rewrite the current goal using add_SNo_minus_SNo_rinv (x + y) Lxy (from left to right).
We will prove 0 = (x + y) + ((- x) + (- y)).
rewrite the current goal using add_SNo_assoc (x + y) (- x) (- y) Lxy Lmx Lmy (from left to right).
We will prove 0 = ((x + y) + (- x)) + (- y).
rewrite the current goal using add_SNo_com x y Hx Hy (from left to right).
We will prove 0 = ((y + x) + - x) + - y.
rewrite the current goal using add_SNo_assoc y x (- x) Hy Hx Lmx (from right to left).
We will prove 0 = (y + (x + - x)) + - y.
rewrite the current goal using add_SNo_minus_SNo_rinv x Hx (from left to right).
We will prove 0 = (y + 0) + - y.
rewrite the current goal using add_SNo_0R y Hy (from left to right).
We will prove 0 = y + - y.
rewrite the current goal using add_SNo_minus_SNo_rinv y Hy (from left to right).
We will prove 0 = 0.
Use reflexivity.
An exact proof term for the current goal is add_SNo_cancel_L (x + y) (- (x + y)) ((- x) + (- y)) Lxy (SNo_minus_SNo (x + y) Lxy) (SNo_add_SNo (- x) (- y) Lmx Lmy) L1.
Theorem. (minus_add_SNo_distr_3) The following is provable:
∀x y z, SNo xSNo ySNo z- (x + y + z) = - x + - y + - z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
Use transitivity with and - x + - (y + z).
An exact proof term for the current goal is minus_add_SNo_distr x (y + z) Hx (SNo_add_SNo y z Hy Hz).
Use f_equal.
We will prove - (y + z) = - y + - z.
An exact proof term for the current goal is minus_add_SNo_distr y z Hy Hz.
Theorem. (add_SNo_Lev_bd) The following is provable:
∀x y, SNo xSNo ySNoLev (x + y) SNoLev x + SNoLev y
Proof:
Set P to be the term λx y ⇒ SNoLev (x + y) SNoLev x + SNoLev y of type setsetprop.
Apply SNoLev_ind2 to the current goal.
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim LLxLy: ordinal (SNoLev x + SNoLev y).
Apply add_SNo_ordinal_ordinal to the current goal.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hx.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hy.
Assume IH1: wSNoS_ (SNoLev x), P w y.
Assume IH2: zSNoS_ (SNoLev y), P x z.
Assume IH3: wSNoS_ (SNoLev x), zSNoS_ (SNoLev y), P w z.
We will prove SNoLev (x + y) SNoLev x + SNoLev y.
Set Lxy1 to be the term {w + y|wSNoL x}.
Set Lxy2 to be the term {x + w|wSNoL y}.
Set Rxy1 to be the term {z + y|zSNoR x}.
Set Rxy2 to be the term {x + z|zSNoR y}.
rewrite the current goal using add_SNo_eq x Hx y Hy (from left to right).
We will prove SNoLev (SNoCut (Lxy1 Lxy2) (Rxy1 Rxy2)) SNoLev x + SNoLev y.
We prove the intermediate claim L1: SNoCutP (Lxy1 Lxy2) (Rxy1 Rxy2).
An exact proof term for the current goal is add_SNo_SNoCutP x y Hx Hy.
Apply SNoCutP_SNoCut_impred (Lxy1 Lxy2) (Rxy1 Rxy2) L1 to the current goal.
Assume H1: SNo (SNoCut (Lxy1 Lxy2) (Rxy1 Rxy2)).
Assume H2: SNoLev (SNoCut (Lxy1 Lxy2) (Rxy1 Rxy2)) ordsucc ((x(Lxy1 Lxy2)ordsucc (SNoLev x)) (y(Rxy1 Rxy2)ordsucc (SNoLev y))).
Assume _ _ _.
We prove the intermediate claim Lxy1E: uLxy1, ∀p : setprop, (wSNoS_ (SNoLev x), u = w + ySNo wSNoLev w SNoLev xw < xp (w + y))p u.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp.
Apply ReplE_impred (SNoL x) (λw ⇒ w + y) u Hu to the current goal.
Let w be given.
Assume Hw: w SNoL x.
Assume Huw: u = w + y.
rewrite the current goal using Huw (from left to right).
Apply SNoL_E x Hx w Hw to the current goal.
We prove the intermediate claim Lw: w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoL_SNoS_ x w Hw.
An exact proof term for the current goal is Hp w Lw Huw.
We prove the intermediate claim Lxy2E: uLxy2, ∀p : setprop, (wSNoS_ (SNoLev y), u = x + wSNo wSNoLev w SNoLev yw < yp (x + w))p u.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp.
Apply ReplE_impred (SNoL y) (λw ⇒ x + w) u Hu to the current goal.
Let w be given.
Assume Hw: w SNoL y.
Assume Huw: u = x + w.
rewrite the current goal using Huw (from left to right).
Apply SNoL_E y Hy w Hw to the current goal.
We prove the intermediate claim Lw: w SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoL_SNoS_ y w Hw.
An exact proof term for the current goal is Hp w Lw Huw.
We prove the intermediate claim Rxy1E: uRxy1, ∀p : setprop, (wSNoS_ (SNoLev x), u = w + ySNo wSNoLev w SNoLev xx < wp (w + y))p u.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp.
Apply ReplE_impred (SNoR x) (λw ⇒ w + y) u Hu to the current goal.
Let w be given.
Assume Hw: w SNoR x.
Assume Huw: u = w + y.
rewrite the current goal using Huw (from left to right).
Apply SNoR_E x Hx w Hw to the current goal.
We prove the intermediate claim Lw: w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoR_SNoS_ x w Hw.
An exact proof term for the current goal is Hp w Lw Huw.
We prove the intermediate claim Rxy2E: uRxy2, ∀p : setprop, (wSNoS_ (SNoLev y), u = x + wSNo wSNoLev w SNoLev yy < wp (x + w))p u.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp.
Apply ReplE_impred (SNoR y) (λw ⇒ x + w) u Hu to the current goal.
Let w be given.
Assume Hw: w SNoR y.
Assume Huw: u = x + w.
rewrite the current goal using Huw (from left to right).
Apply SNoR_E y Hy w Hw to the current goal.
We prove the intermediate claim Lw: w SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoR_SNoS_ y w Hw.
An exact proof term for the current goal is Hp w Lw Huw.
We prove the intermediate claim Lxy1E2: uLxy1, SNo u.
Let u be given.
Assume Hu.
Apply Lxy1E u Hu to the current goal.
Let w be given.
Assume Hw1 Hw2 Hw3 Hw4 Hw5.
We will prove SNo (w + y).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hw3.
An exact proof term for the current goal is Hy.
We prove the intermediate claim Lxy2E2: uLxy2, SNo u.
Let u be given.
Assume Hu.
Apply Lxy2E u Hu to the current goal.
Let w be given.
Assume Hw1 Hw2 Hw3 Hw4 Hw5.
We will prove SNo (x + w).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hw3.
We prove the intermediate claim Rxy1E2: uRxy1, SNo u.
Let u be given.
Assume Hu.
Apply Rxy1E u Hu to the current goal.
Let w be given.
Assume Hw1 Hw2 Hw3 Hw4 Hw5.
We will prove SNo (w + y).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hw3.
An exact proof term for the current goal is Hy.
We prove the intermediate claim Rxy2E2: uRxy2, SNo u.
Let u be given.
Assume Hu.
Apply Rxy2E u Hu to the current goal.
Let w be given.
Assume Hw1 Hw2 Hw3 Hw4 Hw5.
We will prove SNo (x + w).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hw3.
We prove the intermediate claim L2: ordinal ((u(Lxy1 Lxy2)ordsucc (SNoLev u)) (u(Rxy1 Rxy2)ordsucc (SNoLev u))).
Apply ordinal_binunion to the current goal.
Apply ordinal_famunion (Lxy1 Lxy2) (λu ⇒ ordsucc (SNoLev u)) to the current goal.
Let u be given.
Assume Hu: u Lxy1 Lxy2.
We will prove ordinal (ordsucc (SNoLev u)).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
We will prove SNo u.
Apply binunionE Lxy1 Lxy2 u Hu to the current goal.
Assume Hu.
An exact proof term for the current goal is Lxy1E2 u Hu.
Assume Hu.
An exact proof term for the current goal is Lxy2E2 u Hu.
Apply ordinal_famunion (Rxy1 Rxy2) (λu ⇒ ordsucc (SNoLev u)) to the current goal.
Let u be given.
Assume Hu: u Rxy1 Rxy2.
We will prove ordinal (ordsucc (SNoLev u)).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
We will prove SNo u.
Apply binunionE Rxy1 Rxy2 u Hu to the current goal.
Assume Hu.
An exact proof term for the current goal is Rxy1E2 u Hu.
Assume Hu.
An exact proof term for the current goal is Rxy2E2 u Hu.
We prove the intermediate claim L3: SNoLev (SNoCut (Lxy1 Lxy2) (Rxy1 Rxy2)) (u(Lxy1 Lxy2)ordsucc (SNoLev u)) (u(Rxy1 Rxy2)ordsucc (SNoLev u)).
Apply TransSet_In_ordsucc_Subq to the current goal.
We will prove TransSet ((u(Lxy1 Lxy2)ordsucc (SNoLev u)) (u(Rxy1 Rxy2)ordsucc (SNoLev u))).
Apply L2 to the current goal.
Assume H _.
An exact proof term for the current goal is H.
An exact proof term for the current goal is H2.
We prove the intermediate claim L4: ((u(Lxy1 Lxy2)ordsucc (SNoLev u)) (u(Rxy1 Rxy2)ordsucc (SNoLev u))) SNoLev x + SNoLev y.
Apply binunion_Subq_min to the current goal.
We will prove (u(Lxy1 Lxy2)ordsucc (SNoLev u)) SNoLev x + SNoLev y.
Let v be given.
Assume Hv: v (u(Lxy1 Lxy2)ordsucc (SNoLev u)).
Apply famunionE_impred (Lxy1 Lxy2) (λu ⇒ ordsucc (SNoLev u)) v Hv to the current goal.
Let u be given.
Assume Hu: u Lxy1 Lxy2.
Apply binunionE Lxy1 Lxy2 u Hu to the current goal.
Assume Hu: u Lxy1.
Apply Lxy1E u Hu to the current goal.
Let w be given.
Assume Hw1: w SNoS_ (SNoLev x).
Assume Hw2: u = w + y.
Assume Hw3: SNo w.
Assume Hw4: SNoLev w SNoLev x.
Assume Hw5: w < x.
Assume Hw6: v ordsucc (SNoLev (w + y)).
We will prove v SNoLev x + SNoLev y.
We prove the intermediate claim Lv: ordinal v.
Apply ordinal_Hered (ordsucc (SNoLev (w + y))) to the current goal.
We will prove ordinal (ordsucc (SNoLev (w + y))).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hw3.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hw6.
Apply ordinal_In_Or_Subq v (SNoLev x + SNoLev y) Lv LLxLy to the current goal.
Assume H1: v SNoLev x + SNoLev y.
An exact proof term for the current goal is H1.
Assume H1: SNoLev x + SNoLev y v.
We will prove False.
We prove the intermediate claim LIHw: SNoLev (w + y) SNoLev w + SNoLev y.
Apply IH1 to the current goal.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is Hw1.
We prove the intermediate claim L4a: SNoLev w + SNoLev y SNoLev x + SNoLev y.
Apply add_SNo_ordinal_InL to the current goal.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hx.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hw4.
We prove the intermediate claim L4b: SNoLev w + SNoLev y SNoLev x + SNoLev y.
Apply LLxLy to the current goal.
Assume H _.
An exact proof term for the current goal is H (SNoLev w + SNoLev y) L4a.
We prove the intermediate claim L4c: v SNoLev (w + y).
Apply ordinal_In_Or_Subq (SNoLev (w + y)) v (SNoLev_ordinal (w + y) (SNo_add_SNo w y Hw3 Hy)) Lv to the current goal.
Assume H2: SNoLev (w + y) v.
We will prove False.
Apply ordsuccE (SNoLev (w + y)) v Hw6 to the current goal.
Assume H3: v SNoLev (w + y).
An exact proof term for the current goal is In_no2cycle (SNoLev (w + y)) v H2 H3.
Assume H3: v = SNoLev (w + y).
Apply In_irref v to the current goal.
rewrite the current goal using H3 (from left to right) at position 1.
An exact proof term for the current goal is H2.
Assume H2: v SNoLev (w + y).
An exact proof term for the current goal is H2.
Apply In_irref (SNoLev w + SNoLev y) to the current goal.
We will prove (SNoLev w + SNoLev y) (SNoLev w + SNoLev y).
Apply LIHw to the current goal.
We will prove (SNoLev w + SNoLev y) SNoLev (w + y).
Apply L4c to the current goal.
We will prove (SNoLev w + SNoLev y) v.
Apply H1 to the current goal.
We will prove (SNoLev w + SNoLev y) SNoLev x + SNoLev y.
An exact proof term for the current goal is L4a.
Assume Hu: u Lxy2.
Apply Lxy2E u Hu to the current goal.
Let w be given.
Assume Hw1: w SNoS_ (SNoLev y).
Assume Hw2: u = x + w.
Assume Hw3: SNo w.
Assume Hw4: SNoLev w SNoLev y.
Assume Hw5: w < y.
Assume Hw6: v ordsucc (SNoLev (x + w)).
We will prove v SNoLev x + SNoLev y.
We prove the intermediate claim Lv: ordinal v.
Apply ordinal_Hered (ordsucc (SNoLev (x + w))) to the current goal.
We will prove ordinal (ordsucc (SNoLev (x + w))).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hw3.
An exact proof term for the current goal is Hw6.
Apply ordinal_In_Or_Subq v (SNoLev x + SNoLev y) Lv LLxLy to the current goal.
Assume H1: v SNoLev x + SNoLev y.
An exact proof term for the current goal is H1.
Assume H1: SNoLev x + SNoLev y v.
We will prove False.
We prove the intermediate claim LIHw: SNoLev (x + w) SNoLev x + SNoLev w.
Apply IH2 to the current goal.
We will prove w SNoS_ (SNoLev y).
An exact proof term for the current goal is Hw1.
We prove the intermediate claim L4a: SNoLev x + SNoLev w SNoLev x + SNoLev y.
Apply add_SNo_ordinal_InR to the current goal.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hx.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hw4.
We prove the intermediate claim L4b: SNoLev x + SNoLev w SNoLev x + SNoLev y.
Apply LLxLy to the current goal.
Assume H _.
An exact proof term for the current goal is H (SNoLev x + SNoLev w) L4a.
We prove the intermediate claim L4c: v SNoLev (x + w).
Apply ordinal_In_Or_Subq (SNoLev (x + w)) v (SNoLev_ordinal (x + w) (SNo_add_SNo x w Hx Hw3)) Lv to the current goal.
Assume H2: SNoLev (x + w) v.
We will prove False.
Apply ordsuccE (SNoLev (x + w)) v Hw6 to the current goal.
Assume H3: v SNoLev (x + w).
An exact proof term for the current goal is In_no2cycle (SNoLev (x + w)) v H2 H3.
Assume H3: v = SNoLev (x + w).
Apply In_irref v to the current goal.
rewrite the current goal using H3 (from left to right) at position 1.
An exact proof term for the current goal is H2.
Assume H2: v SNoLev (x + w).
An exact proof term for the current goal is H2.
Apply In_irref (SNoLev x + SNoLev w) to the current goal.
We will prove (SNoLev x + SNoLev w) (SNoLev x + SNoLev w).
Apply LIHw to the current goal.
We will prove (SNoLev x + SNoLev w) SNoLev (x + w).
Apply L4c to the current goal.
We will prove (SNoLev x + SNoLev w) v.
Apply H1 to the current goal.
We will prove (SNoLev x + SNoLev w) SNoLev x + SNoLev y.
An exact proof term for the current goal is L4a.
We will prove (u(Rxy1 Rxy2)ordsucc (SNoLev u)) SNoLev x + SNoLev y.
Let v be given.
Assume Hv: v (u(Rxy1 Rxy2)ordsucc (SNoLev u)).
Apply famunionE_impred (Rxy1 Rxy2) (λu ⇒ ordsucc (SNoLev u)) v Hv to the current goal.
Let u be given.
Assume Hu: u Rxy1 Rxy2.
Apply binunionE Rxy1 Rxy2 u Hu to the current goal.
Assume Hu: u Rxy1.
Apply Rxy1E u Hu to the current goal.
Let w be given.
Assume Hw1: w SNoS_ (SNoLev x).
Assume Hw2: u = w + y.
Assume Hw3: SNo w.
Assume Hw4: SNoLev w SNoLev x.
Assume Hw5: x < w.
Assume Hw6: v ordsucc (SNoLev (w + y)).
We will prove v SNoLev x + SNoLev y.
We prove the intermediate claim Lv: ordinal v.
Apply ordinal_Hered (ordsucc (SNoLev (w + y))) to the current goal.
We will prove ordinal (ordsucc (SNoLev (w + y))).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hw3.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hw6.
Apply ordinal_In_Or_Subq v (SNoLev x + SNoLev y) Lv LLxLy to the current goal.
Assume H1: v SNoLev x + SNoLev y.
An exact proof term for the current goal is H1.
Assume H1: SNoLev x + SNoLev y v.
We will prove False.
We prove the intermediate claim LIHw: SNoLev (w + y) SNoLev w + SNoLev y.
Apply IH1 to the current goal.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is Hw1.
We prove the intermediate claim L4a: SNoLev w + SNoLev y SNoLev x + SNoLev y.
Apply add_SNo_ordinal_InL to the current goal.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hx.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hw4.
We prove the intermediate claim L4b: SNoLev w + SNoLev y SNoLev x + SNoLev y.
Apply LLxLy to the current goal.
Assume H _.
An exact proof term for the current goal is H (SNoLev w + SNoLev y) L4a.
We prove the intermediate claim L4c: v SNoLev (w + y).
Apply ordinal_In_Or_Subq (SNoLev (w + y)) v (SNoLev_ordinal (w + y) (SNo_add_SNo w y Hw3 Hy)) Lv to the current goal.
Assume H2: SNoLev (w + y) v.
We will prove False.
Apply ordsuccE (SNoLev (w + y)) v Hw6 to the current goal.
Assume H3: v SNoLev (w + y).
An exact proof term for the current goal is In_no2cycle (SNoLev (w + y)) v H2 H3.
Assume H3: v = SNoLev (w + y).
Apply In_irref v to the current goal.
rewrite the current goal using H3 (from left to right) at position 1.
An exact proof term for the current goal is H2.
Assume H2: v SNoLev (w + y).
An exact proof term for the current goal is H2.
Apply In_irref (SNoLev w + SNoLev y) to the current goal.
We will prove (SNoLev w + SNoLev y) (SNoLev w + SNoLev y).
Apply LIHw to the current goal.
We will prove (SNoLev w + SNoLev y) SNoLev (w + y).
Apply L4c to the current goal.
We will prove (SNoLev w + SNoLev y) v.
Apply H1 to the current goal.
We will prove (SNoLev w + SNoLev y) SNoLev x + SNoLev y.
An exact proof term for the current goal is L4a.
Assume Hu: u Rxy2.
Apply Rxy2E u Hu to the current goal.
Let w be given.
Assume Hw1: w SNoS_ (SNoLev y).
Assume Hw2: u = x + w.
Assume Hw3: SNo w.
Assume Hw4: SNoLev w SNoLev y.
Assume Hw5: y < w.
Assume Hw6: v ordsucc (SNoLev (x + w)).
We will prove v SNoLev x + SNoLev y.
We prove the intermediate claim Lv: ordinal v.
Apply ordinal_Hered (ordsucc (SNoLev (x + w))) to the current goal.
We will prove ordinal (ordsucc (SNoLev (x + w))).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hw3.
An exact proof term for the current goal is Hw6.
Apply ordinal_In_Or_Subq v (SNoLev x + SNoLev y) Lv LLxLy to the current goal.
Assume H1: v SNoLev x + SNoLev y.
An exact proof term for the current goal is H1.
Assume H1: SNoLev x + SNoLev y v.
We will prove False.
We prove the intermediate claim LIHw: SNoLev (x + w) SNoLev x + SNoLev w.
Apply IH2 to the current goal.
We will prove w SNoS_ (SNoLev y).
An exact proof term for the current goal is Hw1.
We prove the intermediate claim L4a: SNoLev x + SNoLev w SNoLev x + SNoLev y.
Apply add_SNo_ordinal_InR to the current goal.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hx.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hw4.
We prove the intermediate claim L4b: SNoLev x + SNoLev w SNoLev x + SNoLev y.
Apply LLxLy to the current goal.
Assume H _.
An exact proof term for the current goal is H (SNoLev x + SNoLev w) L4a.
We prove the intermediate claim L4c: v SNoLev (x + w).
Apply ordinal_In_Or_Subq (SNoLev (x + w)) v (SNoLev_ordinal (x + w) (SNo_add_SNo x w Hx Hw3)) Lv to the current goal.
Assume H2: SNoLev (x + w) v.
We will prove False.
Apply ordsuccE (SNoLev (x + w)) v Hw6 to the current goal.
Assume H3: v SNoLev (x + w).
An exact proof term for the current goal is In_no2cycle (SNoLev (x + w)) v H2 H3.
Assume H3: v = SNoLev (x + w).
Apply In_irref v to the current goal.
rewrite the current goal using H3 (from left to right) at position 1.
An exact proof term for the current goal is H2.
Assume H2: v SNoLev (x + w).
An exact proof term for the current goal is H2.
Apply In_irref (SNoLev x + SNoLev w) to the current goal.
We will prove (SNoLev x + SNoLev w) (SNoLev x + SNoLev w).
Apply LIHw to the current goal.
We will prove (SNoLev x + SNoLev w) SNoLev (x + w).
Apply L4c to the current goal.
We will prove (SNoLev x + SNoLev w) v.
Apply H1 to the current goal.
We will prove (SNoLev x + SNoLev w) SNoLev x + SNoLev y.
An exact proof term for the current goal is L4a.
An exact proof term for the current goal is Subq_tra (SNoLev (SNoCut (Lxy1 Lxy2) (Rxy1 Rxy2))) ((u(Lxy1 Lxy2)ordsucc (SNoLev u)) (u(Rxy1 Rxy2)ordsucc (SNoLev u))) (SNoLev x + SNoLev y) L3 L4.
Theorem. (add_SNo_SNoS_omega) The following is provable:
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume Hx1: SNoLev x ω.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
Apply SNoS_E2 ω omega_ordinal y Hy to the current goal.
Assume Hy1: SNoLev y ω.
Assume Hy2: ordinal (SNoLev y).
Assume Hy3: SNo y.
Assume Hy4: SNo_ (SNoLev y) y.
Apply SNoS_I ω omega_ordinal (x + y) (SNoLev (x + y)) to the current goal.
We will prove SNoLev (x + y) ω.
We prove the intermediate claim LLxy: ordinal (SNoLev (x + y)).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is SNo_add_SNo x y Hx3 Hy3.
Apply ordinal_In_Or_Subq (SNoLev (x + y)) ω LLxy omega_ordinal to the current goal.
Assume H1.
An exact proof term for the current goal is H1.
Assume H1: ω SNoLev (x + y).
Apply In_irref (SNoLev x + SNoLev y) to the current goal.
We will prove (SNoLev x + SNoLev y) (SNoLev x + SNoLev y).
Apply add_SNo_Lev_bd x y Hx3 Hy3 to the current goal.
We will prove (SNoLev x + SNoLev y) SNoLev (x + y).
Apply H1 to the current goal.
We will prove (SNoLev x + SNoLev y) ω.
An exact proof term for the current goal is add_SNo_In_omega (SNoLev x) Hx1 (SNoLev y) Hy1.
We will prove SNo_ (SNoLev (x + y)) (x + y).
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is SNo_add_SNo x y Hx3 Hy3.
Theorem. (add_SNo_Lt1_cancel) The following is provable:
∀x y z, SNo xSNo ySNo zx + y < z + yx < z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
We will prove x < z.
We prove the intermediate claim L1: (x + y) + - y = x.
An exact proof term for the current goal is add_SNo_minus_R2 x y Hx Hy.
We prove the intermediate claim L2: (z + y) + - y = z.
An exact proof term for the current goal is add_SNo_minus_R2 z y Hz Hy.
rewrite the current goal using L1 (from right to left).
rewrite the current goal using L2 (from right to left).
We will prove (x + y) + - y < (z + y) + - y.
An exact proof term for the current goal is add_SNo_Lt1 (x + y) (- y) (z + y) (SNo_add_SNo x y Hx Hy) (SNo_minus_SNo y Hy) (SNo_add_SNo z y Hz Hy) H1.
Theorem. (add_SNo_Lt2_cancel) The following is provable:
∀x y z, SNo xSNo ySNo zx + y < x + zy < z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
rewrite the current goal using add_SNo_com x y Hx Hy (from left to right).
rewrite the current goal using add_SNo_com x z Hx Hz (from left to right).
An exact proof term for the current goal is add_SNo_Lt1_cancel y x z Hy Hx Hz.
Theorem. (add_SNo_Le1_cancel) The following is provable:
∀x y z, SNo xSNo ySNo zx + y z + yx z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
We will prove x z.
We prove the intermediate claim L1: (x + y) + - y = x.
An exact proof term for the current goal is add_SNo_minus_R2 x y Hx Hy.
We prove the intermediate claim L2: (z + y) + - y = z.
An exact proof term for the current goal is add_SNo_minus_R2 z y Hz Hy.
rewrite the current goal using L1 (from right to left).
rewrite the current goal using L2 (from right to left).
We will prove (x + y) + - y (z + y) + - y.
An exact proof term for the current goal is add_SNo_Le1 (x + y) (- y) (z + y) (SNo_add_SNo x y Hx Hy) (SNo_minus_SNo y Hy) (SNo_add_SNo z y Hz Hy) H1.
Theorem. (add_SNo_assoc_4) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wx + y + z + w = (x + y + z) + w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
Use transitivity with (x + y) + z + w, and ((x + y) + z) + w.
An exact proof term for the current goal is add_SNo_assoc x y (z + w) Hx Hy (SNo_add_SNo z w Hz Hw).
An exact proof term for the current goal is add_SNo_assoc (x + y) z w (SNo_add_SNo x y Hx Hy) Hz Hw.
Use f_equal.
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc x y z Hx Hy Hz.
Theorem. (add_SNo_com_3_0_1) The following is provable:
∀x y z, SNo xSNo ySNo zx + y + z = y + x + z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
rewrite the current goal using add_SNo_assoc x y z Hx Hy Hz (from left to right).
rewrite the current goal using add_SNo_assoc y x z Hy Hx Hz (from left to right).
Use f_equal.
An exact proof term for the current goal is add_SNo_com x y Hx Hy.
Theorem. (add_SNo_com_3b_1_2) The following is provable:
∀x y z, SNo xSNo ySNo z(x + y) + z = (x + z) + y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
rewrite the current goal using add_SNo_assoc x y z Hx Hy Hz (from right to left).
rewrite the current goal using add_SNo_assoc x z y Hx Hz Hy (from right to left).
Use f_equal.
An exact proof term for the current goal is add_SNo_com y z Hy Hz.
Theorem. (add_SNo_com_4_inner_mid) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w(x + y) + (z + w) = (x + z) + (y + w)
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
rewrite the current goal using add_SNo_assoc (x + y) z w (SNo_add_SNo x y Hx Hy) Hz Hw (from left to right).
We will prove ((x + y) + z) + w = (x + z) + (y + w).
rewrite the current goal using add_SNo_com_3b_1_2 x y z Hx Hy Hz (from left to right).
We will prove ((x + z) + y) + w = (x + z) + (y + w).
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc (x + z) y w (SNo_add_SNo x z Hx Hz) Hy Hw.
Theorem. (add_SNo_rotate_3_1) The following is provable:
∀x y z, SNo xSNo ySNo zx + y + z = z + x + y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
We will prove x + (y + z) = z + (x + y).
Use transitivity with x + (z + y), (x + z) + y, and (z + x) + y.
Use f_equal.
An exact proof term for the current goal is add_SNo_com y z Hy Hz.
An exact proof term for the current goal is add_SNo_assoc x z y Hx Hz Hy.
Use f_equal.
An exact proof term for the current goal is add_SNo_com x z Hx Hz.
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc z x y Hz Hx Hy.
Theorem. (add_SNo_rotate_4_1) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wx + y + z + w = w + x + y + z
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
rewrite the current goal using add_SNo_rotate_3_1 y z w Hy Hz Hw (from left to right).
We will prove x + w + y + z = w + x + y + z.
An exact proof term for the current goal is add_SNo_com_3_0_1 x w (y + z) Hx Hw (SNo_add_SNo y z Hy Hz).
Theorem. (add_SNo_rotate_5_1) The following is provable:
∀x y z w v, SNo xSNo ySNo zSNo wSNo vx + y + z + w + v = v + x + y + z + w
Proof:
Let x, y, z, w and v be given.
Assume Hx Hy Hz Hw Hv.
rewrite the current goal using add_SNo_rotate_4_1 y z w v Hy Hz Hw Hv (from left to right).
We will prove x + v + y + z + w = v + x + y + z + w.
An exact proof term for the current goal is add_SNo_com_3_0_1 x v (y + z + w) Hx Hv (SNo_add_SNo_3 y z w Hy Hz Hw).
Theorem. (add_SNo_rotate_5_2) The following is provable:
∀x y z w v, SNo xSNo ySNo zSNo wSNo vx + y + z + w + v = w + v + x + y + z
Proof:
Let x, y, z, w and v be given.
Assume Hx Hy Hz Hw Hv.
Use transitivity with and (v + x + y + z + w).
An exact proof term for the current goal is add_SNo_rotate_5_1 x y z w v Hx Hy Hz Hw Hv.
An exact proof term for the current goal is add_SNo_rotate_5_1 v x y z w Hv Hx Hy Hz Hw.
Theorem. (add_SNo_minus_SNo_prop2) The following is provable:
∀x y, SNo xSNo yx + - x + y = y
Proof:
Let x and y be given.
Assume Hx Hy.
rewrite the current goal using add_SNo_assoc x (- x) y Hx (SNo_minus_SNo x Hx) Hy (from left to right).
We will prove (x + - x) + y = y.
rewrite the current goal using add_SNo_minus_SNo_rinv x Hx (from left to right).
We will prove 0 + y = y.
An exact proof term for the current goal is add_SNo_0L y Hy.
Theorem. (add_SNo_minus_SNo_prop3) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w(x + y + z) + (- z + w) = x + y + w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
rewrite the current goal using add_SNo_assoc x y z Hx Hy Hz (from left to right).
We will prove ((x + y) + z) + (- z + w) = x + y + w.
rewrite the current goal using add_SNo_assoc (x + y) z (- z + w) (SNo_add_SNo x y Hx Hy) Hz (SNo_add_SNo (- z) w (SNo_minus_SNo z Hz) Hw) (from right to left).
We will prove (x + y) + (z + - z + w) = x + y + w.
rewrite the current goal using add_SNo_minus_L2' z w Hz Hw (from left to right).
We will prove (x + y) + w = x + y + w.
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc x y w Hx Hy Hw.
Theorem. (add_SNo_minus_SNo_prop5) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w(x + y + - z) + (z + w) = x + y + w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
We will prove (x + y + - z) + (z + w) = x + y + w.
rewrite the current goal using minus_SNo_invol z Hz (from right to left) at position 2.
We will prove (x + y + - z) + (- - z + w) = x + y + w.
An exact proof term for the current goal is add_SNo_minus_SNo_prop3 x y (- z) w Hx Hy (SNo_minus_SNo z Hz) Hw.
Theorem. (add_SNo_minus_Lt1) The following is provable:
∀x y z, SNo xSNo ySNo zx + - y < zx < z + y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
Apply add_SNo_Lt1_cancel x (- y) (z + y) Hx (SNo_minus_SNo y Hy) (SNo_add_SNo z y Hz Hy) to the current goal.
We will prove x + - y < (z + y) + - y.
rewrite the current goal using add_SNo_assoc z y (- y) Hz Hy (SNo_minus_SNo y Hy) (from right to left).
rewrite the current goal using add_SNo_minus_SNo_rinv y Hy (from left to right).
rewrite the current goal using add_SNo_0R z Hz (from left to right).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Lt2) The following is provable:
∀x y z, SNo xSNo ySNo zz < x + - yz + y < x
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
Apply add_SNo_Lt1_cancel (z + y) (- y) x (SNo_add_SNo z y Hz Hy) (SNo_minus_SNo y Hy) Hx to the current goal.
We will prove (z + y) + - y < x + - y.
rewrite the current goal using add_SNo_assoc z y (- y) Hz Hy (SNo_minus_SNo y Hy) (from right to left).
We will prove z + y + - y < x + - y.
rewrite the current goal using add_SNo_minus_SNo_rinv y Hy (from left to right).
rewrite the current goal using add_SNo_0R z Hz (from left to right).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Lt1b) The following is provable:
∀x y z, SNo xSNo ySNo zx < z + yx + - y < z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
Apply add_SNo_Lt1_cancel (x + - y) y z (SNo_add_SNo x (- y) Hx (SNo_minus_SNo y Hy)) Hy Hz to the current goal.
We will prove (x + - y) + y < z + y.
rewrite the current goal using add_SNo_assoc x (- y) y Hx (SNo_minus_SNo y Hy) Hy (from right to left).
rewrite the current goal using add_SNo_minus_SNo_linv y Hy (from left to right).
rewrite the current goal using add_SNo_0R x Hx (from left to right).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Lt2b) The following is provable:
∀x y z, SNo xSNo ySNo zz + y < xz < x + - y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
Apply add_SNo_Lt1_cancel z y (x + - y) Hz Hy (SNo_add_SNo x (- y) Hx (SNo_minus_SNo y Hy)) to the current goal.
We will prove z + y < (x + - y) + y.
rewrite the current goal using add_SNo_assoc x (- y) y Hx (SNo_minus_SNo y Hy) Hy (from right to left).
rewrite the current goal using add_SNo_minus_SNo_linv y Hy (from left to right).
rewrite the current goal using add_SNo_0R x Hx (from left to right).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Lt1b3) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wx + y < w + zx + y + - z < w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw H1.
We will prove x + y + - z < w.
rewrite the current goal using add_SNo_assoc x y (- z) Hx Hy (SNo_minus_SNo z Hz) (from left to right).
We will prove (x + y) + - z < w.
Apply add_SNo_minus_Lt1b (x + y) z w (SNo_add_SNo x y Hx Hy) Hz Hw to the current goal.
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Lt2b3) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo ww + z < x + yw < x + y + - z
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw H1.
We will prove w < x + y + - z.
rewrite the current goal using add_SNo_assoc x y (- z) Hx Hy (SNo_minus_SNo z Hz) (from left to right).
We will prove w < (x + y) + - z.
Apply add_SNo_minus_Lt2b (x + y) z w (SNo_add_SNo x y Hx Hy) Hz Hw to the current goal.
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Lt_lem) The following is provable:
∀x y z u v w, SNo xSNo ySNo zSNo uSNo vSNo wx + y + w < u + v + zx + y + - z < u + v + - w
Proof:
Let x, y, z, u, v and w be given.
Assume Hx Hy Hz Hu Hv Hw H1.
We prove the intermediate claim Lmz: SNo (- z).
An exact proof term for the current goal is SNo_minus_SNo z Hz.
We prove the intermediate claim Lmw: SNo (- w).
An exact proof term for the current goal is SNo_minus_SNo w Hw.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim Luv: SNo (u + v).
An exact proof term for the current goal is SNo_add_SNo u v Hu Hv.
rewrite the current goal using add_SNo_assoc x y (- z) Hx Hy Lmz (from left to right).
rewrite the current goal using add_SNo_assoc u v (- w) Hu Hv Lmw (from left to right).
We will prove (x + y) + - z < (u + v) + - w.
Apply add_SNo_minus_Lt2b (u + v) w ((x + y) + - z) Luv Hw (SNo_add_SNo (x + y) (- z) Lxy Lmz) to the current goal.
We will prove ((x + y) + - z) + w < u + v.
rewrite the current goal using add_SNo_assoc (x + y) (- z) w Lxy Lmz Hw (from right to left).
We will prove (x + y) + - z + w < u + v.
rewrite the current goal using add_SNo_com (- z) w Lmz Hw (from left to right).
We will prove (x + y) + w + - z < u + v.
rewrite the current goal using add_SNo_assoc (x + y) w (- z) Lxy Hw Lmz (from left to right).
We will prove ((x + y) + w) + - z < u + v.
Apply add_SNo_minus_Lt1b ((x + y) + w) z (u + v) (SNo_add_SNo (x + y) w Lxy Hw) Hz Luv to the current goal.
We will prove (x + y) + w < (u + v) + z.
rewrite the current goal using add_SNo_assoc x y w Hx Hy Hw (from right to left).
rewrite the current goal using add_SNo_assoc u v z Hu Hv Hz (from right to left).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Le2) The following is provable:
∀x y z, SNo xSNo ySNo zz x + - yz + y x
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
Apply SNoLeE z (x + - y) Hz (SNo_add_SNo x (- y) Hx (SNo_minus_SNo y Hy)) H1 to the current goal.
Assume H2.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is add_SNo_minus_Lt2 x y z Hx Hy Hz H2.
Assume H2: z = x + - y.
We will prove z + y x.
rewrite the current goal using H2 (from left to right).
We will prove (x + - y) + y x.
rewrite the current goal using add_SNo_minus_R2' x y Hx Hy (from left to right).
Apply SNoLe_ref to the current goal.
Theorem. (add_SNo_minus_Le2b) The following is provable:
∀x y z, SNo xSNo ySNo zz + y xz x + - y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
Apply SNoLeE (z + y) x (SNo_add_SNo z y Hz Hy) Hx H1 to the current goal.
Assume H2.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is add_SNo_minus_Lt2b x y z Hx Hy Hz H2.
Assume H2: z + y = x.
We will prove z x + - y.
rewrite the current goal using H2 (from right to left).
We will prove z (z + y) + - y.
rewrite the current goal using add_SNo_minus_R2 z y Hz Hy (from left to right).
Apply SNoLe_ref to the current goal.
Theorem. (add_SNo_Lt_subprop2) The following is provable:
∀x y z w u v, SNo xSNo ySNo zSNo wSNo uSNo vx + u < z + vy + v < w + ux + y < z + w
Proof:
Let x, y, z, w, u and v be given.
Assume Hx Hy Hz Hw Hu Hv H1 H2.
Apply add_SNo_Lt1_cancel (x + y) (u + v) (z + w) (SNo_add_SNo x y Hx Hy) (SNo_add_SNo u v Hu Hv) (SNo_add_SNo z w Hz Hw) to the current goal.
We will prove (x + y) + (u + v) < (z + w) + (u + v).
rewrite the current goal using add_SNo_com_4_inner_mid x y u v Hx Hy Hu Hv (from left to right).
We will prove (x + u) + (y + v) < (z + w) + (u + v).
We prove the intermediate claim L1: (z + w) + (u + v) = (z + v) + (w + u).
rewrite the current goal using add_SNo_assoc z w (u + v) Hz Hw (SNo_add_SNo u v Hu Hv) (from right to left).
rewrite the current goal using add_SNo_assoc z v (w + u) Hz Hv (SNo_add_SNo w u Hw Hu) (from right to left).
We will prove z + (w + (u + v)) = z + (v + (w + u)).
Use f_equal.
We will prove w + u + v = v + w + u.
An exact proof term for the current goal is add_SNo_rotate_3_1 w u v Hw Hu Hv.
rewrite the current goal using L1 (from left to right).
We will prove (x + u) + (y + v) < (z + v) + (w + u).
An exact proof term for the current goal is add_SNo_Lt3 (x + u) (y + v) (z + v) (w + u) (SNo_add_SNo x u Hx Hu) (SNo_add_SNo y v Hy Hv) (SNo_add_SNo z v Hz Hv) (SNo_add_SNo w u Hw Hu) H1 H2.
Theorem. (add_SNo_Lt_subprop3a) The following is provable:
∀x y z w u a, SNo xSNo ySNo zSNo wSNo uSNo ax + z < w + ay + a < ux + y + z < w + u
Proof:
Let x, y, z, w, u and a be given.
Assume Hx Hy Hz Hw Hu Ha H1 H2.
Apply SNoLt_tra (x + y + z) (y + w + a) (w + u) (SNo_add_SNo x (y + z) Hx (SNo_add_SNo y z Hy Hz)) (SNo_add_SNo y (w + a) Hy (SNo_add_SNo w a Hw Ha)) (SNo_add_SNo w u Hw Hu) to the current goal.
We will prove x + y + z < y + w + a.
rewrite the current goal using add_SNo_com_3_0_1 x y z Hx Hy Hz (from left to right).
We will prove y + x + z < y + w + a.
Apply add_SNo_Lt2 y (x + z) (w + a) Hy (SNo_add_SNo x z Hx Hz) (SNo_add_SNo w a Hw Ha) to the current goal.
An exact proof term for the current goal is H1.
We will prove y + w + a < w + u.
rewrite the current goal using add_SNo_rotate_3_1 w a y Hw Ha Hy (from right to left).
We will prove w + a + y < w + u.
Apply add_SNo_Lt2 w (a + y) u Hw (SNo_add_SNo a y Ha Hy) Hu to the current goal.
We will prove a + y < u.
rewrite the current goal using add_SNo_com a y Ha Hy (from left to right).
An exact proof term for the current goal is H2.
Theorem. (add_SNo_Lt_subprop3b) The following is provable:
∀x y w u v a, SNo xSNo ySNo wSNo uSNo vSNo ax + a < w + vy < a + ux + y < w + u + v
Proof:
Let x, y, w, u, v and a be given.
Assume Hx Hy Hw Hu Hv Ha H1 H2.
rewrite the current goal using add_SNo_com x y Hx Hy (from left to right).
We will prove y + x < w + u + v.
rewrite the current goal using add_SNo_rotate_3_1 u v w Hu Hv Hw (from right to left).
We will prove y + x < u + v + w.
rewrite the current goal using add_SNo_0R x Hx (from right to left).
We will prove y + x + 0 < u + v + w.
Apply add_SNo_Lt_subprop3a y x 0 u (v + w) a Hy Hx SNo_0 Hu (SNo_add_SNo v w Hv Hw) Ha to the current goal.
We will prove y + 0 < u + a.
rewrite the current goal using add_SNo_0R y Hy (from left to right).
rewrite the current goal using add_SNo_com u a Hu Ha (from left to right).
An exact proof term for the current goal is H2.
We will prove x + a < v + w.
rewrite the current goal using add_SNo_com v w Hv Hw (from left to right).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_Lt_subprop3c) The following is provable:
∀x y z w u a b c, SNo xSNo ySNo zSNo wSNo uSNo aSNo bSNo cx + a < b + cy + c < ub + z < w + ax + y + z < w + u
Proof:
Let x, y, z, w, u, a, b and c be given.
Assume Hx Hy Hz Hw Hu Ha Hb Hc H1 H2 H3.
We prove the intermediate claim L1: x + z < c + w.
Apply add_SNo_Lt_subprop2 x z c w a b Hx Hz Hc Hw Ha Hb to the current goal.
We will prove x + a < c + b.
rewrite the current goal using add_SNo_com c b Hc Hb (from left to right).
An exact proof term for the current goal is H1.
We will prove z + b < w + a.
rewrite the current goal using add_SNo_com z b Hz Hb (from left to right).
An exact proof term for the current goal is H3.
We prove the intermediate claim Lxz: SNo (x + z).
An exact proof term for the current goal is SNo_add_SNo x z Hx Hz.
We prove the intermediate claim Lcw: SNo (c + w).
An exact proof term for the current goal is SNo_add_SNo c w Hc Hw.
Apply SNoLt_tra (x + y + z) (c + w + y) (w + u) to the current goal.
An exact proof term for the current goal is SNo_add_SNo x (y + z) Hx (SNo_add_SNo y z Hy Hz).
An exact proof term for the current goal is SNo_add_SNo c (w + y) Hc (SNo_add_SNo w y Hw Hy).
An exact proof term for the current goal is SNo_add_SNo w u Hw Hu.
We will prove x + y + z < c + w + y.
rewrite the current goal using add_SNo_com y z Hy Hz (from left to right).
We will prove x + z + y < c + w + y.
rewrite the current goal using add_SNo_assoc x z y Hx Hz Hy (from left to right).
rewrite the current goal using add_SNo_assoc c w y Hc Hw Hy (from left to right).
An exact proof term for the current goal is add_SNo_Lt1 (x + z) y (c + w) Lxz Hy Lcw L1.
We will prove c + w + y < w + u.
rewrite the current goal using add_SNo_rotate_3_1 w y c Hw Hy Hc (from right to left).
We will prove w + y + c < w + u.
Apply add_SNo_Lt2 w (y + c) u Hw (SNo_add_SNo y c Hy Hc) Hu to the current goal.
We will prove y + c < u.
An exact proof term for the current goal is H2.
Theorem. (add_SNo_Lt_subprop3d) The following is provable:
∀x y w u v a b c, SNo xSNo ySNo wSNo uSNo vSNo aSNo bSNo cx + a < b + vy < c + ub + c < w + ax + y < w + u + v
Proof:
Let x, y, w, u, v, a, b and c be given.
Assume Hx Hy Hw Hu Hv Ha Hb Hc H1 H2 H3.
We prove the intermediate claim L1: b + y < w + u + a.
An exact proof term for the current goal is add_SNo_Lt_subprop3b b y w u a c Hb Hy Hw Hu Ha Hc H3 H2.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim Lwuv: SNo (w + u + v).
An exact proof term for the current goal is SNo_add_SNo w (u + v) Hw (SNo_add_SNo u v Hu Hv).
We prove the intermediate claim Lwua: SNo (w + u + a).
An exact proof term for the current goal is SNo_add_SNo w (u + a) Hw (SNo_add_SNo u a Hu Ha).
We prove the intermediate claim Lby: SNo (b + y).
An exact proof term for the current goal is SNo_add_SNo b y Hb Hy.
Apply add_SNo_Lt1_cancel (x + y) b (w + u + v) Lxy Hb Lwuv to the current goal.
We will prove (x + y) + b < (w + u + v) + b.
Apply SNoLt_tra ((x + y) + b) (x + w + u + a) ((w + u + v) + b) (SNo_add_SNo (x + y) b Lxy Hb) (SNo_add_SNo x (w + u + a) Hx Lwua) (SNo_add_SNo (w + u + v) b Lwuv Hb) to the current goal.
We will prove (x + y) + b < x + w + u + a.
rewrite the current goal using add_SNo_assoc x y b Hx Hy Hb (from right to left).
We will prove x + y + b < x + w + u + a.
rewrite the current goal using add_SNo_com y b Hy Hb (from left to right).
We will prove x + b + y < x + w + u + a.
Apply add_SNo_Lt2 x (b + y) (w + u + a) Hx Lby Lwua to the current goal.
We will prove b + y < w + u + a.
An exact proof term for the current goal is L1.
We will prove x + w + u + a < (w + u + v) + b.
We prove the intermediate claim L2: x + w + u + a = (w + u) + (x + a).
Use transitivity with (x + w + u) + a, (w + u + x) + a, and w + u + x + a.
An exact proof term for the current goal is add_SNo_assoc_4 x w u a Hx Hw Hu Ha.
Use f_equal.
Use symmetry.
An exact proof term for the current goal is add_SNo_rotate_3_1 w u x Hw Hu Hx.
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc_4 w u x a Hw Hu Hx Ha.
We will prove w + u + x + a = (w + u) + (x + a).
An exact proof term for the current goal is add_SNo_assoc w u (x + a) Hw Hu (SNo_add_SNo x a Hx Ha).
We prove the intermediate claim L3: (w + u + v) + b = (w + u) + b + v.
Use transitivity with ((w + u) + v) + b, and (w + u) + (v + b).
Use f_equal.
An exact proof term for the current goal is add_SNo_assoc w u v Hw Hu Hv.
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc (w + u) v b (SNo_add_SNo w u Hw Hu) Hv Hb.
Use f_equal.
An exact proof term for the current goal is add_SNo_com v b Hv Hb.
rewrite the current goal using L2 (from left to right).
rewrite the current goal using L3 (from left to right).
We will prove (w + u) + (x + a) < (w + u) + (b + v).
Apply add_SNo_Lt2 (w + u) (x + a) (b + v) (SNo_add_SNo w u Hw Hu) (SNo_add_SNo x a Hx Ha) (SNo_add_SNo b v Hb Hv) to the current goal.
An exact proof term for the current goal is H1.
Theorem. (ordinal_ordsucc_SNo_eq) The following is provable:
∀α, ordinal αordsucc α = 1 + α
Proof:
Let α be given.
Assume Ha.
rewrite the current goal using add_SNo_0L α (ordinal_SNo α Ha) (from right to left) at position 1.
We will prove ordsucc (0 + α) = 1 + α.
Use symmetry.
An exact proof term for the current goal is add_SNo_ordinal_SL 0 ordinal_Empty α Ha.
Theorem. (add_SNo_3a_2b) The following is provable:
∀x y z w u, SNo xSNo ySNo zSNo wSNo u(x + y + z) + (w + u) = (u + y + z) + (w + x)
Proof:
Let x, y, z, w and u be given.
Assume Hx Hy Hz Hw Hu.
rewrite the current goal using add_SNo_com (x + y + z) (w + u) (SNo_add_SNo_3 x y z Hx Hy Hz) (SNo_add_SNo w u Hw Hu) (from left to right).
We will prove (w + u) + (x + y + z) = (u + y + z) + (w + x).
rewrite the current goal using add_SNo_com_4_inner_mid w u x (y + z) Hw Hu Hx (SNo_add_SNo y z Hy Hz) (from left to right).
We will prove (w + x) + (u + y + z) = (u + y + z) + (w + x).
An exact proof term for the current goal is add_SNo_com (w + x) (u + y + z) (SNo_add_SNo w x Hw Hx) (SNo_add_SNo_3 u y z Hu Hy Hz).
Theorem. (add_SNo_1_ordsucc) The following is provable:
Proof:
Let n be given.
Assume Hn.
rewrite the current goal using add_nat_add_SNo n Hn 1 (nat_p_omega 1 nat_1) (from right to left).
We will prove add_nat n 1 = ordsucc n.
rewrite the current goal using add_nat_SR n 0 nat_0 (from left to right).
We will prove ordsucc (add_nat n 0) = ordsucc n.
rewrite the current goal using add_nat_0R (from left to right).
Use reflexivity.
Theorem. (add_SNo_eps_Lt) The following is provable:
∀x, SNo xnω, x < x + eps_ n
Proof:
Let x be given.
Assume Hx.
Let n be given.
Assume Hn.
rewrite the current goal using add_SNo_0R x Hx (from right to left) at position 1.
We will prove x + 0 < x + eps_ n.
Apply add_SNo_Lt2 x 0 (eps_ n) Hx SNo_0 (SNo_eps_ n Hn) to the current goal.
An exact proof term for the current goal is SNo_eps_pos n Hn.
Theorem. (add_SNo_eps_Lt') The following is provable:
∀x y, SNo xSNo ynω, x < yx < y + eps_ n
Proof:
Let x and y be given.
Assume Hx Hy.
Let n be given.
Assume Hn.
Assume Hxy.
Apply SNoLt_tra x y (y + eps_ n) Hx Hy (SNo_add_SNo y (eps_ n) Hy (SNo_eps_ n Hn)) Hxy to the current goal.
We will prove y < y + eps_ n.
An exact proof term for the current goal is add_SNo_eps_Lt y Hy n Hn.
Theorem. (SNoLt_minus_pos) The following is provable:
∀x y, SNo xSNo yx < y0 < y + - x
Proof:
Let x and y be given.
Assume Hx Hy Hxy.
Apply add_SNo_minus_Lt2b y x 0 Hy Hx SNo_0 to the current goal.
We will prove 0 + x < y.
rewrite the current goal using add_SNo_0L x Hx (from left to right).
An exact proof term for the current goal is Hxy.
Theorem. (add_SNo_omega_In_cases) The following is provable:
∀m, nω, ∀k, nat_p km n + km n m + - n k
Proof:
Let m and n be given.
Assume Hn.
We prove the intermediate claim Ln: SNo n.
Apply omega_SNo to the current goal.
An exact proof term for the current goal is Hn.
Apply nat_ind to the current goal.
We will prove m n + 0m n m + - n 0.
rewrite the current goal using add_SNo_0R n Ln (from left to right).
Assume H1.
Apply orIL to the current goal.
An exact proof term for the current goal is H1.
Let k be given.
Assume Hk.
Assume IHk: m n + km n m + - n k.
rewrite the current goal using add_SNo_1_ordsucc k (nat_p_omega k Hk) (from right to left) at position 1.
rewrite the current goal using add_SNo_assoc n k 1 Ln (nat_p_SNo k Hk) SNo_1 (from left to right).
rewrite the current goal using add_SNo_1_ordsucc (n + k) (add_SNo_In_omega n Hn k (nat_p_omega k Hk)) (from left to right).
Assume H1: m ordsucc (n + k).
Apply ordsuccE (n + k) m H1 to the current goal.
Assume H2: m n + k.
Apply IHk H2 to the current goal.
Assume H3: m n.
Apply orIL to the current goal.
An exact proof term for the current goal is H3.
Assume H3: m + - n k.
Apply orIR to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is H3.
Assume H2: m = n + k.
Apply orIR to the current goal.
rewrite the current goal using H2 (from left to right).
We will prove (n + k) + - n ordsucc k.
rewrite the current goal using add_SNo_com (n + k) (- n) (SNo_add_SNo n k Ln (nat_p_SNo k Hk)) (SNo_minus_SNo n Ln) (from left to right).
rewrite the current goal using add_SNo_minus_L2 n k Ln (nat_p_SNo k Hk) (from left to right).
Apply ordsuccI2 to the current goal.
Theorem. (add_SNo_Lt4) The following is provable:
∀x y z w u v, SNo xSNo ySNo zSNo wSNo uSNo vx < wy < uz < vx + y + z < w + u + v
Proof:
Let x, y, z, w, u and v be given.
Assume Hx Hy Hz Hw Hu Hv Hxw Hyu Hzv.
We will prove x + y + z < w + u + v.
Apply add_SNo_Lt3 x (y + z) w (u + v) Hx (SNo_add_SNo y z Hy Hz) Hw (SNo_add_SNo u v Hu Hv) Hxw to the current goal.
We will prove y + z < u + v.
An exact proof term for the current goal is add_SNo_Lt3 y z u v Hy Hz Hu Hv Hyu Hzv.
Theorem. (add_SNo_3_3_3_Lt1) The following is provable:
∀x y z w u, SNo xSNo ySNo zSNo wSNo ux + y < z + wx + y + u < z + w + u
Proof:
Let x, y, z, w and u be given.
Assume Hx Hy Hz Hw Hu H1.
rewrite the current goal using add_SNo_assoc x y u Hx Hy Hu (from left to right).
rewrite the current goal using add_SNo_assoc z w u Hz Hw Hu (from left to right).
We will prove (x + y) + u < (z + w) + u.
An exact proof term for the current goal is add_SNo_Lt1 (x + y) u (z + w) (SNo_add_SNo x y Hx Hy) Hu (SNo_add_SNo z w Hz Hw) H1.
Theorem. (add_SNo_3_2_3_Lt1) The following is provable:
∀x y z w u, SNo xSNo ySNo zSNo wSNo uy + x < z + wx + u + y < z + w + u
Proof:
Let x, y, z, w and u be given.
Assume Hx Hy Hz Hw Hu H1.
rewrite the current goal using add_SNo_rotate_3_1 x u y Hx Hu Hy (from left to right).
We will prove y + x + u < z + w + u.
An exact proof term for the current goal is add_SNo_3_3_3_Lt1 y x z w u Hy Hx Hz Hw Hu H1.
Theorem. (add_SNo_minus_Lt12b3) The following is provable:
∀x y z w u v, SNo xSNo ySNo zSNo wSNo uSNo vx + y + v < w + u + zx + y + - z < w + u + - v
Proof:
Let x, y, z, w, u and v be given.
Assume Hx Hy Hz Hw Hu Hv.
Assume H1: x + y + v < w + u + z.
We will prove x + y + - z < w + u + - v.
We prove the intermediate claim Lmv: SNo (- v).
An exact proof term for the current goal is SNo_minus_SNo v Hv.
Apply add_SNo_minus_Lt1b3 x y z (w + u + - v) Hx Hy Hz (SNo_add_SNo_3 w u (- v) Hw Hu Lmv) to the current goal.
We will prove x + y < (w + u + - v) + z.
rewrite the current goal using add_SNo_assoc w u (- v) Hw Hu Lmv (from left to right).
We will prove x + y < ((w + u) + - v) + z.
rewrite the current goal using add_SNo_com_3b_1_2 (w + u) (- v) z (SNo_add_SNo w u Hw Hu) Lmv Hz (from left to right).
We will prove x + y < ((w + u) + z) + - v.
Apply add_SNo_minus_Lt2b ((w + u) + z) v (x + y) (SNo_add_SNo (w + u) z (SNo_add_SNo w u Hw Hu) Hz) Hv (SNo_add_SNo x y Hx Hy) to the current goal.
We will prove (x + y) + v < (w + u) + z.
rewrite the current goal using add_SNo_assoc x y v Hx Hy Hv (from right to left).
rewrite the current goal using add_SNo_assoc w u z Hw Hu Hz (from right to left).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Le1b) The following is provable:
∀x y z, SNo xSNo ySNo zx z + yx + - y z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
Apply add_SNo_Le1_cancel (x + - y) y z (SNo_add_SNo x (- y) Hx (SNo_minus_SNo y Hy)) Hy Hz to the current goal.
We will prove (x + - y) + y z + y.
rewrite the current goal using add_SNo_assoc x (- y) y Hx (SNo_minus_SNo y Hy) Hy (from right to left).
rewrite the current goal using add_SNo_minus_SNo_linv y Hy (from left to right).
rewrite the current goal using add_SNo_0R x Hx (from left to right).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Le1b3) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wx + y w + zx + y + - z w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw H1.
We will prove x + y + - z w.
rewrite the current goal using add_SNo_assoc x y (- z) Hx Hy (SNo_minus_SNo z Hz) (from left to right).
We will prove (x + y) + - z w.
Apply add_SNo_minus_Le1b (x + y) z w (SNo_add_SNo x y Hx Hy) Hz Hw to the current goal.
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Le12b3) The following is provable:
∀x y z w u v, SNo xSNo ySNo zSNo wSNo uSNo vx + y + v w + u + zx + y + - z w + u + - v
Proof:
Let x, y, z, w, u and v be given.
Assume Hx Hy Hz Hw Hu Hv.
Assume H1: x + y + v w + u + z.
We will prove x + y + - z w + u + - v.
We prove the intermediate claim Lmv: SNo (- v).
An exact proof term for the current goal is SNo_minus_SNo v Hv.
Apply add_SNo_minus_Le1b3 x y z (w + u + - v) Hx Hy Hz (SNo_add_SNo_3 w u (- v) Hw Hu Lmv) to the current goal.
We will prove x + y (w + u + - v) + z.
rewrite the current goal using add_SNo_assoc w u (- v) Hw Hu Lmv (from left to right).
We will prove x + y ((w + u) + - v) + z.
rewrite the current goal using add_SNo_com_3b_1_2 (w + u) (- v) z (SNo_add_SNo w u Hw Hu) Lmv Hz (from left to right).
We will prove x + y ((w + u) + z) + - v.
Apply add_SNo_minus_Le2b ((w + u) + z) v (x + y) (SNo_add_SNo (w + u) z (SNo_add_SNo w u Hw Hu) Hz) Hv (SNo_add_SNo x y Hx Hy) to the current goal.
We will prove (x + y) + v (w + u) + z.
rewrite the current goal using add_SNo_assoc x y v Hx Hy Hv (from right to left).
rewrite the current goal using add_SNo_assoc w u z Hw Hu Hz (from right to left).
An exact proof term for the current goal is H1.
End of Section SurrealAdd
Beginning of Section SurrealAbs
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Definition. We define abs_SNo to be λx ⇒ if 0 x then x else - x of type setset.
Theorem. (nonneg_abs_SNo) The following is provable:
∀x, 0 xabs_SNo x = x
Proof:
Let x be given.
Assume Hx.
An exact proof term for the current goal is If_i_1 (0 x) x (- x) Hx.
Theorem. (not_nonneg_abs_SNo) The following is provable:
∀x, ¬ (0 x)abs_SNo x = - x
Proof:
Let x be given.
Assume Hx.
An exact proof term for the current goal is If_i_0 (0 x) x (- x) Hx.
Theorem. (pos_abs_SNo) The following is provable:
∀x, 0 < xabs_SNo x = x
Proof:
Let x be given.
Assume Hx.
Apply nonneg_abs_SNo to the current goal.
We will prove 0 x.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hx.
Theorem. (neg_abs_SNo) The following is provable:
∀x, SNo xx < 0abs_SNo x = - x
Proof:
Let x be given.
Assume Hx1 Hx2.
Apply not_nonneg_abs_SNo to the current goal.
Assume H1: 0 x.
We will prove False.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
An exact proof term for the current goal is SNoLtLe_tra x 0 x Hx1 SNo_0 Hx1 Hx2 H1.
Theorem. (SNo_abs_SNo) The following is provable:
∀x, SNo xSNo (abs_SNo x)
Proof:
Let x be given.
Assume Hx.
Apply xm (0 x) to the current goal.
Assume H1.
rewrite the current goal using nonneg_abs_SNo x H1 (from left to right).
An exact proof term for the current goal is Hx.
Assume H1.
rewrite the current goal using not_nonneg_abs_SNo x H1 (from left to right).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hx.
Theorem. (abs_SNo_minus) The following is provable:
∀x, SNo xabs_SNo (- x) = abs_SNo x
Proof:
Let x be given.
Assume Hx.
Apply SNoLtLe_or x 0 Hx SNo_0 to the current goal.
Assume H1: x < 0.
rewrite the current goal using neg_abs_SNo x Hx H1 (from left to right).
We will prove abs_SNo (- x) = - x.
We prove the intermediate claim L1: 0 - x.
Apply SNoLtLe to the current goal.
We will prove 0 < - x.
Apply minus_SNo_Lt_contra2 x 0 Hx SNo_0 to the current goal.
We will prove x < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H1.
An exact proof term for the current goal is nonneg_abs_SNo (- x) L1.
Assume H1: 0 x.
Apply SNoLtLe_or (- x) 0 (SNo_minus_SNo x Hx) SNo_0 to the current goal.
Assume H2: - x < 0.
rewrite the current goal using nonneg_abs_SNo x H1 (from left to right).
rewrite the current goal using neg_abs_SNo (- x) (SNo_minus_SNo x Hx) H2 (from left to right).
We will prove - - x = x.
An exact proof term for the current goal is minus_SNo_invol x Hx.
Assume H2: 0 - x.
We prove the intermediate claim L2: x = 0.
Apply SNoLe_antisym x 0 Hx SNo_0 to the current goal.
We will prove x 0.
rewrite the current goal using minus_SNo_0 (from right to left).
rewrite the current goal using minus_SNo_invol x Hx (from right to left).
We will prove - - x - 0.
Apply minus_SNo_Le_contra 0 (- x) SNo_0 (SNo_minus_SNo x Hx) to the current goal.
We will prove 0 - x.
An exact proof term for the current goal is H2.
We will prove 0 x.
An exact proof term for the current goal is H1.
rewrite the current goal using L2 (from left to right).
Use f_equal.
An exact proof term for the current goal is minus_SNo_0.
Theorem. (abs_SNo_dist_swap) The following is provable:
∀x y, SNo xSNo yabs_SNo (x + - y) = abs_SNo (y + - x)
Proof:
Let x and y be given.
Assume Hx Hy.
We prove the intermediate claim Lmx: SNo (- x).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hx.
We prove the intermediate claim Lmy: SNo (- y).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hy.
We prove the intermediate claim Lymx: SNo (y + - x).
An exact proof term for the current goal is SNo_add_SNo y (- x) Hy Lmx.
Use transitivity with and abs_SNo (- (y + - x)).
Use f_equal.
We will prove x + - y = - (y + - x).
rewrite the current goal using minus_add_SNo_distr y (- x) Hy Lmx (from left to right).
We will prove x + - y = - y + - - x.
rewrite the current goal using minus_SNo_invol x Hx (from left to right).
We will prove x + - y = - y + x.
An exact proof term for the current goal is add_SNo_com x (- y) Hx Lmy.
An exact proof term for the current goal is abs_SNo_minus (y + - x) Lymx.
End of Section SurrealAbs
Beginning of Section SurrealMul
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Definition. We define mul_SNo to be SNo_rec2 (λx y m ⇒ SNoCut ({m (w 0) y + m x (w 1) + - m (w 0) (w 1)|wSNoL x SNoL y} {m (z 0) y + m x (z 1) + - m (z 0) (z 1)|zSNoR x SNoR y}) ({m (w 0) y + m x (w 1) + - m (w 0) (w 1)|wSNoL x SNoR y} {m (z 0) y + m x (z 1) + - m (z 0) (z 1)|zSNoR x SNoL y})) of type setsetset.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Theorem. (mul_SNo_eq) The following is provable:
∀x, SNo x∀y, SNo yx * y = SNoCut ({(w 0) * y + x * (w 1) + - (w 0) * (w 1)|wSNoL x SNoL y} {(z 0) * y + x * (z 1) + - (z 0) * (z 1)|zSNoR x SNoR y}) ({(w 0) * y + x * (w 1) + - (w 0) * (w 1)|wSNoL x SNoR y} {(z 0) * y + x * (z 1) + - (z 0) * (z 1)|zSNoR x SNoL y})
Proof:
Set F to be the term λx y m ⇒ SNoCut ({m (w 0) y + m x (w 1) + - m (w 0) (w 1)|wSNoL x SNoL y} {m (z 0) y + m x (z 1) + - m (z 0) (z 1)|zSNoR x SNoR y}) ({m (w 0) y + m x (w 1) + - m (w 0) (w 1)|wSNoL x SNoR y} {m (z 0) y + m x (z 1) + - m (z 0) (z 1)|zSNoR x SNoL y}) of type setset(setsetset)set.
We prove the intermediate claim L1: ∀x, SNo x∀y, SNo y∀g h : setsetset, (wSNoS_ (SNoLev x), ∀z, SNo zg w z = h w z)(zSNoS_ (SNoLev y), g x z = h x z)F x y g = F x y h.
Let x be given.
Assume Hx: SNo x.
Let y be given.
Assume Hy: SNo y.
Let g and h be given.
Assume Hgh1: wSNoS_ (SNoLev x), ∀z, SNo zg w z = h w z.
Assume Hgh2: zSNoS_ (SNoLev y), g x z = h x z.
We will prove F x y g = F x y h.
We prove the intermediate claim L1a: {g (w 0) y + g x (w 1) + - g (w 0) (w 1)|wSNoL x SNoL y} = {h (w 0) y + h x (w 1) + - h (w 0) (w 1)|wSNoL x SNoL y}.
Apply ReplEq_setprod_ext (SNoL x) (SNoL y) (λw0 w1 ⇒ g w0 y + g x w1 + - g w0 w1) (λw0 w1 ⇒ h w0 y + h x w1 + - h w0 w1) to the current goal.
We will prove w0SNoL x, w1SNoL y, g w0 y + g x w1 + - g w0 w1 = h w0 y + h x w1 + - h w0 w1.
Let w0 be given.
Assume Hw0: w0 SNoL x.
Let w1 be given.
Assume Hw1: w1 SNoL y.
We prove the intermediate claim Lw0: w0 SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoL_SNoS x Hx w0 Hw0.
We prove the intermediate claim Lw1: w1 SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoL_SNoS y Hy w1 Hw1.
We prove the intermediate claim Lw1b: SNo w1.
Apply SNoL_E y Hy w1 Hw1 to the current goal.
Assume H _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim L1aa: g w0 y = h w0 y.
Apply Hgh1 to the current goal.
An exact proof term for the current goal is Lw0.
An exact proof term for the current goal is Hy.
We prove the intermediate claim L1ab: g x w1 = h x w1.
Apply Hgh2 to the current goal.
An exact proof term for the current goal is Lw1.
We prove the intermediate claim L1ac: g w0 w1 = h w0 w1.
Apply Hgh1 to the current goal.
An exact proof term for the current goal is Lw0.
An exact proof term for the current goal is Lw1b.
rewrite the current goal using L1aa (from left to right).
rewrite the current goal using L1ab (from left to right).
rewrite the current goal using L1ac (from left to right).
Use reflexivity.
We prove the intermediate claim L1b: {g (z 0) y + g x (z 1) + - g (z 0) (z 1)|zSNoR x SNoR y} = {h (z 0) y + h x (z 1) + - h (z 0) (z 1)|zSNoR x SNoR y}.
Apply ReplEq_setprod_ext (SNoR x) (SNoR y) (λz0 z1 ⇒ g z0 y + g x z1 + - g z0 z1) (λz0 z1 ⇒ h z0 y + h x z1 + - h z0 z1) to the current goal.
We will prove z0SNoR x, z1SNoR y, g z0 y + g x z1 + - g z0 z1 = h z0 y + h x z1 + - h z0 z1.
Let z0 be given.
Assume Hz0: z0 SNoR x.
Let z1 be given.
Assume Hz1: z1 SNoR y.
We prove the intermediate claim Lz0: z0 SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoR_SNoS x Hx z0 Hz0.
We prove the intermediate claim Lz1: z1 SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoR_SNoS y Hy z1 Hz1.
We prove the intermediate claim Lz1b: SNo z1.
Apply SNoR_E y Hy z1 Hz1 to the current goal.
Assume H _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim L1ba: g z0 y = h z0 y.
Apply Hgh1 to the current goal.
An exact proof term for the current goal is Lz0.
An exact proof term for the current goal is Hy.
We prove the intermediate claim L1bb: g x z1 = h x z1.
Apply Hgh2 to the current goal.
An exact proof term for the current goal is Lz1.
We prove the intermediate claim L1bc: g z0 z1 = h z0 z1.
Apply Hgh1 to the current goal.
An exact proof term for the current goal is Lz0.
An exact proof term for the current goal is Lz1b.
rewrite the current goal using L1ba (from left to right).
rewrite the current goal using L1bb (from left to right).
rewrite the current goal using L1bc (from left to right).
Use reflexivity.
We prove the intermediate claim L1c: {g (w 0) y + g x (w 1) + - g (w 0) (w 1)|wSNoL x SNoR y} = {h (w 0) y + h x (w 1) + - h (w 0) (w 1)|wSNoL x SNoR y}.
Apply ReplEq_setprod_ext (SNoL x) (SNoR y) (λw0 w1 ⇒ g w0 y + g x w1 + - g w0 w1) (λw0 w1 ⇒ h w0 y + h x w1 + - h w0 w1) to the current goal.
We will prove w0SNoL x, w1SNoR y, g w0 y + g x w1 + - g w0 w1 = h w0 y + h x w1 + - h w0 w1.
Let w0 be given.
Assume Hw0: w0 SNoL x.
Let w1 be given.
Assume Hw1: w1 SNoR y.
We prove the intermediate claim Lw0: w0 SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoL_SNoS x Hx w0 Hw0.
We prove the intermediate claim Lw1: w1 SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoR_SNoS y Hy w1 Hw1.
We prove the intermediate claim Lw1b: SNo w1.
Apply SNoR_E y Hy w1 Hw1 to the current goal.
Assume H _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim L1ca: g w0 y = h w0 y.
Apply Hgh1 to the current goal.
An exact proof term for the current goal is Lw0.
An exact proof term for the current goal is Hy.
We prove the intermediate claim L1cb: g x w1 = h x w1.
Apply Hgh2 to the current goal.
An exact proof term for the current goal is Lw1.
We prove the intermediate claim L1cc: g w0 w1 = h w0 w1.
Apply Hgh1 to the current goal.
An exact proof term for the current goal is Lw0.
An exact proof term for the current goal is Lw1b.
rewrite the current goal using L1ca (from left to right).
rewrite the current goal using L1cb (from left to right).
rewrite the current goal using L1cc (from left to right).
Use reflexivity.
We prove the intermediate claim L1d: {g (z 0) y + g x (z 1) + - g (z 0) (z 1)|zSNoR x SNoL y} = {h (z 0) y + h x (z 1) + - h (z 0) (z 1)|zSNoR x SNoL y}.
Apply ReplEq_setprod_ext (SNoR x) (SNoL y) (λz0 z1 ⇒ g z0 y + g x z1 + - g z0 z1) (λz0 z1 ⇒ h z0 y + h x z1 + - h z0 z1) to the current goal.
We will prove z0SNoR x, z1SNoL y, g z0 y + g x z1 + - g z0 z1 = h z0 y + h x z1 + - h z0 z1.
Let z0 be given.
Assume Hz0: z0 SNoR x.
Let z1 be given.
Assume Hz1: z1 SNoL y.
We prove the intermediate claim Lz0: z0 SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoR_SNoS x Hx z0 Hz0.
We prove the intermediate claim Lz1: z1 SNoS_ (SNoLev y).
An exact proof term for the current goal is SNoL_SNoS y Hy z1 Hz1.
We prove the intermediate claim Lz1b: SNo z1.
Apply SNoL_E y Hy z1 Hz1 to the current goal.
Assume H _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim L1da: g z0 y = h z0 y.
Apply Hgh1 to the current goal.
An exact proof term for the current goal is Lz0.
An exact proof term for the current goal is Hy.
We prove the intermediate claim L1db: g x z1 = h x z1.
Apply Hgh2 to the current goal.
An exact proof term for the current goal is Lz1.
We prove the intermediate claim L1dc: g z0 z1 = h z0 z1.
Apply Hgh1 to the current goal.
An exact proof term for the current goal is Lz0.
An exact proof term for the current goal is Lz1b.
rewrite the current goal using L1da (from left to right).
rewrite the current goal using L1db (from left to right).
rewrite the current goal using L1dc (from left to right).
Use reflexivity.
We will prove SNoCut ({g (w 0) y + g x (w 1) + - g (w 0) (w 1)|wSNoL x SNoL y} {g (z 0) y + g x (z 1) + - g (z 0) (z 1)|zSNoR x SNoR y}) ({g (w 0) y + g x (w 1) + - g (w 0) (w 1)|wSNoL x SNoR y} {g (z 0) y + g x (z 1) + - g (z 0) (z 1)|zSNoR x SNoL y}) = SNoCut ({h (w 0) y + h x (w 1) + - h (w 0) (w 1)|wSNoL x SNoL y} {h (z 0) y + h x (z 1) + - h (z 0) (z 1)|zSNoR x SNoR y}) ({h (w 0) y + h x (w 1) + - h (w 0) (w 1)|wSNoL x SNoR y} {h (z 0) y + h x (z 1) + - h (z 0) (z 1)|zSNoR x SNoL y}).
rewrite the current goal using L1a (from left to right).
rewrite the current goal using L1b (from left to right).
rewrite the current goal using L1c (from left to right).
rewrite the current goal using L1d (from left to right).
Use reflexivity.
An exact proof term for the current goal is SNo_rec2_eq F L1.
Theorem. (mul_SNo_eq_2) The following is provable:
∀x y, SNo xSNo y∀p : prop, (∀L R, (∀u, u L(∀q : prop, (w0SNoL x, w1SNoL y, u = w0 * y + x * w1 + - w0 * w1q)(z0SNoR x, z1SNoR y, u = z0 * y + x * z1 + - z0 * z1q)q))(w0SNoL x, w1SNoL y, w0 * y + x * w1 + - w0 * w1 L)(z0SNoR x, z1SNoR y, z0 * y + x * z1 + - z0 * z1 L)(∀u, u R(∀q : prop, (w0SNoL x, z1SNoR y, u = w0 * y + x * z1 + - w0 * z1q)(z0SNoR x, w1SNoL y, u = z0 * y + x * w1 + - z0 * w1q)q))(w0SNoL x, z1SNoR y, w0 * y + x * z1 + - w0 * z1 R)(z0SNoR x, w1SNoL y, z0 * y + x * w1 + - z0 * w1 R)x * y = SNoCut L Rp)p
Proof:
Let x and y be given.
Assume Hx Hy.
Let p be given.
Assume Hp.
We will prove p.
Set Lxy1 to be the term {(w 0) * y + x * (w 1) + - (w 0) * (w 1)|wSNoL x SNoL y}.
Set Lxy2 to be the term {(z 0) * y + x * (z 1) + - (z 0) * (z 1)|zSNoR x SNoR y}.
Set Rxy1 to be the term {(w 0) * y + x * (w 1) + - (w 0) * (w 1)|wSNoL x SNoR y}.
Set Rxy2 to be the term {(z 0) * y + x * (z 1) + - (z 0) * (z 1)|zSNoR x SNoL y}.
Apply Hp (Lxy1 Lxy2) (Rxy1 Rxy2) to the current goal.
Let u be given.
Assume Hu.
Let q be given.
Assume Hq1: w0SNoL x, w1SNoL y, u = w0 * y + x * w1 + - w0 * w1q.
Assume Hq2: z0SNoR x, z1SNoR y, u = z0 * y + x * z1 + - z0 * z1q.
Apply binunionE Lxy1 Lxy2 u Hu to the current goal.
Assume Hu1: u Lxy1.
Apply ReplE_impred (SNoL x SNoL y) (λw ⇒ (w 0) * y + x * (w 1) + - (w 0) * (w 1)) u Hu1 to the current goal.
Let w be given.
Assume Hw: w SNoL x SNoL y.
Assume Hw2: u = (w 0) * y + x * (w 1) + - (w 0) * (w 1).
An exact proof term for the current goal is Hq1 (w 0) (ap0_Sigma (SNoL x) (λ_ ⇒ SNoL y) w Hw) (w 1) (ap1_Sigma (SNoL x) (λ_ ⇒ SNoL y) w Hw) Hw2.
Assume Hu2: u Lxy2.
Apply ReplE_impred (SNoR x SNoR y) (λz ⇒ (z 0) * y + x * (z 1) + - (z 0) * (z 1)) u Hu2 to the current goal.
Let z be given.
Assume Hz: z SNoR x SNoR y.
Assume Hz2: u = (z 0) * y + x * (z 1) + - (z 0) * (z 1).
An exact proof term for the current goal is Hq2 (z 0) (ap0_Sigma (SNoR x) (λ_ ⇒ SNoR y) z Hz) (z 1) (ap1_Sigma (SNoR x) (λ_ ⇒ SNoR y) z Hz) Hz2.
Let w0 be given.
Assume Hw0: w0 SNoL x.
Let w1 be given.
Assume Hw1: w1 SNoL y.
We will prove w0 * y + x * w1 + - w0 * w1 Lxy1 Lxy2.
Apply binunionI1 to the current goal.
We will prove w0 * y + x * w1 + - w0 * w1 Lxy1.
Apply tuple_2_0_eq w0 w1 (λu v ⇒ u * y + x * w1 + - u * w1 Lxy1) to the current goal.
We will prove (w0,w1) 0 * y + x * w1 + - (w0,w1) 0 * w1 Lxy1.
Apply tuple_2_1_eq w0 w1 (λu v ⇒ (w0,w1) 0 * y + x * u + - (w0,w1) 0 * u Lxy1) to the current goal.
We will prove (w0,w1) 0 * y + x * (w0,w1) 1 + - (w0,w1) 0 * (w0,w1) 1 Lxy1.
Apply ReplI (SNoL x SNoL y) (λw ⇒ (w 0) * y + x * (w 1) + - (w 0) * (w 1)) (w0,w1) to the current goal.
We will prove (w0,w1) SNoL x SNoL y.
Apply tuple_2_setprod to the current goal.
An exact proof term for the current goal is Hw0.
An exact proof term for the current goal is Hw1.
Let z0 be given.
Assume Hz0: z0 SNoR x.
Let z1 be given.
Assume Hz1: z1 SNoR y.
We will prove z0 * y + x * z1 + - z0 * z1 Lxy1 Lxy2.
Apply binunionI2 to the current goal.
We will prove z0 * y + x * z1 + - z0 * z1 Lxy2.
Apply tuple_2_0_eq z0 z1 (λu v ⇒ u * y + x * z1 + - u * z1 Lxy2) to the current goal.
We will prove (z0,z1) 0 * y + x * z1 + - (z0,z1) 0 * z1 Lxy2.
Apply tuple_2_1_eq z0 z1 (λu v ⇒ (z0,z1) 0 * y + x * u + - (z0,z1) 0 * u Lxy2) to the current goal.
We will prove (z0,z1) 0 * y + x * (z0,z1) 1 + - (z0,z1) 0 * (z0,z1) 1 Lxy2.
Apply ReplI (SNoR x SNoR y) (λz ⇒ (z 0) * y + x * (z 1) + - (z 0) * (z 1)) (z0,z1) to the current goal.
We will prove (z0,z1) SNoR x SNoR y.
Apply tuple_2_setprod to the current goal.
An exact proof term for the current goal is Hz0.
An exact proof term for the current goal is Hz1.
Let u be given.
Assume Hu.
Let q be given.
Assume Hq1 Hq2.
Apply binunionE Rxy1 Rxy2 u Hu to the current goal.
Assume Hu1: u Rxy1.
Apply ReplE_impred (SNoL x SNoR y) (λw ⇒ (w 0) * y + x * (w 1) + - (w 0) * (w 1)) u Hu1 to the current goal.
Let w be given.
Assume Hw: w SNoL x SNoR y.
Assume Hw2: u = (w 0) * y + x * (w 1) + - (w 0) * (w 1).
An exact proof term for the current goal is Hq1 (w 0) (ap0_Sigma (SNoL x) (λ_ ⇒ SNoR y) w Hw) (w 1) (ap1_Sigma (SNoL x) (λ_ ⇒ SNoR y) w Hw) Hw2.
Assume Hu2: u Rxy2.
Apply ReplE_impred (SNoR x SNoL y) (λz ⇒ (z 0) * y + x * (z 1) + - (z 0) * (z 1)) u Hu2 to the current goal.
Let z be given.
Assume Hz: z SNoR x SNoL y.
Assume Hz2: u = (z 0) * y + x * (z 1) + - (z 0) * (z 1).
An exact proof term for the current goal is Hq2 (z 0) (ap0_Sigma (SNoR x) (λ_ ⇒ SNoL y) z Hz) (z 1) (ap1_Sigma (SNoR x) (λ_ ⇒ SNoL y) z Hz) Hz2.
Let w0 be given.
Assume Hw0: w0 SNoL x.
Let z1 be given.
Assume Hz1: z1 SNoR y.
We will prove w0 * y + x * z1 + - w0 * z1 Rxy1 Rxy2.
Apply binunionI1 to the current goal.
We will prove w0 * y + x * z1 + - w0 * z1 Rxy1.
Apply tuple_2_0_eq w0 z1 (λu v ⇒ u * y + x * z1 + - u * z1 Rxy1) to the current goal.
We will prove (w0,z1) 0 * y + x * z1 + - (w0,z1) 0 * z1 Rxy1.
Apply tuple_2_1_eq w0 z1 (λu v ⇒ (w0,z1) 0 * y + x * u + - (w0,z1) 0 * u Rxy1) to the current goal.
We will prove (w0,z1) 0 * y + x * (w0,z1) 1 + - (w0,z1) 0 * (w0,z1) 1 Rxy1.
Apply ReplI (SNoL x SNoR y) (λw ⇒ (w 0) * y + x * (w 1) + - (w 0) * (w 1)) (w0,z1) to the current goal.
We will prove (w0,z1) SNoL x SNoR y.
Apply tuple_2_setprod to the current goal.
An exact proof term for the current goal is Hw0.
An exact proof term for the current goal is Hz1.
Let z0 be given.
Assume Hz0: z0 SNoR x.
Let w1 be given.
Assume Hw1: w1 SNoL y.
We will prove z0 * y + x * w1 + - z0 * w1 Rxy1 Rxy2.
Apply binunionI2 to the current goal.
We will prove z0 * y + x * w1 + - z0 * w1 Rxy2.
Apply tuple_2_0_eq z0 w1 (λu v ⇒ u * y + x * w1 + - u * w1 Rxy2) to the current goal.
We will prove (z0,w1) 0 * y + x * w1 + - (z0,w1) 0 * w1 Rxy2.
Apply tuple_2_1_eq z0 w1 (λu v ⇒ (z0,w1) 0 * y + x * u + - (z0,w1) 0 * u Rxy2) to the current goal.
We will prove (z0,w1) 0 * y + x * (z0,w1) 1 + - (z0,w1) 0 * (z0,w1) 1 Rxy2.
Apply ReplI (SNoR x SNoL y) (λw ⇒ (w 0) * y + x * (w 1) + - (w 0) * (w 1)) (z0,w1) to the current goal.
We will prove (z0,w1) SNoR x SNoL y.
Apply tuple_2_setprod to the current goal.
An exact proof term for the current goal is Hz0.
An exact proof term for the current goal is Hw1.
An exact proof term for the current goal is mul_SNo_eq x Hx y Hy.
Theorem. (mul_SNo_prop_1) The following is provable:
∀x, SNo x∀y, SNo y∀p : prop, (SNo (x * y)(uSNoL x, vSNoL y, u * y + x * v < x * y + u * v)(uSNoR x, vSNoR y, u * y + x * v < x * y + u * v)(uSNoL x, vSNoR y, x * y + u * v < u * y + x * v)(uSNoR x, vSNoL y, x * y + u * v < u * y + x * v)p)p
Proof:
Set P to be the term λx ⇒ ∀y, SNo y∀p : prop, (SNo (x * y)(uSNoL x, vSNoL y, u * y + x * v < x * y + u * v)(uSNoR x, vSNoR y, u * y + x * v < x * y + u * v)(uSNoL x, vSNoR y, x * y + u * v < u * y + x * v)(uSNoR x, vSNoL y, x * y + u * v < u * y + x * v)p)p of type setprop.
We will prove ∀x, SNo xP x.
Apply SNoLev_ind to the current goal.
Let x be given.
Assume Hx: SNo x.
Assume IHx: wSNoS_ (SNoLev x), P w.
Set Q to be the term λy ⇒ ∀p : prop, (SNo (x * y)(uSNoL x, vSNoL y, u * y + x * v < x * y + u * v)(uSNoR x, vSNoR y, u * y + x * v < x * y + u * v)(uSNoL x, vSNoR y, x * y + u * v < u * y + x * v)(uSNoR x, vSNoL y, x * y + u * v < u * y + x * v)p)p of type setprop.
We will prove ∀y, SNo yQ y.
Apply SNoLev_ind to the current goal.
Let y be given.
Assume Hy: SNo y.
Assume IHy: zSNoS_ (SNoLev y), Q z.
Apply mul_SNo_eq_2 x y Hx Hy to the current goal.
Let L and R be given.
Assume HLE HLI1 HLI2 HRE HRI1 HRI2 Hxy.
We prove the intermediate claim LLx: uSNoL x, ∀v, SNo vSNo (u * v).
Let u be given.
Assume Hu.
Let v be given.
Assume Hv.
Apply IHx u (SNoL_SNoS x Hx u Hu) v Hv to the current goal.
Assume H1 _ _ _ _.
An exact proof term for the current goal is H1.
We prove the intermediate claim LRx: uSNoR x, ∀v, SNo vSNo (u * v).
Let u be given.
Assume Hu.
Let v be given.
Assume Hv.
Apply IHx u (SNoR_SNoS x Hx u Hu) v Hv to the current goal.
Assume H1 _ _ _ _.
An exact proof term for the current goal is H1.
We prove the intermediate claim LLxy: uSNoL x, SNo (u * y).
Let u be given.
Assume Hu.
An exact proof term for the current goal is LLx u Hu y Hy.
We prove the intermediate claim LRxy: uSNoR x, SNo (u * y).
Let u be given.
Assume Hu.
An exact proof term for the current goal is LRx u Hu y Hy.
We prove the intermediate claim LxLy: vSNoL y, SNo (x * v).
Let v be given.
Assume Hv.
Apply IHy v (SNoL_SNoS y Hy v Hv) to the current goal.
Assume H1 _ _ _ _.
An exact proof term for the current goal is H1.
We prove the intermediate claim LxRy: vSNoR y, SNo (x * v).
Let v be given.
Assume Hv.
Apply IHy v (SNoR_SNoS y Hy v Hv) to the current goal.
Assume H1 _ _ _ _.
An exact proof term for the current goal is H1.
We prove the intermediate claim LLR1: SNoCutP L R.
We will prove (xL, SNo x) (yR, SNo y) (xL, yR, x < y).
Apply and3I to the current goal.
Let u be given.
Assume Hu.
Apply HLE u Hu to the current goal.
Let w0 be given.
Assume Hw0.
Let w1 be given.
Assume Hw1 Huw.
Apply SNoL_E y Hy w1 Hw1 to the current goal.
Assume Hw1a _ _.
We will prove SNo u.
rewrite the current goal using Huw (from left to right).
We will prove SNo (w0 * y + x * w1 + - w0 * w1).
Apply SNo_add_SNo to the current goal.
We will prove SNo (w0 * y).
An exact proof term for the current goal is LLxy w0 Hw0.
We will prove SNo (x * w1 + - w0 * w1).
Apply SNo_add_SNo to the current goal.
We will prove SNo (x * w1).
An exact proof term for the current goal is LxLy w1 Hw1.
We will prove SNo (- w0 * w1).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is LLx w0 Hw0 w1 Hw1a.
Let z0 be given.
Assume Hz0.
Let z1 be given.
Assume Hz1 Huz.
Apply SNoR_E y Hy z1 Hz1 to the current goal.
Assume Hz1a _ _.
We will prove SNo u.
rewrite the current goal using Huz (from left to right).
We will prove SNo (z0 * y + x * z1 + - z0 * z1).
Apply SNo_add_SNo to the current goal.
We will prove SNo (z0 * y).
An exact proof term for the current goal is LRxy z0 Hz0.
We will prove SNo (x * z1 + - z0 * z1).
Apply SNo_add_SNo to the current goal.
We will prove SNo (x * z1).
An exact proof term for the current goal is LxRy z1 Hz1.
We will prove SNo (- z0 * z1).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is LRx z0 Hz0 z1 Hz1a.
Let u be given.
Assume Hu.
Apply HRE u Hu to the current goal.
Let w0 be given.
Assume Hw0.
Let z1 be given.
Assume Hz1 Huw.
Apply SNoR_E y Hy z1 Hz1 to the current goal.
Assume Hz1a _ _.
We will prove SNo u.
rewrite the current goal using Huw (from left to right).
We will prove SNo (w0 * y + x * z1 + - w0 * z1).
Apply SNo_add_SNo to the current goal.
We will prove SNo (w0 * y).
An exact proof term for the current goal is LLxy w0 Hw0.
We will prove SNo (x * z1 + - w0 * z1).
Apply SNo_add_SNo to the current goal.
We will prove SNo (x * z1).
An exact proof term for the current goal is LxRy z1 Hz1.
We will prove SNo (- w0 * z1).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is LLx w0 Hw0 z1 Hz1a.
Let z0 be given.
Assume Hz0.
Let w1 be given.
Assume Hw1 Huz.
Apply SNoL_E y Hy w1 Hw1 to the current goal.
Assume Hw1a _ _.
We will prove SNo u.
rewrite the current goal using Huz (from left to right).
We will prove SNo (z0 * y + x * w1 + - z0 * w1).
Apply SNo_add_SNo to the current goal.
We will prove SNo (z0 * y).
An exact proof term for the current goal is LRxy z0 Hz0.
We will prove SNo (x * w1 + - z0 * w1).
Apply SNo_add_SNo to the current goal.
We will prove SNo (x * w1).
An exact proof term for the current goal is LxLy w1 Hw1.
We will prove SNo (- z0 * w1).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is LRx z0 Hz0 w1 Hw1a.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv.
We prove the intermediate claim Luvimp: u0 v0SNoS_ (SNoLev x), u1 v1SNoS_ (SNoLev y), ∀p : prop, (SNo (u0 * y)SNo (x * u1)SNo (u0 * u1)SNo (v0 * y)SNo (x * v1)SNo (v0 * v1)SNo (u0 * v1)SNo (v0 * u1)(u = u0 * y + x * u1 + - u0 * u1v = v0 * y + x * v1 + - v0 * v1u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1u < v)p)p.
Let u0 be given.
Assume Hu0.
Let v0 be given.
Assume Hv0.
Let u1 be given.
Assume Hu1.
Let v1 be given.
Assume Hv1.
Apply SNoS_E2 (SNoLev y) (SNoLev_ordinal y Hy) u1 Hu1 to the current goal.
Assume Hu1a: SNoLev u1 SNoLev y.
Assume Hu1b: ordinal (SNoLev u1).
Assume Hu1c: SNo u1.
Assume _.
Apply SNoS_E2 (SNoLev y) (SNoLev_ordinal y Hy) v1 Hv1 to the current goal.
Assume Hv1a: SNoLev v1 SNoLev y.
Assume Hv1b: ordinal (SNoLev v1).
Assume Hv1c: SNo v1.
Assume _.
We prove the intermediate claim Lu0u1: SNo (u0 * u1).
Apply IHx u0 Hu0 u1 Hu1c to the current goal.
Assume IHx0 _ _ _ _.
An exact proof term for the current goal is IHx0.
We prove the intermediate claim Lv0v1: SNo (v0 * v1).
Apply IHx v0 Hv0 v1 Hv1c to the current goal.
Assume IHx0 _ _ _ _.
An exact proof term for the current goal is IHx0.
We prove the intermediate claim Lu0y: SNo (u0 * y).
Apply IHx u0 Hu0 y Hy to the current goal.
Assume H _ _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lxu1: SNo (x * u1).
Apply IHy u1 Hu1 to the current goal.
Assume H _ _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lv0y: SNo (v0 * y).
Apply IHx v0 Hv0 y Hy to the current goal.
Assume H _ _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lxv1: SNo (x * v1).
Apply IHy v1 Hv1 to the current goal.
Assume H _ _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lu0v1: SNo (u0 * v1).
Apply IHx u0 Hu0 v1 Hv1c to the current goal.
Assume IHx0 _ _ _ _.
An exact proof term for the current goal is IHx0.
We prove the intermediate claim Lv0u1: SNo (v0 * u1).
Apply IHx v0 Hv0 u1 Hu1c to the current goal.
Assume IHx0 _ _ _ _.
An exact proof term for the current goal is IHx0.
Let p be given.
Assume Hp.
Apply Hp Lu0y Lxu1 Lu0u1 Lv0y Lxv1 Lv0v1 Lu0v1 Lv0u1 to the current goal.
Assume Hue Hve H1.
We will prove u < v.
rewrite the current goal using Hue (from left to right).
rewrite the current goal using Hve (from left to right).
Apply add_SNo_Lt1_cancel (u0 * y + x * u1 + - u0 * u1) (u0 * u1 + v0 * v1) (v0 * y + x * v1 + - v0 * v1) (SNo_add_SNo (u0 * y) (x * u1 + - u0 * u1) Lu0y (SNo_add_SNo (x * u1) (- u0 * u1) Lxu1 (SNo_minus_SNo (u0 * u1) Lu0u1))) (SNo_add_SNo (u0 * u1) (v0 * v1) Lu0u1 Lv0v1) (SNo_add_SNo (v0 * y) (x * v1 + - v0 * v1) Lv0y (SNo_add_SNo (x * v1) (- v0 * v1) Lxv1 (SNo_minus_SNo (v0 * v1) Lv0v1))) to the current goal.
We prove the intermediate claim L1: (u0 * y + x * u1 + - u0 * u1) + (u0 * u1 + v0 * v1) = u0 * y + x * u1 + v0 * v1.
An exact proof term for the current goal is add_SNo_minus_SNo_prop5 (u0 * y) (x * u1) (u0 * u1) (v0 * v1) Lu0y Lxu1 Lu0u1 Lv0v1.
We prove the intermediate claim L2: (v0 * y + x * v1 + - v0 * v1) + (u0 * u1 + v0 * v1) = v0 * y + x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com (u0 * u1) (v0 * v1) Lu0u1 Lv0v1 (from left to right).
An exact proof term for the current goal is add_SNo_minus_SNo_prop5 (v0 * y) (x * v1) (v0 * v1) (u0 * u1) Lv0y Lxv1 Lv0v1 Lu0u1.
rewrite the current goal using L1 (from left to right).
rewrite the current goal using L2 (from left to right).
An exact proof term for the current goal is H1.
Apply HLE u Hu to the current goal.
Let u0 be given.
Assume Hu0.
Let u1 be given.
Assume Hu1 Hue.
Apply SNoL_E x Hx u0 Hu0 to the current goal.
Assume Hu0a: SNo u0.
Assume Hu0b: SNoLev u0 SNoLev x.
Assume Hu0c: u0 < x.
Apply SNoL_E y Hy u1 Hu1 to the current goal.
Assume Hu1a: SNo u1.
Assume Hu1b: SNoLev u1 SNoLev y.
Assume Hu1c: u1 < y.
Apply HRE v Hv to the current goal.
Let v0 be given.
Assume Hv0.
Let v1 be given.
Assume Hv1 Hve.
Apply SNoL_E x Hx v0 Hv0 to the current goal.
Assume Hv0a: SNo v0.
Assume Hv0b: SNoLev v0 SNoLev x.
Assume Hv0c: v0 < x.
Apply SNoR_E y Hy v1 Hv1 to the current goal.
Assume Hv1a: SNo v1.
Assume Hv1b: SNoLev v1 SNoLev y.
Assume Hv1c: y < v1.
Apply Luvimp u0 (SNoL_SNoS x Hx u0 Hu0) v0 (SNoL_SNoS x Hx v0 Hv0) u1 (SNoL_SNoS y Hy u1 Hu1) v1 (SNoR_SNoS y Hy v1 Hv1) to the current goal.
Assume Lu0y Lxu1 Lu0u1 Lv0y Lxv1 Lv0v1 Lu0v1 Lv0u1 Luv.
Apply Luv Hue Hve to the current goal.
We will prove u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
We prove the intermediate claim Lu1v1lt: u1 < v1.
An exact proof term for the current goal is SNoLt_tra u1 y v1 Hu1a Hy Hv1a Hu1c Hv1c.
We prove the intermediate claim L3: zSNoL x, x * u1 + z * v1 < z * u1 + x * v1.
Let z be given.
Assume Hz.
We prove the intermediate claim Lzu1: SNo (z * u1).
An exact proof term for the current goal is LLx z Hz u1 Hu1a.
We prove the intermediate claim Lzv1: SNo (z * v1).
An exact proof term for the current goal is LLx z Hz v1 Hv1a.
Apply SNoLt_SNoL_or_SNoR_impred u1 v1 Hu1a Hv1a Lu1v1lt to the current goal.
Let w be given.
Assume Hwv1: w SNoL v1.
Assume Hwu1: w SNoR u1.
Apply SNoR_E u1 Hu1a w Hwu1 to the current goal.
Assume Hwu1a: SNo w.
Assume Hwu1b: SNoLev w SNoLev u1.
Assume Hwu1c: u1 < w.
We prove the intermediate claim LwSy: w SNoS_ (SNoLev y).
Apply SNoS_I2 w y Hwu1a Hy to the current goal.
We will prove SNoLev w SNoLev y.
An exact proof term for the current goal is ordinal_TransSet (SNoLev y) (SNoLev_ordinal y Hy) (SNoLev u1) Hu1b (SNoLev w) Hwu1b.
We prove the intermediate claim Lzw: SNo (z * w).
An exact proof term for the current goal is LLx z Hz w Hwu1a.
We prove the intermediate claim Lxw: SNo (x * w).
Apply IHy w LwSy to the current goal.
Assume H1 _ _ _ _.
An exact proof term for the current goal is H1.
We prove the intermediate claim L3a: z * v1 + x * w < x * v1 + z * w.
Apply IHy v1 (SNoR_SNoS y Hy v1 Hv1) to the current goal.
Assume _ IHy1 _ _ _.
An exact proof term for the current goal is IHy1 z Hz w Hwv1.
We prove the intermediate claim L3b: x * u1 + z * w < z * u1 + x * w.
Apply IHy u1 (SNoL_SNoS y Hy u1 Hu1) to the current goal.
Assume _ _ _ IHy3 _.
An exact proof term for the current goal is IHy3 z Hz w Hwu1.
An exact proof term for the current goal is add_SNo_Lt_subprop2 (x * u1) (z * v1) (z * u1) (x * v1) (z * w) (x * w) Lxu1 Lzv1 Lzu1 Lxv1 Lzw Lxw L3b L3a.
Assume Hu1v1: u1 SNoL v1.
Apply IHy v1 (SNoR_SNoS y Hy v1 Hv1) to the current goal.
Assume _ IHy1 _ _ _.
rewrite the current goal using add_SNo_com (x * u1) (z * v1) Lxu1 Lzv1 (from left to right).
rewrite the current goal using add_SNo_com (z * u1) (x * v1) Lzu1 Lxv1 (from left to right).
We will prove z * v1 + x * u1 < x * v1 + z * u1.
An exact proof term for the current goal is IHy1 z Hz u1 Hu1v1.
Assume Hv1u1: v1 SNoR u1.
Apply IHy u1 (SNoL_SNoS y Hy u1 Hu1) to the current goal.
Assume _ _ _ IHy3 _.
An exact proof term for the current goal is IHy3 z Hz v1 Hv1u1.
We prove the intermediate claim L3u0: x * u1 + u0 * v1 < u0 * u1 + x * v1.
An exact proof term for the current goal is L3 u0 Hu0.
We prove the intermediate claim L3v0: x * u1 + v0 * v1 < v0 * u1 + x * v1.
An exact proof term for the current goal is L3 v0 Hv0.
We prove the intermediate claim L3u0imp: u0 * y + v0 * v1 < v0 * y + u0 * v1u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
Assume H1.
Apply add_SNo_Lt_subprop3a (u0 * y) (x * u1) (v0 * v1) (v0 * y) (x * v1 + u0 * u1) (u0 * v1) Lu0y Lxu1 Lv0v1 Lv0y (SNo_add_SNo (x * v1) (u0 * u1) Lxv1 Lu0u1) Lu0v1 H1 to the current goal.
We will prove x * u1 + u0 * v1 < x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com (x * v1) (u0 * u1) Lxv1 Lu0u1 (from left to right).
An exact proof term for the current goal is L3u0.
We prove the intermediate claim L3v0imp: u0 * y + v0 * u1 < v0 * y + u0 * u1u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
Assume H1.
Apply add_SNo_Lt_subprop3b (u0 * y) (x * u1 + v0 * v1) (v0 * y) (x * v1) (u0 * u1) (v0 * u1) Lu0y (SNo_add_SNo (x * u1) (v0 * v1) Lxu1 Lv0v1) Lv0y Lxv1 Lu0u1 Lv0u1 to the current goal.
We will prove u0 * y + v0 * u1 < v0 * y + u0 * u1.
An exact proof term for the current goal is H1.
We will prove x * u1 + v0 * v1 < v0 * u1 + x * v1.
An exact proof term for the current goal is L3v0.
Apply SNoL_or_SNoR_impred v0 u0 Hv0a Hu0a to the current goal.
Assume Hv0u0: v0 = u0.
rewrite the current goal using Hv0u0 (from left to right).
We will prove u0 * y + (x * u1 + u0 * v1) < u0 * y + (x * v1 + u0 * u1).
Apply add_SNo_Lt2 (u0 * y) (x * u1 + u0 * v1) (x * v1 + u0 * u1) Lu0y (SNo_add_SNo (x * u1) (u0 * v1) Lxu1 Lu0v1) (SNo_add_SNo (x * v1) (u0 * u1) Lxv1 Lu0u1) to the current goal.
We will prove x * u1 + u0 * v1 < x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com (x * v1) (u0 * u1) Lxv1 Lu0u1 (from left to right).
An exact proof term for the current goal is L3u0.
Let z be given.
Assume Hzu0: z SNoL u0.
Assume Hzv0: z SNoR v0.
We prove the intermediate claim L4: u0 * y + z * v1 < z * y + u0 * v1.
Apply IHx u0 (SNoL_SNoS x Hx u0 Hu0) y Hy to the current goal.
Assume _ _ _ IHx3 _.
An exact proof term for the current goal is IHx3 z Hzu0 v1 Hv1.
We prove the intermediate claim L5: z * y + v0 * v1 < v0 * y + z * v1.
Apply IHx v0 (SNoL_SNoS x Hx v0 Hv0) y Hy to the current goal.
Assume _ _ IHx2 _ _.
An exact proof term for the current goal is IHx2 z Hzv0 v1 Hv1.
We prove the intermediate claim Lz: z SNoL x.
Apply SNoL_E u0 Hu0a z Hzu0 to the current goal.
Assume Hza: SNo z.
Assume Hzb: SNoLev z SNoLev u0.
Assume Hzc: z < u0.
Apply SNoL_I x Hx z Hza to the current goal.
We will prove SNoLev z SNoLev x.
An exact proof term for the current goal is ordinal_TransSet (SNoLev x) (SNoLev_ordinal x Hx) (SNoLev u0) Hu0b (SNoLev z) Hzb.
We will prove z < x.
An exact proof term for the current goal is SNoLt_tra z u0 x Hza Hu0a Hx Hzc Hu0c.
Apply add_SNo_Lt_subprop3c (u0 * y) (x * u1) (v0 * v1) (v0 * y) (x * v1 + u0 * u1) (z * v1) (z * y) (u0 * v1) Lu0y Lxu1 Lv0v1 Lv0y (SNo_add_SNo (x * v1) (u0 * u1) Lxv1 Lu0u1) (LLx z Lz v1 Hv1a) (LLxy z Lz) Lu0v1 to the current goal.
An exact proof term for the current goal is L4.
rewrite the current goal using add_SNo_com (x * v1) (u0 * u1) Lxv1 Lu0u1 (from left to right).
An exact proof term for the current goal is L3u0.
An exact proof term for the current goal is L5.
Assume Hv0u0: v0 SNoL u0.
Apply L3u0imp to the current goal.
We will prove u0 * y + v0 * v1 < v0 * y + u0 * v1.
Apply IHx u0 (SNoL_SNoS x Hx u0 Hu0) y Hy to the current goal.
Assume _ _ _ IHx3 _.
An exact proof term for the current goal is IHx3 v0 Hv0u0 v1 Hv1.
Assume Hu0v0: u0 SNoR v0.
Apply L3u0imp to the current goal.
We will prove u0 * y + v0 * v1 < v0 * y + u0 * v1.
Apply IHx v0 (SNoL_SNoS x Hx v0 Hv0) y Hy to the current goal.
Assume _ _ IHx2 _ _.
An exact proof term for the current goal is IHx2 u0 Hu0v0 v1 Hv1.
Let z be given.
Assume Hzu0: z SNoR u0.
Assume Hzv0: z SNoL v0.
We prove the intermediate claim L6: z * y + v0 * u1 < v0 * y + z * u1.
Apply IHx v0 (SNoL_SNoS x Hx v0 Hv0) y Hy to the current goal.
Assume _ IHx1 _ _ _.
An exact proof term for the current goal is IHx1 z Hzv0 u1 Hu1.
We prove the intermediate claim L7: u0 * y + z * u1 < z * y + u0 * u1.
Apply IHx u0 (SNoL_SNoS x Hx u0 Hu0) y Hy to the current goal.
Assume _ _ _ _ IHx4.
An exact proof term for the current goal is IHx4 z Hzu0 u1 Hu1.
We prove the intermediate claim Lz: z SNoL x.
Apply SNoL_E v0 Hv0a z Hzv0 to the current goal.
Assume Hza: SNo z.
Assume Hzb: SNoLev z SNoLev v0.
Assume Hzc: z < v0.
Apply SNoL_I x Hx z Hza to the current goal.
We will prove SNoLev z SNoLev x.
An exact proof term for the current goal is ordinal_TransSet (SNoLev x) (SNoLev_ordinal x Hx) (SNoLev v0) Hv0b (SNoLev z) Hzb.
We will prove z < x.
An exact proof term for the current goal is SNoLt_tra z v0 x Hza Hv0a Hx Hzc Hv0c.
An exact proof term for the current goal is add_SNo_Lt_subprop3d (u0 * y) (x * u1 + v0 * v1) (v0 * y) (x * v1) (u0 * u1) (z * u1) (z * y) (v0 * u1) Lu0y (SNo_add_SNo (x * u1) (v0 * v1) Lxu1 Lv0v1) Lv0y Lxv1 Lu0u1 (LLx z Lz u1 Hu1a) (LLxy z Lz) Lv0u1 L7 L3v0 L6.
Assume Hv0u0: v0 SNoR u0.
Apply L3v0imp to the current goal.
We will prove u0 * y + v0 * u1 < v0 * y + u0 * u1.
Apply IHx u0 (SNoL_SNoS x Hx u0 Hu0) y Hy to the current goal.
Assume _ _ _ _ IHx4.
An exact proof term for the current goal is IHx4 v0 Hv0u0 u1 Hu1.
Assume Hu0v0: u0 SNoL v0.
Apply L3v0imp to the current goal.
We will prove u0 * y + v0 * u1 < v0 * y + u0 * u1.
Apply IHx v0 (SNoL_SNoS x Hx v0 Hv0) y Hy to the current goal.
Assume _ IHx1 _ _ _.
An exact proof term for the current goal is IHx1 u0 Hu0v0 u1 Hu1.
Let v0 be given.
Assume Hv0.
Let v1 be given.
Assume Hv1 Hve.
Apply SNoR_E x Hx v0 Hv0 to the current goal.
Assume Hv0a: SNo v0.
Assume Hv0b: SNoLev v0 SNoLev x.
Assume Hv0c: x < v0.
Apply SNoL_E y Hy v1 Hv1 to the current goal.
Assume Hv1a: SNo v1.
Assume Hv1b: SNoLev v1 SNoLev y.
Assume Hv1c: v1 < y.
Apply Luvimp u0 (SNoL_SNoS x Hx u0 Hu0) v0 (SNoR_SNoS x Hx v0 Hv0) u1 (SNoL_SNoS y Hy u1 Hu1) v1 (SNoL_SNoS y Hy v1 Hv1) to the current goal.
Assume Lu0y Lxu1 Lu0u1 Lv0y Lxv1 Lv0v1 Lu0v1 Lv0u1 Luv.
Apply Luv Hue Hve to the current goal.
We will prove u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
We prove the intermediate claim Lu0v0lt: u0 < v0.
An exact proof term for the current goal is SNoLt_tra u0 x v0 Hu0a Hx Hv0a Hu0c Hv0c.
We prove the intermediate claim L3: zSNoL y, u0 * y + v0 * z < v0 * y + u0 * z.
Let z be given.
Assume Hz.
Apply SNoL_E y Hy z Hz to the current goal.
Assume Hza: SNo z.
Assume Hzb: SNoLev z SNoLev y.
Assume Hzc: z < y.
We prove the intermediate claim Lu0z: SNo (u0 * z).
An exact proof term for the current goal is LLx u0 Hu0 z Hza.
We prove the intermediate claim Lv0z: SNo (v0 * z).
An exact proof term for the current goal is LRx v0 Hv0 z Hza.
Apply SNoLt_SNoL_or_SNoR_impred u0 v0 Hu0a Hv0a Lu0v0lt to the current goal.
Let w be given.
Assume Hwv0: w SNoL v0.
Assume Hwu0: w SNoR u0.
Apply SNoR_E u0 Hu0a w Hwu0 to the current goal.
Assume Hwu0a: SNo w.
Assume Hwu0b: SNoLev w SNoLev u0.
Assume Hwu0c: u0 < w.
We prove the intermediate claim LLevwLevx: SNoLev w SNoLev x.
An exact proof term for the current goal is ordinal_TransSet (SNoLev x) (SNoLev_ordinal x Hx) (SNoLev u0) Hu0b (SNoLev w) Hwu0b.
We prove the intermediate claim LwSx: w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hwu0a Hx LLevwLevx.
We prove the intermediate claim Lwz: SNo (w * z).
Apply IHx w LwSx z Hza to the current goal.
Assume H _ _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lwy: SNo (w * y).
Apply IHx w LwSx y Hy to the current goal.
Assume H _ _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim L3a: u0 * y + w * z < u0 * z + w * y.
rewrite the current goal using add_SNo_com (u0 * z) (w * y) Lu0z Lwy (from left to right).
Apply IHx u0 (SNoL_SNoS x Hx u0 Hu0) y Hy to the current goal.
Assume _ _ _ _ IHx4.
An exact proof term for the current goal is IHx4 w Hwu0 z Hz.
We prove the intermediate claim L3b: v0 * z + w * y < v0 * y + w * z.
rewrite the current goal using add_SNo_com (v0 * z) (w * y) Lv0z Lwy (from left to right).
Apply IHx v0 (SNoR_SNoS x Hx v0 Hv0) y Hy to the current goal.
Assume _ IHx1 _ _ _.
An exact proof term for the current goal is IHx1 w Hwv0 z Hz.
rewrite the current goal using add_SNo_com (u0 * z) (v0 * y) Lu0z Lv0y (from right to left).
An exact proof term for the current goal is add_SNo_Lt_subprop2 (u0 * y) (v0 * z) (u0 * z) (v0 * y) (w * z) (w * y) Lu0y Lv0z Lu0z Lv0y Lwz Lwy L3a L3b.
Assume Hu0v0: u0 SNoL v0.
Apply IHx v0 (SNoR_SNoS x Hx v0 Hv0) y Hy to the current goal.
Assume _ IHx1 _ _ _.
An exact proof term for the current goal is IHx1 u0 Hu0v0 z Hz.
Assume Hv0u0: v0 SNoR u0.
Apply IHx u0 (SNoL_SNoS x Hx u0 Hu0) y Hy to the current goal.
Assume _ _ _ _ IHx4.
An exact proof term for the current goal is IHx4 v0 Hv0u0 z Hz.
We prove the intermediate claim L3u1: u0 * y + v0 * u1 < v0 * y + u0 * u1.
An exact proof term for the current goal is L3 u1 Hu1.
We prove the intermediate claim L3v1: u0 * y + v0 * v1 < v0 * y + u0 * v1.
An exact proof term for the current goal is L3 v1 Hv1.
We prove the intermediate claim L3u1imp: x * u1 + v0 * v1 < v0 * u1 + x * v1u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
An exact proof term for the current goal is add_SNo_Lt_subprop3b (u0 * y) (x * u1 + v0 * v1) (v0 * y) (x * v1) (u0 * u1) (v0 * u1) Lu0y (SNo_add_SNo (x * u1) (v0 * v1) Lxu1 Lv0v1) Lv0y Lxv1 Lu0u1 Lv0u1 L3u1.
We prove the intermediate claim L3v1imp: x * u1 + u0 * v1 < x * v1 + u0 * u1u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
An exact proof term for the current goal is add_SNo_Lt_subprop3a (u0 * y) (x * u1) (v0 * v1) (v0 * y) (x * v1 + u0 * u1) (u0 * v1) Lu0y Lxu1 Lv0v1 Lv0y (SNo_add_SNo (x * v1) (u0 * u1) Lxv1 Lu0u1) Lu0v1 L3v1.
Apply SNoL_or_SNoR_impred v1 u1 Hv1a Hu1a to the current goal.
Assume Hv1u1: v1 = u1.
rewrite the current goal using Hv1u1 (from left to right).
We will prove u0 * y + x * u1 + v0 * u1 < v0 * y + x * u1 + u0 * u1.
rewrite the current goal using add_SNo_com_3_0_1 (u0 * y) (x * u1) (v0 * u1) Lu0y Lxu1 Lv0u1 (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (v0 * y) (x * u1) (u0 * u1) Lv0y Lxu1 Lu0u1 (from left to right).
Apply add_SNo_Lt2 (x * u1) (u0 * y + v0 * u1) (v0 * y + u0 * u1) Lxu1 (SNo_add_SNo (u0 * y) (v0 * u1) Lu0y Lv0u1) (SNo_add_SNo (v0 * y) (u0 * u1) Lv0y Lu0u1) to the current goal.
We will prove u0 * y + v0 * u1 < v0 * y + u0 * u1.
An exact proof term for the current goal is L3u1.
Let z be given.
Assume Hzu1: z SNoL u1.
Assume Hzv1: z SNoR v1.
Apply SNoL_E u1 Hu1a z Hzu1 to the current goal.
Assume Hza: SNo z.
Assume Hzb: SNoLev z SNoLev u1.
Assume Hzc: z < u1.
We prove the intermediate claim Lz: z SNoL y.
Apply SNoL_I y Hy z Hza to the current goal.
We will prove SNoLev z SNoLev y.
An exact proof term for the current goal is ordinal_TransSet (SNoLev y) (SNoLev_ordinal y Hy) (SNoLev u1) Hu1b (SNoLev z) Hzb.
We will prove z < y.
An exact proof term for the current goal is SNoLt_tra z u1 y Hza Hu1a Hy Hzc Hu1c.
We prove the intermediate claim L4: x * u1 + v0 * z < x * z + v0 * u1.
rewrite the current goal using add_SNo_com (x * z) (v0 * u1) (LxLy z Lz) Lv0u1 (from left to right).
We will prove x * u1 + v0 * z < v0 * u1 + x * z.
Apply IHy u1 (SNoL_SNoS y Hy u1 Hu1) to the current goal.
Assume _ _ _ _ IHy4.
An exact proof term for the current goal is IHy4 v0 Hv0 z Hzu1.
We prove the intermediate claim L5: x * z + v0 * v1 < x * v1 + v0 * z.
rewrite the current goal using add_SNo_com (x * z) (v0 * v1) (LxLy z Lz) Lv0v1 (from left to right).
Apply IHy v1 (SNoL_SNoS y Hy v1 Hv1) to the current goal.
Assume _ _ IHy2 _ _.
An exact proof term for the current goal is IHy2 v0 Hv0 z Hzv1.
We will prove u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com_3_0_1 (u0 * y) (x * u1) (v0 * v1) Lu0y Lxu1 Lv0v1 (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (v0 * y) (x * v1) (u0 * u1) Lv0y Lxv1 Lu0u1 (from left to right).
We will prove x * u1 + u0 * y + v0 * v1 < x * v1 + v0 * y + u0 * u1.
An exact proof term for the current goal is add_SNo_Lt_subprop3c (x * u1) (u0 * y) (v0 * v1) (x * v1) (v0 * y + u0 * u1) (v0 * z) (x * z) (v0 * u1) Lxu1 Lu0y Lv0v1 Lxv1 (SNo_add_SNo (v0 * y) (u0 * u1) Lv0y Lu0u1) (LRx v0 Hv0 z Hza) (LxLy z Lz) Lv0u1 L4 L3u1 L5.
Assume Hv1u1: v1 SNoL u1.
Apply L3u1imp to the current goal.
We will prove x * u1 + v0 * v1 < v0 * u1 + x * v1.
Apply IHy u1 (SNoL_SNoS y Hy u1 Hu1) to the current goal.
Assume _ _ _ _ IHy4.
An exact proof term for the current goal is IHy4 v0 Hv0 v1 Hv1u1.
Assume Hu1v1: u1 SNoR v1.
Apply L3u1imp to the current goal.
We will prove x * u1 + v0 * v1 < v0 * u1 + x * v1.
rewrite the current goal using add_SNo_com (x * u1) (v0 * v1) Lxu1 Lv0v1 (from left to right).
rewrite the current goal using add_SNo_com (v0 * u1) (x * v1) Lv0u1 Lxv1 (from left to right).
Apply IHy v1 (SNoL_SNoS y Hy v1 Hv1) to the current goal.
Assume _ _ IHy2 _ _.
An exact proof term for the current goal is IHy2 v0 Hv0 u1 Hu1v1.
Let z be given.
Assume Hzu1: z SNoR u1.
Assume Hzv1: z SNoL v1.
Apply SNoL_E v1 Hv1a z Hzv1 to the current goal.
Assume Hza: SNo z.
Assume Hzb: SNoLev z SNoLev v1.
Assume Hzc: z < v1.
We prove the intermediate claim Lz: z SNoL y.
Apply SNoL_I y Hy z Hza to the current goal.
We will prove SNoLev z SNoLev y.
An exact proof term for the current goal is ordinal_TransSet (SNoLev y) (SNoLev_ordinal y Hy) (SNoLev v1) Hv1b (SNoLev z) Hzb.
We will prove z < y.
An exact proof term for the current goal is SNoLt_tra z v1 y Hza Hv1a Hy Hzc Hv1c.
We prove the intermediate claim L6: x * u1 + u0 * z < x * z + u0 * u1.
rewrite the current goal using add_SNo_com (x * z) (u0 * u1) (LxLy z Lz) Lu0u1 (from left to right).
Apply IHy u1 (SNoL_SNoS y Hy u1 Hu1) to the current goal.
Assume _ _ _ IHy3 _.
An exact proof term for the current goal is IHy3 u0 Hu0 z Hzu1.
We prove the intermediate claim L7: x * z + u0 * v1 < x * v1 + u0 * z.
rewrite the current goal using add_SNo_com (x * z) (u0 * v1) (LxLy z Lz) Lu0v1 (from left to right).
Apply IHy v1 (SNoL_SNoS y Hy v1 Hv1) to the current goal.
Assume _ IHy1 _ _ _.
An exact proof term for the current goal is IHy1 u0 Hu0 z Hzv1.
We will prove u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com_3_0_1 (u0 * y) (x * u1) (v0 * v1) Lu0y Lxu1 Lv0v1 (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (v0 * y) (x * v1) (u0 * u1) Lv0y Lxv1 Lu0u1 (from left to right).
We will prove x * u1 + u0 * y + v0 * v1 < x * v1 + v0 * y + u0 * u1.
Apply add_SNo_Lt_subprop3d (x * u1) (u0 * y + v0 * v1) (x * v1) (v0 * y) (u0 * u1) (u0 * z) (x * z) (u0 * v1) Lxu1 (SNo_add_SNo (u0 * y) (v0 * v1) Lu0y Lv0v1) Lxv1 Lv0y Lu0u1 (LLx u0 Hu0 z Hza) (LxLy z Lz) Lu0v1 L6 to the current goal.
We will prove u0 * y + v0 * v1 < u0 * v1 + v0 * y.
rewrite the current goal using add_SNo_com (u0 * v1) (v0 * y) Lu0v1 Lv0y (from left to right).
An exact proof term for the current goal is L3v1.
An exact proof term for the current goal is L7.
Assume Hv1u1: v1 SNoR u1.
Apply L3v1imp to the current goal.
We will prove x * u1 + u0 * v1 < x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com (x * v1) (u0 * u1) Lxv1 Lu0u1 (from left to right).
Apply IHy u1 (SNoL_SNoS y Hy u1 Hu1) to the current goal.
Assume _ _ _ IHy3 _.
An exact proof term for the current goal is IHy3 u0 Hu0 v1 Hv1u1.
Assume Hu1v1: u1 SNoL v1.
Apply L3v1imp to the current goal.
We will prove x * u1 + u0 * v1 < x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com (x * u1) (u0 * v1) Lxu1 Lu0v1 (from left to right).
Apply IHy v1 (SNoL_SNoS y Hy v1 Hv1) to the current goal.
Assume _ IHy1 _ _ _.
An exact proof term for the current goal is IHy1 u0 Hu0 u1 Hu1v1.
Let u0 be given.
Assume Hu0.
Let u1 be given.
Assume Hu1 Hue.
Apply SNoR_E x Hx u0 Hu0 to the current goal.
Assume Hu0a: SNo u0.
Assume Hu0b: SNoLev u0 SNoLev x.
Assume Hu0c: x < u0.
Apply SNoR_E y Hy u1 Hu1 to the current goal.
Assume Hu1a: SNo u1.
Assume Hu1b: SNoLev u1 SNoLev y.
Assume Hu1c: y < u1.
Apply HRE v Hv to the current goal.
Let v0 be given.
Assume Hv0.
Let v1 be given.
Assume Hv1 Hve.
Apply SNoL_E x Hx v0 Hv0 to the current goal.
Assume Hv0a: SNo v0.
Assume Hv0b: SNoLev v0 SNoLev x.
Assume Hv0c: v0 < x.
Apply SNoR_E y Hy v1 Hv1 to the current goal.
Assume Hv1a: SNo v1.
Assume Hv1b: SNoLev v1 SNoLev y.
Assume Hv1c: y < v1.
Apply Luvimp u0 (SNoR_SNoS x Hx u0 Hu0) v0 (SNoL_SNoS x Hx v0 Hv0) u1 (SNoR_SNoS y Hy u1 Hu1) v1 (SNoR_SNoS y Hy v1 Hv1) to the current goal.
Assume Lu0y Lxu1 Lu0u1 Lv0y Lxv1 Lv0v1 Lu0v1 Lv0u1 Luv.
Apply Luv Hue Hve to the current goal.
We will prove u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
We prove the intermediate claim Lv0u0lt: v0 < u0.
An exact proof term for the current goal is SNoLt_tra v0 x u0 Hv0a Hx Hu0a Hv0c Hu0c.
We prove the intermediate claim L3: zSNoR y, u0 * y + v0 * z < v0 * y + u0 * z.
Let z be given.
Assume Hz.
Apply SNoR_E y Hy z Hz to the current goal.
Assume Hza: SNo z.
Assume Hzb: SNoLev z SNoLev y.
Assume Hzc: y < z.
We prove the intermediate claim Lu0z: SNo (u0 * z).
An exact proof term for the current goal is LRx u0 Hu0 z Hza.
We prove the intermediate claim Lv0z: SNo (v0 * z).
An exact proof term for the current goal is LLx v0 Hv0 z Hza.
Apply SNoLt_SNoL_or_SNoR_impred v0 u0 Hv0a Hu0a Lv0u0lt to the current goal.
Let w be given.
Assume Hwu0: w SNoL u0.
Assume Hwv0: w SNoR v0.
Apply SNoL_E u0 Hu0a w Hwu0 to the current goal.
Assume Hwu0a: SNo w.
Assume Hwu0b: SNoLev w SNoLev u0.
Assume Hwu0c: w < u0.
We prove the intermediate claim LLevwLevx: SNoLev w SNoLev x.
An exact proof term for the current goal is ordinal_TransSet (SNoLev x) (SNoLev_ordinal x Hx) (SNoLev u0) Hu0b (SNoLev w) Hwu0b.
We prove the intermediate claim LwSx: w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hwu0a Hx LLevwLevx.
We prove the intermediate claim Lwz: SNo (w * z).
Apply IHx w LwSx z Hza to the current goal.
Assume H _ _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lwy: SNo (w * y).
Apply IHx w LwSx y Hy to the current goal.
Assume H _ _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim L3a: u0 * y + w * z < u0 * z + w * y.
rewrite the current goal using add_SNo_com (u0 * z) (w * y) Lu0z Lwy (from left to right).
Apply IHx u0 (SNoR_SNoS x Hx u0 Hu0) y Hy to the current goal.
Assume _ _ _ IHx3 _.
An exact proof term for the current goal is IHx3 w Hwu0 z Hz.
We prove the intermediate claim L3b: v0 * z + w * y < v0 * y + w * z.
rewrite the current goal using add_SNo_com (v0 * z) (w * y) Lv0z Lwy (from left to right).
Apply IHx v0 (SNoL_SNoS x Hx v0 Hv0) y Hy to the current goal.
Assume _ _ IHx2 _ _.
An exact proof term for the current goal is IHx2 w Hwv0 z Hz.
rewrite the current goal using add_SNo_com (v0 * y) (u0 * z) Lv0y Lu0z (from left to right).
An exact proof term for the current goal is add_SNo_Lt_subprop2 (u0 * y) (v0 * z) (u0 * z) (v0 * y) (w * z) (w * y) Lu0y Lv0z Lu0z Lv0y Lwz Lwy L3a L3b.
Assume Hv0u0: v0 SNoL u0.
Apply IHx u0 (SNoR_SNoS x Hx u0 Hu0) y Hy to the current goal.
Assume _ _ _ IHx3 _.
An exact proof term for the current goal is IHx3 v0 Hv0u0 z Hz.
Assume Hu0v0: u0 SNoR v0.
Apply IHx v0 (SNoL_SNoS x Hx v0 Hv0) y Hy to the current goal.
Assume _ _ IHx2 _ _.
An exact proof term for the current goal is IHx2 u0 Hu0v0 z Hz.
We prove the intermediate claim L3u1: u0 * y + v0 * u1 < v0 * y + u0 * u1.
An exact proof term for the current goal is L3 u1 Hu1.
We prove the intermediate claim L3v1: u0 * y + v0 * v1 < v0 * y + u0 * v1.
An exact proof term for the current goal is L3 v1 Hv1.
We prove the intermediate claim L3u1imp: x * u1 + v0 * v1 < v0 * u1 + x * v1u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
An exact proof term for the current goal is add_SNo_Lt_subprop3b (u0 * y) (x * u1 + v0 * v1) (v0 * y) (x * v1) (u0 * u1) (v0 * u1) Lu0y (SNo_add_SNo (x * u1) (v0 * v1) Lxu1 Lv0v1) Lv0y Lxv1 Lu0u1 Lv0u1 L3u1.
We prove the intermediate claim L3v1imp: x * u1 + u0 * v1 < x * v1 + u0 * u1u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
An exact proof term for the current goal is add_SNo_Lt_subprop3a (u0 * y) (x * u1) (v0 * v1) (v0 * y) (x * v1 + u0 * u1) (u0 * v1) Lu0y Lxu1 Lv0v1 Lv0y (SNo_add_SNo (x * v1) (u0 * u1) Lxv1 Lu0u1) Lu0v1 L3v1.
Apply SNoL_or_SNoR_impred v1 u1 Hv1a Hu1a to the current goal.
Assume Hv1u1: v1 = u1.
rewrite the current goal using Hv1u1 (from left to right).
We will prove u0 * y + x * u1 + v0 * u1 < v0 * y + x * u1 + u0 * u1.
rewrite the current goal using add_SNo_com_3_0_1 (u0 * y) (x * u1) (v0 * u1) Lu0y Lxu1 Lv0u1 (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (v0 * y) (x * u1) (u0 * u1) Lv0y Lxu1 Lu0u1 (from left to right).
Apply add_SNo_Lt2 (x * u1) (u0 * y + v0 * u1) (v0 * y + u0 * u1) Lxu1 (SNo_add_SNo (u0 * y) (v0 * u1) Lu0y Lv0u1) (SNo_add_SNo (v0 * y) (u0 * u1) Lv0y Lu0u1) to the current goal.
We will prove u0 * y + v0 * u1 < v0 * y + u0 * u1.
An exact proof term for the current goal is L3u1.
Let z be given.
Assume Hzu1: z SNoL u1.
Assume Hzv1: z SNoR v1.
Apply SNoR_E v1 Hv1a z Hzv1 to the current goal.
Assume Hza: SNo z.
Assume Hzb: SNoLev z SNoLev v1.
Assume Hzc: v1 < z.
We prove the intermediate claim Lz: z SNoR y.
Apply SNoR_I y Hy z Hza to the current goal.
We will prove SNoLev z SNoLev y.
An exact proof term for the current goal is ordinal_TransSet (SNoLev y) (SNoLev_ordinal y Hy) (SNoLev v1) Hv1b (SNoLev z) Hzb.
We will prove y < z.
An exact proof term for the current goal is SNoLt_tra y v1 z Hy Hv1a Hza Hv1c Hzc.
We prove the intermediate claim L4: x * u1 + u0 * z < x * z + u0 * u1.
rewrite the current goal using add_SNo_com (x * z) (u0 * u1) (LxRy z Lz) Lu0u1 (from left to right).
Apply IHy u1 (SNoR_SNoS y Hy u1 Hu1) to the current goal.
Assume _ _ _ _ IHy4.
An exact proof term for the current goal is IHy4 u0 Hu0 z Hzu1.
We prove the intermediate claim L5: x * z + u0 * v1 < x * v1 + u0 * z.
rewrite the current goal using add_SNo_com (x * z) (u0 * v1) (LxRy z Lz) Lu0v1 (from left to right).
Apply IHy v1 (SNoR_SNoS y Hy v1 Hv1) to the current goal.
Assume _ _ IHy2 _ _.
An exact proof term for the current goal is IHy2 u0 Hu0 z Hzv1.
We will prove u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com_3_0_1 (u0 * y) (x * u1) (v0 * v1) Lu0y Lxu1 Lv0v1 (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (v0 * y) (x * v1) (u0 * u1) Lv0y Lxv1 Lu0u1 (from left to right).
We will prove x * u1 + u0 * y + v0 * v1 < x * v1 + v0 * y + u0 * u1.
Apply add_SNo_Lt_subprop3d (x * u1) (u0 * y + v0 * v1) (x * v1) (v0 * y) (u0 * u1) (u0 * z) (x * z) (u0 * v1) Lxu1 (SNo_add_SNo (u0 * y) (v0 * v1) Lu0y Lv0v1) Lxv1 Lv0y Lu0u1 (LRx u0 Hu0 z Hza) (LxRy z Lz) Lu0v1 L4 to the current goal.
We will prove u0 * y + v0 * v1 < u0 * v1 + v0 * y.
rewrite the current goal using add_SNo_com (u0 * v1) (v0 * y) Lu0v1 Lv0y (from left to right).
An exact proof term for the current goal is L3v1.
An exact proof term for the current goal is L5.
Assume Hv1u1: v1 SNoL u1.
Apply L3v1imp to the current goal.
We will prove x * u1 + u0 * v1 < x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com (x * v1) (u0 * u1) Lxv1 Lu0u1 (from left to right).
We will prove x * u1 + u0 * v1 < u0 * u1 + x * v1.
Apply IHy u1 (SNoR_SNoS y Hy u1 Hu1) to the current goal.
Assume _ _ _ _ IHy4.
An exact proof term for the current goal is IHy4 u0 Hu0 v1 Hv1u1.
Assume Hu1v1: u1 SNoR v1.
Apply L3v1imp to the current goal.
We will prove x * u1 + u0 * v1 < x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com (x * u1) (u0 * v1) Lxu1 Lu0v1 (from left to right).
Apply IHy v1 (SNoR_SNoS y Hy v1 Hv1) to the current goal.
Assume _ _ IHy2 _ _.
An exact proof term for the current goal is IHy2 u0 Hu0 u1 Hu1v1.
Let z be given.
Assume Hzu1: z SNoR u1.
Assume Hzv1: z SNoL v1.
Apply SNoR_E u1 Hu1a z Hzu1 to the current goal.
Assume Hza: SNo z.
Assume Hzb: SNoLev z SNoLev u1.
Assume Hzc: u1 < z.
We prove the intermediate claim Lz: z SNoR y.
Apply SNoR_I y Hy z Hza to the current goal.
We will prove SNoLev z SNoLev y.
An exact proof term for the current goal is ordinal_TransSet (SNoLev y) (SNoLev_ordinal y Hy) (SNoLev u1) Hu1b (SNoLev z) Hzb.
We will prove y < z.
An exact proof term for the current goal is SNoLt_tra y u1 z Hy Hu1a Hza Hu1c Hzc.
We prove the intermediate claim L6: x * u1 + v0 * z < x * z + v0 * u1.
rewrite the current goal using add_SNo_com (x * z) (v0 * u1) (LxRy z Lz) Lv0u1 (from left to right).
We will prove x * u1 + v0 * z < v0 * u1 + x * z.
Apply IHy u1 (SNoR_SNoS y Hy u1 Hu1) to the current goal.
Assume _ _ _ IHy3 _.
An exact proof term for the current goal is IHy3 v0 Hv0 z Hzu1.
We prove the intermediate claim L7: x * z + v0 * v1 < x * v1 + v0 * z.
rewrite the current goal using add_SNo_com (x * z) (v0 * v1) (LxRy z Lz) Lv0v1 (from left to right).
Apply IHy v1 (SNoR_SNoS y Hy v1 Hv1) to the current goal.
Assume _ IHy1 _ _ _.
An exact proof term for the current goal is IHy1 v0 Hv0 z Hzv1.
We will prove u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com_3_0_1 (u0 * y) (x * u1) (v0 * v1) Lu0y Lxu1 Lv0v1 (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (v0 * y) (x * v1) (u0 * u1) Lv0y Lxv1 Lu0u1 (from left to right).
We will prove x * u1 + u0 * y + v0 * v1 < x * v1 + v0 * y + u0 * u1.
An exact proof term for the current goal is add_SNo_Lt_subprop3c (x * u1) (u0 * y) (v0 * v1) (x * v1) (v0 * y + u0 * u1) (v0 * z) (x * z) (v0 * u1) Lxu1 Lu0y Lv0v1 Lxv1 (SNo_add_SNo (v0 * y) (u0 * u1) Lv0y Lu0u1) (LLx v0 Hv0 z Hza) (LxRy z Lz) Lv0u1 L6 L3u1 L7.
Assume Hv1u1: v1 SNoR u1.
Apply L3u1imp to the current goal.
We will prove x * u1 + v0 * v1 < v0 * u1 + x * v1.
Apply IHy u1 (SNoR_SNoS y Hy u1 Hu1) to the current goal.
Assume _ _ _ IHy3 _.
An exact proof term for the current goal is IHy3 v0 Hv0 v1 Hv1u1.
Assume Hu1v1: u1 SNoL v1.
Apply L3u1imp to the current goal.
We will prove x * u1 + v0 * v1 < v0 * u1 + x * v1.
rewrite the current goal using add_SNo_com (x * u1) (v0 * v1) Lxu1 Lv0v1 (from left to right).
rewrite the current goal using add_SNo_com (v0 * u1) (x * v1) Lv0u1 Lxv1 (from left to right).
Apply IHy v1 (SNoR_SNoS y Hy v1 Hv1) to the current goal.
Assume _ IHy1 _ _ _.
An exact proof term for the current goal is IHy1 v0 Hv0 u1 Hu1v1.
Let v0 be given.
Assume Hv0.
Let v1 be given.
Assume Hv1 Hve.
Apply SNoR_E x Hx v0 Hv0 to the current goal.
Assume Hv0a: SNo v0.
Assume Hv0b: SNoLev v0 SNoLev x.
Assume Hv0c: x < v0.
Apply SNoL_E y Hy v1 Hv1 to the current goal.
Assume Hv1a: SNo v1.
Assume Hv1b: SNoLev v1 SNoLev y.
Assume Hv1c: v1 < y.
Apply Luvimp u0 (SNoR_SNoS x Hx u0 Hu0) v0 (SNoR_SNoS x Hx v0 Hv0) u1 (SNoR_SNoS y Hy u1 Hu1) v1 (SNoL_SNoS y Hy v1 Hv1) to the current goal.
Assume Lu0y Lxu1 Lu0u1 Lv0y Lxv1 Lv0v1 Lu0v1 Lv0u1 Luv.
Apply Luv Hue Hve to the current goal.
We will prove u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
We prove the intermediate claim Lv1u1lt: v1 < u1.
An exact proof term for the current goal is SNoLt_tra v1 y u1 Hv1a Hy Hu1a Hv1c Hu1c.
We prove the intermediate claim L3: zSNoR x, x * u1 + z * v1 < z * u1 + x * v1.
Let z be given.
Assume Hz.
We prove the intermediate claim Lzu1: SNo (z * u1).
An exact proof term for the current goal is LRx z Hz u1 Hu1a.
We prove the intermediate claim Lzv1: SNo (z * v1).
An exact proof term for the current goal is LRx z Hz v1 Hv1a.
Apply SNoLt_SNoL_or_SNoR_impred v1 u1 Hv1a Hu1a Lv1u1lt to the current goal.
Let w be given.
Assume Hwu1: w SNoL u1.
Assume Hwv1: w SNoR v1.
Apply SNoL_E u1 Hu1a w Hwu1 to the current goal.
Assume Hwu1a: SNo w.
Assume Hwu1b: SNoLev w SNoLev u1.
Assume Hwu1c: w < u1.
We prove the intermediate claim LwSy: w SNoS_ (SNoLev y).
Apply SNoS_I2 w y Hwu1a Hy to the current goal.
We will prove SNoLev w SNoLev y.
An exact proof term for the current goal is ordinal_TransSet (SNoLev y) (SNoLev_ordinal y Hy) (SNoLev u1) Hu1b (SNoLev w) Hwu1b.
We prove the intermediate claim Lzw: SNo (z * w).
An exact proof term for the current goal is LRx z Hz w Hwu1a.
We prove the intermediate claim Lxw: SNo (x * w).
Apply IHy w LwSy to the current goal.
Assume H1 _ _ _ _.
An exact proof term for the current goal is H1.
We prove the intermediate claim L3a: z * v1 + x * w < x * v1 + z * w.
Apply IHy v1 (SNoL_SNoS y Hy v1 Hv1) to the current goal.
Assume _ _ IHy2 _ _.
An exact proof term for the current goal is IHy2 z Hz w Hwv1.
We prove the intermediate claim L3b: x * u1 + z * w < z * u1 + x * w.
Apply IHy u1 (SNoR_SNoS y Hy u1 Hu1) to the current goal.
Assume _ _ _ _ IHy4.
An exact proof term for the current goal is IHy4 z Hz w Hwu1.
An exact proof term for the current goal is add_SNo_Lt_subprop2 (x * u1) (z * v1) (z * u1) (x * v1) (z * w) (x * w) Lxu1 Lzv1 Lzu1 Lxv1 Lzw Lxw L3b L3a.
Assume Hv1u1: v1 SNoL u1.
Apply IHy u1 (SNoR_SNoS y Hy u1 Hu1) to the current goal.
Assume _ _ _ _ IHy4.
An exact proof term for the current goal is IHy4 z Hz v1 Hv1u1.
Assume Hu1v1: u1 SNoR v1.
Apply IHy v1 (SNoL_SNoS y Hy v1 Hv1) to the current goal.
Assume _ _ IHy2 _ _.
rewrite the current goal using add_SNo_com (x * u1) (z * v1) Lxu1 Lzv1 (from left to right).
rewrite the current goal using add_SNo_com (z * u1) (x * v1) Lzu1 Lxv1 (from left to right).
We will prove z * v1 + x * u1 < x * v1 + z * u1.
An exact proof term for the current goal is IHy2 z Hz u1 Hu1v1.
We prove the intermediate claim L3u0: x * u1 + u0 * v1 < u0 * u1 + x * v1.
An exact proof term for the current goal is L3 u0 Hu0.
We prove the intermediate claim L3v0: x * u1 + v0 * v1 < v0 * u1 + x * v1.
An exact proof term for the current goal is L3 v0 Hv0.
We prove the intermediate claim L3u0imp: u0 * y + v0 * v1 < v0 * y + u0 * v1u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
Assume H1.
Apply add_SNo_Lt_subprop3a (u0 * y) (x * u1) (v0 * v1) (v0 * y) (x * v1 + u0 * u1) (u0 * v1) Lu0y Lxu1 Lv0v1 Lv0y (SNo_add_SNo (x * v1) (u0 * u1) Lxv1 Lu0u1) Lu0v1 H1 to the current goal.
We will prove x * u1 + u0 * v1 < x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com (x * v1) (u0 * u1) Lxv1 Lu0u1 (from left to right).
An exact proof term for the current goal is L3u0.
We prove the intermediate claim L3v0imp: u0 * y + v0 * u1 < v0 * y + u0 * u1u0 * y + x * u1 + v0 * v1 < v0 * y + x * v1 + u0 * u1.
Assume H1.
Apply add_SNo_Lt_subprop3b (u0 * y) (x * u1 + v0 * v1) (v0 * y) (x * v1) (u0 * u1) (v0 * u1) Lu0y (SNo_add_SNo (x * u1) (v0 * v1) Lxu1 Lv0v1) Lv0y Lxv1 Lu0u1 Lv0u1 to the current goal.
We will prove u0 * y + v0 * u1 < v0 * y + u0 * u1.
An exact proof term for the current goal is H1.
We will prove x * u1 + v0 * v1 < v0 * u1 + x * v1.
An exact proof term for the current goal is L3v0.
Apply SNoL_or_SNoR_impred v0 u0 Hv0a Hu0a to the current goal.
Assume Hv0u0: v0 = u0.
rewrite the current goal using Hv0u0 (from left to right).
We will prove u0 * y + (x * u1 + u0 * v1) < u0 * y + (x * v1 + u0 * u1).
Apply add_SNo_Lt2 (u0 * y) (x * u1 + u0 * v1) (x * v1 + u0 * u1) Lu0y (SNo_add_SNo (x * u1) (u0 * v1) Lxu1 Lu0v1) (SNo_add_SNo (x * v1) (u0 * u1) Lxv1 Lu0u1) to the current goal.
We will prove x * u1 + u0 * v1 < x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com (x * v1) (u0 * u1) Lxv1 Lu0u1 (from left to right).
An exact proof term for the current goal is L3u0.
Let z be given.
Assume Hzu0: z SNoL u0.
Assume Hzv0: z SNoR v0.
Apply SNoR_E v0 Hv0a z Hzv0 to the current goal.
Assume Hza: SNo z.
Assume Hzb: SNoLev z SNoLev v0.
Assume Hzc: v0 < z.
We prove the intermediate claim Lz: z SNoR x.
Apply SNoR_I x Hx z Hza to the current goal.
We will prove SNoLev z SNoLev x.
An exact proof term for the current goal is ordinal_TransSet (SNoLev x) (SNoLev_ordinal x Hx) (SNoLev v0) Hv0b (SNoLev z) Hzb.
We will prove x < z.
An exact proof term for the current goal is SNoLt_tra x v0 z Hx Hv0a Hza Hv0c Hzc.
We prove the intermediate claim L4: u0 * y + z * u1 < z * y + u0 * u1.
Apply IHx u0 (SNoR_SNoS x Hx u0 Hu0) y Hy to the current goal.
Assume _ _ _ IHx3 _.
An exact proof term for the current goal is IHx3 z Hzu0 u1 Hu1.
We prove the intermediate claim L5: z * y + v0 * u1 < v0 * y + z * u1.
Apply IHx v0 (SNoR_SNoS x Hx v0 Hv0) y Hy to the current goal.
Assume _ _ IHx2 _ _.
An exact proof term for the current goal is IHx2 z Hzv0 u1 Hu1.
An exact proof term for the current goal is add_SNo_Lt_subprop3d (u0 * y) (x * u1 + v0 * v1) (v0 * y) (x * v1) (u0 * u1) (z * u1) (z * y) (v0 * u1) Lu0y (SNo_add_SNo (x * u1) (v0 * v1) Lxu1 Lv0v1) Lv0y Lxv1 Lu0u1 (LRx z Lz u1 Hu1a) (LRxy z Lz) Lv0u1 L4 L3v0 L5.
Assume Hv0u0: v0 SNoL u0.
Apply L3v0imp to the current goal.
We will prove u0 * y + v0 * u1 < v0 * y + u0 * u1.
Apply IHx u0 (SNoR_SNoS x Hx u0 Hu0) y Hy to the current goal.
Assume _ _ _ IHx3 _.
An exact proof term for the current goal is IHx3 v0 Hv0u0 u1 Hu1.
Assume Hu0v0: u0 SNoR v0.
Apply L3v0imp to the current goal.
We will prove u0 * y + v0 * u1 < v0 * y + u0 * u1.
Apply IHx v0 (SNoR_SNoS x Hx v0 Hv0) y Hy to the current goal.
Assume _ _ IHx2 _ _.
An exact proof term for the current goal is IHx2 u0 Hu0v0 u1 Hu1.
Let z be given.
Assume Hzu0: z SNoR u0.
Assume Hzv0: z SNoL v0.
Apply SNoR_E u0 Hu0a z Hzu0 to the current goal.
Assume Hza: SNo z.
Assume Hzb: SNoLev z SNoLev u0.
Assume Hzc: u0 < z.
We prove the intermediate claim Lz: z SNoR x.
Apply SNoR_I x Hx z Hza to the current goal.
We will prove SNoLev z SNoLev x.
An exact proof term for the current goal is ordinal_TransSet (SNoLev x) (SNoLev_ordinal x Hx) (SNoLev u0) Hu0b (SNoLev z) Hzb.
We will prove x < z.
An exact proof term for the current goal is SNoLt_tra x u0 z Hx Hu0a Hza Hu0c Hzc.
We prove the intermediate claim L6: u0 * y + z * v1 < z * y + u0 * v1.
Apply IHx u0 (SNoR_SNoS x Hx u0 Hu0) y Hy to the current goal.
Assume _ _ _ _ IHx4.
An exact proof term for the current goal is IHx4 z Hzu0 v1 Hv1.
We prove the intermediate claim L7: z * y + v0 * v1 < v0 * y + z * v1.
Apply IHx v0 (SNoR_SNoS x Hx v0 Hv0) y Hy to the current goal.
Assume _ IHx1 _ _ _.
An exact proof term for the current goal is IHx1 z Hzv0 v1 Hv1.
Apply add_SNo_Lt_subprop3c (u0 * y) (x * u1) (v0 * v1) (v0 * y) (x * v1 + u0 * u1) (z * v1) (z * y) (u0 * v1) Lu0y Lxu1 Lv0v1 Lv0y (SNo_add_SNo (x * v1) (u0 * u1) Lxv1 Lu0u1) (LRx z Lz v1 Hv1a) (LRxy z Lz) Lu0v1 L6 to the current goal.
We will prove x * u1 + u0 * v1 < x * v1 + u0 * u1.
rewrite the current goal using add_SNo_com (x * v1) (u0 * u1) Lxv1 Lu0u1 (from left to right).
An exact proof term for the current goal is L3u0.
We will prove z * y + v0 * v1 < v0 * y + z * v1.
An exact proof term for the current goal is L7.
Assume Hv0u0: v0 SNoR u0.
Apply L3u0imp to the current goal.
We will prove u0 * y + v0 * v1 < v0 * y + u0 * v1.
Apply IHx u0 (SNoR_SNoS x Hx u0 Hu0) y Hy to the current goal.
Assume _ _ _ _ IHx4.
An exact proof term for the current goal is IHx4 v0 Hv0u0 v1 Hv1.
Assume Hu0v0: u0 SNoL v0.
Apply L3u0imp to the current goal.
We will prove u0 * y + v0 * v1 < v0 * y + u0 * v1.
Apply IHx v0 (SNoR_SNoS x Hx v0 Hv0) y Hy to the current goal.
Assume _ IHx1 _ _ _.
An exact proof term for the current goal is IHx1 u0 Hu0v0 v1 Hv1.
We prove the intermediate claim Lxy: SNo (x * y).
rewrite the current goal using Hxy (from left to right).
We will prove SNo (SNoCut L R).
An exact proof term for the current goal is SNoCutP_SNo_SNoCut L R LLR1.
Let p be given.
Assume Hp.
We will prove p.
Apply Hp to the current goal.
An exact proof term for the current goal is Lxy.
We will prove uSNoL x, vSNoL y, u * y + x * v < x * y + u * v.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hva _ _.
We will prove u * y + x * v < x * y + u * v.
We prove the intermediate claim L1: u * y + x * v + - u * v < x * y.
rewrite the current goal using Hxy (from left to right).
We will prove u * y + x * v + - u * v < SNoCut L R.
Apply SNoCutP_SNoCut_L L R LLR1 to the current goal.
We will prove u * y + x * v + - u * v L.
An exact proof term for the current goal is HLI1 u Hu v Hv.
Apply add_SNo_minus_Lt1 (u * y + x * v) (u * v) (x * y) to the current goal.
An exact proof term for the current goal is SNo_add_SNo (u * y) (x * v) (LLx u Hu y Hy) (LxLy v Hv).
An exact proof term for the current goal is LLx u Hu v Hva.
An exact proof term for the current goal is Lxy.
We will prove (u * y + x * v) + - u * v < x * y.
rewrite the current goal using add_SNo_assoc (u * y) (x * v) (- (u * v)) (LLx u Hu y Hy) (LxLy v Hv) (SNo_minus_SNo (u * v) (LLx u Hu v Hva)) (from right to left).
An exact proof term for the current goal is L1.
We will prove uSNoR x, vSNoR y, u * y + x * v < x * y + u * v.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hva _ _.
We will prove u * y + x * v < x * y + u * v.
We prove the intermediate claim L1: u * y + x * v + - u * v < x * y.
rewrite the current goal using Hxy (from left to right).
We will prove u * y + x * v + - u * v < SNoCut L R.
Apply SNoCutP_SNoCut_L L R LLR1 to the current goal.
We will prove u * y + x * v + - u * v L.
An exact proof term for the current goal is HLI2 u Hu v Hv.
Apply add_SNo_minus_Lt1 (u * y + x * v) (u * v) (x * y) to the current goal.
An exact proof term for the current goal is SNo_add_SNo (u * y) (x * v) (LRx u Hu y Hy) (LxRy v Hv).
An exact proof term for the current goal is LRx u Hu v Hva.
An exact proof term for the current goal is Lxy.
We will prove (u * y + x * v) + - u * v < x * y.
rewrite the current goal using add_SNo_assoc (u * y) (x * v) (- (u * v)) (LRx u Hu y Hy) (LxRy v Hv) (SNo_minus_SNo (u * v) (LRx u Hu v Hva)) (from right to left).
An exact proof term for the current goal is L1.
We will prove uSNoL x, vSNoR y, x * y + u * v < u * y + x * v.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hva _ _.
We will prove x * y + u * v < u * y + x * v.
We prove the intermediate claim L1: x * y < u * y + x * v + - u * v.
rewrite the current goal using Hxy (from left to right).
We will prove SNoCut L R < u * y + x * v + - u * v.
Apply SNoCutP_SNoCut_R L R LLR1 to the current goal.
We will prove u * y + x * v + - u * v R.
An exact proof term for the current goal is HRI1 u Hu v Hv.
Apply add_SNo_minus_Lt2 (u * y + x * v) (u * v) (x * y) to the current goal.
An exact proof term for the current goal is SNo_add_SNo (u * y) (x * v) (LLx u Hu y Hy) (LxRy v Hv).
An exact proof term for the current goal is LLx u Hu v Hva.
An exact proof term for the current goal is Lxy.
We will prove x * y < (u * y + x * v) + - u * v.
rewrite the current goal using add_SNo_assoc (u * y) (x * v) (- (u * v)) (LLx u Hu y Hy) (LxRy v Hv) (SNo_minus_SNo (u * v) (LLx u Hu v Hva)) (from right to left).
An exact proof term for the current goal is L1.
We will prove uSNoR x, vSNoL y, x * y + u * v < u * y + x * v.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hva _ _.
We will prove x * y + u * v < u * y + x * v.
We prove the intermediate claim L1: x * y < u * y + x * v + - u * v.
rewrite the current goal using Hxy (from left to right).
We will prove SNoCut L R < u * y + x * v + - u * v.
Apply SNoCutP_SNoCut_R L R LLR1 to the current goal.
We will prove u * y + x * v + - u * v R.
An exact proof term for the current goal is HRI2 u Hu v Hv.
Apply add_SNo_minus_Lt2 (u * y + x * v) (u * v) (x * y) to the current goal.
An exact proof term for the current goal is SNo_add_SNo (u * y) (x * v) (LRx u Hu y Hy) (LxLy v Hv).
An exact proof term for the current goal is LRx u Hu v Hva.
An exact proof term for the current goal is Lxy.
We will prove x * y < (u * y + x * v) + - u * v.
rewrite the current goal using add_SNo_assoc (u * y) (x * v) (- (u * v)) (LRx u Hu y Hy) (LxLy v Hv) (SNo_minus_SNo (u * v) (LRx u Hu v Hva)) (from right to left).
An exact proof term for the current goal is L1.
Theorem. (SNo_mul_SNo) The following is provable:
∀x y, SNo xSNo ySNo (x * y)
Proof:
Let x and y be given.
Assume Hx Hy.
Apply mul_SNo_prop_1 x Hx y Hy to the current goal.
Assume H _ _ _ _.
An exact proof term for the current goal is H.
Theorem. (SNo_mul_SNo_lem) The following is provable:
∀x y u v, SNo xSNo ySNo uSNo vSNo (u * y + x * v + - (u * v))
Proof:
Let x, y, u and v be given.
Assume Hx Hy Hu Hv.
Apply SNo_add_SNo_3c to the current goal.
Apply SNo_mul_SNo to the current goal.
An exact proof term for the current goal is Hu.
An exact proof term for the current goal is Hy.
Apply SNo_mul_SNo to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hv.
Apply SNo_mul_SNo to the current goal.
An exact proof term for the current goal is Hu.
An exact proof term for the current goal is Hv.
Theorem. (SNo_mul_SNo_3) The following is provable:
∀x y z, SNo xSNo ySNo zSNo (x * y * z)
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
Apply SNo_mul_SNo to the current goal.
An exact proof term for the current goal is Hx.
Apply SNo_mul_SNo to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hz.
Theorem. (mul_SNo_eq_3) The following is provable:
∀x y, SNo xSNo y∀p : prop, (∀L R, SNoCutP L R(∀u, u L(∀q : prop, (w0SNoL x, w1SNoL y, u = w0 * y + x * w1 + - w0 * w1q)(z0SNoR x, z1SNoR y, u = z0 * y + x * z1 + - z0 * z1q)q))(w0SNoL x, w1SNoL y, w0 * y + x * w1 + - w0 * w1 L)(z0SNoR x, z1SNoR y, z0 * y + x * z1 + - z0 * z1 L)(∀u, u R(∀q : prop, (w0SNoL x, z1SNoR y, u = w0 * y + x * z1 + - w0 * z1q)(z0SNoR x, w1SNoL y, u = z0 * y + x * w1 + - z0 * w1q)q))(w0SNoL x, z1SNoR y, w0 * y + x * z1 + - w0 * z1 R)(z0SNoR x, w1SNoL y, z0 * y + x * w1 + - z0 * w1 R)x * y = SNoCut L Rp)p
Proof:
Let x and y be given.
Assume Hx Hy.
Let p be given.
Assume Hp.
Apply mul_SNo_eq_2 x y Hx Hy to the current goal.
Let L and R be given.
Assume HLE HLI1 HLI2 HRE HRI1 HRI2 He.
Apply mul_SNo_prop_1 x Hx y Hy to the current goal.
Assume Hxy: SNo (x * y).
Assume Hxy1: uSNoL x, vSNoL y, u * y + x * v < x * y + u * v.
Assume Hxy2: uSNoR x, vSNoR y, u * y + x * v < x * y + u * v.
Assume Hxy3: uSNoL x, vSNoR y, x * y + u * v < u * y + x * v.
Assume Hxy4: uSNoR x, vSNoL y, x * y + u * v < u * y + x * v.
We prove the intermediate claim LLR: SNoCutP L R.
We will prove (wL, SNo w) (zR, SNo z) (wL, zR, w < z).
Apply and3I to the current goal.
Let w be given.
Assume Hw.
We will prove SNo w.
Apply HLE w Hw to the current goal.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv Hwe.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hua _ _.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hva _ _.
rewrite the current goal using Hwe (from left to right).
We will prove SNo (u * y + x * v + - u * v).
Apply SNo_mul_SNo_lem to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hua.
An exact proof term for the current goal is Hva.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv Hwe.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hua _ _.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hva _ _.
rewrite the current goal using Hwe (from left to right).
We will prove SNo (u * y + x * v + - u * v).
Apply SNo_mul_SNo_lem to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hua.
An exact proof term for the current goal is Hva.
Let z be given.
Assume Hz.
We will prove SNo z.
Apply HRE z Hz to the current goal.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv Hze.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hua _ _.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hva _ _.
rewrite the current goal using Hze (from left to right).
We will prove SNo (u * y + x * v + - u * v).
Apply SNo_mul_SNo_lem to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hua.
An exact proof term for the current goal is Hva.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv Hze.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hua _ _.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hva _ _.
rewrite the current goal using Hze (from left to right).
We will prove SNo (u * y + x * v + - u * v).
Apply SNo_mul_SNo_lem to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hua.
An exact proof term for the current goal is Hva.
Let w be given.
Assume Hw.
Let z be given.
Assume Hz.
We will prove w < z.
Apply HLE w Hw to the current goal.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv Hwe.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hua: SNo u.
Assume _ _.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hva: SNo v.
Assume _ _.
We prove the intermediate claim Luy: SNo (u * y).
An exact proof term for the current goal is SNo_mul_SNo u y Hua Hy.
We prove the intermediate claim Lxv: SNo (x * v).
An exact proof term for the current goal is SNo_mul_SNo x v Hx Hva.
We prove the intermediate claim Luv: SNo (u * v).
An exact proof term for the current goal is SNo_mul_SNo u v Hua Hva.
Apply HRE z Hz to the current goal.
Let u' be given.
Assume Hu'.
Let v' be given.
Assume Hv' Hze.
Apply SNoL_E x Hx u' Hu' to the current goal.
Assume Hu'a: SNo u'.
Assume _ _.
Apply SNoR_E y Hy v' Hv' to the current goal.
Assume Hv'a: SNo v'.
Assume _ _.
We prove the intermediate claim Lu'y: SNo (u' * y).
An exact proof term for the current goal is SNo_mul_SNo u' y Hu'a Hy.
We prove the intermediate claim Lxv': SNo (x * v').
An exact proof term for the current goal is SNo_mul_SNo x v' Hx Hv'a.
We prove the intermediate claim Lu'v': SNo (u' * v').
An exact proof term for the current goal is SNo_mul_SNo u' v' Hu'a Hv'a.
rewrite the current goal using Hwe (from left to right).
rewrite the current goal using Hze (from left to right).
We will prove u * y + x * v + - u * v < u' * y + x * v' + - u' * v'.
Apply add_SNo_minus_Lt_lem (u * y) (x * v) (u * v) (u' * y) (x * v') (u' * v') Luy Lxv Luv Lu'y Lxv' Lu'v' to the current goal.
We will prove u * y + x * v + u' * v' < u' * y + x * v' + u * v.
Apply SNoLt_tra (u * y + x * v + u' * v') (x * y + u * v + u' * v') (u' * y + x * v' + u * v) (SNo_add_SNo_3 (u * y) (x * v) (u' * v') Luy Lxv Lu'v') (SNo_add_SNo_3 (x * y) (u * v) (u' * v') Hxy Luv Lu'v') (SNo_add_SNo_3 (u' * y) (x * v') (u * v) Lu'y Lxv' Luv) to the current goal.
We will prove u * y + x * v + u' * v' < x * y + u * v + u' * v'.
Apply add_SNo_3_3_3_Lt1 (u * y) (x * v) (x * y) (u * v) (u' * v') Luy Lxv Hxy Luv Lu'v' to the current goal.
We will prove u * y + x * v < x * y + u * v.
An exact proof term for the current goal is Hxy1 u Hu v Hv.
We will prove x * y + u * v + u' * v' < u' * y + x * v' + u * v.
Apply add_SNo_3_2_3_Lt1 (x * y) (u' * v') (u' * y) (x * v') (u * v) Hxy Lu'v' Lu'y Lxv' Luv to the current goal.
We will prove u' * v' + x * y < u' * y + x * v'.
rewrite the current goal using add_SNo_com (u' * v') (x * y) Lu'v' Hxy (from left to right).
An exact proof term for the current goal is Hxy3 u' Hu' v' Hv'.
Let u' be given.
Assume Hu'.
Let v' be given.
Assume Hv' Hze.
Apply SNoR_E x Hx u' Hu' to the current goal.
Assume Hu'a: SNo u'.
Assume _ _.
Apply SNoL_E y Hy v' Hv' to the current goal.
Assume Hv'a: SNo v'.
Assume _ _.
We prove the intermediate claim Lu'y: SNo (u' * y).
An exact proof term for the current goal is SNo_mul_SNo u' y Hu'a Hy.
We prove the intermediate claim Lxv': SNo (x * v').
An exact proof term for the current goal is SNo_mul_SNo x v' Hx Hv'a.
We prove the intermediate claim Lu'v': SNo (u' * v').
An exact proof term for the current goal is SNo_mul_SNo u' v' Hu'a Hv'a.
rewrite the current goal using Hwe (from left to right).
rewrite the current goal using Hze (from left to right).
We will prove u * y + x * v + - u * v < u' * y + x * v' + - u' * v'.
Apply add_SNo_minus_Lt_lem (u * y) (x * v) (u * v) (u' * y) (x * v') (u' * v') Luy Lxv Luv Lu'y Lxv' Lu'v' to the current goal.
We will prove u * y + x * v + u' * v' < u' * y + x * v' + u * v.
Apply SNoLt_tra (u * y + x * v + u' * v') (x * y + u * v + u' * v') (u' * y + x * v' + u * v) (SNo_add_SNo_3 (u * y) (x * v) (u' * v') Luy Lxv Lu'v') (SNo_add_SNo_3 (x * y) (u * v) (u' * v') Hxy Luv Lu'v') (SNo_add_SNo_3 (u' * y) (x * v') (u * v) Lu'y Lxv' Luv) to the current goal.
We will prove u * y + x * v + u' * v' < x * y + u * v + u' * v'.
Apply add_SNo_3_3_3_Lt1 (u * y) (x * v) (x * y) (u * v) (u' * v') Luy Lxv Hxy Luv Lu'v' to the current goal.
We will prove u * y + x * v < x * y + u * v.
An exact proof term for the current goal is Hxy1 u Hu v Hv.
We will prove x * y + u * v + u' * v' < u' * y + x * v' + u * v.
Apply add_SNo_3_2_3_Lt1 (x * y) (u' * v') (u' * y) (x * v') (u * v) Hxy Lu'v' Lu'y Lxv' Luv to the current goal.
We will prove u' * v' + x * y < u' * y + x * v'.
rewrite the current goal using add_SNo_com (u' * v') (x * y) Lu'v' Hxy (from left to right).
An exact proof term for the current goal is Hxy4 u' Hu' v' Hv'.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv Hwe.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hua: SNo u.
Assume _ _.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hva: SNo v.
Assume _ _.
We prove the intermediate claim Luy: SNo (u * y).
An exact proof term for the current goal is SNo_mul_SNo u y Hua Hy.
We prove the intermediate claim Lxv: SNo (x * v).
An exact proof term for the current goal is SNo_mul_SNo x v Hx Hva.
We prove the intermediate claim Luv: SNo (u * v).
An exact proof term for the current goal is SNo_mul_SNo u v Hua Hva.
Apply HRE z Hz to the current goal.
Let u' be given.
Assume Hu'.
Let v' be given.
Assume Hv' Hze.
Apply SNoL_E x Hx u' Hu' to the current goal.
Assume Hu'a: SNo u'.
Assume _ _.
Apply SNoR_E y Hy v' Hv' to the current goal.
Assume Hv'a: SNo v'.
Assume _ _.
We prove the intermediate claim Lu'y: SNo (u' * y).
An exact proof term for the current goal is SNo_mul_SNo u' y Hu'a Hy.
We prove the intermediate claim Lxv': SNo (x * v').
An exact proof term for the current goal is SNo_mul_SNo x v' Hx Hv'a.
We prove the intermediate claim Lu'v': SNo (u' * v').
An exact proof term for the current goal is SNo_mul_SNo u' v' Hu'a Hv'a.
rewrite the current goal using Hwe (from left to right).
rewrite the current goal using Hze (from left to right).
We will prove u * y + x * v + - u * v < u' * y + x * v' + - u' * v'.
Apply add_SNo_minus_Lt_lem (u * y) (x * v) (u * v) (u' * y) (x * v') (u' * v') Luy Lxv Luv Lu'y Lxv' Lu'v' to the current goal.
We will prove u * y + x * v + u' * v' < u' * y + x * v' + u * v.
Apply SNoLt_tra (u * y + x * v + u' * v') (x * y + u * v + u' * v') (u' * y + x * v' + u * v) (SNo_add_SNo_3 (u * y) (x * v) (u' * v') Luy Lxv Lu'v') (SNo_add_SNo_3 (x * y) (u * v) (u' * v') Hxy Luv Lu'v') (SNo_add_SNo_3 (u' * y) (x * v') (u * v) Lu'y Lxv' Luv) to the current goal.
We will prove u * y + x * v + u' * v' < x * y + u * v + u' * v'.
Apply add_SNo_3_3_3_Lt1 (u * y) (x * v) (x * y) (u * v) (u' * v') Luy Lxv Hxy Luv Lu'v' to the current goal.
We will prove u * y + x * v < x * y + u * v.
An exact proof term for the current goal is Hxy2 u Hu v Hv.
We will prove x * y + u * v + u' * v' < u' * y + x * v' + u * v.
Apply add_SNo_3_2_3_Lt1 (x * y) (u' * v') (u' * y) (x * v') (u * v) Hxy Lu'v' Lu'y Lxv' Luv to the current goal.
We will prove u' * v' + x * y < u' * y + x * v'.
rewrite the current goal using add_SNo_com (u' * v') (x * y) Lu'v' Hxy (from left to right).
An exact proof term for the current goal is Hxy3 u' Hu' v' Hv'.
Let u' be given.
Assume Hu'.
Let v' be given.
Assume Hv' Hze.
Apply SNoR_E x Hx u' Hu' to the current goal.
Assume Hu'a: SNo u'.
Assume _ _.
Apply SNoL_E y Hy v' Hv' to the current goal.
Assume Hv'a: SNo v'.
Assume _ _.
We prove the intermediate claim Lu'y: SNo (u' * y).
An exact proof term for the current goal is SNo_mul_SNo u' y Hu'a Hy.
We prove the intermediate claim Lxv': SNo (x * v').
An exact proof term for the current goal is SNo_mul_SNo x v' Hx Hv'a.
We prove the intermediate claim Lu'v': SNo (u' * v').
An exact proof term for the current goal is SNo_mul_SNo u' v' Hu'a Hv'a.
rewrite the current goal using Hwe (from left to right).
rewrite the current goal using Hze (from left to right).
We will prove u * y + x * v + - u * v < u' * y + x * v' + - u' * v'.
Apply add_SNo_minus_Lt_lem (u * y) (x * v) (u * v) (u' * y) (x * v') (u' * v') Luy Lxv Luv Lu'y Lxv' Lu'v' to the current goal.
We will prove u * y + x * v + u' * v' < u' * y + x * v' + u * v.
Apply SNoLt_tra (u * y + x * v + u' * v') (x * y + u * v + u' * v') (u' * y + x * v' + u * v) (SNo_add_SNo_3 (u * y) (x * v) (u' * v') Luy Lxv Lu'v') (SNo_add_SNo_3 (x * y) (u * v) (u' * v') Hxy Luv Lu'v') (SNo_add_SNo_3 (u' * y) (x * v') (u * v) Lu'y Lxv' Luv) to the current goal.
We will prove u * y + x * v + u' * v' < x * y + u * v + u' * v'.
Apply add_SNo_3_3_3_Lt1 (u * y) (x * v) (x * y) (u * v) (u' * v') Luy Lxv Hxy Luv Lu'v' to the current goal.
We will prove u * y + x * v < x * y + u * v.
An exact proof term for the current goal is Hxy2 u Hu v Hv.
We will prove x * y + u * v + u' * v' < u' * y + x * v' + u * v.
Apply add_SNo_3_2_3_Lt1 (x * y) (u' * v') (u' * y) (x * v') (u * v) Hxy Lu'v' Lu'y Lxv' Luv to the current goal.
We will prove u' * v' + x * y < u' * y + x * v'.
rewrite the current goal using add_SNo_com (u' * v') (x * y) Lu'v' Hxy (from left to right).
An exact proof term for the current goal is Hxy4 u' Hu' v' Hv'.
An exact proof term for the current goal is Hp L R LLR HLE HLI1 HLI2 HRE HRI1 HRI2 He.
Theorem. (mul_SNo_Lt) The following is provable:
∀x y u v, SNo xSNo ySNo uSNo vu < xv < yu * y + x * v < x * y + u * v
Proof:
Let x, y, u and v be given.
Assume Hx Hy Hu Hv Hux Hvy.
Apply mul_SNo_prop_1 x Hx y Hy to the current goal.
Assume Hxy: SNo (x * y).
Assume Hxy1: uSNoL x, vSNoL y, u * y + x * v < x * y + u * v.
Assume Hxy2: uSNoR x, vSNoR y, u * y + x * v < x * y + u * v.
Assume Hxy3: uSNoL x, vSNoR y, x * y + u * v < u * y + x * v.
Assume Hxy4: uSNoR x, vSNoL y, x * y + u * v < u * y + x * v.
Apply mul_SNo_prop_1 u Hu y Hy to the current goal.
Assume Huy: SNo (u * y).
Assume Huy1: xSNoL u, vSNoL y, x * y + u * v < u * y + x * v.
Assume Huy2: xSNoR u, vSNoR y, x * y + u * v < u * y + x * v.
Assume Huy3: xSNoL u, vSNoR y, u * y + x * v < x * y + u * v.
Assume Huy4: xSNoR u, vSNoL y, u * y + x * v < x * y + u * v.
Apply mul_SNo_prop_1 x Hx v Hv to the current goal.
Assume Hxv: SNo (x * v).
Assume Hxv1: uSNoL x, ySNoL v, u * v + x * y < x * v + u * y.
Assume Hxv2: uSNoR x, ySNoR v, u * v + x * y < x * v + u * y.
Assume Hxv3: uSNoL x, ySNoR v, x * v + u * y < u * v + x * y.
Assume Hxv4: uSNoR x, ySNoL v, x * v + u * y < u * v + x * y.
Apply mul_SNo_prop_1 u Hu v Hv to the current goal.
Assume Huv: SNo (u * v).
Assume Huv1: xSNoL u, ySNoL v, x * v + u * y < u * v + x * y.
Assume Huv2: xSNoR u, ySNoR v, x * v + u * y < u * v + x * y.
Assume Huv3: xSNoL u, ySNoR v, u * v + x * y < x * v + u * y.
Assume Huv4: xSNoR u, ySNoL v, u * v + x * y < x * v + u * y.
We prove the intermediate claim Luyxv: SNo (u * y + x * v).
An exact proof term for the current goal is SNo_add_SNo (u * y) (x * v) Huy Hxv.
We prove the intermediate claim Lxyuv: SNo (x * y + u * v).
An exact proof term for the current goal is SNo_add_SNo (x * y) (u * v) Hxy Huv.
Apply SNoLtE u x Hu Hx Hux to the current goal.
Let w be given.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev u SNoLev x.
Assume Hw3: SNoEq_ (SNoLev w) w u.
Assume Hw4: SNoEq_ (SNoLev w) w x.
Assume Hw5: u < w.
Assume Hw6: w < x.
Assume Hw7: SNoLev w u.
Assume Hw8: SNoLev w x.
Apply binintersectE (SNoLev u) (SNoLev x) (SNoLev w) Hw2 to the current goal.
Assume Hw2a Hw2b.
We prove the intermediate claim Lwx: w SNoL x.
An exact proof term for the current goal is SNoL_I x Hx w Hw1 Hw2b Hw6.
We prove the intermediate claim Lwu: w SNoR u.
An exact proof term for the current goal is SNoR_I u Hu w Hw1 Hw2a Hw5.
We prove the intermediate claim Lwy: SNo (w * y).
An exact proof term for the current goal is SNo_mul_SNo w y Hw1 Hy.
We prove the intermediate claim Lwv: SNo (w * v).
An exact proof term for the current goal is SNo_mul_SNo w v Hw1 Hv.
We prove the intermediate claim Lwyxv: SNo (w * y + x * v).
An exact proof term for the current goal is SNo_add_SNo (w * y) (x * v) Lwy Hxv.
We prove the intermediate claim Lwyuv: SNo (w * y + u * v).
An exact proof term for the current goal is SNo_add_SNo (w * y) (u * v) Lwy Huv.
We prove the intermediate claim Lxywv: SNo (x * y + w * v).
An exact proof term for the current goal is SNo_add_SNo (x * y) (w * v) Hxy Lwv.
We prove the intermediate claim Luywv: SNo (u * y + w * v).
An exact proof term for the current goal is SNo_add_SNo (u * y) (w * v) Huy Lwv.
We prove the intermediate claim Luvwy: SNo (u * v + w * y).
An exact proof term for the current goal is SNo_add_SNo (u * v) (w * y) Huv Lwy.
We prove the intermediate claim Lwvxy: SNo (w * v + x * y).
An exact proof term for the current goal is SNo_add_SNo (w * v) (x * y) Lwv Hxy.
We prove the intermediate claim Lxvwy: SNo (x * v + w * y).
An exact proof term for the current goal is SNo_add_SNo (x * v) (w * y) Hxv Lwy.
We prove the intermediate claim Lwvuy: SNo (w * v + u * y).
An exact proof term for the current goal is SNo_add_SNo (w * v) (u * y) Lwv Huy.
Apply SNoLtE v y Hv Hy Hvy to the current goal.
Let z be given.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev v SNoLev y.
Assume Hz3: SNoEq_ (SNoLev z) z v.
Assume Hz4: SNoEq_ (SNoLev z) z y.
Assume Hz5: v < z.
Assume Hz6: z < y.
Assume Hz7: SNoLev z v.
Assume Hz8: SNoLev z y.
Apply binintersectE (SNoLev v) (SNoLev y) (SNoLev z) Hz2 to the current goal.
Assume Hz2a Hz2b.
We prove the intermediate claim Lzy: z SNoL y.
An exact proof term for the current goal is SNoL_I y Hy z Hz1 Hz2b Hz6.
We prove the intermediate claim Lzv: z SNoR v.
An exact proof term for the current goal is SNoR_I v Hv z Hz1 Hz2a Hz5.
We prove the intermediate claim Lxz: SNo (x * z).
An exact proof term for the current goal is SNo_mul_SNo x z Hx Hz1.
We prove the intermediate claim Luz: SNo (u * z).
An exact proof term for the current goal is SNo_mul_SNo u z Hu Hz1.
We prove the intermediate claim Lwz: SNo (w * z).
An exact proof term for the current goal is SNo_mul_SNo w z Hw1 Hz1.
We prove the intermediate claim L1: w * y + x * z < x * y + w * z.
An exact proof term for the current goal is Hxy1 w Lwx z Lzy.
We prove the intermediate claim L2: w * v + u * z < u * v + w * z.
An exact proof term for the current goal is Huv2 w Lwu z Lzv.
We prove the intermediate claim L3: x * v + w * z < w * v + x * z.
An exact proof term for the current goal is Hxv3 w Lwx z Lzv.
We prove the intermediate claim L4: u * y + w * z < w * y + u * z.
An exact proof term for the current goal is Huy4 w Lwu z Lzy.
We prove the intermediate claim Lwzwz: SNo (w * z + w * z).
An exact proof term for the current goal is SNo_add_SNo (w * z) (w * z) Lwz Lwz.
Apply add_SNo_Lt1_cancel (u * y + x * v) (w * z + w * z) (x * y + u * v) Luyxv Lwzwz Lxyuv to the current goal.
We will prove (u * y + x * v) + (w * z + w * z) < (x * y + u * v) + (w * z + w * z).
We prove the intermediate claim Lwyuz: SNo (w * y + u * z).
An exact proof term for the current goal is SNo_add_SNo (w * y) (u * z) Lwy Luz.
We prove the intermediate claim Lwvxz: SNo (w * v + x * z).
An exact proof term for the current goal is SNo_add_SNo (w * v) (x * z) Lwv Lxz.
We prove the intermediate claim Luywz: SNo (u * y + w * z).
An exact proof term for the current goal is SNo_add_SNo (u * y) (w * z) Huy Lwz.
We prove the intermediate claim Lxvwz: SNo (x * v + w * z).
An exact proof term for the current goal is SNo_add_SNo (x * v) (w * z) Hxv Lwz.
We prove the intermediate claim Lwvuz: SNo (w * v + u * z).
An exact proof term for the current goal is SNo_add_SNo (w * v) (u * z) Lwv Luz.
We prove the intermediate claim Lxyxz: SNo (x * y + x * z).
An exact proof term for the current goal is SNo_add_SNo (x * y) (x * z) Hxy Lxz.
We prove the intermediate claim Lwyxz: SNo (w * y + x * z).
An exact proof term for the current goal is SNo_add_SNo (w * y) (x * z) Lwy Lxz.
We prove the intermediate claim Lxywz: SNo (x * y + w * z).
An exact proof term for the current goal is SNo_add_SNo (x * y) (w * z) Hxy Lwz.
We prove the intermediate claim Luvwz: SNo (u * v + w * z).
An exact proof term for the current goal is SNo_add_SNo (u * v) (w * z) Huv Lwz.
Apply SNoLt_tra ((u * y + x * v) + (w * z + w * z)) ((w * y + u * z) + (w * v + x * z)) ((x * y + u * v) + (w * z + w * z)) (SNo_add_SNo (u * y + x * v) (w * z + w * z) Luyxv Lwzwz) (SNo_add_SNo (w * y + u * z) (w * v + x * z) Lwyuz Lwvxz) (SNo_add_SNo (x * y + u * v) (w * z + w * z) Lxyuv Lwzwz) to the current goal.
We will prove (u * y + x * v) + (w * z + w * z) < (w * y + u * z) + (w * v + x * z).
rewrite the current goal using add_SNo_com_4_inner_mid (u * y) (x * v) (w * z) (w * z) Huy Hxv Lwz Lwz (from left to right).
We will prove (u * y + w * z) + (x * v + w * z) < (w * y + u * z) + (w * v + x * z).
Apply add_SNo_Lt3 (u * y + w * z) (x * v + w * z) (w * y + u * z) (w * v + x * z) Luywz Lxvwz Lwyuz Lwvxz to the current goal.
We will prove u * y + w * z < w * y + u * z.
An exact proof term for the current goal is L4.
We will prove x * v + w * z < w * v + x * z.
An exact proof term for the current goal is L3.
We will prove (w * y + u * z) + (w * v + x * z) < (x * y + u * v) + (w * z + w * z).
rewrite the current goal using add_SNo_com_4_inner_mid (x * y) (u * v) (w * z) (w * z) Hxy Huv Lwz Lwz (from left to right).
We will prove (w * y + u * z) + (w * v + x * z) < (x * y + w * z) + (u * v + w * z).
rewrite the current goal using add_SNo_com (w * y) (u * z) Lwy Luz (from left to right).
rewrite the current goal using add_SNo_com_4_inner_mid (u * z) (w * y) (w * v) (x * z) Luz Lwy Lwv Lxz (from left to right).
rewrite the current goal using add_SNo_com (w * v) (u * z) Lwv Luz (from right to left).
We will prove (w * v + u * z) + (w * y + x * z) < (x * y + w * z) + (u * v + w * z).
rewrite the current goal using add_SNo_com (w * v + u * z) (w * y + x * z) Lwvuz Lwyxz (from left to right).
We will prove (w * y + x * z) + (w * v + u * z) < (x * y + w * z) + (u * v + w * z).
Apply add_SNo_Lt3 (w * y + x * z) (w * v + u * z) (x * y + w * z) (u * v + w * z) Lwyxz Lwvuz Lxywz Luvwz to the current goal.
An exact proof term for the current goal is L1.
An exact proof term for the current goal is L2.
Assume H4: SNoLev v SNoLev y.
Assume H5: SNoEq_ (SNoLev v) v y.
Assume H6: SNoLev v y.
We prove the intermediate claim Lvy: v SNoL y.
An exact proof term for the current goal is SNoL_I y Hy v Hv H4 Hvy.
We prove the intermediate claim L1: w * y + x * v < x * y + w * v.
An exact proof term for the current goal is Hxy1 w Lwx v Lvy.
We prove the intermediate claim L2: u * y + w * v < w * y + u * v.
An exact proof term for the current goal is Huy4 w Lwu v Lvy.
We will prove u * y + x * v < x * y + u * v.
Apply add_SNo_Lt2_cancel (w * y) (u * y + x * v) (x * y + u * v) Lwy Luyxv Lxyuv to the current goal.
We will prove w * y + u * y + x * v < w * y + x * y + u * v.
Apply SNoLt_tra (w * y + u * y + x * v) (u * y + w * v + x * y) (w * y + x * y + u * v) (SNo_add_SNo (w * y) (u * y + x * v) Lwy Luyxv) (SNo_add_SNo (u * y) (w * v + x * y) Huy (SNo_add_SNo (w * v) (x * y) Lwv Hxy)) (SNo_add_SNo (w * y) (x * y + u * v) Lwy Lxyuv) to the current goal.
We will prove w * y + u * y + x * v < u * y + w * v + x * y.
rewrite the current goal using add_SNo_com_3_0_1 (w * y) (u * y) (x * v) Lwy Huy Hxv (from left to right).
We will prove u * y + w * y + x * v < u * y + w * v + x * y.
rewrite the current goal using add_SNo_com (w * v) (x * y) Lwv Hxy (from left to right).
An exact proof term for the current goal is add_SNo_Lt2 (u * y) (w * y + x * v) (x * y + w * v) Huy Lwyxv Lxywv L1.
We will prove u * y + w * v + x * y < w * y + x * y + u * v.
rewrite the current goal using add_SNo_assoc (u * y) (w * v) (x * y) Huy Lwv Hxy (from left to right).
We will prove (u * y + w * v) + x * y < w * y + x * y + u * v.
rewrite the current goal using add_SNo_com (x * y) (u * v) Hxy Huv (from left to right).
We will prove (u * y + w * v) + x * y < w * y + u * v + x * y.
rewrite the current goal using add_SNo_assoc (w * y) (u * v) (x * y) Lwy Huv Hxy (from left to right).
We will prove (u * y + w * v) + x * y < (w * y + u * v) + x * y.
An exact proof term for the current goal is add_SNo_Lt1 (u * y + w * v) (x * y) (w * y + u * v) Luywv Hxy Lwyuv L2.
Assume H4: SNoLev y SNoLev v.
Assume H5: SNoEq_ (SNoLev y) v y.
Assume H6: SNoLev y v.
We prove the intermediate claim Lyv: y SNoR v.
An exact proof term for the current goal is SNoR_I v Hv y Hy H4 Hvy.
We prove the intermediate claim L1: x * v + w * y < w * v + x * y.
An exact proof term for the current goal is Hxv3 w Lwx y Lyv.
We prove the intermediate claim L2: w * v + u * y < u * v + w * y.
An exact proof term for the current goal is Huv2 w Lwu y Lyv.
We will prove u * y + x * v < x * y + u * v.
Apply add_SNo_Lt2_cancel (w * y) (u * y + x * v) (x * y + u * v) Lwy Luyxv Lxyuv to the current goal.
We will prove w * y + u * y + x * v < w * y + x * y + u * v.
Apply SNoLt_tra (w * y + u * y + x * v) (u * y + w * v + x * y) (w * y + x * y + u * v) (SNo_add_SNo (w * y) (u * y + x * v) Lwy Luyxv) (SNo_add_SNo (u * y) (w * v + x * y) Huy (SNo_add_SNo (w * v) (x * y) Lwv Hxy)) (SNo_add_SNo (w * y) (x * y + u * v) Lwy Lxyuv) to the current goal.
We will prove w * y + u * y + x * v < u * y + w * v + x * y.
rewrite the current goal using add_SNo_rotate_3_1 (u * y) (x * v) (w * y) Huy Hxv Lwy (from right to left).
We will prove u * y + x * v + w * y < u * y + w * v + x * y.
An exact proof term for the current goal is add_SNo_Lt2 (u * y) (x * v + w * y) (w * v + x * y) Huy Lxvwy Lwvxy L1.
We will prove u * y + w * v + x * y < w * y + x * y + u * v.
rewrite the current goal using add_SNo_rotate_3_1 (w * y) (x * y) (u * v) Lwy Hxy Huv (from left to right).
We will prove u * y + w * v + x * y < u * v + w * y + x * y.
rewrite the current goal using add_SNo_assoc (u * y) (w * v) (x * y) Huy Lwv Hxy (from left to right).
rewrite the current goal using add_SNo_assoc (u * v) (w * y) (x * y) Huv Lwy Hxy (from left to right).
We will prove (u * y + w * v) + x * y < (u * v + w * y) + x * y.
rewrite the current goal using add_SNo_com (u * y) (w * v) Huy Lwv (from left to right).
We will prove (w * v + u * y) + x * y < (u * v + w * y) + x * y.
Apply add_SNo_Lt1 (w * v + u * y) (x * y) (u * v + w * y) Lwvuy Hxy Luvwy L2 to the current goal.
Assume H1: SNoLev u SNoLev x.
Assume H2: SNoEq_ (SNoLev u) u x.
Assume H3: SNoLev u x.
We prove the intermediate claim Lux: u SNoL x.
An exact proof term for the current goal is SNoL_I x Hx u Hu H1 Hux.
Apply SNoLtE v y Hv Hy Hvy to the current goal.
Let z be given.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev v SNoLev y.
Assume Hz3: SNoEq_ (SNoLev z) z v.
Assume Hz4: SNoEq_ (SNoLev z) z y.
Assume Hz5: v < z.
Assume Hz6: z < y.
Assume Hz7: SNoLev z v.
Assume Hz8: SNoLev z y.
Apply binintersectE (SNoLev v) (SNoLev y) (SNoLev z) Hz2 to the current goal.
Assume Hz2a Hz2b.
We prove the intermediate claim Lzy: z SNoL y.
An exact proof term for the current goal is SNoL_I y Hy z Hz1 Hz2b Hz6.
We prove the intermediate claim Lzv: z SNoR v.
An exact proof term for the current goal is SNoR_I v Hv z Hz1 Hz2a Hz5.
We prove the intermediate claim Lxz: SNo (x * z).
An exact proof term for the current goal is SNo_mul_SNo x z Hx Hz1.
We prove the intermediate claim Luz: SNo (u * z).
An exact proof term for the current goal is SNo_mul_SNo u z Hu Hz1.
We prove the intermediate claim Luyxz: SNo (u * y + x * z).
An exact proof term for the current goal is SNo_add_SNo (u * y) (x * z) Huy Lxz.
We prove the intermediate claim Luvxz: SNo (u * v + x * z).
An exact proof term for the current goal is SNo_add_SNo (u * v) (x * z) Huv Lxz.
We prove the intermediate claim Lxyuz: SNo (x * y + u * z).
An exact proof term for the current goal is SNo_add_SNo (x * y) (u * z) Hxy Luz.
We prove the intermediate claim Lxvuz: SNo (x * v + u * z).
An exact proof term for the current goal is SNo_add_SNo (x * v) (u * z) Hxv Luz.
We prove the intermediate claim L1: u * y + x * z < x * y + u * z.
An exact proof term for the current goal is Hxy1 u Lux z Lzy.
We prove the intermediate claim L2: x * v + u * z < u * v + x * z.
An exact proof term for the current goal is Hxv3 u Lux z Lzv.
We will prove u * y + x * v < x * y + u * v.
Apply add_SNo_Lt2_cancel (x * z) (u * y + x * v) (x * y + u * v) Lxz Luyxv Lxyuv to the current goal.
We will prove x * z + u * y + x * v < x * z + x * y + u * v.
Apply SNoLt_tra (x * z + u * y + x * v) (x * y + u * z + x * v) (x * z + x * y + u * v) (SNo_add_SNo (x * z) (u * y + x * v) Lxz Luyxv) (SNo_add_SNo (x * y) (u * z + x * v) Hxy (SNo_add_SNo (u * z) (x * v) Luz Hxv)) (SNo_add_SNo (x * z) (x * y + u * v) Lxz Lxyuv) to the current goal.
We will prove x * z + u * y + x * v < x * y + u * z + x * v.
rewrite the current goal using add_SNo_assoc (x * z) (u * y) (x * v) Lxz Huy Hxv (from left to right).
rewrite the current goal using add_SNo_com (x * z) (u * y) Lxz Huy (from left to right).
We will prove (u * y + x * z) + x * v < x * y + u * z + x * v.
rewrite the current goal using add_SNo_assoc (x * y) (u * z) (x * v) Hxy Luz Hxv (from left to right).
An exact proof term for the current goal is add_SNo_Lt1 (u * y + x * z) (x * v) (x * y + u * z) Luyxz Hxv Lxyuz L1.
We will prove x * y + u * z + x * v < x * z + x * y + u * v.
rewrite the current goal using add_SNo_rotate_3_1 (x * y) (u * v) (x * z) Hxy Huv Lxz (from right to left).
We will prove x * y + u * z + x * v < x * y + u * v + x * z.
rewrite the current goal using add_SNo_com (u * z) (x * v) Luz Hxv (from left to right).
We will prove x * y + x * v + u * z < x * y + u * v + x * z.
An exact proof term for the current goal is add_SNo_Lt2 (x * y) (x * v + u * z) (u * v + x * z) Hxy Lxvuz Luvxz L2.
Assume H4: SNoLev v SNoLev y.
Assume H5: SNoEq_ (SNoLev v) v y.
Assume H6: SNoLev v y.
We prove the intermediate claim Lvy: v SNoL y.
An exact proof term for the current goal is SNoL_I y Hy v Hv H4 Hvy.
An exact proof term for the current goal is Hxy1 u Lux v Lvy.
Assume H4: SNoLev y SNoLev v.
Assume H5: SNoEq_ (SNoLev y) v y.
Assume H6: SNoLev y v.
We prove the intermediate claim Lyv: y SNoR v.
An exact proof term for the current goal is SNoR_I v Hv y Hy H4 Hvy.
We will prove u * y + x * v < x * y + u * v.
rewrite the current goal using add_SNo_com (u * y) (x * v) Huy Hxv (from left to right).
rewrite the current goal using add_SNo_com (x * y) (u * v) Hxy Huv (from left to right).
An exact proof term for the current goal is Hxv3 u Lux y Lyv.
Assume H1: SNoLev x SNoLev u.
Assume H2: SNoEq_ (SNoLev x) u x.
Assume H3: SNoLev x u.
We prove the intermediate claim Lxu: x SNoR u.
An exact proof term for the current goal is SNoR_I u Hu x Hx H1 Hux.
Apply SNoLtE v y Hv Hy Hvy to the current goal.
Let z be given.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev v SNoLev y.
Assume Hz3: SNoEq_ (SNoLev z) z v.
Assume Hz4: SNoEq_ (SNoLev z) z y.
Assume Hz5: v < z.
Assume Hz6: z < y.
Assume Hz7: SNoLev z v.
Assume Hz8: SNoLev z y.
Apply binintersectE (SNoLev v) (SNoLev y) (SNoLev z) Hz2 to the current goal.
Assume Hz2a Hz2b.
We prove the intermediate claim Lzy: z SNoL y.
An exact proof term for the current goal is SNoL_I y Hy z Hz1 Hz2b Hz6.
We prove the intermediate claim Lzv: z SNoR v.
An exact proof term for the current goal is SNoR_I v Hv z Hz1 Hz2a Hz5.
We prove the intermediate claim Lxz: SNo (x * z).
An exact proof term for the current goal is SNo_mul_SNo x z Hx Hz1.
We prove the intermediate claim Luz: SNo (u * z).
An exact proof term for the current goal is SNo_mul_SNo u z Hu Hz1.
We prove the intermediate claim L1: u * y + x * z < x * y + u * z.
An exact proof term for the current goal is Huy4 x Lxu z Lzy.
We prove the intermediate claim L2: x * v + u * z < u * v + x * z.
An exact proof term for the current goal is Huv2 x Lxu z Lzv.
We will prove u * y + x * v < x * y + u * v.
Apply add_SNo_Lt1_cancel (u * y + x * v) (x * z) (x * y + u * v) Luyxv Lxz Lxyuv to the current goal.
We will prove (u * y + x * v) + x * z < (x * y + u * v) + x * z.
rewrite the current goal using add_SNo_com (u * y) (x * v) Huy Hxv (from left to right).
We will prove (x * v + u * y) + x * z < (x * y + u * v) + x * z.
rewrite the current goal using add_SNo_assoc (x * v) (u * y) (x * z) Hxv Huy Lxz (from right to left).
rewrite the current goal using add_SNo_assoc (x * y) (u * v) (x * z) Hxy Huv Lxz (from right to left).
We will prove x * v + u * y + x * z < x * y + u * v + x * z.
We prove the intermediate claim Luyxz: SNo (u * y + x * z).
An exact proof term for the current goal is SNo_add_SNo (u * y) (x * z) Huy Lxz.
We prove the intermediate claim Luzxy: SNo (u * z + x * y).
An exact proof term for the current goal is SNo_add_SNo (u * z) (x * y) Luz Hxy.
We prove the intermediate claim Luvxz: SNo (u * v + x * z).
An exact proof term for the current goal is SNo_add_SNo (u * v) (x * z) Huv Lxz.
Apply SNoLt_tra (x * v + u * y + x * z) (x * v + u * z + x * y) (x * y + u * v + x * z) (SNo_add_SNo (x * v) (u * y + x * z) Hxv Luyxz) (SNo_add_SNo (x * v) (u * z + x * y) Hxv Luzxy) (SNo_add_SNo (x * y) (u * v + x * z) Hxy Luvxz) to the current goal.
We will prove x * v + u * y + x * z < x * v + u * z + x * y.
rewrite the current goal using add_SNo_com (u * z) (x * y) Luz Hxy (from left to right).
An exact proof term for the current goal is add_SNo_Lt2 (x * v) (u * y + x * z) (x * y + u * z) Hxv Luyxz (SNo_add_SNo (x * y) (u * z) Hxy Luz) L1.
We will prove x * v + u * z + x * y < x * y + u * v + x * z.
rewrite the current goal using add_SNo_rotate_3_1 (x * v) (u * z) (x * y) Hxv Luz Hxy (from left to right).
We will prove x * y + x * v + u * z < x * y + u * v + x * z.
An exact proof term for the current goal is add_SNo_Lt2 (x * y) (x * v + u * z) (u * v + x * z) Hxy (SNo_add_SNo (x * v) (u * z) Hxv Luz) Luvxz L2.
Assume H4: SNoLev v SNoLev y.
Assume H5: SNoEq_ (SNoLev v) v y.
Assume H6: SNoLev v y.
We prove the intermediate claim Lvy: v SNoL y.
An exact proof term for the current goal is SNoL_I y Hy v Hv H4 Hvy.
We will prove u * y + x * v < x * y + u * v.
An exact proof term for the current goal is Huy4 x Lxu v Lvy.
Assume H4: SNoLev y SNoLev v.
Assume H5: SNoEq_ (SNoLev y) v y.
Assume H6: SNoLev y v.
We prove the intermediate claim Lyv: y SNoR v.
An exact proof term for the current goal is SNoR_I v Hv y Hy H4 Hvy.
We will prove u * y + x * v < x * y + u * v.
rewrite the current goal using add_SNo_com (u * y) (x * v) Huy Hxv (from left to right).
rewrite the current goal using add_SNo_com (x * y) (u * v) Hxy Huv (from left to right).
An exact proof term for the current goal is Huv2 x Lxu y Lyv.
Theorem. (mul_SNo_Le) The following is provable:
∀x y u v, SNo xSNo ySNo uSNo vu xv yu * y + x * v x * y + u * v
Proof:
Let x, y, u and v be given.
Assume Hx Hy Hu Hv Hux Hvy.
Apply SNoLeE u x Hu Hx Hux to the current goal.
Assume Hux: u < x.
Apply SNoLeE v y Hv Hy Hvy to the current goal.
Assume Hvy: v < y.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is mul_SNo_Lt x y u v Hx Hy Hu Hv Hux Hvy.
Assume Hvy: v = y.
rewrite the current goal using Hvy (from left to right).
We will prove u * y + x * y x * y + u * y.
rewrite the current goal using add_SNo_com (u * y) (x * y) (SNo_mul_SNo u y Hu Hy) (SNo_mul_SNo x y Hx Hy) (from left to right).
We will prove x * y + u * y x * y + u * y.
Apply SNoLe_ref to the current goal.
Assume Hux: u = x.
rewrite the current goal using Hux (from left to right).
We will prove x * y + x * v x * y + x * v.
Apply SNoLe_ref to the current goal.
Theorem. (mul_SNo_SNoL_interpolate) The following is provable:
∀x y, SNo xSNo yuSNoL (x * y), (vSNoL x, wSNoL y, u + v * w v * y + x * w) (vSNoR x, wSNoR y, u + v * w v * y + x * w)
Proof:
Let x and y be given.
Assume Hx Hy.
Set P1 to be the term λu ⇒ vSNoL x, wSNoL y, u + v * w v * y + x * w of type setprop.
Set P2 to be the term λu ⇒ vSNoR x, wSNoR y, u + v * w v * y + x * w of type setprop.
Set P to be the term λu ⇒ P1 u P2 u of type setprop.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Hx Hy.
We prove the intermediate claim LI: ∀u, SNo uSNoLev u SNoLev (x * y)u < x * yP u.
Apply SNoLev_ind to the current goal.
Let u be given.
Assume Hu1: SNo u.
Assume IH: zSNoS_ (SNoLev u), SNoLev z SNoLev (x * y)z < x * yP z.
Assume Hu2: SNoLev u SNoLev (x * y).
Assume Hu3: u < x * y.
Apply dneg to the current goal.
Assume HNC: ¬ P u.
We prove the intermediate claim L1: vSNoL x, wSNoL y, v * y + x * w < u + v * w.
Let v be given.
Assume Hv.
Let w be given.
Assume Hw.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoL_E y Hy w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
Apply SNoLtLe_or (v * y + x * w) (u + v * w) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Hv1 Hy) (SNo_mul_SNo x w Hx Hw1)) (SNo_add_SNo u (v * w) Hu1 (SNo_mul_SNo v w Hv1 Hw1)) to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H.
Apply HNC to the current goal.
Apply orIL to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We use w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is H.
We prove the intermediate claim L2: vSNoR x, wSNoR y, v * y + x * w < u + v * w.
Let v be given.
Assume Hv.
Let w be given.
Assume Hw.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoR_E y Hy w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
Apply SNoLtLe_or (v * y + x * w) (u + v * w) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Hv1 Hy) (SNo_mul_SNo x w Hx Hw1)) (SNo_add_SNo u (v * w) Hu1 (SNo_mul_SNo v w Hv1 Hw1)) to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H.
Apply HNC to the current goal.
Apply orIR to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We use w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is H.
Apply SNoLt_irref u to the current goal.
Apply SNoLtLe_tra u (x * y) u Hu1 Lxy Hu1 Hu3 to the current goal.
We will prove x * y u.
Apply mul_SNo_eq_3 x y Hx Hy to the current goal.
Let L and R be given.
Assume HLR HLE HLI1 HLI2 HRE HRI1 HRI2.
Assume HE: x * y = SNoCut L R.
rewrite the current goal using HE (from left to right).
We will prove SNoCut L R u.
rewrite the current goal using SNo_eta u Hu1 (from left to right).
We will prove SNoCut L R SNoCut (SNoL u) (SNoR u).
Apply SNoCut_Le L R (SNoL u) (SNoR u) HLR (SNoCutP_SNoL_SNoR u Hu1) to the current goal.
We will prove zL, z < SNoCut (SNoL u) (SNoR u).
Let z be given.
Assume Hz.
rewrite the current goal using SNo_eta u Hu1 (from right to left).
We will prove z < u.
Apply HLE z Hz to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Let w be given.
Assume Hw: w SNoL y.
Assume Hze: z = v * y + x * w + - v * w.
rewrite the current goal using Hze (from left to right).
We will prove v * y + x * w + - v * w < u.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoL_E y Hy w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
Apply add_SNo_minus_Lt1b3 (v * y) (x * w) (v * w) u (SNo_mul_SNo v y Hv1 Hy) (SNo_mul_SNo x w Hx Hw1) (SNo_mul_SNo v w Hv1 Hw1) Hu1 to the current goal.
We will prove v * y + x * w < u + v * w.
An exact proof term for the current goal is L1 v Hv w Hw.
Let v be given.
Assume Hv: v SNoR x.
Let w be given.
Assume Hw: w SNoR y.
Assume Hze: z = v * y + x * w + - v * w.
rewrite the current goal using Hze (from left to right).
We will prove v * y + x * w + - v * w < u.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoR_E y Hy w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
Apply add_SNo_minus_Lt1b3 (v * y) (x * w) (v * w) u (SNo_mul_SNo v y Hv1 Hy) (SNo_mul_SNo x w Hx Hw1) (SNo_mul_SNo v w Hv1 Hw1) Hu1 to the current goal.
We will prove v * y + x * w < u + v * w.
An exact proof term for the current goal is L2 v Hv w Hw.
We will prove zSNoR u, SNoCut L R < z.
Let z be given.
Assume Hz: z SNoR u.
rewrite the current goal using HE (from right to left).
We will prove x * y < z.
Apply SNoR_E u Hu1 z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev u.
Assume Hz3: u < z.
Apply SNoLt_trichotomy_or_impred z (x * y) Hz1 Lxy to the current goal.
Assume H1: z < x * y.
We prove the intermediate claim LPz: P z.
Apply IH z to the current goal.
We will prove z SNoS_ (SNoLev u).
Apply SNoS_I2 to the current goal.
An exact proof term for the current goal is Hz1.
An exact proof term for the current goal is Hu1.
An exact proof term for the current goal is Hz2.
We will prove SNoLev z SNoLev (x * y).
An exact proof term for the current goal is ordinal_TransSet (SNoLev (x * y)) (SNoLev_ordinal (x * y) Lxy) (SNoLev u) Hu2 (SNoLev z) Hz2.
We will prove z < x * y.
An exact proof term for the current goal is H1.
Apply LPz to the current goal.
Assume H2: P1 z.
Apply H2 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v SNoL x.
Assume H2.
Apply H2 to the current goal.
Let w be given.
Assume H2.
Apply H2 to the current goal.
Assume Hw: w SNoL y.
Assume Hvw: z + v * w v * y + x * w.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoL_E y Hy w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim L3: z + v * w < u + v * w.
Apply SNoLeLt_tra (z + v * w) (v * y + x * w) (u + v * w) (SNo_add_SNo z (v * w) Hz1 Lvw) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Hv1 Hy) (SNo_mul_SNo x w Hx Hw1)) (SNo_add_SNo u (v * w) Hu1 Lvw) Hvw to the current goal.
We will prove v * y + x * w < u + v * w.
An exact proof term for the current goal is L1 v Hv w Hw.
We prove the intermediate claim L4: z < u.
An exact proof term for the current goal is add_SNo_Lt1_cancel z (v * w) u Hz1 Lvw Hu1 L3.
Apply SNoLt_irref u to the current goal.
An exact proof term for the current goal is SNoLt_tra u z u Hu1 Hz1 Hu1 Hz3 L4.
Assume H2: P2 z.
Apply H2 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v SNoR x.
Assume H2.
Apply H2 to the current goal.
Let w be given.
Assume H2.
Apply H2 to the current goal.
Assume Hw: w SNoR y.
Assume Hvw: z + v * w v * y + x * w.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoR_E y Hy w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim L5: z + v * w < u + v * w.
Apply SNoLeLt_tra (z + v * w) (v * y + x * w) (u + v * w) (SNo_add_SNo z (v * w) Hz1 Lvw) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Hv1 Hy) (SNo_mul_SNo x w Hx Hw1)) (SNo_add_SNo u (v * w) Hu1 Lvw) Hvw to the current goal.
We will prove v * y + x * w < u + v * w.
An exact proof term for the current goal is L2 v Hv w Hw.
We prove the intermediate claim L6: z < u.
An exact proof term for the current goal is add_SNo_Lt1_cancel z (v * w) u Hz1 Lvw Hu1 L5.
Apply SNoLt_irref u to the current goal.
An exact proof term for the current goal is SNoLt_tra u z u Hu1 Hz1 Hu1 Hz3 L6.
Assume H1: z = x * y.
Apply In_no2cycle (SNoLev u) (SNoLev (x * y)) Hu2 to the current goal.
We will prove SNoLev (x * y) SNoLev u.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hz2.
Assume H1: x * y < z.
An exact proof term for the current goal is H1.
Let u be given.
Assume Hu: u SNoL (x * y).
Apply SNoL_E (x * y) Lxy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev (x * y).
Assume Hu3: u < x * y.
An exact proof term for the current goal is LI u Hu1 Hu2 Hu3.
Theorem. (mul_SNo_SNoL_interpolate_impred) The following is provable:
∀x y, SNo xSNo yuSNoL (x * y), ∀p : prop, (vSNoL x, wSNoL y, u + v * w v * y + x * wp)(vSNoR x, wSNoR y, u + v * w v * y + x * wp)p
Proof:
Let x and y be given.
Assume Hx Hy.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp1 Hp2.
Apply mul_SNo_SNoL_interpolate x y Hx Hy u Hu to the current goal.
Assume H1.
Apply H1 to the current goal.
Let v be given.
Assume H1.
Apply H1 to the current goal.
Assume Hv.
Assume H1.
Apply H1 to the current goal.
Let w be given.
Assume H1.
Apply H1 to the current goal.
Assume Hw Hvw.
An exact proof term for the current goal is Hp1 v Hv w Hw Hvw.
Assume H1.
Apply H1 to the current goal.
Let v be given.
Assume H1.
Apply H1 to the current goal.
Assume Hv.
Assume H1.
Apply H1 to the current goal.
Let w be given.
Assume H1.
Apply H1 to the current goal.
Assume Hw Hvw.
An exact proof term for the current goal is Hp2 v Hv w Hw Hvw.
Theorem. (mul_SNo_SNoR_interpolate) The following is provable:
∀x y, SNo xSNo yuSNoR (x * y), (vSNoL x, wSNoR y, v * y + x * w u + v * w) (vSNoR x, wSNoL y, v * y + x * w u + v * w)
Proof:
Let x and y be given.
Assume Hx Hy.
Set P1 to be the term λu ⇒ vSNoL x, wSNoR y, v * y + x * w u + v * w of type setprop.
Set P2 to be the term λu ⇒ vSNoR x, wSNoL y, v * y + x * w u + v * w of type setprop.
Set P to be the term λu ⇒ P1 u P2 u of type setprop.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Hx Hy.
We prove the intermediate claim LI: ∀u, SNo uSNoLev u SNoLev (x * y)x * y < uP u.
Apply SNoLev_ind to the current goal.
Let u be given.
Assume Hu1: SNo u.
Assume IH: zSNoS_ (SNoLev u), SNoLev z SNoLev (x * y)x * y < zP z.
Assume Hu2: SNoLev u SNoLev (x * y).
Assume Hu3: x * y < u.
Apply dneg to the current goal.
Assume HNC: ¬ P u.
We prove the intermediate claim L1: vSNoL x, wSNoR y, u + v * w < v * y + x * w.
Let v be given.
Assume Hv.
Let w be given.
Assume Hw.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoR_E y Hy w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
Apply SNoLtLe_or (u + v * w) (v * y + x * w) (SNo_add_SNo u (v * w) Hu1 (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Hv1 Hy) (SNo_mul_SNo x w Hx Hw1)) to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H.
Apply HNC to the current goal.
Apply orIL to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We use w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is H.
We prove the intermediate claim L2: vSNoR x, wSNoL y, u + v * w < v * y + x * w.
Let v be given.
Assume Hv.
Let w be given.
Assume Hw.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoL_E y Hy w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
Apply SNoLtLe_or (u + v * w) (v * y + x * w) (SNo_add_SNo u (v * w) Hu1 (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Hv1 Hy) (SNo_mul_SNo x w Hx Hw1)) to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H.
Apply HNC to the current goal.
Apply orIR to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We use w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is H.
Apply SNoLt_irref (x * y) to the current goal.
Apply SNoLtLe_tra (x * y) u (x * y) Lxy Hu1 Lxy Hu3 to the current goal.
We will prove u x * y.
Apply mul_SNo_eq_3 x y Hx Hy to the current goal.
Let L and R be given.
Assume HLR HLE HLI1 HLI2 HRE HRI1 HRI2.
Assume HE: x * y = SNoCut L R.
rewrite the current goal using HE (from left to right).
We will prove u SNoCut L R.
rewrite the current goal using SNo_eta u Hu1 (from left to right).
We will prove SNoCut (SNoL u) (SNoR u) SNoCut L R.
Apply SNoCut_Le (SNoL u) (SNoR u) L R (SNoCutP_SNoL_SNoR u Hu1) HLR to the current goal.
We will prove zSNoL u, z < SNoCut L R.
Let z be given.
Assume Hz: z SNoL u.
rewrite the current goal using HE (from right to left).
We will prove z < x * y.
Apply SNoL_E u Hu1 z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev u.
Assume Hz3: z < u.
Apply SNoLt_trichotomy_or_impred z (x * y) Hz1 Lxy to the current goal.
Assume H1: z < x * y.
An exact proof term for the current goal is H1.
Assume H1: z = x * y.
Apply In_no2cycle (SNoLev u) (SNoLev (x * y)) Hu2 to the current goal.
We will prove SNoLev (x * y) SNoLev u.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hz2.
Assume H1: x * y < z.
We prove the intermediate claim LPz: P z.
Apply IH z to the current goal.
We will prove z SNoS_ (SNoLev u).
Apply SNoS_I2 to the current goal.
An exact proof term for the current goal is Hz1.
An exact proof term for the current goal is Hu1.
An exact proof term for the current goal is Hz2.
We will prove SNoLev z SNoLev (x * y).
An exact proof term for the current goal is ordinal_TransSet (SNoLev (x * y)) (SNoLev_ordinal (x * y) Lxy) (SNoLev u) Hu2 (SNoLev z) Hz2.
We will prove x * y < z.
An exact proof term for the current goal is H1.
Apply LPz to the current goal.
Assume H2: P1 z.
Apply H2 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v SNoL x.
Assume H2.
Apply H2 to the current goal.
Let w be given.
Assume H2.
Apply H2 to the current goal.
Assume Hw: w SNoR y.
Assume Hvw: v * y + x * w z + v * w.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoR_E y Hy w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim L3: u + v * w < z + v * w.
Apply SNoLtLe_tra (u + v * w) (v * y + x * w) (z + v * w) (SNo_add_SNo u (v * w) Hu1 Lvw) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Hv1 Hy) (SNo_mul_SNo x w Hx Hw1)) (SNo_add_SNo z (v * w) Hz1 Lvw) to the current goal.
We will prove u + v * w < v * y + x * w.
An exact proof term for the current goal is L1 v Hv w Hw.
An exact proof term for the current goal is Hvw.
We prove the intermediate claim L4: u < z.
An exact proof term for the current goal is add_SNo_Lt1_cancel u (v * w) z Hu1 Lvw Hz1 L3.
Apply SNoLt_irref u to the current goal.
An exact proof term for the current goal is SNoLt_tra u z u Hu1 Hz1 Hu1 L4 Hz3.
Assume H2: P2 z.
Apply H2 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v SNoR x.
Assume H2.
Apply H2 to the current goal.
Let w be given.
Assume H2.
Apply H2 to the current goal.
Assume Hw: w SNoL y.
Assume Hvw: v * y + x * w z + v * w.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoL_E y Hy w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim L5: u + v * w < z + v * w.
Apply SNoLtLe_tra (u + v * w) (v * y + x * w) (z + v * w) (SNo_add_SNo u (v * w) Hu1 Lvw) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Hv1 Hy) (SNo_mul_SNo x w Hx Hw1)) (SNo_add_SNo z (v * w) Hz1 Lvw) to the current goal.
We will prove u + v * w < v * y + x * w.
An exact proof term for the current goal is L2 v Hv w Hw.
An exact proof term for the current goal is Hvw.
We prove the intermediate claim L6: u < z.
An exact proof term for the current goal is add_SNo_Lt1_cancel u (v * w) z Hu1 Lvw Hz1 L5.
Apply SNoLt_irref u to the current goal.
An exact proof term for the current goal is SNoLt_tra u z u Hu1 Hz1 Hu1 L6 Hz3.
We will prove zR, SNoCut (SNoL u) (SNoR u) < z.
Let z be given.
Assume Hz.
rewrite the current goal using SNo_eta u Hu1 (from right to left).
We will prove u < z.
Apply HRE z Hz to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Let w be given.
Assume Hw: w SNoR y.
Assume Hze: z = v * y + x * w + - v * w.
rewrite the current goal using Hze (from left to right).
We will prove u < v * y + x * w + - v * w.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoR_E y Hy w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
Apply add_SNo_minus_Lt2b3 (v * y) (x * w) (v * w) u (SNo_mul_SNo v y Hv1 Hy) (SNo_mul_SNo x w Hx Hw1) (SNo_mul_SNo v w Hv1 Hw1) Hu1 to the current goal.
We will prove u + v * w < v * y + x * w.
An exact proof term for the current goal is L1 v Hv w Hw.
Let v be given.
Assume Hv: v SNoR x.
Let w be given.
Assume Hw: w SNoL y.
Assume Hze: z = v * y + x * w + - v * w.
rewrite the current goal using Hze (from left to right).
We will prove u < v * y + x * w + - v * w.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoL_E y Hy w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
Apply add_SNo_minus_Lt2b3 (v * y) (x * w) (v * w) u (SNo_mul_SNo v y Hv1 Hy) (SNo_mul_SNo x w Hx Hw1) (SNo_mul_SNo v w Hv1 Hw1) Hu1 to the current goal.
We will prove u + v * w < v * y + x * w.
An exact proof term for the current goal is L2 v Hv w Hw.
Let u be given.
Assume Hu: u SNoR (x * y).
Apply SNoR_E (x * y) Lxy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev (x * y).
Assume Hu3: x * y < u.
An exact proof term for the current goal is LI u Hu1 Hu2 Hu3.
Theorem. (mul_SNo_SNoR_interpolate_impred) The following is provable:
∀x y, SNo xSNo yuSNoR (x * y), ∀p : prop, (vSNoL x, wSNoR y, v * y + x * w u + v * wp)(vSNoR x, wSNoL y, v * y + x * w u + v * wp)p
Proof:
Let x and y be given.
Assume Hx Hy.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp1 Hp2.
Apply mul_SNo_SNoR_interpolate x y Hx Hy u Hu to the current goal.
Assume H1.
Apply H1 to the current goal.
Let v be given.
Assume H1.
Apply H1 to the current goal.
Assume Hv.
Assume H1.
Apply H1 to the current goal.
Let w be given.
Assume H1.
Apply H1 to the current goal.
Assume Hw Hvw.
An exact proof term for the current goal is Hp1 v Hv w Hw Hvw.
Assume H1.
Apply H1 to the current goal.
Let v be given.
Assume H1.
Apply H1 to the current goal.
Assume Hv.
Assume H1.
Apply H1 to the current goal.
Let w be given.
Assume H1.
Apply H1 to the current goal.
Assume Hw Hvw.
An exact proof term for the current goal is Hp2 v Hv w Hw Hvw.
Theorem. (mul_SNo_Subq_lem) The following is provable:
∀x y X Y Z W, ∀U U', (∀u, u U(∀q : prop, (w0X, w1Y, u = w0 * y + x * w1 + - w0 * w1q)(z0Z, z1W, u = z0 * y + x * z1 + - z0 * z1q)q))(w0X, w1Y, w0 * y + x * w1 + - w0 * w1 U')(w0Z, w1W, w0 * y + x * w1 + - w0 * w1 U')U U'
Proof:
Let x, y, X, Y, Z, W, U and U' be given.
Assume HUE HU'I1 HU'I2.
Let u be given.
Assume Hu: u U.
Apply HUE u Hu to the current goal.
Let w be given.
Assume Hw.
Let z be given.
Assume Hz Huwz.
rewrite the current goal using Huwz (from left to right).
Apply HU'I1 to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is Hz.
Let w be given.
Assume Hw.
Let z be given.
Assume Hz Huwz.
rewrite the current goal using Huwz (from left to right).
Apply HU'I2 to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is Hz.
Theorem. (mul_SNo_zeroR) The following is provable:
∀x, SNo xx * 0 = 0
Proof:
Let x be given.
Assume Hx: SNo x.
Apply mul_SNo_eq_2 x 0 Hx SNo_0 to the current goal.
Let L and R be given.
Assume HLE HLI1 HLI2 HRE HRI1 HRI2 Hx0.
We will prove x * 0 = 0.
rewrite the current goal using Hx0 (from left to right).
We will prove SNoCut L R = 0.
We prove the intermediate claim LL0: L = 0.
Apply Empty_Subq_eq to the current goal.
Let w be given.
Assume Hw: w L.
We will prove False.
Apply HLE w Hw to the current goal.
Let u be given.
Assume Hu: u SNoL x.
Let v be given.
rewrite the current goal using SNoL_0 (from left to right).
Assume Hv: v 0.
We will prove False.
An exact proof term for the current goal is EmptyE v Hv.
Let u be given.
Assume Hu: u SNoR x.
Let v be given.
rewrite the current goal using SNoR_0 (from left to right).
Assume Hv: v 0.
We will prove False.
An exact proof term for the current goal is EmptyE v Hv.
We prove the intermediate claim LR0: R = 0.
Apply Empty_Subq_eq to the current goal.
Let w be given.
Assume Hw: w R.
We will prove False.
Apply HRE w Hw to the current goal.
Let u be given.
Assume Hu: u SNoL x.
Let v be given.
rewrite the current goal using SNoR_0 (from left to right).
Assume Hv: v 0.
We will prove False.
An exact proof term for the current goal is EmptyE v Hv.
Let u be given.
Assume Hu: u SNoR x.
Let v be given.
rewrite the current goal using SNoL_0 (from left to right).
Assume Hv: v 0.
We will prove False.
An exact proof term for the current goal is EmptyE v Hv.
rewrite the current goal using LL0 (from left to right).
rewrite the current goal using LR0 (from left to right).
An exact proof term for the current goal is SNoCut_0_0.
Theorem. (mul_SNo_oneR) The following is provable:
∀x, SNo xx * 1 = x
Proof:
Apply SNoLev_ind to the current goal.
Let x be given.
Assume Hx.
Assume IHx: wSNoS_ (SNoLev x), w * 1 = w.
Apply mul_SNo_eq_3 x 1 Hx SNo_1 to the current goal.
Let L and R be given.
Assume HLR HLE HLI1 HLI2 HRE HRI1 HRI2 Hx1e.
We will prove x * 1 = x.
Apply mul_SNo_prop_1 x Hx 1 SNo_1 to the current goal.
Assume Hx1: SNo (x * 1).
Assume Hx11: uSNoL x, vSNoL 1, u * 1 + x * v < x * 1 + u * v.
Assume Hx12: uSNoR x, vSNoR 1, u * 1 + x * v < x * 1 + u * v.
Assume Hx13: uSNoL x, vSNoR 1, x * 1 + u * v < u * 1 + x * v.
Assume Hx14: uSNoR x, vSNoL 1, x * 1 + u * v < u * 1 + x * v.
We prove the intermediate claim L0L1: 0 SNoL 1.
rewrite the current goal using SNoL_1 (from left to right).
An exact proof term for the current goal is In_0_1.
rewrite the current goal using Hx1e (from left to right).
We will prove SNoCut L R = x.
rewrite the current goal using SNo_eta x Hx (from left to right).
We will prove SNoCut L R = SNoCut (SNoL x) (SNoR x).
Apply SNoCut_ext L R (SNoL x) (SNoR x) HLR (SNoCutP_SNoL_SNoR x Hx) to the current goal.
We will prove wL, w < SNoCut (SNoL x) (SNoR x).
Let w be given.
Assume Hw.
Apply SNoCutP_SNoCut_L (SNoL x) (SNoR x) (SNoCutP_SNoL_SNoR x Hx) to the current goal.
We will prove w SNoL x.
Apply HLE w Hw to the current goal.
Let u be given.
Assume Hu: u SNoL x.
Let v be given.
rewrite the current goal using SNoL_1 (from left to right).
Assume Hv: v 1.
Apply cases_1 v Hv to the current goal.
Assume Hwuv: w = u * 1 + x * 0 + - u * 0.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hua _ _.
We prove the intermediate claim L1: w = u.
rewrite the current goal using Hwuv (from left to right).
Use transitivity with u * 1 + 0, and u * 1.
We will prove u * 1 + x * 0 + - u * 0 = u * 1 + 0.
Use f_equal.
We will prove x * 0 + - u * 0 = 0.
Use transitivity with x * 0 + 0, and x * 0.
We will prove x * 0 + - u * 0 = x * 0 + 0.
Use f_equal.
We will prove - u * 0 = 0.
Use transitivity with and - 0.
We will prove - u * 0 = - 0.
Use f_equal.
An exact proof term for the current goal is mul_SNo_zeroR u Hua.
An exact proof term for the current goal is minus_SNo_0.
We will prove x * 0 + 0 = x * 0.
An exact proof term for the current goal is add_SNo_0R (x * 0) (SNo_mul_SNo x 0 Hx SNo_0).
We will prove x * 0 = 0.
An exact proof term for the current goal is mul_SNo_zeroR x Hx.
We will prove u * 1 + 0 = u * 1.
An exact proof term for the current goal is add_SNo_0R (u * 1) (SNo_mul_SNo u 1 Hua SNo_1).
We will prove u * 1 = u.
An exact proof term for the current goal is IHx u (SNoL_SNoS x Hx u Hu).
rewrite the current goal using L1 (from left to right).
An exact proof term for the current goal is Hu.
Let u be given.
Assume Hu: u SNoR x.
Let v be given.
rewrite the current goal using SNoR_1 (from left to right).
Assume Hv: v 0.
We will prove False.
An exact proof term for the current goal is EmptyE v Hv.
We will prove zR, SNoCut (SNoL x) (SNoR x) < z.
Let z be given.
Assume Hz.
Apply SNoCutP_SNoCut_R (SNoL x) (SNoR x) (SNoCutP_SNoL_SNoR x Hx) to the current goal.
We will prove z SNoR x.
Apply HRE z Hz to the current goal.
Let u be given.
Assume Hu: u SNoL x.
Let v be given.
rewrite the current goal using SNoR_1 (from left to right).
Assume Hv: v 0.
We will prove False.
An exact proof term for the current goal is EmptyE v Hv.
Let u be given.
Assume Hu: u SNoR x.
Let v be given.
rewrite the current goal using SNoL_1 (from left to right).
Assume Hv: v 1.
Apply cases_1 v Hv to the current goal.
Assume Hzuv: z = u * 1 + x * 0 + - u * 0.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hua _ _.
We prove the intermediate claim L1: z = u.
rewrite the current goal using Hzuv (from left to right).
Use transitivity with u * 1 + 0, and u * 1.
We will prove u * 1 + x * 0 + - u * 0 = u * 1 + 0.
Use f_equal.
We will prove x * 0 + - u * 0 = 0.
Use transitivity with x * 0 + 0, and x * 0.
We will prove x * 0 + - u * 0 = x * 0 + 0.
Use f_equal.
We will prove - u * 0 = 0.
Use transitivity with and - 0.
We will prove - u * 0 = - 0.
Use f_equal.
An exact proof term for the current goal is mul_SNo_zeroR u Hua.
An exact proof term for the current goal is minus_SNo_0.
We will prove x * 0 + 0 = x * 0.
An exact proof term for the current goal is add_SNo_0R (x * 0) (SNo_mul_SNo x 0 Hx SNo_0).
We will prove x * 0 = 0.
An exact proof term for the current goal is mul_SNo_zeroR x Hx.
We will prove u * 1 + 0 = u * 1.
An exact proof term for the current goal is add_SNo_0R (u * 1) (SNo_mul_SNo u 1 Hua SNo_1).
We will prove u * 1 = u.
An exact proof term for the current goal is IHx u (SNoR_SNoS x Hx u Hu).
rewrite the current goal using L1 (from left to right).
An exact proof term for the current goal is Hu.
We will prove wSNoL x, w < SNoCut L R.
Let w be given.
Assume Hw.
Apply SNoL_E x Hx w Hw to the current goal.
Assume Hwa _ _.
rewrite the current goal using Hx1e (from right to left).
We will prove w < x * 1.
We prove the intermediate claim L1: w * 1 + x * 0 = w.
Use transitivity with w * 1 + 0, and w * 1.
Use f_equal.
We will prove x * 0 = 0.
An exact proof term for the current goal is mul_SNo_zeroR x Hx.
An exact proof term for the current goal is add_SNo_0R (w * 1) (SNo_mul_SNo w 1 Hwa SNo_1).
An exact proof term for the current goal is IHx w (SNoL_SNoS x Hx w Hw).
We prove the intermediate claim L2: x * 1 + w * 0 = x * 1.
Use transitivity with and x * 1 + 0.
Use f_equal.
An exact proof term for the current goal is mul_SNo_zeroR w Hwa.
An exact proof term for the current goal is add_SNo_0R (x * 1) (SNo_mul_SNo x 1 Hx SNo_1).
rewrite the current goal using L1 (from right to left).
rewrite the current goal using L2 (from right to left).
We will prove w * 1 + x * 0 < x * 1 + w * 0.
An exact proof term for the current goal is Hx11 w Hw 0 L0L1.
We will prove zSNoR x, SNoCut L R < z.
Let z be given.
Assume Hz.
Apply SNoR_E x Hx z Hz to the current goal.
Assume Hza _ _.
rewrite the current goal using Hx1e (from right to left).
We will prove x * 1 < z.
We prove the intermediate claim L1: x * 1 + z * 0 = x * 1.
Use transitivity with and x * 1 + 0.
Use f_equal.
An exact proof term for the current goal is mul_SNo_zeroR z Hza.
An exact proof term for the current goal is add_SNo_0R (x * 1) (SNo_mul_SNo x 1 Hx SNo_1).
We prove the intermediate claim L2: z * 1 + x * 0 = z.
Use transitivity with z * 1 + 0, and z * 1.
Use f_equal.
We will prove x * 0 = 0.
An exact proof term for the current goal is mul_SNo_zeroR x Hx.
An exact proof term for the current goal is add_SNo_0R (z * 1) (SNo_mul_SNo z 1 Hza SNo_1).
An exact proof term for the current goal is IHx z (SNoR_SNoS x Hx z Hz).
rewrite the current goal using L2 (from right to left).
rewrite the current goal using L1 (from right to left).
An exact proof term for the current goal is Hx14 z Hz 0 L0L1.
Theorem. (mul_SNo_com) The following is provable:
∀x y, SNo xSNo yx * y = y * x
Proof:
Apply SNoLev_ind2 to the current goal.
Let x and y be given.
Assume Hx Hy.
Assume IHx: wSNoS_ (SNoLev x), w * y = y * w.
Assume IHy: zSNoS_ (SNoLev y), x * z = z * x.
Assume IHxy: wSNoS_ (SNoLev x), zSNoS_ (SNoLev y), w * z = z * w.
Apply mul_SNo_eq_3 x y Hx Hy to the current goal.
Let L and R be given.
Assume HLR HLE HLI1 HLI2 HRE HRI1 HRI2 Hxye.
Apply mul_SNo_eq_3 y x Hy Hx to the current goal.
Let L' and R' be given.
Assume HL'R' HL'E HL'I1 HL'I2 HR'E HR'I1 HR'I2 Hyxe.
rewrite the current goal using Hxye (from left to right).
rewrite the current goal using Hyxe (from left to right).
We will prove SNoCut L R = SNoCut L' R'.
We prove the intermediate claim LLL': L = L'.
Apply set_ext to the current goal.
We will prove L L'.
Apply mul_SNo_Subq_lem x y (SNoL x) (SNoL y) (SNoR x) (SNoR y) L L' HLE to the current goal.
Let u be given.
Assume Hu: u SNoL x.
Let v be given.
Assume Hv: v SNoL y.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hua _ _.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hva _ _.
rewrite the current goal using IHx u (SNoL_SNoS x Hx u Hu) (from left to right).
rewrite the current goal using IHy v (SNoL_SNoS y Hy v Hv) (from left to right).
rewrite the current goal using IHxy u (SNoL_SNoS x Hx u Hu) v (SNoL_SNoS y Hy v Hv) (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (y * u) (v * x) (- v * u) (SNo_mul_SNo y u Hy Hua) (SNo_mul_SNo v x Hva Hx) (SNo_minus_SNo (v * u) (SNo_mul_SNo v u Hva Hua)) (from left to right).
Apply HL'I1 to the current goal.
An exact proof term for the current goal is Hv.
An exact proof term for the current goal is Hu.
Let u be given.
Assume Hu: u SNoR x.
Let v be given.
Assume Hv: v SNoR y.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hua _ _.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hva _ _.
rewrite the current goal using IHx u (SNoR_SNoS x Hx u Hu) (from left to right).
rewrite the current goal using IHy v (SNoR_SNoS y Hy v Hv) (from left to right).
rewrite the current goal using IHxy u (SNoR_SNoS x Hx u Hu) v (SNoR_SNoS y Hy v Hv) (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (y * u) (v * x) (- v * u) (SNo_mul_SNo y u Hy Hua) (SNo_mul_SNo v x Hva Hx) (SNo_minus_SNo (v * u) (SNo_mul_SNo v u Hva Hua)) (from left to right).
Apply HL'I2 to the current goal.
An exact proof term for the current goal is Hv.
An exact proof term for the current goal is Hu.
We will prove L' L.
Apply mul_SNo_Subq_lem y x (SNoL y) (SNoL x) (SNoR y) (SNoR x) L' L HL'E to the current goal.
Let v be given.
Assume Hv: v SNoL y.
Let u be given.
Assume Hu: u SNoL x.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hua _ _.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hva _ _.
rewrite the current goal using IHx u (SNoL_SNoS x Hx u Hu) (from right to left).
rewrite the current goal using IHy v (SNoL_SNoS y Hy v Hv) (from right to left).
rewrite the current goal using IHxy u (SNoL_SNoS x Hx u Hu) v (SNoL_SNoS y Hy v Hv) (from right to left).
rewrite the current goal using add_SNo_com_3_0_1 (x * v) (u * y) (- u * v) (SNo_mul_SNo x v Hx Hva) (SNo_mul_SNo u y Hua Hy) (SNo_minus_SNo (u * v) (SNo_mul_SNo u v Hua Hva)) (from left to right).
Apply HLI1 to the current goal.
An exact proof term for the current goal is Hu.
An exact proof term for the current goal is Hv.
Let v be given.
Assume Hv: v SNoR y.
Let u be given.
Assume Hu: u SNoR x.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hua _ _.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hva _ _.
rewrite the current goal using IHx u (SNoR_SNoS x Hx u Hu) (from right to left).
rewrite the current goal using IHy v (SNoR_SNoS y Hy v Hv) (from right to left).
rewrite the current goal using IHxy u (SNoR_SNoS x Hx u Hu) v (SNoR_SNoS y Hy v Hv) (from right to left).
rewrite the current goal using add_SNo_com_3_0_1 (x * v) (u * y) (- u * v) (SNo_mul_SNo x v Hx Hva) (SNo_mul_SNo u y Hua Hy) (SNo_minus_SNo (u * v) (SNo_mul_SNo u v Hua Hva)) (from left to right).
Apply HLI2 to the current goal.
An exact proof term for the current goal is Hu.
An exact proof term for the current goal is Hv.
We prove the intermediate claim LRR': R = R'.
Apply set_ext to the current goal.
Apply mul_SNo_Subq_lem x y (SNoL x) (SNoR y) (SNoR x) (SNoL y) R R' HRE to the current goal.
Let u be given.
Assume Hu: u SNoL x.
Let v be given.
Assume Hv: v SNoR y.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hua _ _.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hva _ _.
rewrite the current goal using IHx u (SNoL_SNoS x Hx u Hu) (from left to right).
rewrite the current goal using IHy v (SNoR_SNoS y Hy v Hv) (from left to right).
rewrite the current goal using IHxy u (SNoL_SNoS x Hx u Hu) v (SNoR_SNoS y Hy v Hv) (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (y * u) (v * x) (- v * u) (SNo_mul_SNo y u Hy Hua) (SNo_mul_SNo v x Hva Hx) (SNo_minus_SNo (v * u) (SNo_mul_SNo v u Hva Hua)) (from left to right).
Apply HR'I2 to the current goal.
An exact proof term for the current goal is Hv.
An exact proof term for the current goal is Hu.
Let u be given.
Assume Hu: u SNoR x.
Let v be given.
Assume Hv: v SNoL y.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hua _ _.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hva _ _.
rewrite the current goal using IHx u (SNoR_SNoS x Hx u Hu) (from left to right).
rewrite the current goal using IHy v (SNoL_SNoS y Hy v Hv) (from left to right).
rewrite the current goal using IHxy u (SNoR_SNoS x Hx u Hu) v (SNoL_SNoS y Hy v Hv) (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (y * u) (v * x) (- v * u) (SNo_mul_SNo y u Hy Hua) (SNo_mul_SNo v x Hva Hx) (SNo_minus_SNo (v * u) (SNo_mul_SNo v u Hva Hua)) (from left to right).
Apply HR'I1 to the current goal.
An exact proof term for the current goal is Hv.
An exact proof term for the current goal is Hu.
Apply mul_SNo_Subq_lem y x (SNoL y) (SNoR x) (SNoR y) (SNoL x) R' R HR'E to the current goal.
Let v be given.
Assume Hv: v SNoL y.
Let u be given.
Assume Hu: u SNoR x.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hua _ _.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hva _ _.
rewrite the current goal using IHx u (SNoR_SNoS x Hx u Hu) (from right to left).
rewrite the current goal using IHy v (SNoL_SNoS y Hy v Hv) (from right to left).
rewrite the current goal using IHxy u (SNoR_SNoS x Hx u Hu) v (SNoL_SNoS y Hy v Hv) (from right to left).
rewrite the current goal using add_SNo_com_3_0_1 (x * v) (u * y) (- u * v) (SNo_mul_SNo x v Hx Hva) (SNo_mul_SNo u y Hua Hy) (SNo_minus_SNo (u * v) (SNo_mul_SNo u v Hua Hva)) (from left to right).
Apply HRI2 to the current goal.
An exact proof term for the current goal is Hu.
An exact proof term for the current goal is Hv.
Let v be given.
Assume Hv: v SNoR y.
Let u be given.
Assume Hu: u SNoL x.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hua _ _.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hva _ _.
rewrite the current goal using IHx u (SNoL_SNoS x Hx u Hu) (from right to left).
rewrite the current goal using IHy v (SNoR_SNoS y Hy v Hv) (from right to left).
rewrite the current goal using IHxy u (SNoL_SNoS x Hx u Hu) v (SNoR_SNoS y Hy v Hv) (from right to left).
rewrite the current goal using add_SNo_com_3_0_1 (x * v) (u * y) (- u * v) (SNo_mul_SNo x v Hx Hva) (SNo_mul_SNo u y Hua Hy) (SNo_minus_SNo (u * v) (SNo_mul_SNo u v Hua Hva)) (from left to right).
Apply HRI1 to the current goal.
An exact proof term for the current goal is Hu.
An exact proof term for the current goal is Hv.
rewrite the current goal using LLL' (from left to right).
rewrite the current goal using LRR' (from left to right).
Use reflexivity.
Theorem. (mul_SNo_minus_distrL) The following is provable:
∀x y, SNo xSNo y(- x) * y = - x * y
Proof:
Apply SNoLev_ind2 to the current goal.
Let x and y be given.
Assume Hx Hy.
Assume IHx: wSNoS_ (SNoLev x), (- w) * y = - w * y.
Assume IHy: zSNoS_ (SNoLev y), (- x) * z = - x * z.
Assume IHxy: wSNoS_ (SNoLev x), zSNoS_ (SNoLev y), (- w) * z = - w * z.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Hx.
Apply mul_SNo_eq_3 x y Hx Hy to the current goal.
Let L and R be given.
Assume HLR HLE HLI1 HLI2 HRE HRI1 HRI2.
Assume Hxye: x * y = SNoCut L R.
Apply mul_SNo_eq_3 (- x) y (SNo_minus_SNo x Hx) Hy to the current goal.
Let L' and R' be given.
Assume HL'R' HL'E HL'I1 HL'I2 HR'E HR'I1 HR'I2.
Assume Hmxye: (- x) * y = SNoCut L' R'.
We prove the intermediate claim L1: - (x * y) = SNoCut {- z|zR} {- w|wL}.
rewrite the current goal using Hxye (from left to right).
An exact proof term for the current goal is minus_SNoCut_eq L R HLR.
rewrite the current goal using L1 (from left to right).
rewrite the current goal using Hmxye (from left to right).
We will prove SNoCut L' R' = SNoCut {- z|zR} {- w|wL}.
Use f_equal.
We will prove L' = {- z|zR}.
Apply set_ext to the current goal.
Apply mul_SNo_Subq_lem (- x) y (SNoL (- x)) (SNoL y) (SNoR (- x)) (SNoR y) L' {- z|zR} HL'E to the current goal.
Let u be given.
Assume Hu: u SNoL (- x).
Let v be given.
Assume Hv: v SNoL y.
Apply SNoL_E (- x) Lmx u Hu to the current goal.
Assume Hua: SNo u.
Assume Hub: SNoLev u SNoLev (- x).
Assume Huc: u < - x.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hva _ _.
We prove the intermediate claim Lmu1: SNo (- u).
An exact proof term for the current goal is SNo_minus_SNo u Hua.
We prove the intermediate claim Lmu2: - u SNoR x.
Apply SNoR_I x Hx (- u) Lmu1 to the current goal.
We will prove SNoLev (- u) SNoLev x.
rewrite the current goal using minus_SNo_Lev u Hua (from left to right).
rewrite the current goal using minus_SNo_Lev x Hx (from right to left).
An exact proof term for the current goal is Hub.
We will prove x < - u.
An exact proof term for the current goal is minus_SNo_Lt_contra2 u x Hua Hx Huc.
We will prove u * y + (- x) * v + - u * v {- z|zR}.
We prove the intermediate claim L1: u * y + (- x) * v + - u * v = - ((- u) * y + x * v + - (- u) * v).
Use symmetry.
Use transitivity with and - (- u) * y + - x * v + - - (- u) * v.
An exact proof term for the current goal is minus_add_SNo_distr_3 ((- u) * y) (x * v) (- (- u) * v) (SNo_mul_SNo (- u) y Lmu1 Hy) (SNo_mul_SNo x v Hx Hva) (SNo_minus_SNo ((- u) * v) (SNo_mul_SNo (- u) v Lmu1 Hva)).
Use f_equal.
We will prove - (- u) * y = u * y.
Use transitivity with and (- - u) * y.
Use symmetry.
An exact proof term for the current goal is IHx (- u) (SNoR_SNoS x Hx (- u) Lmu2).
rewrite the current goal using minus_SNo_invol u Hua (from left to right).
Use reflexivity.
Use f_equal.
We will prove - x * v = (- x) * v.
Use symmetry.
An exact proof term for the current goal is IHy v (SNoL_SNoS y Hy v Hv).
Use f_equal.
We will prove - (- u) * v = u * v.
Use transitivity with and (- - u) * v.
Use symmetry.
We will prove (- - u) * v = - (- u) * v.
An exact proof term for the current goal is IHxy (- u) (SNoR_SNoS x Hx (- u) Lmu2) v (SNoL_SNoS y Hy v Hv).
rewrite the current goal using minus_SNo_invol u Hua (from left to right).
Use reflexivity.
rewrite the current goal using L1 (from left to right).
We will prove - ((- u) * y + x * v + - (- u) * v) {- z|zR}.
Apply ReplI R (λz ⇒ - z) to the current goal.
We will prove (- u) * y + x * v + - (- u) * v R.
Apply HRI2 to the current goal.
We will prove - u SNoR x.
An exact proof term for the current goal is Lmu2.
We will prove v SNoL y.
An exact proof term for the current goal is Hv.
Let u be given.
Assume Hu: u SNoR (- x).
Let v be given.
Assume Hv: v SNoR y.
Apply SNoR_E (- x) Lmx u Hu to the current goal.
Assume Hua: SNo u.
Assume Hub: SNoLev u SNoLev (- x).
Assume Huc: - x < u.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hva _ _.
We prove the intermediate claim Lmu1: SNo (- u).
An exact proof term for the current goal is SNo_minus_SNo u Hua.
We prove the intermediate claim Lmu2: - u SNoL x.
Apply SNoL_I x Hx (- u) Lmu1 to the current goal.
We will prove SNoLev (- u) SNoLev x.
rewrite the current goal using minus_SNo_Lev u Hua (from left to right).
rewrite the current goal using minus_SNo_Lev x Hx (from right to left).
An exact proof term for the current goal is Hub.
We will prove - u < x.
An exact proof term for the current goal is minus_SNo_Lt_contra1 x u Hx Hua Huc.
We will prove u * y + (- x) * v + - u * v {- z|zR}.
We prove the intermediate claim L1: u * y + (- x) * v + - u * v = - ((- u) * y + x * v + - (- u) * v).
Use symmetry.
Use transitivity with and - (- u) * y + - x * v + - - (- u) * v.
An exact proof term for the current goal is minus_add_SNo_distr_3 ((- u) * y) (x * v) (- (- u) * v) (SNo_mul_SNo (- u) y Lmu1 Hy) (SNo_mul_SNo x v Hx Hva) (SNo_minus_SNo ((- u) * v) (SNo_mul_SNo (- u) v Lmu1 Hva)).
Use f_equal.
We will prove - (- u) * y = u * y.
Use transitivity with and (- - u) * y.
Use symmetry.
An exact proof term for the current goal is IHx (- u) (SNoL_SNoS x Hx (- u) Lmu2).
rewrite the current goal using minus_SNo_invol u Hua (from left to right).
Use reflexivity.
Use f_equal.
We will prove - x * v = (- x) * v.
Use symmetry.
An exact proof term for the current goal is IHy v (SNoR_SNoS y Hy v Hv).
Use f_equal.
We will prove - (- u) * v = u * v.
Use transitivity with and (- - u) * v.
Use symmetry.
We will prove (- - u) * v = - (- u) * v.
An exact proof term for the current goal is IHxy (- u) (SNoL_SNoS x Hx (- u) Lmu2) v (SNoR_SNoS y Hy v Hv).
rewrite the current goal using minus_SNo_invol u Hua (from left to right).
Use reflexivity.
rewrite the current goal using L1 (from left to right).
We will prove - ((- u) * y + x * v + - (- u) * v) {- z|zR}.
Apply ReplI R (λz ⇒ - z) to the current goal.
We will prove (- u) * y + x * v + - (- u) * v R.
Apply HRI1 to the current goal.
We will prove - u SNoL x.
An exact proof term for the current goal is Lmu2.
We will prove v SNoR y.
An exact proof term for the current goal is Hv.
We will prove {- z|zR} L'.
Let a be given.
Assume Ha.
Apply ReplE_impred R (λz ⇒ - z) a Ha to the current goal.
Let z be given.
Assume Hz: z R.
Assume Hze: a = - z.
rewrite the current goal using Hze (from left to right).
We will prove - z L'.
Apply HRE z Hz to the current goal.
Let u be given.
Assume Hu: u SNoL x.
Let v be given.
Assume Hv: v SNoR y.
Assume Hzuv: z = u * y + x * v + - u * v.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hua: SNo u.
Assume Hub: SNoLev u SNoLev x.
Assume Huc: u < x.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hva _ _.
We prove the intermediate claim Lmu1: SNo (- u).
An exact proof term for the current goal is SNo_minus_SNo u Hua.
We prove the intermediate claim Lmu2: - u SNoR (- x).
Apply SNoR_I (- x) (SNo_minus_SNo x Hx) (- u) Lmu1 to the current goal.
We will prove SNoLev (- u) SNoLev (- x).
rewrite the current goal using minus_SNo_Lev u Hua (from left to right).
rewrite the current goal using minus_SNo_Lev x Hx (from left to right).
An exact proof term for the current goal is Hub.
We will prove - x < - u.
An exact proof term for the current goal is minus_SNo_Lt_contra u x Hua Hx Huc.
We prove the intermediate claim L1: - z = (- u) * y + (- x) * v + - (- u) * v.
rewrite the current goal using Hzuv (from left to right).
rewrite the current goal using minus_add_SNo_distr_3 (u * y) (x * v) (- (u * v)) (SNo_mul_SNo u y Hua Hy) (SNo_mul_SNo x v Hx Hva) (SNo_minus_SNo (u * v) (SNo_mul_SNo u v Hua Hva)) (from left to right).
Use f_equal.
We will prove - (u * y) = (- u) * y.
Use symmetry.
An exact proof term for the current goal is IHx u (SNoL_SNoS x Hx u Hu).
Use f_equal.
We will prove - (x * v) = (- x) * v.
Use symmetry.
An exact proof term for the current goal is IHy v (SNoR_SNoS y Hy v Hv).
Use f_equal.
We will prove - (u * v) = (- u) * v.
Use symmetry.
An exact proof term for the current goal is IHxy u (SNoL_SNoS x Hx u Hu) v (SNoR_SNoS y Hy v Hv).
rewrite the current goal using L1 (from left to right).
We will prove (- u) * y + (- x) * v + - (- u) * v L'.
Apply HL'I2 to the current goal.
An exact proof term for the current goal is Lmu2.
An exact proof term for the current goal is Hv.
Let u be given.
Assume Hu: u SNoR x.
Let v be given.
Assume Hv: v SNoL y.
Assume Hzuv: z = u * y + x * v + - u * v.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hua: SNo u.
Assume Hub: SNoLev u SNoLev x.
Assume Huc: x < u.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hva _ _.
We prove the intermediate claim Lmu1: SNo (- u).
An exact proof term for the current goal is SNo_minus_SNo u Hua.
We prove the intermediate claim Lmu2: - u SNoL (- x).
Apply SNoL_I (- x) (SNo_minus_SNo x Hx) (- u) Lmu1 to the current goal.
We will prove SNoLev (- u) SNoLev (- x).
rewrite the current goal using minus_SNo_Lev u Hua (from left to right).
rewrite the current goal using minus_SNo_Lev x Hx (from left to right).
An exact proof term for the current goal is Hub.
We will prove - u < - x.
An exact proof term for the current goal is minus_SNo_Lt_contra x u Hx Hua Huc.
We prove the intermediate claim L1: - z = (- u) * y + (- x) * v + - (- u) * v.
rewrite the current goal using Hzuv (from left to right).
rewrite the current goal using minus_add_SNo_distr_3 (u * y) (x * v) (- (u * v)) (SNo_mul_SNo u y Hua Hy) (SNo_mul_SNo x v Hx Hva) (SNo_minus_SNo (u * v) (SNo_mul_SNo u v Hua Hva)) (from left to right).
Use f_equal.
We will prove - (u * y) = (- u) * y.
Use symmetry.
An exact proof term for the current goal is IHx u (SNoR_SNoS x Hx u Hu).
Use f_equal.
We will prove - (x * v) = (- x) * v.
Use symmetry.
An exact proof term for the current goal is IHy v (SNoL_SNoS y Hy v Hv).
Use f_equal.
We will prove - (u * v) = (- u) * v.
Use symmetry.
An exact proof term for the current goal is IHxy u (SNoR_SNoS x Hx u Hu) v (SNoL_SNoS y Hy v Hv).
rewrite the current goal using L1 (from left to right).
We will prove (- u) * y + (- x) * v + - (- u) * v L'.
Apply HL'I1 to the current goal.
An exact proof term for the current goal is Lmu2.
An exact proof term for the current goal is Hv.
We will prove R' = {- w|wL}.
Apply set_ext to the current goal.
Apply mul_SNo_Subq_lem (- x) y (SNoL (- x)) (SNoR y) (SNoR (- x)) (SNoL y) R' {- w|wL} HR'E to the current goal.
Let u be given.
Assume Hu: u SNoL (- x).
Let v be given.
Assume Hv: v SNoR y.
Apply SNoL_E (- x) Lmx u Hu to the current goal.
Assume Hua: SNo u.
Assume Hub: SNoLev u SNoLev (- x).
Assume Huc: u < - x.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hva _ _.
We prove the intermediate claim Lmu1: SNo (- u).
An exact proof term for the current goal is SNo_minus_SNo u Hua.
We prove the intermediate claim Lmu2: - u SNoR x.
Apply SNoR_I x Hx (- u) Lmu1 to the current goal.
We will prove SNoLev (- u) SNoLev x.
rewrite the current goal using minus_SNo_Lev u Hua (from left to right).
rewrite the current goal using minus_SNo_Lev x Hx (from right to left).
An exact proof term for the current goal is Hub.
We will prove x < - u.
An exact proof term for the current goal is minus_SNo_Lt_contra2 u x Hua Hx Huc.
We will prove u * y + (- x) * v + - u * v {- w|wL}.
We prove the intermediate claim L1: u * y + (- x) * v + - u * v = - ((- u) * y + x * v + - (- u) * v).
Use symmetry.
Use transitivity with and - (- u) * y + - x * v + - - (- u) * v.
An exact proof term for the current goal is minus_add_SNo_distr_3 ((- u) * y) (x * v) (- (- u) * v) (SNo_mul_SNo (- u) y Lmu1 Hy) (SNo_mul_SNo x v Hx Hva) (SNo_minus_SNo ((- u) * v) (SNo_mul_SNo (- u) v Lmu1 Hva)).
Use f_equal.
We will prove - (- u) * y = u * y.
Use transitivity with and (- - u) * y.
Use symmetry.
An exact proof term for the current goal is IHx (- u) (SNoR_SNoS x Hx (- u) Lmu2).
rewrite the current goal using minus_SNo_invol u Hua (from left to right).
Use reflexivity.
Use f_equal.
We will prove - x * v = (- x) * v.
Use symmetry.
An exact proof term for the current goal is IHy v (SNoR_SNoS y Hy v Hv).
Use f_equal.
We will prove - (- u) * v = u * v.
Use transitivity with and (- - u) * v.
Use symmetry.
We will prove (- - u) * v = - (- u) * v.
An exact proof term for the current goal is IHxy (- u) (SNoR_SNoS x Hx (- u) Lmu2) v (SNoR_SNoS y Hy v Hv).
rewrite the current goal using minus_SNo_invol u Hua (from left to right).
Use reflexivity.
rewrite the current goal using L1 (from left to right).
We will prove - ((- u) * y + x * v + - (- u) * v) {- w|wL}.
Apply ReplI L (λw ⇒ - w) to the current goal.
We will prove (- u) * y + x * v + - (- u) * v L.
Apply HLI2 to the current goal.
We will prove - u SNoR x.
An exact proof term for the current goal is Lmu2.
We will prove v SNoR y.
An exact proof term for the current goal is Hv.
Let u be given.
Assume Hu: u SNoR (- x).
Let v be given.
Assume Hv: v SNoL y.
Apply SNoR_E (- x) Lmx u Hu to the current goal.
Assume Hua: SNo u.
Assume Hub: SNoLev u SNoLev (- x).
Assume Huc: - x < u.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hva _ _.
We prove the intermediate claim Lmu1: SNo (- u).
An exact proof term for the current goal is SNo_minus_SNo u Hua.
We prove the intermediate claim Lmu2: - u SNoL x.
Apply SNoL_I x Hx (- u) Lmu1 to the current goal.
We will prove SNoLev (- u) SNoLev x.
rewrite the current goal using minus_SNo_Lev u Hua (from left to right).
rewrite the current goal using minus_SNo_Lev x Hx (from right to left).
An exact proof term for the current goal is Hub.
We will prove - u < x.
An exact proof term for the current goal is minus_SNo_Lt_contra1 x u Hx Hua Huc.
We will prove u * y + (- x) * v + - u * v {- w|wL}.
We prove the intermediate claim L1: u * y + (- x) * v + - u * v = - ((- u) * y + x * v + - (- u) * v).
Use symmetry.
Use transitivity with and - (- u) * y + - x * v + - - (- u) * v.
An exact proof term for the current goal is minus_add_SNo_distr_3 ((- u) * y) (x * v) (- (- u) * v) (SNo_mul_SNo (- u) y Lmu1 Hy) (SNo_mul_SNo x v Hx Hva) (SNo_minus_SNo ((- u) * v) (SNo_mul_SNo (- u) v Lmu1 Hva)).
Use f_equal.
We will prove - (- u) * y = u * y.
Use transitivity with and (- - u) * y.
Use symmetry.
An exact proof term for the current goal is IHx (- u) (SNoL_SNoS x Hx (- u) Lmu2).
rewrite the current goal using minus_SNo_invol u Hua (from left to right).
Use reflexivity.
Use f_equal.
We will prove - x * v = (- x) * v.
Use symmetry.
An exact proof term for the current goal is IHy v (SNoL_SNoS y Hy v Hv).
Use f_equal.
We will prove - (- u) * v = u * v.
Use transitivity with and (- - u) * v.
Use symmetry.
We will prove (- - u) * v = - (- u) * v.
An exact proof term for the current goal is IHxy (- u) (SNoL_SNoS x Hx (- u) Lmu2) v (SNoL_SNoS y Hy v Hv).
rewrite the current goal using minus_SNo_invol u Hua (from left to right).
Use reflexivity.
rewrite the current goal using L1 (from left to right).
We will prove - ((- u) * y + x * v + - (- u) * v) {- w|wL}.
Apply ReplI L (λw ⇒ - w) to the current goal.
We will prove (- u) * y + x * v + - (- u) * v L.
Apply HLI1 to the current goal.
We will prove - u SNoL x.
An exact proof term for the current goal is Lmu2.
We will prove v SNoL y.
An exact proof term for the current goal is Hv.
We will prove {- w|wL} R'.
Let a be given.
Assume Ha.
Apply ReplE_impred L (λw ⇒ - w) a Ha to the current goal.
Let w be given.
Assume Hw: w L.
Assume Hwe: a = - w.
rewrite the current goal using Hwe (from left to right).
We will prove - w R'.
Apply HLE w Hw to the current goal.
Let u be given.
Assume Hu: u SNoL x.
Let v be given.
Assume Hv: v SNoL y.
Assume Hwuv: w = u * y + x * v + - u * v.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hua: SNo u.
Assume Hub: SNoLev u SNoLev x.
Assume Huc: u < x.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hva _ _.
We prove the intermediate claim Lmu1: SNo (- u).
An exact proof term for the current goal is SNo_minus_SNo u Hua.
We prove the intermediate claim Lmu2: - u SNoR (- x).
Apply SNoR_I (- x) (SNo_minus_SNo x Hx) (- u) Lmu1 to the current goal.
We will prove SNoLev (- u) SNoLev (- x).
rewrite the current goal using minus_SNo_Lev u Hua (from left to right).
rewrite the current goal using minus_SNo_Lev x Hx (from left to right).
An exact proof term for the current goal is Hub.
We will prove - x < - u.
An exact proof term for the current goal is minus_SNo_Lt_contra u x Hua Hx Huc.
We prove the intermediate claim L1: - w = (- u) * y + (- x) * v + - (- u) * v.
rewrite the current goal using Hwuv (from left to right).
rewrite the current goal using minus_add_SNo_distr_3 (u * y) (x * v) (- (u * v)) (SNo_mul_SNo u y Hua Hy) (SNo_mul_SNo x v Hx Hva) (SNo_minus_SNo (u * v) (SNo_mul_SNo u v Hua Hva)) (from left to right).
Use f_equal.
We will prove - (u * y) = (- u) * y.
Use symmetry.
An exact proof term for the current goal is IHx u (SNoL_SNoS x Hx u Hu).
Use f_equal.
We will prove - (x * v) = (- x) * v.
Use symmetry.
An exact proof term for the current goal is IHy v (SNoL_SNoS y Hy v Hv).
Use f_equal.
We will prove - (u * v) = (- u) * v.
Use symmetry.
An exact proof term for the current goal is IHxy u (SNoL_SNoS x Hx u Hu) v (SNoL_SNoS y Hy v Hv).
rewrite the current goal using L1 (from left to right).
We will prove (- u) * y + (- x) * v + - (- u) * v R'.
Apply HR'I2 to the current goal.
An exact proof term for the current goal is Lmu2.
An exact proof term for the current goal is Hv.
Let u be given.
Assume Hu: u SNoR x.
Let v be given.
Assume Hv: v SNoR y.
Assume Hwuv: w = u * y + x * v + - u * v.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hua: SNo u.
Assume Hub: SNoLev u SNoLev x.
Assume Huc: x < u.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hva _ _.
We prove the intermediate claim Lmu1: SNo (- u).
An exact proof term for the current goal is SNo_minus_SNo u Hua.
We prove the intermediate claim Lmu2: - u SNoL (- x).
Apply SNoL_I (- x) (SNo_minus_SNo x Hx) (- u) Lmu1 to the current goal.
We will prove SNoLev (- u) SNoLev (- x).
rewrite the current goal using minus_SNo_Lev u Hua (from left to right).
rewrite the current goal using minus_SNo_Lev x Hx (from left to right).
An exact proof term for the current goal is Hub.
We will prove - u < - x.
An exact proof term for the current goal is minus_SNo_Lt_contra x u Hx Hua Huc.
We prove the intermediate claim L1: - w = (- u) * y + (- x) * v + - (- u) * v.
rewrite the current goal using Hwuv (from left to right).
rewrite the current goal using minus_add_SNo_distr_3 (u * y) (x * v) (- (u * v)) (SNo_mul_SNo u y Hua Hy) (SNo_mul_SNo x v Hx Hva) (SNo_minus_SNo (u * v) (SNo_mul_SNo u v Hua Hva)) (from left to right).
Use f_equal.
We will prove - (u * y) = (- u) * y.
Use symmetry.
An exact proof term for the current goal is IHx u (SNoR_SNoS x Hx u Hu).
Use f_equal.
We will prove - (x * v) = (- x) * v.
Use symmetry.
An exact proof term for the current goal is IHy v (SNoR_SNoS y Hy v Hv).
Use f_equal.
We will prove - (u * v) = (- u) * v.
Use symmetry.
An exact proof term for the current goal is IHxy u (SNoR_SNoS x Hx u Hu) v (SNoR_SNoS y Hy v Hv).
rewrite the current goal using L1 (from left to right).
We will prove (- u) * y + (- x) * v + - (- u) * v R'.
Apply HR'I1 to the current goal.
An exact proof term for the current goal is Lmu2.
An exact proof term for the current goal is Hv.
Theorem. (mul_SNo_minus_distrR) The following is provable:
∀x y, SNo xSNo yx * (- y) = - (x * y)
Proof:
Let x and y be given.
Assume Hx Hy.
rewrite the current goal using mul_SNo_com x y Hx Hy (from left to right).
rewrite the current goal using mul_SNo_com x (- y) Hx (SNo_minus_SNo y Hy) (from left to right).
An exact proof term for the current goal is mul_SNo_minus_distrL y x Hy Hx.
Theorem. (mul_SNo_distrR) The following is provable:
∀x y z, SNo xSNo ySNo z(x + y) * z = x * z + y * z
Proof:
Set P to be the term λx y z ⇒ (x + y) * z = x * z + y * z of type setsetsetprop.
We will prove ∀x y z, SNo xSNo ySNo zP x y z.
Apply SNoLev_ind3 P to the current goal.
Let x, y and z be given.
Assume Hx Hy Hz.
Assume IHx: uSNoS_ (SNoLev x), (u + y) * z = u * z + y * z.
Assume IHy: vSNoS_ (SNoLev y), (x + v) * z = x * z + v * z.
Assume IHz: wSNoS_ (SNoLev z), (x + y) * w = x * w + y * w.
Assume IHxy: uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), (u + v) * z = u * z + v * z.
Assume IHxz: uSNoS_ (SNoLev x), wSNoS_ (SNoLev z), (u + y) * w = u * w + y * w.
Assume IHyz: vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), (x + v) * w = x * w + v * w.
Assume IHxyz: uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), (u + v) * w = u * w + v * w.
We will prove (x + y) * z = x * z + y * z.
Apply mul_SNo_eq_3 (x + y) z (SNo_add_SNo x y Hx Hy) Hz to the current goal.
Let L and R be given.
Assume HLR HLE HLI1 HLI2 HRE HRI1 HRI2.
Assume HE: (x + y) * z = SNoCut L R.
Set L1 to be the term {w + y * z|wSNoL (x * z)}.
Set L2 to be the term {x * z + w|wSNoL (y * z)}.
Set R1 to be the term {w + y * z|wSNoR (x * z)}.
Set R2 to be the term {x * z + w|wSNoR (y * z)}.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim Lxyz: SNo ((x + y) * z).
An exact proof term for the current goal is SNo_mul_SNo (x + y) z Lxy Hz.
We prove the intermediate claim Lxz: SNo (x * z).
An exact proof term for the current goal is SNo_mul_SNo x z Hx Hz.
We prove the intermediate claim Lyz: SNo (y * z).
An exact proof term for the current goal is SNo_mul_SNo y z Hy Hz.
We prove the intermediate claim Lxzyz: SNo (x * z + y * z).
An exact proof term for the current goal is SNo_add_SNo (x * z) (y * z) Lxz Lyz.
We prove the intermediate claim LE: x * z + y * z = SNoCut (L1 L2) (R1 R2).
An exact proof term for the current goal is add_SNo_eq (x * z) (SNo_mul_SNo x z Hx Hz) (y * z) (SNo_mul_SNo y z Hy Hz).
rewrite the current goal using HE (from left to right).
rewrite the current goal using LE (from left to right).
Apply SNoCut_ext to the current goal.
An exact proof term for the current goal is HLR.
An exact proof term for the current goal is add_SNo_SNoCutP (x * z) (y * z) (SNo_mul_SNo x z Hx Hz) (SNo_mul_SNo y z Hy Hz).
Let u be given.
Assume Hu: u L.
rewrite the current goal using LE (from right to left).
We will prove u < x * z + y * z.
Apply HLE u Hu to the current goal.
Let v be given.
Assume Hv: v SNoL (x + y).
Let w be given.
Assume Hw: w SNoL z.
Assume Hue: u = v * z + (x + y) * w + - v * w.
rewrite the current goal using Hue (from left to right).
We will prove v * z + (x + y) * w + - v * w < x * z + y * z.
Apply SNoL_E (x + y) Lxy v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoL_E z Hz w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
We prove the intermediate claim Lyw: SNo (y * w).
An exact proof term for the current goal is SNo_mul_SNo y w Hy Hw1.
We prove the intermediate claim Lvz: SNo (v * z).
An exact proof term for the current goal is SNo_mul_SNo v z Hv1 Hz.
We prove the intermediate claim Lxyw: SNo ((x + y) * w).
An exact proof term for the current goal is SNo_mul_SNo (x + y) w Lxy Hw1.
We prove the intermediate claim Lxwyw: SNo (x * w + y * w).
An exact proof term for the current goal is SNo_add_SNo (x * w) (y * w) Lxw Lyw.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lvzxwyw: SNo (v * z + x * w + y * w).
An exact proof term for the current goal is SNo_add_SNo_3 (v * z) (x * w) (y * w) Lvz Lxw Lyw.
We prove the intermediate claim Lxzyzvw: SNo (x * z + y * z + v * w).
An exact proof term for the current goal is SNo_add_SNo_3 (x * z) (y * z) (v * w) Lxz Lyz Lvw.
Apply add_SNo_minus_Lt1b3 (v * z) ((x + y) * w) (v * w) (x * z + y * z) Lvz Lxyw Lvw Lxzyz to the current goal.
We will prove v * z + (x + y) * w < (x * z + y * z) + v * w.
rewrite the current goal using IHz w (SNoL_SNoS z Hz w Hw) (from left to right).
We will prove v * z + x * w + y * w < (x * z + y * z) + v * w.
rewrite the current goal using add_SNo_assoc (x * z) (y * z) (v * w) Lxz Lyz Lvw (from right to left).
We will prove v * z + x * w + y * w < x * z + y * z + v * w.
Apply add_SNo_SNoL_interpolate x y Hx Hy v Hv to the current goal.
Assume H1.
Apply H1 to the current goal.
Let u be given.
Assume H1.
Apply H1 to the current goal.
Assume Hu: u SNoL x.
Assume Hvu: v u + y.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hu1 Hu2 Hu3.
We prove the intermediate claim Luw: SNo (u * w).
An exact proof term for the current goal is SNo_mul_SNo u w Hu1 Hw1.
We prove the intermediate claim Luz: SNo (u * z).
An exact proof term for the current goal is SNo_mul_SNo u z Hu1 Hz.
We prove the intermediate claim Luy: SNo (u + y).
An exact proof term for the current goal is SNo_add_SNo u y Hu1 Hy.
Apply add_SNo_Lt1_cancel (v * z + x * w + y * w) (u * w) (x * z + y * z + v * w) Lvzxwyw Luw Lxzyzvw to the current goal.
We will prove (v * z + x * w + y * w) + u * w < (x * z + y * z + v * w) + u * w.
rewrite the current goal using add_SNo_assoc_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw (from right to left).
rewrite the current goal using add_SNo_assoc_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw (from right to left).
We will prove v * z + x * w + y * w + u * w < x * z + y * z + v * w + u * w.
Apply SNoLeLt_tra (v * z + x * w + y * w + u * w) (u * z + y * z + v * w + x * w) (x * z + y * z + v * w + u * w) (SNo_add_SNo_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw) (SNo_add_SNo_4 (u * z) (y * z) (v * w) (x * w) Luz Lyz Lvw Lxw) (SNo_add_SNo_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw) to the current goal.
We will prove v * z + x * w + y * w + u * w u * z + y * z + v * w + x * w.
rewrite the current goal using add_SNo_com_3_0_1 (v * z) (x * w) (y * w + u * w) Lvz Lxw (SNo_add_SNo (y * w) (u * w) Lyw Luw) (from left to right).
We will prove x * w + v * z + y * w + u * w u * z + y * z + v * w + x * w.
rewrite the current goal using add_SNo_rotate_4_1 (u * z) (y * z) (v * w) (x * w) Luz Lyz Lvw Lxw (from left to right).
We will prove x * w + v * z + y * w + u * w x * w + u * z + y * z + v * w.
Apply add_SNo_Le2 (x * w) (v * z + y * w + u * w) (u * z + y * z + v * w) Lxw (SNo_add_SNo_3 (v * z) (y * w) (u * w) Lvz Lyw Luw) (SNo_add_SNo_3 (u * z) (y * z) (v * w) Luz Lyz Lvw) to the current goal.
We will prove v * z + y * w + u * w u * z + y * z + v * w.
rewrite the current goal using add_SNo_com (y * w) (u * w) Lyw Luw (from left to right).
We will prove v * z + u * w + y * w u * z + y * z + v * w.
rewrite the current goal using IHxz u (SNoL_SNoS x Hx u Hu) w (SNoL_SNoS z Hz w Hw) (from right to left).
We will prove v * z + (u + y) * w u * z + y * z + v * w.
rewrite the current goal using add_SNo_assoc (u * z) (y * z) (v * w) Luz Lyz Lvw (from left to right).
We will prove v * z + (u + y) * w (u * z + y * z) + v * w.
rewrite the current goal using IHx u (SNoL_SNoS x Hx u Hu) (from right to left).
We will prove v * z + (u + y) * w (u + y) * z + v * w.
Apply mul_SNo_Le (u + y) z v w Luy Hz Hv1 Hw1 to the current goal.
We will prove v u + y.
An exact proof term for the current goal is Hvu.
We will prove w z.
Apply SNoLtLe to the current goal.
We will prove w < z.
An exact proof term for the current goal is Hw3.
We will prove u * z + y * z + v * w + x * w < x * z + y * z + v * w + u * w.
rewrite the current goal using add_SNo_com_3_0_1 (u * z) (y * z) (v * w + x * w) Luz Lyz (SNo_add_SNo (v * w) (x * w) Lvw Lxw) (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (x * z) (y * z) (v * w + u * w) Lxz Lyz (SNo_add_SNo (v * w) (u * w) Lvw Luw) (from left to right).
We will prove y * z + u * z + v * w + x * w < y * z + x * z + v * w + u * w.
Apply add_SNo_Lt2 (y * z) (u * z + v * w + x * w) (x * z + v * w + u * w) Lyz (SNo_add_SNo_3 (u * z) (v * w) (x * w) Luz Lvw Lxw) (SNo_add_SNo_3 (x * z) (v * w) (u * w) Lxz Lvw Luw) to the current goal.
We will prove u * z + v * w + x * w < x * z + v * w + u * w.
rewrite the current goal using add_SNo_com_3_0_1 (u * z) (v * w) (x * w) Luz Lvw Lxw (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (x * z) (v * w) (u * w) Lxz Lvw Luw (from left to right).
We will prove v * w + u * z + x * w < v * w + x * z + u * w.
Apply add_SNo_Lt2 (v * w) (u * z + x * w) (x * z + u * w) Lvw (SNo_add_SNo (u * z) (x * w) Luz Lxw) (SNo_add_SNo (x * z) (u * w) Lxz Luw) to the current goal.
We will prove u * z + x * w < x * z + u * w.
An exact proof term for the current goal is mul_SNo_Lt x z u w Hx Hz Hu1 Hw1 Hu3 Hw3.
Assume H1.
Apply H1 to the current goal.
Let u be given.
Assume H1.
Apply H1 to the current goal.
Assume Hu: u SNoL y.
Assume Hvu: v x + u.
Apply SNoL_E y Hy u Hu to the current goal.
Assume Hu1 Hu2 Hu3.
We prove the intermediate claim Luw: SNo (u * w).
An exact proof term for the current goal is SNo_mul_SNo u w Hu1 Hw1.
We prove the intermediate claim Luz: SNo (u * z).
An exact proof term for the current goal is SNo_mul_SNo u z Hu1 Hz.
We prove the intermediate claim Lxu: SNo (x + u).
An exact proof term for the current goal is SNo_add_SNo x u Hx Hu1.
Apply add_SNo_Lt1_cancel (v * z + x * w + y * w) (u * w) (x * z + y * z + v * w) Lvzxwyw Luw Lxzyzvw to the current goal.
We will prove (v * z + x * w + y * w) + u * w < (x * z + y * z + v * w) + u * w.
rewrite the current goal using add_SNo_assoc_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw (from right to left).
rewrite the current goal using add_SNo_assoc_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw (from right to left).
We will prove v * z + x * w + y * w + u * w < x * z + y * z + v * w + u * w.
Apply SNoLeLt_tra (v * z + x * w + y * w + u * w) (x * z + u * z + v * w + y * w) (x * z + y * z + v * w + u * w) (SNo_add_SNo_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw) (SNo_add_SNo_4 (x * z) (u * z) (v * w) (y * w) Lxz Luz Lvw Lyw) (SNo_add_SNo_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw) to the current goal.
We will prove v * z + x * w + y * w + u * w x * z + u * z + v * w + y * w.
rewrite the current goal using add_SNo_com (y * w) (u * w) Lyw Luw (from left to right).
We will prove v * z + x * w + u * w + y * w x * z + u * z + v * w + y * w.
rewrite the current goal using add_SNo_rotate_4_1 (v * z) (x * w) (u * w) (y * w) Lvz Lxw Luw Lyw (from left to right).
We will prove y * w + v * z + x * w + u * w x * z + u * z + v * w + y * w.
rewrite the current goal using add_SNo_rotate_4_1 (x * z) (u * z) (v * w) (y * w) Lxz Luz Lvw Lyw (from left to right).
We will prove y * w + v * z + x * w + u * w y * w + x * z + u * z + v * w.
Apply add_SNo_Le2 (y * w) (v * z + x * w + u * w) (x * z + u * z + v * w) Lyw (SNo_add_SNo_3 (v * z) (x * w) (u * w) Lvz Lxw Luw) (SNo_add_SNo_3 (x * z) (u * z) (v * w) Lxz Luz Lvw) to the current goal.
We will prove v * z + x * w + u * w x * z + u * z + v * w.
rewrite the current goal using IHyz u (SNoL_SNoS y Hy u Hu) w (SNoL_SNoS z Hz w Hw) (from right to left).
We will prove v * z + (x + u) * w x * z + u * z + v * w.
rewrite the current goal using add_SNo_assoc (x * z) (u * z) (v * w) Lxz Luz Lvw (from left to right).
We will prove v * z + (x + u) * w (x * z + u * z) + v * w.
rewrite the current goal using IHy u (SNoL_SNoS y Hy u Hu) (from right to left).
We will prove v * z + (x + u) * w (x + u) * z + v * w.
Apply mul_SNo_Le (x + u) z v w Lxu Hz Hv1 Hw1 to the current goal.
We will prove v x + u.
An exact proof term for the current goal is Hvu.
We will prove w z.
Apply SNoLtLe to the current goal.
We will prove w < z.
An exact proof term for the current goal is Hw3.
We will prove x * z + u * z + v * w + y * w < x * z + y * z + v * w + u * w.
Apply add_SNo_Lt2 (x * z) (u * z + v * w + y * w) (y * z + v * w + u * w) Lxz (SNo_add_SNo_3 (u * z) (v * w) (y * w) Luz Lvw Lyw) (SNo_add_SNo_3 (y * z) (v * w) (u * w) Lyz Lvw Luw) to the current goal.
We will prove u * z + v * w + y * w < y * z + v * w + u * w.
rewrite the current goal using add_SNo_com_3_0_1 (u * z) (v * w) (y * w) Luz Lvw Lyw (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (y * z) (v * w) (u * w) Lyz Lvw Luw (from left to right).
We will prove v * w + u * z + y * w < v * w + y * z + u * w.
Apply add_SNo_Lt2 (v * w) (u * z + y * w) (y * z + u * w) Lvw (SNo_add_SNo (u * z) (y * w) Luz Lyw) (SNo_add_SNo (y * z) (u * w) Lyz Luw) to the current goal.
We will prove u * z + y * w < y * z + u * w.
An exact proof term for the current goal is mul_SNo_Lt y z u w Hy Hz Hu1 Hw1 Hu3 Hw3.
Let v be given.
Assume Hv: v SNoR (x + y).
Let w be given.
Assume Hw: w SNoR z.
Assume Hue: u = v * z + (x + y) * w + - v * w.
rewrite the current goal using Hue (from left to right).
We will prove v * z + (x + y) * w + - v * w < x * z + y * z.
Apply SNoR_E (x + y) Lxy v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoR_E z Hz w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
We prove the intermediate claim Lyw: SNo (y * w).
An exact proof term for the current goal is SNo_mul_SNo y w Hy Hw1.
We prove the intermediate claim Lvz: SNo (v * z).
An exact proof term for the current goal is SNo_mul_SNo v z Hv1 Hz.
We prove the intermediate claim Lxyw: SNo ((x + y) * w).
An exact proof term for the current goal is SNo_mul_SNo (x + y) w Lxy Hw1.
We prove the intermediate claim Lxwyw: SNo (x * w + y * w).
An exact proof term for the current goal is SNo_add_SNo (x * w) (y * w) Lxw Lyw.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lvzxwyw: SNo (v * z + x * w + y * w).
An exact proof term for the current goal is SNo_add_SNo_3 (v * z) (x * w) (y * w) Lvz Lxw Lyw.
We prove the intermediate claim Lxzyzvw: SNo (x * z + y * z + v * w).
An exact proof term for the current goal is SNo_add_SNo_3 (x * z) (y * z) (v * w) Lxz Lyz Lvw.
Apply add_SNo_minus_Lt1b3 (v * z) ((x + y) * w) (v * w) (x * z + y * z) Lvz Lxyw Lvw Lxzyz to the current goal.
We will prove v * z + (x + y) * w < (x * z + y * z) + v * w.
rewrite the current goal using IHz w (SNoR_SNoS z Hz w Hw) (from left to right).
We will prove v * z + x * w + y * w < (x * z + y * z) + v * w.
rewrite the current goal using add_SNo_assoc (x * z) (y * z) (v * w) Lxz Lyz Lvw (from right to left).
We will prove v * z + x * w + y * w < x * z + y * z + v * w.
Apply add_SNo_SNoR_interpolate x y Hx Hy v Hv to the current goal.
Assume H1.
Apply H1 to the current goal.
Let u be given.
Assume H1.
Apply H1 to the current goal.
Assume Hu: u SNoR x.
Assume Hvu: u + y v.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hu1 Hu2 Hu3.
We prove the intermediate claim Luw: SNo (u * w).
An exact proof term for the current goal is SNo_mul_SNo u w Hu1 Hw1.
We prove the intermediate claim Luz: SNo (u * z).
An exact proof term for the current goal is SNo_mul_SNo u z Hu1 Hz.
We prove the intermediate claim Luy: SNo (u + y).
An exact proof term for the current goal is SNo_add_SNo u y Hu1 Hy.
Apply add_SNo_Lt1_cancel (v * z + x * w + y * w) (u * w) (x * z + y * z + v * w) Lvzxwyw Luw Lxzyzvw to the current goal.
We will prove (v * z + x * w + y * w) + u * w < (x * z + y * z + v * w) + u * w.
rewrite the current goal using add_SNo_assoc_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw (from right to left).
rewrite the current goal using add_SNo_assoc_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw (from right to left).
We will prove v * z + x * w + y * w + u * w < x * z + y * z + v * w + u * w.
Apply SNoLeLt_tra (v * z + x * w + y * w + u * w) (u * z + y * z + v * w + x * w) (x * z + y * z + v * w + u * w) (SNo_add_SNo_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw) (SNo_add_SNo_4 (u * z) (y * z) (v * w) (x * w) Luz Lyz Lvw Lxw) (SNo_add_SNo_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw) to the current goal.
We will prove v * z + x * w + y * w + u * w u * z + y * z + v * w + x * w.
rewrite the current goal using add_SNo_com_3_0_1 (v * z) (x * w) (y * w + u * w) Lvz Lxw (SNo_add_SNo (y * w) (u * w) Lyw Luw) (from left to right).
We will prove x * w + v * z + y * w + u * w u * z + y * z + v * w + x * w.
rewrite the current goal using add_SNo_rotate_4_1 (u * z) (y * z) (v * w) (x * w) Luz Lyz Lvw Lxw (from left to right).
We will prove x * w + v * z + y * w + u * w x * w + u * z + y * z + v * w.
Apply add_SNo_Le2 (x * w) (v * z + y * w + u * w) (u * z + y * z + v * w) Lxw (SNo_add_SNo_3 (v * z) (y * w) (u * w) Lvz Lyw Luw) (SNo_add_SNo_3 (u * z) (y * z) (v * w) Luz Lyz Lvw) to the current goal.
We will prove v * z + y * w + u * w u * z + y * z + v * w.
rewrite the current goal using add_SNo_com (y * w) (u * w) Lyw Luw (from left to right).
We will prove v * z + u * w + y * w u * z + y * z + v * w.
rewrite the current goal using IHxz u (SNoR_SNoS x Hx u Hu) w (SNoR_SNoS z Hz w Hw) (from right to left).
We will prove v * z + (u + y) * w u * z + y * z + v * w.
rewrite the current goal using add_SNo_assoc (u * z) (y * z) (v * w) Luz Lyz Lvw (from left to right).
We will prove v * z + (u + y) * w (u * z + y * z) + v * w.
rewrite the current goal using IHx u (SNoR_SNoS x Hx u Hu) (from right to left).
We will prove v * z + (u + y) * w (u + y) * z + v * w.
rewrite the current goal using add_SNo_com ((u + y) * z) (v * w) (SNo_mul_SNo (u + y) z Luy Hz) Lvw (from left to right).
rewrite the current goal using add_SNo_com (v * z) ((u + y) * w) Lvz (SNo_mul_SNo (u + y) w Luy Hw1) (from left to right).
Apply mul_SNo_Le v w (u + y) z Hv1 Hw1 Luy Hz to the current goal.
We will prove u + y v.
An exact proof term for the current goal is Hvu.
We will prove z w.
Apply SNoLtLe to the current goal.
We will prove z < w.
An exact proof term for the current goal is Hw3.
We will prove u * z + y * z + v * w + x * w < x * z + y * z + v * w + u * w.
rewrite the current goal using add_SNo_com_3_0_1 (u * z) (y * z) (v * w + x * w) Luz Lyz (SNo_add_SNo (v * w) (x * w) Lvw Lxw) (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (x * z) (y * z) (v * w + u * w) Lxz Lyz (SNo_add_SNo (v * w) (u * w) Lvw Luw) (from left to right).
We will prove y * z + u * z + v * w + x * w < y * z + x * z + v * w + u * w.
Apply add_SNo_Lt2 (y * z) (u * z + v * w + x * w) (x * z + v * w + u * w) Lyz (SNo_add_SNo_3 (u * z) (v * w) (x * w) Luz Lvw Lxw) (SNo_add_SNo_3 (x * z) (v * w) (u * w) Lxz Lvw Luw) to the current goal.
We will prove u * z + v * w + x * w < x * z + v * w + u * w.
rewrite the current goal using add_SNo_com_3_0_1 (u * z) (v * w) (x * w) Luz Lvw Lxw (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (x * z) (v * w) (u * w) Lxz Lvw Luw (from left to right).
We will prove v * w + u * z + x * w < v * w + x * z + u * w.
Apply add_SNo_Lt2 (v * w) (u * z + x * w) (x * z + u * w) Lvw (SNo_add_SNo (u * z) (x * w) Luz Lxw) (SNo_add_SNo (x * z) (u * w) Lxz Luw) to the current goal.
We will prove u * z + x * w < x * z + u * w.
rewrite the current goal using add_SNo_com (x * z) (u * w) Lxz Luw (from left to right).
rewrite the current goal using add_SNo_com (u * z) (x * w) Luz Lxw (from left to right).
We will prove x * w + u * z < u * w + x * z.
An exact proof term for the current goal is mul_SNo_Lt u w x z Hu1 Hw1 Hx Hz Hu3 Hw3.
Assume H1.
Apply H1 to the current goal.
Let u be given.
Assume H1.
Apply H1 to the current goal.
Assume Hu: u SNoR y.
Assume Hvu: x + u v.
Apply SNoR_E y Hy u Hu to the current goal.
Assume Hu1 Hu2 Hu3.
We prove the intermediate claim Luw: SNo (u * w).
An exact proof term for the current goal is SNo_mul_SNo u w Hu1 Hw1.
We prove the intermediate claim Luz: SNo (u * z).
An exact proof term for the current goal is SNo_mul_SNo u z Hu1 Hz.
We prove the intermediate claim Lxu: SNo (x + u).
An exact proof term for the current goal is SNo_add_SNo x u Hx Hu1.
Apply add_SNo_Lt1_cancel (v * z + x * w + y * w) (u * w) (x * z + y * z + v * w) Lvzxwyw Luw Lxzyzvw to the current goal.
We will prove (v * z + x * w + y * w) + u * w < (x * z + y * z + v * w) + u * w.
rewrite the current goal using add_SNo_assoc_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw (from right to left).
rewrite the current goal using add_SNo_assoc_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw (from right to left).
We will prove v * z + x * w + y * w + u * w < x * z + y * z + v * w + u * w.
Apply SNoLeLt_tra (v * z + x * w + y * w + u * w) (x * z + u * z + v * w + y * w) (x * z + y * z + v * w + u * w) (SNo_add_SNo_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw) (SNo_add_SNo_4 (x * z) (u * z) (v * w) (y * w) Lxz Luz Lvw Lyw) (SNo_add_SNo_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw) to the current goal.
We will prove v * z + x * w + y * w + u * w x * z + u * z + v * w + y * w.
rewrite the current goal using add_SNo_com (y * w) (u * w) Lyw Luw (from left to right).
We will prove v * z + x * w + u * w + y * w x * z + u * z + v * w + y * w.
rewrite the current goal using add_SNo_rotate_4_1 (v * z) (x * w) (u * w) (y * w) Lvz Lxw Luw Lyw (from left to right).
We will prove y * w + v * z + x * w + u * w x * z + u * z + v * w + y * w.
rewrite the current goal using add_SNo_rotate_4_1 (x * z) (u * z) (v * w) (y * w) Lxz Luz Lvw Lyw (from left to right).
We will prove y * w + v * z + x * w + u * w y * w + x * z + u * z + v * w.
Apply add_SNo_Le2 (y * w) (v * z + x * w + u * w) (x * z + u * z + v * w) Lyw (SNo_add_SNo_3 (v * z) (x * w) (u * w) Lvz Lxw Luw) (SNo_add_SNo_3 (x * z) (u * z) (v * w) Lxz Luz Lvw) to the current goal.
We will prove v * z + x * w + u * w x * z + u * z + v * w.
rewrite the current goal using IHyz u (SNoR_SNoS y Hy u Hu) w (SNoR_SNoS z Hz w Hw) (from right to left).
We will prove v * z + (x + u) * w x * z + u * z + v * w.
rewrite the current goal using add_SNo_assoc (x * z) (u * z) (v * w) Lxz Luz Lvw (from left to right).
We will prove v * z + (x + u) * w (x * z + u * z) + v * w.
rewrite the current goal using IHy u (SNoR_SNoS y Hy u Hu) (from right to left).
We will prove v * z + (x + u) * w (x + u) * z + v * w.
rewrite the current goal using add_SNo_com ((x + u) * z) (v * w) (SNo_mul_SNo (x + u) z Lxu Hz) Lvw (from left to right).
rewrite the current goal using add_SNo_com (v * z) ((x + u) * w) Lvz (SNo_mul_SNo (x + u) w Lxu Hw1) (from left to right).
Apply mul_SNo_Le v w (x + u) z Hv1 Hw1 Lxu Hz to the current goal.
We will prove x + u v.
An exact proof term for the current goal is Hvu.
We will prove z w.
Apply SNoLtLe to the current goal.
We will prove z < w.
An exact proof term for the current goal is Hw3.
We will prove x * z + u * z + v * w + y * w < x * z + y * z + v * w + u * w.
Apply add_SNo_Lt2 (x * z) (u * z + v * w + y * w) (y * z + v * w + u * w) Lxz (SNo_add_SNo_3 (u * z) (v * w) (y * w) Luz Lvw Lyw) (SNo_add_SNo_3 (y * z) (v * w) (u * w) Lyz Lvw Luw) to the current goal.
We will prove u * z + v * w + y * w < y * z + v * w + u * w.
rewrite the current goal using add_SNo_com_3_0_1 (u * z) (v * w) (y * w) Luz Lvw Lyw (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (y * z) (v * w) (u * w) Lyz Lvw Luw (from left to right).
We will prove v * w + u * z + y * w < v * w + y * z + u * w.
Apply add_SNo_Lt2 (v * w) (u * z + y * w) (y * z + u * w) Lvw (SNo_add_SNo (u * z) (y * w) Luz Lyw) (SNo_add_SNo (y * z) (u * w) Lyz Luw) to the current goal.
We will prove u * z + y * w < y * z + u * w.
rewrite the current goal using add_SNo_com (y * z) (u * w) Lyz Luw (from left to right).
rewrite the current goal using add_SNo_com (u * z) (y * w) Luz Lyw (from left to right).
We will prove y * w + u * z < u * w + y * z.
An exact proof term for the current goal is mul_SNo_Lt u w y z Hu1 Hw1 Hy Hz Hu3 Hw3.
Let u be given.
Assume Hu: u R.
rewrite the current goal using LE (from right to left).
We will prove x * z + y * z < u.
Apply HRE u Hu to the current goal.
Let v be given.
Assume Hv: v SNoL (x + y).
Let w be given.
Assume Hw: w SNoR z.
Assume Hue: u = v * z + (x + y) * w + - v * w.
rewrite the current goal using Hue (from left to right).
We will prove x * z + y * z < v * z + (x + y) * w + - v * w.
Apply SNoL_E (x + y) Lxy v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoR_E z Hz w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
We prove the intermediate claim Lyw: SNo (y * w).
An exact proof term for the current goal is SNo_mul_SNo y w Hy Hw1.
We prove the intermediate claim Lvz: SNo (v * z).
An exact proof term for the current goal is SNo_mul_SNo v z Hv1 Hz.
We prove the intermediate claim Lxyw: SNo ((x + y) * w).
An exact proof term for the current goal is SNo_mul_SNo (x + y) w Lxy Hw1.
We prove the intermediate claim Lxwyw: SNo (x * w + y * w).
An exact proof term for the current goal is SNo_add_SNo (x * w) (y * w) Lxw Lyw.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lvzxwyw: SNo (v * z + x * w + y * w).
An exact proof term for the current goal is SNo_add_SNo_3 (v * z) (x * w) (y * w) Lvz Lxw Lyw.
We prove the intermediate claim Lxzyzvw: SNo (x * z + y * z + v * w).
An exact proof term for the current goal is SNo_add_SNo_3 (x * z) (y * z) (v * w) Lxz Lyz Lvw.
We will prove x * z + y * z < v * z + (x + y) * w + - v * w.
Apply add_SNo_minus_Lt2b3 (v * z) ((x + y) * w) (v * w) (x * z + y * z) Lvz Lxyw Lvw Lxzyz to the current goal.
We will prove (x * z + y * z) + v * w < v * z + (x + y) * w.
rewrite the current goal using IHz w (SNoR_SNoS z Hz w Hw) (from left to right).
We will prove (x * z + y * z) + v * w < v * z + x * w + y * w.
rewrite the current goal using add_SNo_assoc (x * z) (y * z) (v * w) Lxz Lyz Lvw (from right to left).
We will prove x * z + y * z + v * w < v * z + x * w + y * w.
Apply add_SNo_SNoL_interpolate x y Hx Hy v Hv to the current goal.
Assume H1.
Apply H1 to the current goal.
Let u be given.
Assume H1.
Apply H1 to the current goal.
Assume Hu: u SNoL x.
Assume Hvu: v u + y.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hu1 Hu2 Hu3.
We prove the intermediate claim Luw: SNo (u * w).
An exact proof term for the current goal is SNo_mul_SNo u w Hu1 Hw1.
We prove the intermediate claim Luz: SNo (u * z).
An exact proof term for the current goal is SNo_mul_SNo u z Hu1 Hz.
We prove the intermediate claim Luy: SNo (u + y).
An exact proof term for the current goal is SNo_add_SNo u y Hu1 Hy.
Apply add_SNo_Lt1_cancel (x * z + y * z + v * w) (u * w) (v * z + x * w + y * w) Lxzyzvw Luw Lvzxwyw to the current goal.
We will prove (x * z + y * z + v * w) + u * w < (v * z + x * w + y * w) + u * w.
rewrite the current goal using add_SNo_assoc_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw (from right to left).
rewrite the current goal using add_SNo_assoc_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw (from right to left).
We will prove x * z + y * z + v * w + u * w < v * z + x * w + y * w + u * w.
Apply SNoLtLe_tra (x * z + y * z + v * w + u * w) (u * z + y * z + v * w + x * w) (v * z + x * w + y * w + u * w) (SNo_add_SNo_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw) (SNo_add_SNo_4 (u * z) (y * z) (v * w) (x * w) Luz Lyz Lvw Lxw) (SNo_add_SNo_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw) to the current goal.
We will prove x * z + y * z + v * w + u * w < u * z + y * z + v * w + x * w.
rewrite the current goal using add_SNo_com_3_0_1 (u * z) (y * z) (v * w + x * w) Luz Lyz (SNo_add_SNo (v * w) (x * w) Lvw Lxw) (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (x * z) (y * z) (v * w + u * w) Lxz Lyz (SNo_add_SNo (v * w) (u * w) Lvw Luw) (from left to right).
We will prove y * z + x * z + v * w + u * w < y * z + u * z + v * w + x * w.
Apply add_SNo_Lt2 (y * z) (x * z + v * w + u * w) (u * z + v * w + x * w) Lyz (SNo_add_SNo_3 (x * z) (v * w) (u * w) Lxz Lvw Luw) (SNo_add_SNo_3 (u * z) (v * w) (x * w) Luz Lvw Lxw) to the current goal.
We will prove x * z + v * w + u * w < u * z + v * w + x * w.
rewrite the current goal using add_SNo_com_3_0_1 (u * z) (v * w) (x * w) Luz Lvw Lxw (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (x * z) (v * w) (u * w) Lxz Lvw Luw (from left to right).
We will prove v * w + x * z + u * w < v * w + u * z + x * w.
Apply add_SNo_Lt2 (v * w) (x * z + u * w) (u * z + x * w) Lvw (SNo_add_SNo (x * z) (u * w) Lxz Luw) (SNo_add_SNo (u * z) (x * w) Luz Lxw) to the current goal.
We will prove x * z + u * w < u * z + x * w.
rewrite the current goal using add_SNo_com (x * z) (u * w) Lxz Luw (from left to right).
rewrite the current goal using add_SNo_com (u * z) (x * w) Luz Lxw (from left to right).
An exact proof term for the current goal is mul_SNo_Lt x w u z Hx Hw1 Hu1 Hz Hu3 Hw3.
We will prove u * z + y * z + v * w + x * w v * z + x * w + y * w + u * w.
rewrite the current goal using add_SNo_com_3_0_1 (v * z) (x * w) (y * w + u * w) Lvz Lxw (SNo_add_SNo (y * w) (u * w) Lyw Luw) (from left to right).
We will prove u * z + y * z + v * w + x * w x * w + v * z + y * w + u * w.
rewrite the current goal using add_SNo_rotate_4_1 (u * z) (y * z) (v * w) (x * w) Luz Lyz Lvw Lxw (from left to right).
We will prove x * w + u * z + y * z + v * w x * w + v * z + y * w + u * w.
Apply add_SNo_Le2 (x * w) (u * z + y * z + v * w) (v * z + y * w + u * w) Lxw (SNo_add_SNo_3 (u * z) (y * z) (v * w) Luz Lyz Lvw) (SNo_add_SNo_3 (v * z) (y * w) (u * w) Lvz Lyw Luw) to the current goal.
We will prove u * z + y * z + v * w v * z + y * w + u * w.
rewrite the current goal using add_SNo_com (y * w) (u * w) Lyw Luw (from left to right).
We will prove u * z + y * z + v * w v * z + u * w + y * w.
rewrite the current goal using IHxz u (SNoL_SNoS x Hx u Hu) w (SNoR_SNoS z Hz w Hw) (from right to left).
We will prove u * z + y * z + v * w v * z + (u + y) * w.
rewrite the current goal using add_SNo_assoc (u * z) (y * z) (v * w) Luz Lyz Lvw (from left to right).
We will prove (u * z + y * z) + v * w v * z + (u + y) * w.
rewrite the current goal using IHx u (SNoL_SNoS x Hx u Hu) (from right to left).
We will prove (u + y) * z + v * w v * z + (u + y) * w.
rewrite the current goal using add_SNo_com ((u + y) * z) (v * w) (SNo_mul_SNo (u + y) z Luy Hz) Lvw (from left to right).
rewrite the current goal using add_SNo_com (v * z) ((u + y) * w) Lvz (SNo_mul_SNo (u + y) w Luy Hw1) (from left to right).
We will prove v * w + (u + y) * z (u + y) * w + v * z.
Apply mul_SNo_Le (u + y) w v z Luy Hw1 Hv1 Hz to the current goal.
We will prove v u + y.
An exact proof term for the current goal is Hvu.
We will prove z w.
Apply SNoLtLe to the current goal.
We will prove z < w.
An exact proof term for the current goal is Hw3.
Assume H1.
Apply H1 to the current goal.
Let u be given.
Assume H1.
Apply H1 to the current goal.
Assume Hu: u SNoL y.
Assume Hvu: v x + u.
Apply SNoL_E y Hy u Hu to the current goal.
Assume Hu1 Hu2 Hu3.
We prove the intermediate claim Luw: SNo (u * w).
An exact proof term for the current goal is SNo_mul_SNo u w Hu1 Hw1.
We prove the intermediate claim Luz: SNo (u * z).
An exact proof term for the current goal is SNo_mul_SNo u z Hu1 Hz.
We prove the intermediate claim Lxu: SNo (x + u).
An exact proof term for the current goal is SNo_add_SNo x u Hx Hu1.
Apply add_SNo_Lt1_cancel (x * z + y * z + v * w) (u * w) (v * z + x * w + y * w) Lxzyzvw Luw Lvzxwyw to the current goal.
We will prove (x * z + y * z + v * w) + u * w < (v * z + x * w + y * w) + u * w.
rewrite the current goal using add_SNo_assoc_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw (from right to left).
rewrite the current goal using add_SNo_assoc_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw (from right to left).
We will prove x * z + y * z + v * w + u * w < v * z + x * w + y * w + u * w.
Apply SNoLtLe_tra (x * z + y * z + v * w + u * w) (x * z + u * z + v * w + y * w) (v * z + x * w + y * w + u * w) (SNo_add_SNo_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw) (SNo_add_SNo_4 (x * z) (u * z) (v * w) (y * w) Lxz Luz Lvw Lyw) (SNo_add_SNo_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw) to the current goal.
We will prove x * z + y * z + v * w + u * w < x * z + u * z + v * w + y * w.
Apply add_SNo_Lt2 (x * z) (y * z + v * w + u * w) (u * z + v * w + y * w) Lxz (SNo_add_SNo_3 (y * z) (v * w) (u * w) Lyz Lvw Luw) (SNo_add_SNo_3 (u * z) (v * w) (y * w) Luz Lvw Lyw) to the current goal.
We will prove y * z + v * w + u * w < u * z + v * w + y * w.
rewrite the current goal using add_SNo_com_3_0_1 (u * z) (v * w) (y * w) Luz Lvw Lyw (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (y * z) (v * w) (u * w) Lyz Lvw Luw (from left to right).
We will prove v * w + y * z + u * w < v * w + u * z + y * w.
Apply add_SNo_Lt2 (v * w) (y * z + u * w) (u * z + y * w) Lvw (SNo_add_SNo (y * z) (u * w) Lyz Luw) (SNo_add_SNo (u * z) (y * w) Luz Lyw) to the current goal.
We will prove y * z + u * w < u * z + y * w.
rewrite the current goal using add_SNo_com (y * z) (u * w) Lyz Luw (from left to right).
rewrite the current goal using add_SNo_com (u * z) (y * w) Luz Lyw (from left to right).
An exact proof term for the current goal is mul_SNo_Lt y w u z Hy Hw1 Hu1 Hz Hu3 Hw3.
We will prove x * z + u * z + v * w + y * w v * z + x * w + y * w + u * w.
rewrite the current goal using add_SNo_com (y * w) (u * w) Lyw Luw (from left to right).
We will prove x * z + u * z + v * w + y * w v * z + x * w + u * w + y * w.
rewrite the current goal using add_SNo_rotate_4_1 (v * z) (x * w) (u * w) (y * w) Lvz Lxw Luw Lyw (from left to right).
We will prove x * z + u * z + v * w + y * w y * w + v * z + x * w + u * w.
rewrite the current goal using add_SNo_rotate_4_1 (x * z) (u * z) (v * w) (y * w) Lxz Luz Lvw Lyw (from left to right).
We will prove y * w + x * z + u * z + v * w y * w + v * z + x * w + u * w.
Apply add_SNo_Le2 (y * w) (x * z + u * z + v * w) (v * z + x * w + u * w) Lyw (SNo_add_SNo_3 (x * z) (u * z) (v * w) Lxz Luz Lvw) (SNo_add_SNo_3 (v * z) (x * w) (u * w) Lvz Lxw Luw) to the current goal.
We will prove x * z + u * z + v * w v * z + x * w + u * w.
rewrite the current goal using IHyz u (SNoL_SNoS y Hy u Hu) w (SNoR_SNoS z Hz w Hw) (from right to left).
We will prove x * z + u * z + v * w v * z + (x + u) * w.
rewrite the current goal using add_SNo_assoc (x * z) (u * z) (v * w) Lxz Luz Lvw (from left to right).
We will prove (x * z + u * z) + v * w v * z + (x + u) * w.
rewrite the current goal using IHy u (SNoL_SNoS y Hy u Hu) (from right to left).
We will prove (x + u) * z + v * w v * z + (x + u) * w.
rewrite the current goal using add_SNo_com ((x + u) * z) (v * w) (SNo_mul_SNo (x + u) z Lxu Hz) Lvw (from left to right).
rewrite the current goal using add_SNo_com (v * z) ((x + u) * w) Lvz (SNo_mul_SNo (x + u) w Lxu Hw1) (from left to right).
We will prove v * w + (x + u) * z (x + u) * w + v * z.
Apply mul_SNo_Le (x + u) w v z Lxu Hw1 Hv1 Hz to the current goal.
We will prove v x + u.
An exact proof term for the current goal is Hvu.
We will prove z w.
Apply SNoLtLe to the current goal.
We will prove z < w.
An exact proof term for the current goal is Hw3.
Let v be given.
Assume Hv: v SNoR (x + y).
Let w be given.
Assume Hw: w SNoL z.
Assume Hue: u = v * z + (x + y) * w + - v * w.
rewrite the current goal using Hue (from left to right).
We will prove x * z + y * z < v * z + (x + y) * w + - v * w.
Apply SNoR_E (x + y) Lxy v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoL_E z Hz w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
We prove the intermediate claim Lyw: SNo (y * w).
An exact proof term for the current goal is SNo_mul_SNo y w Hy Hw1.
We prove the intermediate claim Lvz: SNo (v * z).
An exact proof term for the current goal is SNo_mul_SNo v z Hv1 Hz.
We prove the intermediate claim Lxyw: SNo ((x + y) * w).
An exact proof term for the current goal is SNo_mul_SNo (x + y) w Lxy Hw1.
We prove the intermediate claim Lxwyw: SNo (x * w + y * w).
An exact proof term for the current goal is SNo_add_SNo (x * w) (y * w) Lxw Lyw.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lvzxwyw: SNo (v * z + x * w + y * w).
An exact proof term for the current goal is SNo_add_SNo_3 (v * z) (x * w) (y * w) Lvz Lxw Lyw.
We prove the intermediate claim Lxzyzvw: SNo (x * z + y * z + v * w).
An exact proof term for the current goal is SNo_add_SNo_3 (x * z) (y * z) (v * w) Lxz Lyz Lvw.
We will prove x * z + y * z < v * z + (x + y) * w + - v * w.
Apply add_SNo_minus_Lt2b3 (v * z) ((x + y) * w) (v * w) (x * z + y * z) Lvz Lxyw Lvw Lxzyz to the current goal.
We will prove (x * z + y * z) + v * w < v * z + (x + y) * w.
rewrite the current goal using IHz w (SNoL_SNoS z Hz w Hw) (from left to right).
We will prove (x * z + y * z) + v * w < v * z + x * w + y * w.
rewrite the current goal using add_SNo_assoc (x * z) (y * z) (v * w) Lxz Lyz Lvw (from right to left).
We will prove x * z + y * z + v * w < v * z + x * w + y * w.
Apply add_SNo_SNoR_interpolate x y Hx Hy v Hv to the current goal.
Assume H1.
Apply H1 to the current goal.
Let u be given.
Assume H1.
Apply H1 to the current goal.
Assume Hu: u SNoR x.
Assume Hvu: u + y v.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hu1 Hu2 Hu3.
We prove the intermediate claim Luw: SNo (u * w).
An exact proof term for the current goal is SNo_mul_SNo u w Hu1 Hw1.
We prove the intermediate claim Luz: SNo (u * z).
An exact proof term for the current goal is SNo_mul_SNo u z Hu1 Hz.
We prove the intermediate claim Luy: SNo (u + y).
An exact proof term for the current goal is SNo_add_SNo u y Hu1 Hy.
Apply add_SNo_Lt1_cancel (x * z + y * z + v * w) (u * w) (v * z + x * w + y * w) Lxzyzvw Luw Lvzxwyw to the current goal.
We will prove (x * z + y * z + v * w) + u * w < (v * z + x * w + y * w) + u * w.
rewrite the current goal using add_SNo_assoc_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw (from right to left).
rewrite the current goal using add_SNo_assoc_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw (from right to left).
We will prove x * z + y * z + v * w + u * w < v * z + x * w + y * w + u * w.
Apply SNoLtLe_tra (x * z + y * z + v * w + u * w) (u * z + y * z + v * w + x * w) (v * z + x * w + y * w + u * w) (SNo_add_SNo_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw) (SNo_add_SNo_4 (u * z) (y * z) (v * w) (x * w) Luz Lyz Lvw Lxw) (SNo_add_SNo_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw) to the current goal.
We will prove x * z + y * z + v * w + u * w < u * z + y * z + v * w + x * w.
rewrite the current goal using add_SNo_com_3_0_1 (u * z) (y * z) (v * w + x * w) Luz Lyz (SNo_add_SNo (v * w) (x * w) Lvw Lxw) (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (x * z) (y * z) (v * w + u * w) Lxz Lyz (SNo_add_SNo (v * w) (u * w) Lvw Luw) (from left to right).
We will prove y * z + x * z + v * w + u * w < y * z + u * z + v * w + x * w.
Apply add_SNo_Lt2 (y * z) (x * z + v * w + u * w) (u * z + v * w + x * w) Lyz (SNo_add_SNo_3 (x * z) (v * w) (u * w) Lxz Lvw Luw) (SNo_add_SNo_3 (u * z) (v * w) (x * w) Luz Lvw Lxw) to the current goal.
We will prove x * z + v * w + u * w < u * z + v * w + x * w.
rewrite the current goal using add_SNo_com_3_0_1 (u * z) (v * w) (x * w) Luz Lvw Lxw (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (x * z) (v * w) (u * w) Lxz Lvw Luw (from left to right).
We will prove v * w + x * z + u * w < v * w + u * z + x * w.
Apply add_SNo_Lt2 (v * w) (x * z + u * w) (u * z + x * w) Lvw (SNo_add_SNo (x * z) (u * w) Lxz Luw) (SNo_add_SNo (u * z) (x * w) Luz Lxw) to the current goal.
We will prove x * z + u * w < u * z + x * w.
An exact proof term for the current goal is mul_SNo_Lt u z x w Hu1 Hz Hx Hw1 Hu3 Hw3.
We will prove u * z + y * z + v * w + x * w v * z + x * w + y * w + u * w.
rewrite the current goal using add_SNo_com_3_0_1 (v * z) (x * w) (y * w + u * w) Lvz Lxw (SNo_add_SNo (y * w) (u * w) Lyw Luw) (from left to right).
We will prove u * z + y * z + v * w + x * w x * w + v * z + y * w + u * w.
rewrite the current goal using add_SNo_rotate_4_1 (u * z) (y * z) (v * w) (x * w) Luz Lyz Lvw Lxw (from left to right).
We will prove x * w + u * z + y * z + v * w x * w + v * z + y * w + u * w.
Apply add_SNo_Le2 (x * w) (u * z + y * z + v * w) (v * z + y * w + u * w) Lxw (SNo_add_SNo_3 (u * z) (y * z) (v * w) Luz Lyz Lvw) (SNo_add_SNo_3 (v * z) (y * w) (u * w) Lvz Lyw Luw) to the current goal.
We will prove u * z + y * z + v * w v * z + y * w + u * w.
rewrite the current goal using add_SNo_com (y * w) (u * w) Lyw Luw (from left to right).
We will prove u * z + y * z + v * w v * z + u * w + y * w.
rewrite the current goal using IHxz u (SNoR_SNoS x Hx u Hu) w (SNoL_SNoS z Hz w Hw) (from right to left).
We will prove u * z + y * z + v * w v * z + (u + y) * w.
rewrite the current goal using add_SNo_assoc (u * z) (y * z) (v * w) Luz Lyz Lvw (from left to right).
We will prove (u * z + y * z) + v * w v * z + (u + y) * w.
rewrite the current goal using IHx u (SNoR_SNoS x Hx u Hu) (from right to left).
We will prove (u + y) * z + v * w v * z + (u + y) * w.
Apply mul_SNo_Le v z (u + y) w Hv1 Hz Luy Hw1 to the current goal.
We will prove u + y v.
An exact proof term for the current goal is Hvu.
We will prove w z.
Apply SNoLtLe to the current goal.
We will prove w < z.
An exact proof term for the current goal is Hw3.
Assume H1.
Apply H1 to the current goal.
Let u be given.
Assume H1.
Apply H1 to the current goal.
Assume Hu: u SNoR y.
Assume Hvu: x + u v.
Apply SNoR_E y Hy u Hu to the current goal.
Assume Hu1 Hu2 Hu3.
We prove the intermediate claim Luw: SNo (u * w).
An exact proof term for the current goal is SNo_mul_SNo u w Hu1 Hw1.
We prove the intermediate claim Luz: SNo (u * z).
An exact proof term for the current goal is SNo_mul_SNo u z Hu1 Hz.
We prove the intermediate claim Lxu: SNo (x + u).
An exact proof term for the current goal is SNo_add_SNo x u Hx Hu1.
Apply add_SNo_Lt1_cancel (x * z + y * z + v * w) (u * w) (v * z + x * w + y * w) Lxzyzvw Luw Lvzxwyw to the current goal.
We will prove (x * z + y * z + v * w) + u * w < (v * z + x * w + y * w) + u * w.
rewrite the current goal using add_SNo_assoc_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw (from right to left).
rewrite the current goal using add_SNo_assoc_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw (from right to left).
We will prove x * z + y * z + v * w + u * w < v * z + x * w + y * w + u * w.
Apply SNoLtLe_tra (x * z + y * z + v * w + u * w) (x * z + u * z + v * w + y * w) (v * z + x * w + y * w + u * w) (SNo_add_SNo_4 (x * z) (y * z) (v * w) (u * w) Lxz Lyz Lvw Luw) (SNo_add_SNo_4 (x * z) (u * z) (v * w) (y * w) Lxz Luz Lvw Lyw) (SNo_add_SNo_4 (v * z) (x * w) (y * w) (u * w) Lvz Lxw Lyw Luw) to the current goal.
We will prove x * z + y * z + v * w + u * w < x * z + u * z + v * w + y * w.
Apply add_SNo_Lt2 (x * z) (y * z + v * w + u * w) (u * z + v * w + y * w) Lxz (SNo_add_SNo_3 (y * z) (v * w) (u * w) Lyz Lvw Luw) (SNo_add_SNo_3 (u * z) (v * w) (y * w) Luz Lvw Lyw) to the current goal.
We will prove y * z + v * w + u * w < u * z + v * w + y * w.
rewrite the current goal using add_SNo_com_3_0_1 (u * z) (v * w) (y * w) Luz Lvw Lyw (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (y * z) (v * w) (u * w) Lyz Lvw Luw (from left to right).
We will prove v * w + y * z + u * w < v * w + u * z + y * w.
Apply add_SNo_Lt2 (v * w) (y * z + u * w) (u * z + y * w) Lvw (SNo_add_SNo (y * z) (u * w) Lyz Luw) (SNo_add_SNo (u * z) (y * w) Luz Lyw) to the current goal.
We will prove y * z + u * w < u * z + y * w.
An exact proof term for the current goal is mul_SNo_Lt u z y w Hu1 Hz Hy Hw1 Hu3 Hw3.
We will prove x * z + u * z + v * w + y * w v * z + x * w + y * w + u * w.
rewrite the current goal using add_SNo_com (y * w) (u * w) Lyw Luw (from left to right).
We will prove x * z + u * z + v * w + y * w v * z + x * w + u * w + y * w.
rewrite the current goal using add_SNo_rotate_4_1 (v * z) (x * w) (u * w) (y * w) Lvz Lxw Luw Lyw (from left to right).
We will prove x * z + u * z + v * w + y * w y * w + v * z + x * w + u * w.
rewrite the current goal using add_SNo_rotate_4_1 (x * z) (u * z) (v * w) (y * w) Lxz Luz Lvw Lyw (from left to right).
We will prove y * w + x * z + u * z + v * w y * w + v * z + x * w + u * w.
Apply add_SNo_Le2 (y * w) (x * z + u * z + v * w) (v * z + x * w + u * w) Lyw (SNo_add_SNo_3 (x * z) (u * z) (v * w) Lxz Luz Lvw) (SNo_add_SNo_3 (v * z) (x * w) (u * w) Lvz Lxw Luw) to the current goal.
We will prove x * z + u * z + v * w v * z + x * w + u * w.
rewrite the current goal using IHyz u (SNoR_SNoS y Hy u Hu) w (SNoL_SNoS z Hz w Hw) (from right to left).
We will prove x * z + u * z + v * w v * z + (x + u) * w.
rewrite the current goal using add_SNo_assoc (x * z) (u * z) (v * w) Lxz Luz Lvw (from left to right).
We will prove (x * z + u * z) + v * w v * z + (x + u) * w.
rewrite the current goal using IHy u (SNoR_SNoS y Hy u Hu) (from right to left).
We will prove (x + u) * z + v * w v * z + (x + u) * w.
Apply mul_SNo_Le v z (x + u) w Hv1 Hz Lxu Hw1 to the current goal.
We will prove x + u v.
An exact proof term for the current goal is Hvu.
We will prove w z.
Apply SNoLtLe to the current goal.
We will prove w < z.
An exact proof term for the current goal is Hw3.
Let u' be given.
Assume Hu': u' L1 L2.
rewrite the current goal using HE (from right to left).
We will prove u' < (x + y) * z.
Apply binunionE L1 L2 u' Hu' to the current goal.
Assume Hu': u' L1.
Apply ReplE_impred (SNoL (x * z)) (λw ⇒ w + y * z) u' Hu' to the current goal.
Let u be given.
Assume Hu: u SNoL (x * z).
Assume Hu'u: u' = u + y * z.
rewrite the current goal using Hu'u (from left to right).
We will prove u + y * z < (x + y) * z.
Apply SNoL_E (x * z) Lxz u Hu to the current goal.
Assume Hu1 Hu2 Hu3.
Apply mul_SNo_SNoL_interpolate_impred x z Hx Hz u Hu to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Let w be given.
Assume Hw: w SNoL z.
Assume Hvw: u + v * w v * z + x * w.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoL_E z Hz w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lvy: SNo (v + y).
An exact proof term for the current goal is SNo_add_SNo v y Hv1 Hy.
We prove the intermediate claim Luvw: SNo (u + v * w).
An exact proof term for the current goal is SNo_add_SNo u (v * w) Hu1 Lvw.
We prove the intermediate claim Lxyw: SNo ((x + y) * w).
An exact proof term for the current goal is SNo_mul_SNo (x + y) w Lxy Hw1.
We prove the intermediate claim Lvz: SNo (v * z).
An exact proof term for the current goal is SNo_mul_SNo v z Hv1 Hz.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
We prove the intermediate claim Lyw: SNo (y * w).
An exact proof term for the current goal is SNo_mul_SNo y w Hy Hw1.
We prove the intermediate claim Luyz: SNo (u + y * z).
An exact proof term for the current goal is SNo_add_SNo u (y * z) Hu1 Lyz.
We prove the intermediate claim Lvwyw: SNo (v * w + y * w).
An exact proof term for the current goal is SNo_add_SNo (v * w) (y * w) Lvw Lyw.
We prove the intermediate claim Lvzxw: SNo (v * z + x * w).
An exact proof term for the current goal is SNo_add_SNo (v * z) (x * w) Lvz Lxw.
We will prove u + y * z < (x + y) * z.
Apply add_SNo_Lt1_cancel (u + y * z) (v * w + y * w) ((x + y) * z) Luyz Lvwyw Lxyz to the current goal.
We will prove (u + y * z) + v * w + y * w < (x + y) * z + v * w + y * w.
rewrite the current goal using add_SNo_com_4_inner_mid u (y * z) (v * w) (y * w) Hu1 Lyz Lvw Lyw (from left to right).
We will prove (u + v * w) + y * z + y * w < (x + y) * z + v * w + y * w.
Apply SNoLeLt_tra ((u + v * w) + y * z + y * w) (v * z + y * z + x * w + y * w) ((x + y) * z + v * w + y * w) (SNo_add_SNo_3 (u + v * w) (y * z) (y * w) Luvw Lyz Lyw) (SNo_add_SNo_4 (v * z) (y * z) (x * w) (y * w) Lvz Lyz Lxw Lyw) (SNo_add_SNo_3 ((x + y) * z) (v * w) (y * w) Lxyz Lvw Lyw) to the current goal.
We will prove (u + v * w) + y * z + y * w v * z + y * z + x * w + y * w.
rewrite the current goal using add_SNo_assoc (v * z) (y * z) (x * w + y * w) Lvz Lyz (SNo_add_SNo (x * w) (y * w) Lxw Lyw) (from left to right).
We will prove (u + v * w) + y * z + y * w (v * z + y * z) + x * w + y * w.
rewrite the current goal using add_SNo_com_4_inner_mid (v * z) (y * z) (x * w) (y * w) Lvz Lyz Lxw Lyw (from left to right).
We will prove (u + v * w) + y * z + y * w (v * z + x * w) + y * z + y * w.
Apply add_SNo_Le1 (u + v * w) (y * z + y * w) (v * z + x * w) Luvw (SNo_add_SNo (y * z) (y * w) Lyz Lyw) (SNo_add_SNo (v * z) (x * w) Lvz Lxw) to the current goal.
We will prove u + v * w v * z + x * w.
An exact proof term for the current goal is Hvw.
We will prove v * z + y * z + x * w + y * w < (x + y) * z + v * w + y * w.
rewrite the current goal using IHz w (SNoL_SNoS z Hz w Hw) (from right to left).
We will prove v * z + y * z + (x + y) * w < (x + y) * z + v * w + y * w.
rewrite the current goal using IHxz v (SNoL_SNoS x Hx v Hv) w (SNoL_SNoS z Hz w Hw) (from right to left).
We will prove v * z + y * z + (x + y) * w < (x + y) * z + (v + y) * w.
rewrite the current goal using add_SNo_assoc (v * z) (y * z) ((x + y) * w) Lvz Lyz Lxyw (from left to right).
rewrite the current goal using IHx v (SNoL_SNoS x Hx v Hv) (from right to left).
We will prove (v + y) * z + (x + y) * w < (x + y) * z + (v + y) * w.
Apply mul_SNo_Lt (x + y) z (v + y) w Lxy Hz Lvy Hw1 to the current goal.
We will prove v + y < x + y.
Apply add_SNo_Lt1 v y x Hv1 Hy Hx to the current goal.
An exact proof term for the current goal is Hv3.
We will prove w < z.
An exact proof term for the current goal is Hw3.
Let v be given.
Assume Hv: v SNoR x.
Let w be given.
Assume Hw: w SNoR z.
Assume Hvw: u + v * w v * z + x * w.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoR_E z Hz w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lvy: SNo (v + y).
An exact proof term for the current goal is SNo_add_SNo v y Hv1 Hy.
We prove the intermediate claim Luvw: SNo (u + v * w).
An exact proof term for the current goal is SNo_add_SNo u (v * w) Hu1 Lvw.
We prove the intermediate claim Lxyw: SNo ((x + y) * w).
An exact proof term for the current goal is SNo_mul_SNo (x + y) w Lxy Hw1.
We prove the intermediate claim Lvz: SNo (v * z).
An exact proof term for the current goal is SNo_mul_SNo v z Hv1 Hz.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
We prove the intermediate claim Lyw: SNo (y * w).
An exact proof term for the current goal is SNo_mul_SNo y w Hy Hw1.
We prove the intermediate claim Luyz: SNo (u + y * z).
An exact proof term for the current goal is SNo_add_SNo u (y * z) Hu1 Lyz.
We prove the intermediate claim Lvwyw: SNo (v * w + y * w).
An exact proof term for the current goal is SNo_add_SNo (v * w) (y * w) Lvw Lyw.
We will prove u + y * z < (x + y) * z.
Apply add_SNo_Lt1_cancel (u + y * z) (v * w + y * w) ((x + y) * z) Luyz Lvwyw Lxyz to the current goal.
We will prove (u + y * z) + v * w + y * w < (x + y) * z + v * w + y * w.
rewrite the current goal using add_SNo_com_4_inner_mid u (y * z) (v * w) (y * w) Hu1 Lyz Lvw Lyw (from left to right).
We will prove (u + v * w) + y * z + y * w < (x + y) * z + v * w + y * w.
Apply SNoLeLt_tra ((u + v * w) + y * z + y * w) (v * z + y * z + x * w + y * w) ((x + y) * z + v * w + y * w) (SNo_add_SNo_3 (u + v * w) (y * z) (y * w) Luvw Lyz Lyw) (SNo_add_SNo_4 (v * z) (y * z) (x * w) (y * w) Lvz Lyz Lxw Lyw) (SNo_add_SNo_3 ((x + y) * z) (v * w) (y * w) Lxyz Lvw Lyw) to the current goal.
We will prove (u + v * w) + y * z + y * w v * z + y * z + x * w + y * w.
rewrite the current goal using add_SNo_assoc (v * z) (y * z) (x * w + y * w) Lvz Lyz (SNo_add_SNo (x * w) (y * w) Lxw Lyw) (from left to right).
We will prove (u + v * w) + y * z + y * w (v * z + y * z) + x * w + y * w.
rewrite the current goal using add_SNo_com_4_inner_mid (v * z) (y * z) (x * w) (y * w) Lvz Lyz Lxw Lyw (from left to right).
We will prove (u + v * w) + y * z + y * w (v * z + x * w) + y * z + y * w.
Apply add_SNo_Le1 (u + v * w) (y * z + y * w) (v * z + x * w) Luvw (SNo_add_SNo (y * z) (y * w) Lyz Lyw) (SNo_add_SNo (v * z) (x * w) Lvz Lxw) to the current goal.
We will prove u + v * w v * z + x * w.
An exact proof term for the current goal is Hvw.
We will prove v * z + y * z + x * w + y * w < (x + y) * z + v * w + y * w.
rewrite the current goal using IHz w (SNoR_SNoS z Hz w Hw) (from right to left).
We will prove v * z + y * z + (x + y) * w < (x + y) * z + v * w + y * w.
rewrite the current goal using IHxz v (SNoR_SNoS x Hx v Hv) w (SNoR_SNoS z Hz w Hw) (from right to left).
We will prove v * z + y * z + (x + y) * w < (x + y) * z + (v + y) * w.
rewrite the current goal using add_SNo_assoc (v * z) (y * z) ((x + y) * w) Lvz Lyz Lxyw (from left to right).
rewrite the current goal using IHx v (SNoR_SNoS x Hx v Hv) (from right to left).
We will prove (v + y) * z + (x + y) * w < (x + y) * z + (v + y) * w.
rewrite the current goal using add_SNo_com ((v + y) * z) ((x + y) * w) (SNo_mul_SNo (v + y) z Lvy Hz) Lxyw (from left to right).
rewrite the current goal using add_SNo_com ((x + y) * z) ((v + y) * w) Lxyz (SNo_mul_SNo (v + y) w Lvy Hw1) (from left to right).
Apply mul_SNo_Lt (v + y) w (x + y) z Lvy Hw1 Lxy Hz to the current goal.
We will prove x + y < v + y.
Apply add_SNo_Lt1 x y v Hx Hy Hv1 to the current goal.
An exact proof term for the current goal is Hv3.
We will prove z < w.
An exact proof term for the current goal is Hw3.
Assume Hu': u' L2.
Apply ReplE_impred (SNoL (y * z)) (λw ⇒ x * z + w) u' Hu' to the current goal.
Let u be given.
Assume Hu: u SNoL (y * z).
Assume Hu'u: u' = x * z + u.
rewrite the current goal using Hu'u (from left to right).
We will prove x * z + u < (x + y) * z.
Apply SNoL_E (y * z) Lyz u Hu to the current goal.
Assume Hu1 Hu2 Hu3.
rewrite the current goal using add_SNo_com (x * z) u Lxz Hu1 (from left to right).
We will prove u + x * z < (x + y) * z.
Apply mul_SNo_SNoL_interpolate_impred y z Hy Hz u Hu to the current goal.
Let v be given.
Assume Hv: v SNoL y.
Let w be given.
Assume Hw: w SNoL z.
Assume Hvw: u + v * w v * z + y * w.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoL_E z Hz w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lxv: SNo (x + v).
An exact proof term for the current goal is SNo_add_SNo x v Hx Hv1.
We prove the intermediate claim Luvw: SNo (u + v * w).
An exact proof term for the current goal is SNo_add_SNo u (v * w) Hu1 Lvw.
We prove the intermediate claim Lxyw: SNo ((x + y) * w).
An exact proof term for the current goal is SNo_mul_SNo (x + y) w Lxy Hw1.
We prove the intermediate claim Lvz: SNo (v * z).
An exact proof term for the current goal is SNo_mul_SNo v z Hv1 Hz.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
We prove the intermediate claim Lyw: SNo (y * w).
An exact proof term for the current goal is SNo_mul_SNo y w Hy Hw1.
We prove the intermediate claim Luxz: SNo (u + x * z).
An exact proof term for the current goal is SNo_add_SNo u (x * z) Hu1 Lxz.
We prove the intermediate claim Lvwxw: SNo (v * w + x * w).
An exact proof term for the current goal is SNo_add_SNo (v * w) (x * w) Lvw Lxw.
We will prove u + x * z < (x + y) * z.
Apply add_SNo_Lt1_cancel (u + x * z) (v * w + x * w) ((x + y) * z) Luxz Lvwxw Lxyz to the current goal.
We will prove (u + x * z) + v * w + x * w < (x + y) * z + v * w + x * w.
rewrite the current goal using add_SNo_com_4_inner_mid u (x * z) (v * w) (x * w) Hu1 Lxz Lvw Lxw (from left to right).
We will prove (u + v * w) + x * z + x * w < (x + y) * z + v * w + x * w.
Apply SNoLeLt_tra ((u + v * w) + x * z + x * w) (v * z + x * z + x * w + y * w) ((x + y) * z + v * w + x * w) (SNo_add_SNo_3 (u + v * w) (x * z) (x * w) Luvw Lxz Lxw) (SNo_add_SNo_4 (v * z) (x * z) (x * w) (y * w) Lvz Lxz Lxw Lyw) (SNo_add_SNo_3 ((x + y) * z) (v * w) (x * w) Lxyz Lvw Lxw) to the current goal.
We will prove (u + v * w) + x * z + x * w v * z + x * z + x * w + y * w.
rewrite the current goal using add_SNo_assoc (v * z) (x * z) (x * w + y * w) Lvz Lxz (SNo_add_SNo (x * w) (y * w) Lxw Lyw) (from left to right).
We will prove (u + v * w) + x * z + x * w (v * z + x * z) + x * w + y * w.
rewrite the current goal using add_SNo_com (x * w) (y * w) Lxw Lyw (from left to right).
We will prove (u + v * w) + x * z + x * w (v * z + x * z) + y * w + x * w.
rewrite the current goal using add_SNo_com_4_inner_mid (v * z) (x * z) (y * w) (x * w) Lvz Lxz Lyw Lxw (from left to right).
We will prove (u + v * w) + x * z + x * w (v * z + y * w) + x * z + x * w.
Apply add_SNo_Le1 (u + v * w) (x * z + x * w) (v * z + y * w) Luvw (SNo_add_SNo (x * z) (x * w) Lxz Lxw) (SNo_add_SNo (v * z) (y * w) Lvz Lyw) to the current goal.
We will prove u + v * w v * z + y * w.
An exact proof term for the current goal is Hvw.
We will prove v * z + x * z + x * w + y * w < (x + y) * z + v * w + x * w.
rewrite the current goal using IHz w (SNoL_SNoS z Hz w Hw) (from right to left).
We will prove v * z + x * z + (x + y) * w < (x + y) * z + v * w + x * w.
rewrite the current goal using add_SNo_com (v * w) (x * w) Lvw Lxw (from left to right).
rewrite the current goal using IHyz v (SNoL_SNoS y Hy v Hv) w (SNoL_SNoS z Hz w Hw) (from right to left).
We will prove v * z + x * z + (x + y) * w < (x + y) * z + (x + v) * w.
rewrite the current goal using add_SNo_assoc (v * z) (x * z) ((x + y) * w) Lvz Lxz Lxyw (from left to right).
We will prove (v * z + x * z) + (x + y) * w < (x + y) * z + (x + v) * w.
rewrite the current goal using add_SNo_com (v * z) (x * z) Lvz Lxz (from left to right).
We will prove (x * z + v * z) + (x + y) * w < (x + y) * z + (x + v) * w.
rewrite the current goal using IHy v (SNoL_SNoS y Hy v Hv) (from right to left).
We will prove (x + v) * z + (x + y) * w < (x + y) * z + (x + v) * w.
Apply mul_SNo_Lt (x + y) z (x + v) w Lxy Hz Lxv Hw1 to the current goal.
We will prove x + v < x + y.
Apply add_SNo_Lt2 x v y Hx Hv1 Hy to the current goal.
An exact proof term for the current goal is Hv3.
We will prove w < z.
An exact proof term for the current goal is Hw3.
Let v be given.
Assume Hv: v SNoR y.
Let w be given.
Assume Hw: w SNoR z.
Assume Hvw: u + v * w v * z + y * w.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoR_E z Hz w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lxv: SNo (x + v).
An exact proof term for the current goal is SNo_add_SNo x v Hx Hv1.
We prove the intermediate claim Luvw: SNo (u + v * w).
An exact proof term for the current goal is SNo_add_SNo u (v * w) Hu1 Lvw.
We prove the intermediate claim Lxyw: SNo ((x + y) * w).
An exact proof term for the current goal is SNo_mul_SNo (x + y) w Lxy Hw1.
We prove the intermediate claim Lvz: SNo (v * z).
An exact proof term for the current goal is SNo_mul_SNo v z Hv1 Hz.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
We prove the intermediate claim Lyw: SNo (y * w).
An exact proof term for the current goal is SNo_mul_SNo y w Hy Hw1.
We prove the intermediate claim Luxz: SNo (u + x * z).
An exact proof term for the current goal is SNo_add_SNo u (x * z) Hu1 Lxz.
We prove the intermediate claim Lvwxw: SNo (v * w + x * w).
An exact proof term for the current goal is SNo_add_SNo (v * w) (x * w) Lvw Lxw.
We prove the intermediate claim Lvzxw: SNo (v * z + x * w).
An exact proof term for the current goal is SNo_add_SNo (v * z) (x * w) Lvz Lxw.
We will prove u + x * z < (x + y) * z.
Apply add_SNo_Lt1_cancel (u + x * z) (v * w + x * w) ((x + y) * z) Luxz Lvwxw Lxyz to the current goal.
We will prove (u + x * z) + v * w + x * w < (x + y) * z + v * w + x * w.
rewrite the current goal using add_SNo_com_4_inner_mid u (x * z) (v * w) (x * w) Hu1 Lxz Lvw Lxw (from left to right).
We will prove (u + v * w) + x * z + x * w < (x + y) * z + v * w + x * w.
Apply SNoLeLt_tra ((u + v * w) + x * z + x * w) (v * z + x * z + x * w + y * w) ((x + y) * z + v * w + x * w) (SNo_add_SNo_3 (u + v * w) (x * z) (x * w) Luvw Lxz Lxw) (SNo_add_SNo_4 (v * z) (x * z) (x * w) (y * w) Lvz Lxz Lxw Lyw) (SNo_add_SNo_3 ((x + y) * z) (v * w) (x * w) Lxyz Lvw Lxw) to the current goal.
We will prove (u + v * w) + x * z + x * w v * z + x * z + x * w + y * w.
rewrite the current goal using add_SNo_assoc (v * z) (x * z) (x * w + y * w) Lvz Lxz (SNo_add_SNo (x * w) (y * w) Lxw Lyw) (from left to right).
rewrite the current goal using add_SNo_com (y * w) (x * w) Lyw Lxw (from right to left).
We will prove (u + v * w) + x * z + x * w (v * z + x * z) + y * w + x * w.
rewrite the current goal using add_SNo_com_4_inner_mid (v * z) (x * z) (y * w) (x * w) Lvz Lxz Lyw Lxw (from left to right).
We will prove (u + v * w) + x * z + x * w (v * z + y * w) + x * z + x * w.
Apply add_SNo_Le1 (u + v * w) (x * z + x * w) (v * z + y * w) Luvw (SNo_add_SNo (x * z) (x * w) Lxz Lxw) (SNo_add_SNo (v * z) (y * w) Lvz Lyw) to the current goal.
We will prove u + v * w v * z + y * w.
An exact proof term for the current goal is Hvw.
We will prove v * z + x * z + x * w + y * w < (x + y) * z + v * w + x * w.
rewrite the current goal using IHz w (SNoR_SNoS z Hz w Hw) (from right to left).
We will prove v * z + x * z + (x + y) * w < (x + y) * z + v * w + x * w.
rewrite the current goal using add_SNo_com (v * w) (x * w) Lvw Lxw (from left to right).
We will prove v * z + x * z + (x + y) * w < (x + y) * z + x * w + v * w.
rewrite the current goal using IHyz v (SNoR_SNoS y Hy v Hv) w (SNoR_SNoS z Hz w Hw) (from right to left).
We will prove v * z + x * z + (x + y) * w < (x + y) * z + (x + v) * w.
rewrite the current goal using add_SNo_assoc (v * z) (x * z) ((x + y) * w) Lvz Lxz Lxyw (from left to right).
We will prove (v * z + x * z) + (x + y) * w < (x + y) * z + (x + v) * w.
rewrite the current goal using add_SNo_com (v * z) (x * z) Lvz Lxz (from left to right).
rewrite the current goal using IHy v (SNoR_SNoS y Hy v Hv) (from right to left).
We will prove (x + v) * z + (x + y) * w < (x + y) * z + (x + v) * w.
rewrite the current goal using add_SNo_com ((x + v) * z) ((x + y) * w) (SNo_mul_SNo (x + v) z Lxv Hz) Lxyw (from left to right).
rewrite the current goal using add_SNo_com ((x + y) * z) ((x + v) * w) Lxyz (SNo_mul_SNo (x + v) w Lxv Hw1) (from left to right).
We will prove (x + y) * w + (x + v) * z < (x + v) * w + (x + y) * z.
Apply mul_SNo_Lt (x + v) w (x + y) z Lxv Hw1 Lxy Hz to the current goal.
We will prove x + y < x + v.
Apply add_SNo_Lt2 x y v Hx Hy Hv1 to the current goal.
An exact proof term for the current goal is Hv3.
We will prove z < w.
An exact proof term for the current goal is Hw3.
Let u' be given.
Assume Hu': u' R1 R2.
rewrite the current goal using HE (from right to left).
We will prove (x + y) * z < u'.
Apply binunionE R1 R2 u' Hu' to the current goal.
Assume Hu': u' R1.
Apply ReplE_impred (SNoR (x * z)) (λw ⇒ w + y * z) u' Hu' to the current goal.
Let u be given.
Assume Hu: u SNoR (x * z).
Assume Hu'u: u' = u + y * z.
rewrite the current goal using Hu'u (from left to right).
We will prove (x + y) * z < u + y * z.
Apply SNoR_E (x * z) Lxz u Hu to the current goal.
Assume Hu1 Hu2 Hu3.
Apply mul_SNo_SNoR_interpolate_impred x z Hx Hz u Hu to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Let w be given.
Assume Hw: w SNoR z.
Assume Hvw: v * z + x * w u + v * w.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoR_E z Hz w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lvy: SNo (v + y).
An exact proof term for the current goal is SNo_add_SNo v y Hv1 Hy.
We prove the intermediate claim Luvw: SNo (u + v * w).
An exact proof term for the current goal is SNo_add_SNo u (v * w) Hu1 Lvw.
We prove the intermediate claim Lxyw: SNo ((x + y) * w).
An exact proof term for the current goal is SNo_mul_SNo (x + y) w Lxy Hw1.
We prove the intermediate claim Lvz: SNo (v * z).
An exact proof term for the current goal is SNo_mul_SNo v z Hv1 Hz.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
We prove the intermediate claim Lyw: SNo (y * w).
An exact proof term for the current goal is SNo_mul_SNo y w Hy Hw1.
We prove the intermediate claim Luyz: SNo (u + y * z).
An exact proof term for the current goal is SNo_add_SNo u (y * z) Hu1 Lyz.
We prove the intermediate claim Lvwyw: SNo (v * w + y * w).
An exact proof term for the current goal is SNo_add_SNo (v * w) (y * w) Lvw Lyw.
We prove the intermediate claim Lvzxw: SNo (v * z + x * w).
An exact proof term for the current goal is SNo_add_SNo (v * z) (x * w) Lvz Lxw.
We will prove (x + y) * z < u + y * z.
Apply add_SNo_Lt1_cancel ((x + y) * z) (v * w + y * w) (u + y * z) Lxyz Lvwyw Luyz to the current goal.
We will prove (x + y) * z + v * w + y * w < (u + y * z) + v * w + y * w.
rewrite the current goal using add_SNo_com_4_inner_mid u (y * z) (v * w) (y * w) Hu1 Lyz Lvw Lyw (from left to right).
We will prove (x + y) * z + v * w + y * w < (u + v * w) + y * z + y * w.
Apply SNoLtLe_tra ((x + y) * z + v * w + y * w) (v * z + y * z + x * w + y * w) ((u + v * w) + y * z + y * w) (SNo_add_SNo_3 ((x + y) * z) (v * w) (y * w) Lxyz Lvw Lyw) (SNo_add_SNo_4 (v * z) (y * z) (x * w) (y * w) Lvz Lyz Lxw Lyw) (SNo_add_SNo_3 (u + v * w) (y * z) (y * w) Luvw Lyz Lyw) to the current goal.
We will prove (x + y) * z + v * w + y * w < v * z + y * z + x * w + y * w.
rewrite the current goal using IHz w (SNoR_SNoS z Hz w Hw) (from right to left).
We will prove (x + y) * z + v * w + y * w < v * z + y * z + (x + y) * w.
rewrite the current goal using IHxz v (SNoL_SNoS x Hx v Hv) w (SNoR_SNoS z Hz w Hw) (from right to left).
We will prove (x + y) * z + (v + y) * w < v * z + y * z + (x + y) * w.
rewrite the current goal using add_SNo_assoc (v * z) (y * z) ((x + y) * w) Lvz Lyz Lxyw (from left to right).
rewrite the current goal using IHx v (SNoL_SNoS x Hx v Hv) (from right to left).
We will prove (x + y) * z + (v + y) * w < (v + y) * z + (x + y) * w.
rewrite the current goal using add_SNo_com ((x + y) * z) ((v + y) * w) Lxyz (SNo_mul_SNo (v + y) w Lvy Hw1) (from left to right).
rewrite the current goal using add_SNo_com ((v + y) * z) ((x + y) * w) (SNo_mul_SNo (v + y) z Lvy Hz) Lxyw (from left to right).
We will prove (v + y) * w + (x + y) * z < (x + y) * w + (v + y) * z.
Apply mul_SNo_Lt (x + y) w (v + y) z Lxy Hw1 Lvy Hz to the current goal.
We will prove v + y < x + y.
Apply add_SNo_Lt1 v y x Hv1 Hy Hx to the current goal.
An exact proof term for the current goal is Hv3.
We will prove z < w.
An exact proof term for the current goal is Hw3.
We will prove v * z + y * z + x * w + y * w (u + v * w) + y * z + y * w.
rewrite the current goal using add_SNo_assoc (v * z) (y * z) (x * w + y * w) Lvz Lyz (SNo_add_SNo (x * w) (y * w) Lxw Lyw) (from left to right).
We will prove (v * z + y * z) + x * w + y * w (u + v * w) + y * z + y * w.
rewrite the current goal using add_SNo_com_4_inner_mid (v * z) (y * z) (x * w) (y * w) Lvz Lyz Lxw Lyw (from left to right).
We will prove (v * z + x * w) + y * z + y * w (u + v * w) + y * z + y * w.
Apply add_SNo_Le1 (v * z + x * w) (y * z + y * w) (u + v * w) (SNo_add_SNo (v * z) (x * w) Lvz Lxw) (SNo_add_SNo (y * z) (y * w) Lyz Lyw) Luvw to the current goal.
We will prove v * z + x * w u + v * w.
An exact proof term for the current goal is Hvw.
Let v be given.
Assume Hv: v SNoR x.
Let w be given.
Assume Hw: w SNoL z.
Assume Hvw: v * z + x * w u + v * w.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoL_E z Hz w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lvy: SNo (v + y).
An exact proof term for the current goal is SNo_add_SNo v y Hv1 Hy.
We prove the intermediate claim Luvw: SNo (u + v * w).
An exact proof term for the current goal is SNo_add_SNo u (v * w) Hu1 Lvw.
We prove the intermediate claim Lxyw: SNo ((x + y) * w).
An exact proof term for the current goal is SNo_mul_SNo (x + y) w Lxy Hw1.
We prove the intermediate claim Lvz: SNo (v * z).
An exact proof term for the current goal is SNo_mul_SNo v z Hv1 Hz.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
We prove the intermediate claim Lyw: SNo (y * w).
An exact proof term for the current goal is SNo_mul_SNo y w Hy Hw1.
We prove the intermediate claim Luyz: SNo (u + y * z).
An exact proof term for the current goal is SNo_add_SNo u (y * z) Hu1 Lyz.
We prove the intermediate claim Lvwyw: SNo (v * w + y * w).
An exact proof term for the current goal is SNo_add_SNo (v * w) (y * w) Lvw Lyw.
We will prove (x + y) * z < u + y * z.
Apply add_SNo_Lt1_cancel ((x + y) * z) (v * w + y * w) (u + y * z) Lxyz Lvwyw Luyz to the current goal.
We will prove (x + y) * z + v * w + y * w < (u + y * z) + v * w + y * w.
rewrite the current goal using add_SNo_com_4_inner_mid u (y * z) (v * w) (y * w) Hu1 Lyz Lvw Lyw (from left to right).
We will prove (x + y) * z + v * w + y * w < (u + v * w) + y * z + y * w.
Apply SNoLtLe_tra ((x + y) * z + v * w + y * w) (v * z + y * z + x * w + y * w) ((u + v * w) + y * z + y * w) (SNo_add_SNo_3 ((x + y) * z) (v * w) (y * w) Lxyz Lvw Lyw) (SNo_add_SNo_4 (v * z) (y * z) (x * w) (y * w) Lvz Lyz Lxw Lyw) (SNo_add_SNo_3 (u + v * w) (y * z) (y * w) Luvw Lyz Lyw) to the current goal.
We will prove (x + y) * z + v * w + y * w < v * z + y * z + x * w + y * w.
rewrite the current goal using IHz w (SNoL_SNoS z Hz w Hw) (from right to left).
We will prove (x + y) * z + v * w + y * w < v * z + y * z + (x + y) * w.
rewrite the current goal using IHxz v (SNoR_SNoS x Hx v Hv) w (SNoL_SNoS z Hz w Hw) (from right to left).
We will prove (x + y) * z + (v + y) * w < v * z + y * z + (x + y) * w.
rewrite the current goal using add_SNo_assoc (v * z) (y * z) ((x + y) * w) Lvz Lyz Lxyw (from left to right).
rewrite the current goal using IHx v (SNoR_SNoS x Hx v Hv) (from right to left).
We will prove (x + y) * z + (v + y) * w < (v + y) * z + (x + y) * w.
Apply mul_SNo_Lt (v + y) z (x + y) w Lvy Hz Lxy Hw1 to the current goal.
We will prove x + y < v + y.
Apply add_SNo_Lt1 x y v Hx Hy Hv1 to the current goal.
An exact proof term for the current goal is Hv3.
We will prove w < z.
An exact proof term for the current goal is Hw3.
We will prove v * z + y * z + x * w + y * w (u + v * w) + y * z + y * w.
rewrite the current goal using add_SNo_assoc (v * z) (y * z) (x * w + y * w) Lvz Lyz (SNo_add_SNo (x * w) (y * w) Lxw Lyw) (from left to right).
We will prove (v * z + y * z) + x * w + y * w (u + v * w) + y * z + y * w.
rewrite the current goal using add_SNo_com_4_inner_mid (v * z) (y * z) (x * w) (y * w) Lvz Lyz Lxw Lyw (from left to right).
We will prove (v * z + x * w) + y * z + y * w (u + v * w) + y * z + y * w.
Apply add_SNo_Le1 (v * z + x * w) (y * z + y * w) (u + v * w) (SNo_add_SNo (v * z) (x * w) Lvz Lxw) (SNo_add_SNo (y * z) (y * w) Lyz Lyw) Luvw to the current goal.
We will prove v * z + x * w u + v * w.
An exact proof term for the current goal is Hvw.
Assume Hu': u' R2.
Apply ReplE_impred (SNoR (y * z)) (λw ⇒ x * z + w) u' Hu' to the current goal.
Let u be given.
Assume Hu: u SNoR (y * z).
Assume Hu'u: u' = x * z + u.
rewrite the current goal using Hu'u (from left to right).
We will prove (x + y) * z < x * z + u.
Apply SNoR_E (y * z) Lyz u Hu to the current goal.
Assume Hu1 Hu2 Hu3.
rewrite the current goal using add_SNo_com (x * z) u Lxz Hu1 (from left to right).
We will prove (x + y) * z < u + x * z.
Apply mul_SNo_SNoR_interpolate_impred y z Hy Hz u Hu to the current goal.
Let v be given.
Assume Hv: v SNoL y.
Let w be given.
Assume Hw: w SNoR z.
Assume Hvw: v * z + y * w u + v * w.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoR_E z Hz w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lxv: SNo (x + v).
An exact proof term for the current goal is SNo_add_SNo x v Hx Hv1.
We prove the intermediate claim Luvw: SNo (u + v * w).
An exact proof term for the current goal is SNo_add_SNo u (v * w) Hu1 Lvw.
We prove the intermediate claim Lxyw: SNo ((x + y) * w).
An exact proof term for the current goal is SNo_mul_SNo (x + y) w Lxy Hw1.
We prove the intermediate claim Lvz: SNo (v * z).
An exact proof term for the current goal is SNo_mul_SNo v z Hv1 Hz.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
We prove the intermediate claim Lyw: SNo (y * w).
An exact proof term for the current goal is SNo_mul_SNo y w Hy Hw1.
We prove the intermediate claim Luxz: SNo (u + x * z).
An exact proof term for the current goal is SNo_add_SNo u (x * z) Hu1 Lxz.
We prove the intermediate claim Lvwxw: SNo (v * w + x * w).
An exact proof term for the current goal is SNo_add_SNo (v * w) (x * w) Lvw Lxw.
We will prove (x + y) * z < u + x * z.
Apply add_SNo_Lt1_cancel ((x + y) * z) (v * w + x * w) (u + x * z) Lxyz Lvwxw Luxz to the current goal.
We will prove (x + y) * z + v * w + x * w < (u + x * z) + v * w + x * w.
rewrite the current goal using add_SNo_com_4_inner_mid u (x * z) (v * w) (x * w) Hu1 Lxz Lvw Lxw (from left to right).
We will prove (x + y) * z + v * w + x * w < (u + v * w) + x * z + x * w.
Apply SNoLtLe_tra ((x + y) * z + v * w + x * w) (v * z + x * z + x * w + y * w) ((u + v * w) + x * z + x * w) (SNo_add_SNo_3 ((x + y) * z) (v * w) (x * w) Lxyz Lvw Lxw) (SNo_add_SNo_4 (v * z) (x * z) (x * w) (y * w) Lvz Lxz Lxw Lyw) (SNo_add_SNo_3 (u + v * w) (x * z) (x * w) Luvw Lxz Lxw) to the current goal.
We will prove (x + y) * z + v * w + x * w < v * z + x * z + x * w + y * w.
rewrite the current goal using IHz w (SNoR_SNoS z Hz w Hw) (from right to left).
We will prove (x + y) * z + v * w + x * w < v * z + x * z + (x + y) * w.
rewrite the current goal using add_SNo_com (v * w) (x * w) Lvw Lxw (from left to right).
rewrite the current goal using IHyz v (SNoL_SNoS y Hy v Hv) w (SNoR_SNoS z Hz w Hw) (from right to left).
We will prove (x + y) * z + (x + v) * w < v * z + x * z + (x + y) * w.
rewrite the current goal using add_SNo_assoc (v * z) (x * z) ((x + y) * w) Lvz Lxz Lxyw (from left to right).
We will prove (x + y) * z + (x + v) * w < (v * z + x * z) + (x + y) * w.
rewrite the current goal using add_SNo_com (v * z) (x * z) Lvz Lxz (from left to right).
We will prove (x + y) * z + (x + v) * w < (x * z + v * z) + (x + y) * w.
rewrite the current goal using IHy v (SNoL_SNoS y Hy v Hv) (from right to left).
We will prove (x + y) * z + (x + v) * w < (x + v) * z + (x + y) * w.
rewrite the current goal using add_SNo_com ((x + y) * z) ((x + v) * w) Lxyz (SNo_mul_SNo (x + v) w Lxv Hw1) (from left to right).
rewrite the current goal using add_SNo_com ((x + v) * z) ((x + y) * w) (SNo_mul_SNo (x + v) z Lxv Hz) Lxyw (from left to right).
We will prove (x + v) * w + (x + y) * z < (x + y) * w + (x + v) * z.
Apply mul_SNo_Lt (x + y) w (x + v) z Lxy Hw1 Lxv Hz to the current goal.
We will prove x + v < x + y.
Apply add_SNo_Lt2 x v y Hx Hv1 Hy to the current goal.
An exact proof term for the current goal is Hv3.
We will prove z < w.
An exact proof term for the current goal is Hw3.
We will prove v * z + x * z + x * w + y * w (u + v * w) + x * z + x * w.
rewrite the current goal using add_SNo_assoc (v * z) (x * z) (x * w + y * w) Lvz Lxz (SNo_add_SNo (x * w) (y * w) Lxw Lyw) (from left to right).
We will prove (v * z + x * z) + x * w + y * w (u + v * w) + x * z + x * w.
rewrite the current goal using add_SNo_com (x * w) (y * w) Lxw Lyw (from left to right).
We will prove (v * z + x * z) + y * w + x * w (u + v * w) + x * z + x * w.
rewrite the current goal using add_SNo_com_4_inner_mid (v * z) (x * z) (y * w) (x * w) Lvz Lxz Lyw Lxw (from left to right).
We will prove (v * z + y * w) + x * z + x * w (u + v * w) + x * z + x * w.
Apply add_SNo_Le1 (v * z + y * w) (x * z + x * w) (u + v * w) (SNo_add_SNo (v * z) (y * w) Lvz Lyw) (SNo_add_SNo (x * z) (x * w) Lxz Lxw) Luvw to the current goal.
We will prove v * z + y * w u + v * w.
An exact proof term for the current goal is Hvw.
Let v be given.
Assume Hv: v SNoR y.
Let w be given.
Assume Hw: w SNoL z.
Assume Hvw: v * z + y * w u + v * w.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
Apply SNoL_E z Hz w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lxv: SNo (x + v).
An exact proof term for the current goal is SNo_add_SNo x v Hx Hv1.
We prove the intermediate claim Luvw: SNo (u + v * w).
An exact proof term for the current goal is SNo_add_SNo u (v * w) Hu1 Lvw.
We prove the intermediate claim Lxyw: SNo ((x + y) * w).
An exact proof term for the current goal is SNo_mul_SNo (x + y) w Lxy Hw1.
We prove the intermediate claim Lvz: SNo (v * z).
An exact proof term for the current goal is SNo_mul_SNo v z Hv1 Hz.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
We prove the intermediate claim Lyw: SNo (y * w).
An exact proof term for the current goal is SNo_mul_SNo y w Hy Hw1.
We prove the intermediate claim Luxz: SNo (u + x * z).
An exact proof term for the current goal is SNo_add_SNo u (x * z) Hu1 Lxz.
We prove the intermediate claim Lvwxw: SNo (v * w + x * w).
An exact proof term for the current goal is SNo_add_SNo (v * w) (x * w) Lvw Lxw.
We prove the intermediate claim Lvzxw: SNo (v * z + x * w).
An exact proof term for the current goal is SNo_add_SNo (v * z) (x * w) Lvz Lxw.
We will prove (x + y) * z < u + x * z.
Apply add_SNo_Lt1_cancel ((x + y) * z) (v * w + x * w) (u + x * z) Lxyz Lvwxw Luxz to the current goal.
We will prove (x + y) * z + v * w + x * w < (u + x * z) + v * w + x * w.
rewrite the current goal using add_SNo_com_4_inner_mid u (x * z) (v * w) (x * w) Hu1 Lxz Lvw Lxw (from left to right).
We will prove (x + y) * z + v * w + x * w < (u + v * w) + x * z + x * w.
Apply SNoLtLe_tra ((x + y) * z + v * w + x * w) (v * z + x * z + x * w + y * w) ((u + v * w) + x * z + x * w) (SNo_add_SNo_3 ((x + y) * z) (v * w) (x * w) Lxyz Lvw Lxw) (SNo_add_SNo_4 (v * z) (x * z) (x * w) (y * w) Lvz Lxz Lxw Lyw) (SNo_add_SNo_3 (u + v * w) (x * z) (x * w) Luvw Lxz Lxw) to the current goal.
We will prove (x + y) * z + v * w + x * w < v * z + x * z + x * w + y * w.
rewrite the current goal using IHz w (SNoL_SNoS z Hz w Hw) (from right to left).
We will prove (x + y) * z + v * w + x * w < v * z + x * z + (x + y) * w.
rewrite the current goal using add_SNo_com (v * w) (x * w) Lvw Lxw (from left to right).
We will prove (x + y) * z + x * w + v * w < v * z + x * z + (x + y) * w.
rewrite the current goal using IHyz v (SNoR_SNoS y Hy v Hv) w (SNoL_SNoS z Hz w Hw) (from right to left).
We will prove (x + y) * z + (x + v) * w < v * z + x * z + (x + y) * w.
rewrite the current goal using add_SNo_assoc (v * z) (x * z) ((x + y) * w) Lvz Lxz Lxyw (from left to right).
We will prove (x + y) * z + (x + v) * w < (v * z + x * z) + (x + y) * w.
rewrite the current goal using add_SNo_com (v * z) (x * z) Lvz Lxz (from left to right).
rewrite the current goal using IHy v (SNoR_SNoS y Hy v Hv) (from right to left).
We will prove (x + y) * z + (x + v) * w < (x + v) * z + (x + y) * w.
rewrite the current goal using add_SNo_com ((x + v) * z) ((x + y) * w) (SNo_mul_SNo (x + v) z Lxv Hz) Lxyw (from left to right).
rewrite the current goal using add_SNo_com ((x + y) * z) ((x + v) * w) Lxyz (SNo_mul_SNo (x + v) w Lxv Hw1) (from left to right).
We will prove (x + v) * w + (x + y) * z < (x + y) * w + (x + v) * z.
rewrite the current goal using add_SNo_com ((x + v) * w) ((x + y) * z) (SNo_mul_SNo (x + v) w Lxv Hw1) Lxyz (from left to right).
rewrite the current goal using add_SNo_com ((x + y) * w) ((x + v) * z) Lxyw (SNo_mul_SNo (x + v) z Lxv Hz) (from left to right).
We will prove (x + y) * z + (x + v) * w < (x + v) * z + (x + y) * w.
Apply mul_SNo_Lt (x + v) z (x + y) w Lxv Hz Lxy Hw1 to the current goal.
We will prove x + y < x + v.
Apply add_SNo_Lt2 x y v Hx Hy Hv1 to the current goal.
An exact proof term for the current goal is Hv3.
We will prove w < z.
An exact proof term for the current goal is Hw3.
We will prove v * z + x * z + x * w + y * w (u + v * w) + x * z + x * w.
rewrite the current goal using add_SNo_assoc (v * z) (x * z) (x * w + y * w) Lvz Lxz (SNo_add_SNo (x * w) (y * w) Lxw Lyw) (from left to right).
rewrite the current goal using add_SNo_com (y * w) (x * w) Lyw Lxw (from right to left).
We will prove (v * z + x * z) + y * w + x * w (u + v * w) + x * z + x * w.
rewrite the current goal using add_SNo_com_4_inner_mid (v * z) (x * z) (y * w) (x * w) Lvz Lxz Lyw Lxw (from left to right).
We will prove (v * z + y * w) + x * z + x * w (u + v * w) + x * z + x * w.
Apply add_SNo_Le1 (v * z + y * w) (x * z + x * w) (u + v * w) (SNo_add_SNo (v * z) (y * w) Lvz Lyw) (SNo_add_SNo (x * z) (x * w) Lxz Lxw) Luvw to the current goal.
We will prove v * z + y * w u + v * w.
An exact proof term for the current goal is Hvw.
Theorem. (mul_SNo_distrL) The following is provable:
∀x y z, SNo xSNo ySNo zx * (y + z) = x * y + x * z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
Use transitivity with ((y + z) * x), and (y * x + z * x).
An exact proof term for the current goal is mul_SNo_com x (y + z) Hx (SNo_add_SNo y z Hy Hz).
An exact proof term for the current goal is mul_SNo_distrR y z x Hy Hz Hx.
We will prove y * x + z * x = x * y + x * z.
Use f_equal.
An exact proof term for the current goal is mul_SNo_com y x Hy Hx.
An exact proof term for the current goal is mul_SNo_com z x Hz Hx.
Beginning of Section mul_SNo_assoc_lems
Variable M : setsetset
Hypothesis DL : ∀x y z, SNo xSNo ySNo zx * (y + z) = x * y + x * z
Hypothesis DR : ∀x y z, SNo xSNo ySNo z(x + y) * z = x * z + y * z
Hypothesis IL : ∀x y, SNo xSNo yuSNoL (x * y), ∀p : prop, (vSNoL x, wSNoL y, u + v * w v * y + x * wp)(vSNoR x, wSNoR y, u + v * w v * y + x * wp)p
Hypothesis IR : ∀x y, SNo xSNo yuSNoR (x * y), ∀p : prop, (vSNoL x, wSNoR y, v * y + x * w u + v * wp)(vSNoR x, wSNoL y, v * y + x * w u + v * wp)p
Hypothesis M_Lt : ∀x y u v, SNo xSNo ySNo uSNo vu < xv < yu * y + x * v < x * y + u * v
Hypothesis M_Le : ∀x y u v, SNo xSNo ySNo uSNo vu xv yu * y + x * v x * y + u * v
Theorem. (mul_SNo_assoc_lem1) The following is provable:
∀x y z, SNo xSNo ySNo z(uSNoS_ (SNoLev x), u * (y * z) = (u * y) * z)(vSNoS_ (SNoLev y), x * (v * z) = (x * v) * z)(wSNoS_ (SNoLev z), x * (y * w) = (x * y) * w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), u * (v * z) = (u * v) * z)(uSNoS_ (SNoLev x), wSNoS_ (SNoLev z), u * (y * w) = (u * y) * w)(vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), x * (v * w) = (x * v) * w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), u * (v * w) = (u * v) * w)∀L, (uL, ∀q : prop, (vSNoL x, wSNoL (y * z), u = v * (y * z) + x * w + - v * wq)(vSNoR x, wSNoR (y * z), u = v * (y * z) + x * w + - v * wq)q)uL, u < (x * y) * z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
Assume IHx IHy IHz IHxy IHxz IHyz IHxyz.
Let L be given.
Assume HLE.
Let u be given.
Assume Hu: u L.
We will prove u < (x * y) * z.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_M x y Hx Hy.
We prove the intermediate claim Lyz: SNo (y * z).
An exact proof term for the current goal is SNo_M y z Hy Hz.
We prove the intermediate claim Lxyz2: SNo ((x * y) * z).
An exact proof term for the current goal is SNo_M (x * y) z Lxy Hz.
We prove the intermediate claim L1: vSNoS_ (SNoLev x), ∀w, SNo ww1SNoS_ (SNoLev y), w2SNoS_ (SNoLev z), u = v * (y * z) + x * w + - v * wv * (w1 * z + y * w2) + x * (w + w1 * w2) x * (w1 * z + y * w2) + v * (w + w1 * w2)(v * y + x * w1) * z + (x * y + v * w1) * w2 < (x * y + v * w1) * z + (v * y + x * w1) * w2u < (x * y) * z.
Let v be given.
Assume Hv.
Let w be given.
Assume Hw.
Let w1 be given.
Assume Hw1.
Let w2 be given.
Assume Hw2.
Assume Hue H1 H2.
Apply SNoS_E2 (SNoLev x) (SNoLev_ordinal x Hx) v Hv to the current goal.
Assume Hv1 Hv2 Hv3 Hv4.
Apply SNoS_E2 (SNoLev y) (SNoLev_ordinal y Hy) w1 Hw1 to the current goal.
Assume Hw11 Hw12 Hw13 Hw14.
Apply SNoS_E2 (SNoLev z) (SNoLev_ordinal z Hz) w2 Hw2 to the current goal.
Assume Hw21 Hw22 Hw23 Hw24.
We prove the intermediate claim Lvyz: SNo (v * (y * z)).
An exact proof term for the current goal is SNo_M v (y * z) Hv3 Lyz.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_M x w Hx Hw.
We prove the intermediate claim Lxw1: SNo (x * w1).
An exact proof term for the current goal is SNo_M x w1 Hx Hw13.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_M v w Hv3 Hw.
We prove the intermediate claim Lvw1: SNo (v * w1).
An exact proof term for the current goal is SNo_M v w1 Hv3 Hw13.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_M v y Hv3 Hy.
We prove the intermediate claim Lw1z: SNo (w1 * z).
An exact proof term for the current goal is SNo_M w1 z Hw13 Hz.
We prove the intermediate claim Lyw2: SNo (y * w2).
An exact proof term for the current goal is SNo_M y w2 Hy Hw23.
We prove the intermediate claim Lvw1z: SNo (v * (w1 * z)).
An exact proof term for the current goal is SNo_M v (w1 * z) Hv3 Lw1z.
We prove the intermediate claim Lvyw2: SNo (v * (y * w2)).
An exact proof term for the current goal is SNo_M v (y * w2) Hv3 Lyw2.
We prove the intermediate claim Lw1w2: SNo (w1 * w2).
An exact proof term for the current goal is SNo_M w1 w2 Hw13 Hw23.
We prove the intermediate claim Lxw1w2: SNo (x * (w1 * w2)).
An exact proof term for the current goal is SNo_M x (w1 * w2) Hx Lw1w2.
We prove the intermediate claim Lxw1z: SNo (x * (w1 * z)).
An exact proof term for the current goal is SNo_M x (w1 * z) Hx Lw1z.
We prove the intermediate claim Lxyw2: SNo (x * (y * w2)).
An exact proof term for the current goal is SNo_M x (y * w2) Hx Lyw2.
We prove the intermediate claim Lvyzxw: SNo (v * (y * z) + x * w).
An exact proof term for the current goal is SNo_add_SNo (v * (y * z)) (x * w) Lvyz Lxw.
We prove the intermediate claim Lxyzvw: SNo ((x * y) * z + v * w).
An exact proof term for the current goal is SNo_add_SNo ((x * y) * z) (v * w) Lxyz2 Lvw.
We prove the intermediate claim Lvw1w2: SNo (v * (w1 * w2)).
An exact proof term for the current goal is SNo_M v (w1 * w2) Hv3 Lw1w2.
We prove the intermediate claim Lww1w2: SNo (w + w1 * w2).
An exact proof term for the current goal is SNo_add_SNo w (w1 * w2) Hw Lw1w2.
We prove the intermediate claim Lvww1w2: SNo (v * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M v (w + w1 * w2) Hv3 Lww1w2.
We prove the intermediate claim Lvw1zyw2: SNo (v * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M v (w1 * z + y * w2) Hv3 (SNo_add_SNo (w1 * z) (y * w2) Lw1z Lyw2).
We prove the intermediate claim Lvwvw1w2: SNo (v * w + v * (w1 * w2)).
An exact proof term for the current goal is SNo_add_SNo (v * w) (v * (w1 * w2)) Lvw Lvw1w2.
We prove the intermediate claim Lvyzxw1zxyw2vwvw1w2: SNo (v * (y * z) + x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2)).
An exact proof term for the current goal is SNo_add_SNo_4 (v * (y * z)) (x * (w1 * z)) (x * (y * w2)) (v * w + v * (w1 * w2)) Lvyz Lxw1z Lxyw2 Lvwvw1w2.
We prove the intermediate claim Lvw1zvyw2xw1w2: SNo (v * (w1 * z) + v * (y * w2) + x * (w1 * w2)).
An exact proof term for the current goal is SNo_add_SNo_3 (v * (w1 * z)) (v * (y * w2)) (x * (w1 * w2)) Lvw1z Lvyw2 Lxw1w2.
We will prove u < (x * y) * z.
rewrite the current goal using Hue (from left to right).
We will prove (v * (y * z)) + (x * w) + - (v * w) < (x * y) * z.
Apply add_SNo_minus_Lt1b3 (v * (y * z)) (x * w) (v * w) ((x * y) * z) Lvyz Lxw Lvw Lxyz2 to the current goal.
We will prove v * (y * z) + x * w < (x * y) * z + v * w.
Apply add_SNo_Lt1_cancel (v * (y * z) + x * w) (v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) ((x * y) * z + v * w) Lvyzxw Lvw1zvyw2xw1w2 Lxyzvw to the current goal.
We will prove (v * (y * z) + x * w) + v * (w1 * z) + v * (y * w2) + x * (w1 * w2) < ((x * y) * z + v * w) + v * (w1 * z) + v * (y * w2) + x * (w1 * w2).
Apply SNoLeLt_tra ((v * (y * z) + x * w) + v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) (v * (y * z) + x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2)) (((x * y) * z + v * w) + v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Lvyzxw.
An exact proof term for the current goal is Lvw1zvyw2xw1w2.
An exact proof term for the current goal is Lvyzxw1zxyw2vwvw1w2.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Lxyzvw.
An exact proof term for the current goal is Lvw1zvyw2xw1w2.
We will prove (v * (y * z) + x * w) + v * (w1 * z) + v * (y * w2) + x * (w1 * w2) v * (y * z) + x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2).
rewrite the current goal using add_SNo_assoc (v * (y * z)) (x * w) (v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) Lvyz Lxw Lvw1zvyw2xw1w2 (from right to left).
We will prove v * (y * z) + x * w + v * (w1 * z) + v * (y * w2) + x * (w1 * w2) v * (y * z) + x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2).
Apply add_SNo_Le2 (v * (y * z)) (x * w + v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) (x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2)) Lvyz (SNo_add_SNo (x * w) (v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) Lxw Lvw1zvyw2xw1w2) (SNo_add_SNo_4 (x * (w1 * z)) (x * (y * w2)) (v * w) (v * (w1 * w2)) Lxw1z Lxyw2 Lvw Lvw1w2) to the current goal.
We will prove x * w + v * (w1 * z) + v * (y * w2) + x * (w1 * w2) x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2).
rewrite the current goal using add_SNo_assoc (v * (w1 * z)) (v * (y * w2)) (x * (w1 * w2)) Lvw1z Lvyw2 Lxw1w2 (from left to right).
rewrite the current goal using DL v (w1 * z) (y * w2) Hv3 Lw1z Lyw2 (from right to left).
We will prove x * w + v * (w1 * z + y * w2) + x * (w1 * w2) x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2).
rewrite the current goal using add_SNo_com_3_0_1 (x * w) (v * (w1 * z + y * w2)) (x * (w1 * w2)) Lxw Lvw1zyw2 Lxw1w2 (from left to right).
We will prove v * (w1 * z + y * w2) + x * w + x * (w1 * w2) x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2).
rewrite the current goal using DL x w (w1 * w2) Hx Hw Lw1w2 (from right to left).
We will prove v * (w1 * z + y * w2) + x * (w + w1 * w2) x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2).
rewrite the current goal using DL v w (w1 * w2) Hv3 Hw Lw1w2 (from right to left).
We will prove v * (w1 * z + y * w2) + x * (w + w1 * w2) x * (w1 * z) + x * (y * w2) + v * (w + w1 * w2).
rewrite the current goal using add_SNo_assoc (x * (w1 * z)) (x * (y * w2)) (v * (w + w1 * w2)) Lxw1z Lxyw2 Lvww1w2 (from left to right).
rewrite the current goal using DL x (w1 * z) (y * w2) Hx Lw1z Lyw2 (from right to left).
We will prove v * (w1 * z + y * w2) + x * (w + w1 * w2) x * (w1 * z + y * w2) + v * (w + w1 * w2).
An exact proof term for the current goal is H1.
We will prove v * (y * z) + x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2) < ((x * y) * z + v * w) + v * (w1 * z) + v * (y * w2) + x * (w1 * w2).
rewrite the current goal using add_SNo_com ((x * y) * z) (v * w) Lxyz2 Lvw (from left to right).
rewrite the current goal using add_SNo_assoc (v * w) ((x * y) * z) (v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) Lvw Lxyz2 Lvw1zvyw2xw1w2 (from right to left).
We will prove v * (y * z) + x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2) < v * w + (x * y) * z + v * (w1 * z) + v * (y * w2) + x * (w1 * w2).
rewrite the current goal using add_SNo_rotate_5_2 (v * (y * z)) (x * (w1 * z)) (x * (y * w2)) (v * w) (v * (w1 * w2)) Lvyz Lxw1z Lxyw2 Lvw Lvw1w2 (from left to right).
We will prove v * w + v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2) < v * w + (x * y) * z + v * (w1 * z) + v * (y * w2) + x * (w1 * w2).
Apply add_SNo_Lt2 (v * w) (v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2)) ((x * y) * z + v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) Lvw (SNo_add_SNo_4 (v * (w1 * w2)) (v * (y * z)) (x * (w1 * z)) (x * (y * w2)) Lvw1w2 Lvyz Lxw1z Lxyw2) (SNo_add_SNo_4 ((x * y) * z) (v * (w1 * z)) (v * (y * w2)) (x * (w1 * w2)) Lxyz2 Lvw1z Lvyw2 Lxw1w2) to the current goal.
We will prove v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2) < (x * y) * z + v * (w1 * z) + v * (y * w2) + x * (w1 * w2).
rewrite the current goal using add_SNo_assoc ((x * y) * z) (v * (w1 * z)) (v * (y * w2) + x * (w1 * w2)) Lxyz2 Lvw1z (SNo_add_SNo (v * (y * w2)) (x * (w1 * w2)) Lvyw2 Lxw1w2) (from left to right).
We will prove v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2) < ((x * y) * z + v * (w1 * z)) + v * (y * w2) + x * (w1 * w2).
rewrite the current goal using IHxz v Hv w2 Hw2 (from left to right).
rewrite the current goal using IHyz w1 Hw1 w2 Hw2 (from left to right).
We will prove v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2) < ((x * y) * z + v * (w1 * z)) + (v * y) * w2 + (x * w1) * w2.
rewrite the current goal using DR (v * y) (x * w1) w2 Lvy Lxw1 Hw23 (from right to left).
We will prove v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2) < ((x * y) * z + v * (w1 * z)) + (v * y + x * w1) * w2.
rewrite the current goal using IHxy v Hv w1 Hw1 (from left to right).
rewrite the current goal using DR (x * y) (v * w1) z Lxy Lvw1 Hz (from right to left).
We will prove v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2) < (x * y + v * w1) * z + (v * y + x * w1) * w2.
rewrite the current goal using add_SNo_rotate_4_1 (v * (y * z)) (x * (w1 * z)) (x * (y * w2)) (v * (w1 * w2)) Lvyz Lxw1z Lxyw2 Lvw1w2 (from right to left).
We will prove v * (y * z) + x * (w1 * z) + x * (y * w2) + v * (w1 * w2) < (x * y + v * w1) * z + (v * y + x * w1) * w2.
rewrite the current goal using add_SNo_assoc (v * (y * z)) (x * (w1 * z)) (x * (y * w2) + v * (w1 * w2)) Lvyz Lxw1z (SNo_add_SNo (x * (y * w2)) (v * (w1 * w2)) Lxyw2 Lvw1w2) (from left to right).
We will prove (v * (y * z) + x * (w1 * z)) + x * (y * w2) + v * (w1 * w2) < (x * y + v * w1) * z + (v * y + x * w1) * w2.
rewrite the current goal using IHx v Hv (from left to right).
rewrite the current goal using IHy w1 Hw1 (from left to right).
rewrite the current goal using IHz w2 Hw2 (from left to right).
rewrite the current goal using IHxyz v Hv w1 Hw1 w2 Hw2 (from left to right).
We will prove ((v * y) * z + (x * w1) * z) + (x * y) * w2 + (v * w1) * w2 < (x * y + v * w1) * z + (v * y + x * w1) * w2.
rewrite the current goal using DR (v * y) (x * w1) z Lvy Lxw1 Hz (from right to left).
rewrite the current goal using DR (x * y) (v * w1) w2 Lxy Lvw1 Hw23 (from right to left).
We will prove (v * y + x * w1) * z + (x * y + v * w1) * w2 < (x * y + v * w1) * z + (v * y + x * w1) * w2.
An exact proof term for the current goal is H2.
Apply HLE u Hu to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Let w be given.
Assume Hw: w SNoL (y * z).
Assume Hue: u = v * (y * z) + x * w + - v * w.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
We prove the intermediate claim Lw: SNo w.
Apply SNoL_E (y * z) Lyz w Hw to the current goal.
Assume H _ _.
An exact proof term for the current goal is H.
Apply IL y z Hy Hz w Hw to the current goal.
Let w1 be given.
Assume Hw1: w1 SNoL y.
Let w2 be given.
Assume Hw2: w2 SNoL z.
Assume Hwl: w + w1 * w2 w1 * z + y * w2.
Apply SNoL_E y Hy w1 Hw1 to the current goal.
Assume Hw11 Hw12 Hw13.
Apply SNoL_E z Hz w2 Hw2 to the current goal.
Assume Hw21 Hw22 Hw23.
We prove the intermediate claim Lw1z: SNo (w1 * z).
An exact proof term for the current goal is SNo_M w1 z Hw11 Hz.
We prove the intermediate claim Lyw2: SNo (y * w2).
An exact proof term for the current goal is SNo_M y w2 Hy Hw21.
We prove the intermediate claim Lw1zyw2: SNo (w1 * z + y * w2).
An exact proof term for the current goal is SNo_add_SNo (w1 * z) (y * w2) Lw1z Lyw2.
We prove the intermediate claim Lw1w2: SNo (w1 * w2).
An exact proof term for the current goal is SNo_M w1 w2 Hw11 Hw21.
We prove the intermediate claim Lww1w2: SNo (w + w1 * w2).
An exact proof term for the current goal is SNo_add_SNo w (w1 * w2) Lw Lw1w2.
Apply L1 v (SNoL_SNoS x Hx v Hv) w Lw w1 (SNoL_SNoS y Hy w1 Hw1) w2 (SNoL_SNoS z Hz w2 Hw2) Hue to the current goal.
We will prove v * (w1 * z + y * w2) + x * (w + w1 * w2) x * (w1 * z + y * w2) + v * (w + w1 * w2).
Apply M_Le x (w1 * z + y * w2) v (w + w1 * w2) Hx Lw1zyw2 Hv1 Lww1w2 to the current goal.
We will prove v x.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hv3.
We will prove w + w1 * w2 w1 * z + y * w2.
An exact proof term for the current goal is Hwl.
We will prove (v * y + x * w1) * z + (x * y + v * w1) * w2 < (x * y + v * w1) * z + (v * y + x * w1) * w2.
Apply M_Lt (x * y + v * w1) z (v * y + x * w1) w2 (SNo_add_SNo (x * y) (v * w1) Lxy (SNo_M v w1 Hv1 Hw11)) Hz (SNo_add_SNo (v * y) (x * w1) (SNo_M v y Hv1 Hy) (SNo_M x w1 Hx Hw11)) Hw21 to the current goal.
We will prove v * y + x * w1 < x * y + v * w1.
Apply M_Lt x y v w1 Hx Hy Hv1 Hw11 to the current goal.
We will prove v < x.
An exact proof term for the current goal is Hv3.
We will prove w1 < y.
An exact proof term for the current goal is Hw13.
We will prove w2 < z.
An exact proof term for the current goal is Hw23.
Let w1 be given.
Assume Hw1: w1 SNoR y.
Let w2 be given.
Assume Hw2: w2 SNoR z.
Assume Hwl: w + w1 * w2 w1 * z + y * w2.
Apply SNoR_E y Hy w1 Hw1 to the current goal.
Assume Hw11 Hw12 Hw13.
Apply SNoR_E z Hz w2 Hw2 to the current goal.
Assume Hw21 Hw22 Hw23.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_M v y Hv1 Hy.
We prove the intermediate claim Lvw1: SNo (v * w1).
An exact proof term for the current goal is SNo_M v w1 Hv1 Hw11.
We prove the intermediate claim Lxw1: SNo (x * w1).
An exact proof term for the current goal is SNo_M x w1 Hx Hw11.
We prove the intermediate claim Lw1z: SNo (w1 * z).
An exact proof term for the current goal is SNo_M w1 z Hw11 Hz.
We prove the intermediate claim Lyw2: SNo (y * w2).
An exact proof term for the current goal is SNo_M y w2 Hy Hw21.
We prove the intermediate claim Lw1zyw2: SNo (w1 * z + y * w2).
An exact proof term for the current goal is SNo_add_SNo (w1 * z) (y * w2) Lw1z Lyw2.
We prove the intermediate claim Lw1w2: SNo (w1 * w2).
An exact proof term for the current goal is SNo_M w1 w2 Hw11 Hw21.
We prove the intermediate claim Lww1w2: SNo (w + w1 * w2).
An exact proof term for the current goal is SNo_add_SNo w (w1 * w2) Lw Lw1w2.
Apply L1 v (SNoL_SNoS x Hx v Hv) w Lw w1 (SNoR_SNoS y Hy w1 Hw1) w2 (SNoR_SNoS z Hz w2 Hw2) Hue to the current goal.
We will prove v * (w1 * z + y * w2) + x * (w + w1 * w2) x * (w1 * z + y * w2) + v * (w + w1 * w2).
Apply M_Le x (w1 * z + y * w2) v (w + w1 * w2) Hx Lw1zyw2 Hv1 Lww1w2 to the current goal.
We will prove v x.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hv3.
We will prove w + w1 * w2 w1 * z + y * w2.
An exact proof term for the current goal is Hwl.
We will prove (v * y + x * w1) * z + (x * y + v * w1) * w2 < (x * y + v * w1) * z + (v * y + x * w1) * w2.
We prove the intermediate claim Lvyxw1: SNo (v * y + x * w1).
An exact proof term for the current goal is SNo_add_SNo (v * y) (x * w1) (SNo_M v y Hv1 Hy) (SNo_M x w1 Hx Hw11).
We prove the intermediate claim Lxyvw1: SNo (x * y + v * w1).
An exact proof term for the current goal is SNo_add_SNo (x * y) (v * w1) Lxy (SNo_M v w1 Hv1 Hw11).
We prove the intermediate claim Lvyxw1z: SNo ((v * y + x * w1) * z).
An exact proof term for the current goal is SNo_M (v * y + x * w1) z Lvyxw1 Hz.
We prove the intermediate claim Lxyvw1z: SNo ((x * y + v * w1) * z).
An exact proof term for the current goal is SNo_M (x * y + v * w1) z Lxyvw1 Hz.
We prove the intermediate claim Lvyxw1w2: SNo ((v * y + x * w1) * w2).
An exact proof term for the current goal is SNo_M (v * y + x * w1) w2 Lvyxw1 Hw21.
We prove the intermediate claim Lxyvw1w2: SNo ((x * y + v * w1) * w2).
An exact proof term for the current goal is SNo_M (x * y + v * w1) w2 Lxyvw1 Hw21.
rewrite the current goal using add_SNo_com ((v * y + x * w1) * z) ((x * y + v * w1) * w2) Lvyxw1z Lxyvw1w2 (from left to right).
rewrite the current goal using add_SNo_com ((x * y + v * w1) * z) ((v * y + x * w1) * w2) Lxyvw1z Lvyxw1w2 (from left to right).
We will prove (x * y + v * w1) * w2 + (v * y + x * w1) * z < (v * y + x * w1) * w2 + (x * y + v * w1) * z.
Apply M_Lt (v * y + x * w1) w2 (x * y + v * w1) z Lvyxw1 Hw21 Lxyvw1 Hz to the current goal.
We will prove x * y + v * w1 < v * y + x * w1.
rewrite the current goal using add_SNo_com (x * y) (v * w1) Lxy Lvw1 (from left to right).
rewrite the current goal using add_SNo_com (v * y) (x * w1) Lvy Lxw1 (from left to right).
Apply M_Lt x w1 v y Hx Hw11 Hv1 Hy to the current goal.
We will prove v < x.
An exact proof term for the current goal is Hv3.
We will prove y < w1.
An exact proof term for the current goal is Hw13.
We will prove z < w2.
An exact proof term for the current goal is Hw23.
Let v be given.
Assume Hv: v SNoR x.
Let w be given.
Assume Hw: w SNoR (y * z).
Assume Hue: u = v * (y * z) + x * w + - v * w.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
We prove the intermediate claim Lw: SNo w.
Apply SNoR_E (y * z) Lyz w Hw to the current goal.
Assume H _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_M v w Hv1 Lw.
Apply IR y z Hy Hz w Hw to the current goal.
Let w1 be given.
Assume Hw1: w1 SNoL y.
Let w2 be given.
Assume Hw2: w2 SNoR z.
Assume Hwl: w1 * z + y * w2 w + w1 * w2.
Apply SNoL_E y Hy w1 Hw1 to the current goal.
Assume Hw11 Hw12 Hw13.
Apply SNoR_E z Hz w2 Hw2 to the current goal.
Assume Hw21 Hw22 Hw23.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_M v y Hv1 Hy.
We prove the intermediate claim Lvw1: SNo (v * w1).
An exact proof term for the current goal is SNo_M v w1 Hv1 Hw11.
We prove the intermediate claim Lxw1: SNo (x * w1).
An exact proof term for the current goal is SNo_M x w1 Hx Hw11.
We prove the intermediate claim Lw1z: SNo (w1 * z).
An exact proof term for the current goal is SNo_M w1 z Hw11 Hz.
We prove the intermediate claim Lyw2: SNo (y * w2).
An exact proof term for the current goal is SNo_M y w2 Hy Hw21.
We prove the intermediate claim Lw1zyw2: SNo (w1 * z + y * w2).
An exact proof term for the current goal is SNo_add_SNo (w1 * z) (y * w2) Lw1z Lyw2.
We prove the intermediate claim Lw1w2: SNo (w1 * w2).
An exact proof term for the current goal is SNo_M w1 w2 Hw11 Hw21.
We prove the intermediate claim Lww1w2: SNo (w + w1 * w2).
An exact proof term for the current goal is SNo_add_SNo w (w1 * w2) Lw Lw1w2.
We prove the intermediate claim Lxww1w2: SNo (x * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M x (w + w1 * w2) Hx Lww1w2.
We prove the intermediate claim Lvww1w2: SNo (v * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M v (w + w1 * w2) Hv1 Lww1w2.
We prove the intermediate claim Lvw1w2: SNo (v * (w1 * w2)).
An exact proof term for the current goal is SNo_M v (w1 * w2) Hv1 Lw1w2.
We prove the intermediate claim Lvw1zyw2: SNo (v * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M v (w1 * z + y * w2) Hv1 Lw1zyw2.
We prove the intermediate claim Lvwvw1w2: SNo (v * w + v * (w1 * w2)).
An exact proof term for the current goal is SNo_add_SNo (v * w) (v * (w1 * w2)) Lvw Lvw1w2.
We prove the intermediate claim Lxw1zyw2: SNo (x * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M x (w1 * z + y * w2) Hx Lw1zyw2.
We prove the intermediate claim Lvyxw1: SNo (v * y + x * w1).
An exact proof term for the current goal is SNo_add_SNo (v * y) (x * w1) Lvy Lxw1.
We prove the intermediate claim Lxyvw1: SNo (x * y + v * w1).
An exact proof term for the current goal is SNo_add_SNo (x * y) (v * w1) Lxy Lvw1.
We prove the intermediate claim Lvyxw1z: SNo ((v * y + x * w1) * z).
An exact proof term for the current goal is SNo_M (v * y + x * w1) z Lvyxw1 Hz.
We prove the intermediate claim Lxyvw1z: SNo ((x * y + v * w1) * z).
An exact proof term for the current goal is SNo_M (x * y + v * w1) z Lxyvw1 Hz.
We prove the intermediate claim Lvyxw1w2: SNo ((v * y + x * w1) * w2).
An exact proof term for the current goal is SNo_M (v * y + x * w1) w2 Lvyxw1 Hw21.
We prove the intermediate claim Lxyvw1w2: SNo ((x * y + v * w1) * w2).
An exact proof term for the current goal is SNo_M (x * y + v * w1) w2 Lxyvw1 Hw21.
Apply L1 v (SNoR_SNoS x Hx v Hv) w Lw w1 (SNoL_SNoS y Hy w1 Hw1) w2 (SNoR_SNoS z Hz w2 Hw2) Hue to the current goal.
We will prove v * (w1 * z + y * w2) + x * (w + w1 * w2) x * (w1 * z + y * w2) + v * (w + w1 * w2).
rewrite the current goal using add_SNo_com (v * (w1 * z + y * w2)) (x * (w + w1 * w2)) Lvw1zyw2 Lxww1w2 (from left to right).
We will prove x * (w + w1 * w2) + v * (w1 * z + y * w2) x * (w1 * z + y * w2) + v * (w + w1 * w2).
rewrite the current goal using add_SNo_com (x * (w1 * z + y * w2)) (v * (w + w1 * w2)) Lxw1zyw2 Lvww1w2 (from left to right).
We will prove x * (w + w1 * w2) + v * (w1 * z + y * w2) v * (w + w1 * w2) + x * (w1 * z + y * w2).
Apply M_Le v (w + w1 * w2) x (w1 * z + y * w2) Hv1 Lww1w2 Hx Lw1zyw2 to the current goal.
We will prove x v.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hv3.
We will prove w1 * z + y * w2 w + w1 * w2.
An exact proof term for the current goal is Hwl.
We will prove (v * y + x * w1) * z + (x * y + v * w1) * w2 < (x * y + v * w1) * z + (v * y + x * w1) * w2.
rewrite the current goal using add_SNo_com ((v * y + x * w1) * z) ((x * y + v * w1) * w2) Lvyxw1z Lxyvw1w2 (from left to right).
rewrite the current goal using add_SNo_com ((x * y + v * w1) * z) ((v * y + x * w1) * w2) Lxyvw1z Lvyxw1w2 (from left to right).
We will prove (x * y + v * w1) * w2 + (v * y + x * w1) * z < (v * y + x * w1) * w2 + (x * y + v * w1) * z.
Apply M_Lt (v * y + x * w1) w2 (x * y + v * w1) z Lvyxw1 Hw21 Lxyvw1 Hz to the current goal.
We will prove x * y + v * w1 < v * y + x * w1.
Apply M_Lt v y x w1 Hv1 Hy Hx Hw11 to the current goal.
We will prove x < v.
An exact proof term for the current goal is Hv3.
We will prove w1 < y.
An exact proof term for the current goal is Hw13.
We will prove z < w2.
An exact proof term for the current goal is Hw23.
Let w1 be given.
Assume Hw1: w1 SNoR y.
Let w2 be given.
Assume Hw2: w2 SNoL z.
Assume Hwl: w1 * z + y * w2 w + w1 * w2.
Apply SNoR_E y Hy w1 Hw1 to the current goal.
Assume Hw11 Hw12 Hw13.
Apply SNoL_E z Hz w2 Hw2 to the current goal.
Assume Hw21 Hw22 Hw23.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_M v y Hv1 Hy.
We prove the intermediate claim Lvw1: SNo (v * w1).
An exact proof term for the current goal is SNo_M v w1 Hv1 Hw11.
We prove the intermediate claim Lxw1: SNo (x * w1).
An exact proof term for the current goal is SNo_M x w1 Hx Hw11.
We prove the intermediate claim Lw1z: SNo (w1 * z).
An exact proof term for the current goal is SNo_M w1 z Hw11 Hz.
We prove the intermediate claim Lyw2: SNo (y * w2).
An exact proof term for the current goal is SNo_M y w2 Hy Hw21.
We prove the intermediate claim Lw1zyw2: SNo (w1 * z + y * w2).
An exact proof term for the current goal is SNo_add_SNo (w1 * z) (y * w2) Lw1z Lyw2.
We prove the intermediate claim Lw1w2: SNo (w1 * w2).
An exact proof term for the current goal is SNo_M w1 w2 Hw11 Hw21.
We prove the intermediate claim Lww1w2: SNo (w + w1 * w2).
An exact proof term for the current goal is SNo_add_SNo w (w1 * w2) Lw Lw1w2.
We prove the intermediate claim Lxww1w2: SNo (x * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M x (w + w1 * w2) Hx Lww1w2.
We prove the intermediate claim Lvww1w2: SNo (v * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M v (w + w1 * w2) Hv1 Lww1w2.
We prove the intermediate claim Lvw1w2: SNo (v * (w1 * w2)).
An exact proof term for the current goal is SNo_M v (w1 * w2) Hv1 Lw1w2.
We prove the intermediate claim Lvw1zyw2: SNo (v * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M v (w1 * z + y * w2) Hv1 Lw1zyw2.
We prove the intermediate claim Lvwvw1w2: SNo (v * w + v * (w1 * w2)).
An exact proof term for the current goal is SNo_add_SNo (v * w) (v * (w1 * w2)) Lvw Lvw1w2.
We prove the intermediate claim Lxw1zyw2: SNo (x * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M x (w1 * z + y * w2) Hx Lw1zyw2.
We prove the intermediate claim Lvyxw1: SNo (v * y + x * w1).
An exact proof term for the current goal is SNo_add_SNo (v * y) (x * w1) Lvy Lxw1.
We prove the intermediate claim Lxyvw1: SNo (x * y + v * w1).
An exact proof term for the current goal is SNo_add_SNo (x * y) (v * w1) Lxy Lvw1.
We prove the intermediate claim Lvyxw1z: SNo ((v * y + x * w1) * z).
An exact proof term for the current goal is SNo_M (v * y + x * w1) z Lvyxw1 Hz.
We prove the intermediate claim Lxyvw1z: SNo ((x * y + v * w1) * z).
An exact proof term for the current goal is SNo_M (x * y + v * w1) z Lxyvw1 Hz.
We prove the intermediate claim Lvyxw1w2: SNo ((v * y + x * w1) * w2).
An exact proof term for the current goal is SNo_M (v * y + x * w1) w2 Lvyxw1 Hw21.
We prove the intermediate claim Lxyvw1w2: SNo ((x * y + v * w1) * w2).
An exact proof term for the current goal is SNo_M (x * y + v * w1) w2 Lxyvw1 Hw21.
Apply L1 v (SNoR_SNoS x Hx v Hv) w Lw w1 (SNoR_SNoS y Hy w1 Hw1) w2 (SNoL_SNoS z Hz w2 Hw2) Hue to the current goal.
We will prove v * (w1 * z + y * w2) + x * (w + w1 * w2) x * (w1 * z + y * w2) + v * (w + w1 * w2).
rewrite the current goal using add_SNo_com (v * (w1 * z + y * w2)) (x * (w + w1 * w2)) Lvw1zyw2 Lxww1w2 (from left to right).
We will prove x * (w + w1 * w2) + v * (w1 * z + y * w2) x * (w1 * z + y * w2) + v * (w + w1 * w2).
rewrite the current goal using add_SNo_com (x * (w1 * z + y * w2)) (v * (w + w1 * w2)) Lxw1zyw2 Lvww1w2 (from left to right).
We will prove x * (w + w1 * w2) + v * (w1 * z + y * w2) v * (w + w1 * w2) + x * (w1 * z + y * w2).
Apply M_Le v (w + w1 * w2) x (w1 * z + y * w2) Hv1 Lww1w2 Hx Lw1zyw2 to the current goal.
We will prove x v.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hv3.
We will prove w1 * z + y * w2 w + w1 * w2.
An exact proof term for the current goal is Hwl.
We will prove (v * y + x * w1) * z + (x * y + v * w1) * w2 < (x * y + v * w1) * z + (v * y + x * w1) * w2.
We prove the intermediate claim Lvyxw1: SNo (v * y + x * w1).
An exact proof term for the current goal is SNo_add_SNo (v * y) (x * w1) (SNo_M v y Hv1 Hy) (SNo_M x w1 Hx Hw11).
We prove the intermediate claim Lxyvw1: SNo (x * y + v * w1).
An exact proof term for the current goal is SNo_add_SNo (x * y) (v * w1) Lxy (SNo_M v w1 Hv1 Hw11).
Apply M_Lt (x * y + v * w1) z (v * y + x * w1) w2 Lxyvw1 Hz Lvyxw1 Hw21 to the current goal.
We will prove v * y + x * w1 < x * y + v * w1.
rewrite the current goal using add_SNo_com (x * y) (v * w1) Lxy Lvw1 (from left to right).
rewrite the current goal using add_SNo_com (v * y) (x * w1) Lvy Lxw1 (from left to right).
We will prove x * w1 + v * y < v * w1 + x * y.
Apply M_Lt v w1 x y Hv1 Hw11 Hx Hy to the current goal.
We will prove x < v.
An exact proof term for the current goal is Hv3.
We will prove y < w1.
An exact proof term for the current goal is Hw13.
We will prove w2 < z.
An exact proof term for the current goal is Hw23.
Theorem. (mul_SNo_assoc_lem2) The following is provable:
∀x y z, SNo xSNo ySNo z(uSNoS_ (SNoLev x), u * (y * z) = (u * y) * z)(vSNoS_ (SNoLev y), x * (v * z) = (x * v) * z)(wSNoS_ (SNoLev z), x * (y * w) = (x * y) * w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), u * (v * z) = (u * v) * z)(uSNoS_ (SNoLev x), wSNoS_ (SNoLev z), u * (y * w) = (u * y) * w)(vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), x * (v * w) = (x * v) * w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), u * (v * w) = (u * v) * w)∀R, (uR, ∀q : prop, (vSNoL x, wSNoR (y * z), u = v * (y * z) + x * w + - v * wq)(vSNoR x, wSNoL (y * z), u = v * (y * z) + x * w + - v * wq)q)uR, (x * y) * z < u
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
Assume IHx IHy IHz IHxy IHxz IHyz IHxyz.
Let R be given.
Assume HRE.
Let u be given.
Assume Hu: u R.
We will prove (x * y) * z < u.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_M x y Hx Hy.
We prove the intermediate claim Lyz: SNo (y * z).
An exact proof term for the current goal is SNo_M y z Hy Hz.
We prove the intermediate claim Lxyz2: SNo ((x * y) * z).
An exact proof term for the current goal is SNo_M (x * y) z Lxy Hz.
We prove the intermediate claim L2: vSNoS_ (SNoLev x), ∀w, SNo ww1SNoS_ (SNoLev y), w2SNoS_ (SNoLev z), u = v * (y * z) + x * w + - v * wx * (w1 * z + y * w2) + v * (w + w1 * w2) v * (w1 * z + y * w2) + x * (w + w1 * w2)(x * y + v * w1) * z + (v * y + x * w1) * w2 < (v * y + x * w1) * z + (x * y + v * w1) * w2(x * y) * z < u.
Let v be given.
Assume Hv.
Let w be given.
Assume Hw.
Let w1 be given.
Assume Hw1.
Let w2 be given.
Assume Hw2.
Assume Hue H1 H2.
Apply SNoS_E2 (SNoLev x) (SNoLev_ordinal x Hx) v Hv to the current goal.
Assume Hv1 Hv2 Hv3 Hv4.
Apply SNoS_E2 (SNoLev y) (SNoLev_ordinal y Hy) w1 Hw1 to the current goal.
Assume Hw11 Hw12 Hw13 Hw14.
Apply SNoS_E2 (SNoLev z) (SNoLev_ordinal z Hz) w2 Hw2 to the current goal.
Assume Hw21 Hw22 Hw23 Hw24.
We prove the intermediate claim Lvyz: SNo (v * (y * z)).
An exact proof term for the current goal is SNo_M v (y * z) Hv3 Lyz.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_M x w Hx Hw.
We prove the intermediate claim Lxw1: SNo (x * w1).
An exact proof term for the current goal is SNo_M x w1 Hx Hw13.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_M v w Hv3 Hw.
We prove the intermediate claim Lvw1: SNo (v * w1).
An exact proof term for the current goal is SNo_M v w1 Hv3 Hw13.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_M v y Hv3 Hy.
We prove the intermediate claim Lw1z: SNo (w1 * z).
An exact proof term for the current goal is SNo_M w1 z Hw13 Hz.
We prove the intermediate claim Lyw2: SNo (y * w2).
An exact proof term for the current goal is SNo_M y w2 Hy Hw23.
We prove the intermediate claim Lvw1z: SNo (v * (w1 * z)).
An exact proof term for the current goal is SNo_M v (w1 * z) Hv3 Lw1z.
We prove the intermediate claim Lvyw2: SNo (v * (y * w2)).
An exact proof term for the current goal is SNo_M v (y * w2) Hv3 Lyw2.
We prove the intermediate claim Lw1w2: SNo (w1 * w2).
An exact proof term for the current goal is SNo_M w1 w2 Hw13 Hw23.
We prove the intermediate claim Lxw1w2: SNo (x * (w1 * w2)).
An exact proof term for the current goal is SNo_M x (w1 * w2) Hx Lw1w2.
We prove the intermediate claim Lxw1z: SNo (x * (w1 * z)).
An exact proof term for the current goal is SNo_M x (w1 * z) Hx Lw1z.
We prove the intermediate claim Lxyw2: SNo (x * (y * w2)).
An exact proof term for the current goal is SNo_M x (y * w2) Hx Lyw2.
We prove the intermediate claim Lvyzxw: SNo (v * (y * z) + x * w).
An exact proof term for the current goal is SNo_add_SNo (v * (y * z)) (x * w) Lvyz Lxw.
We prove the intermediate claim Lxyzvw: SNo ((x * y) * z + v * w).
An exact proof term for the current goal is SNo_add_SNo ((x * y) * z) (v * w) Lxyz2 Lvw.
We prove the intermediate claim Lvw1w2: SNo (v * (w1 * w2)).
An exact proof term for the current goal is SNo_M v (w1 * w2) Hv3 Lw1w2.
We prove the intermediate claim Lww1w2: SNo (w + w1 * w2).
An exact proof term for the current goal is SNo_add_SNo w (w1 * w2) Hw Lw1w2.
We prove the intermediate claim Lvww1w2: SNo (v * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M v (w + w1 * w2) Hv3 Lww1w2.
We prove the intermediate claim Lvw1zyw2: SNo (v * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M v (w1 * z + y * w2) Hv3 (SNo_add_SNo (w1 * z) (y * w2) Lw1z Lyw2).
We prove the intermediate claim Lvwvw1w2: SNo (v * w + v * (w1 * w2)).
An exact proof term for the current goal is SNo_add_SNo (v * w) (v * (w1 * w2)) Lvw Lvw1w2.
We prove the intermediate claim Lvyzxw1zxyw2vwvw1w2: SNo (v * (y * z) + x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2)).
An exact proof term for the current goal is SNo_add_SNo_4 (v * (y * z)) (x * (w1 * z)) (x * (y * w2)) (v * w + v * (w1 * w2)) Lvyz Lxw1z Lxyw2 Lvwvw1w2.
We prove the intermediate claim Lvw1zvyw2xw1w2: SNo (v * (w1 * z) + v * (y * w2) + x * (w1 * w2)).
An exact proof term for the current goal is SNo_add_SNo_3 (v * (w1 * z)) (v * (y * w2)) (x * (w1 * w2)) Lvw1z Lvyw2 Lxw1w2.
rewrite the current goal using Hue (from left to right).
Apply add_SNo_minus_Lt2b3 (v * (y * z)) (x * w) (v * w) ((x * y) * z) Lvyz Lxw Lvw Lxyz2 to the current goal.
We will prove (x * y) * z + v * w < v * (y * z) + x * w.
Apply add_SNo_Lt1_cancel ((x * y) * z + v * w) (v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) (v * (y * z) + x * w) Lxyzvw Lvw1zvyw2xw1w2 Lvyzxw to the current goal.
We will prove ((x * y) * z + v * w) + v * (w1 * z) + v * (y * w2) + x * (w1 * w2) < (v * (y * z) + x * w) + v * (w1 * z) + v * (y * w2) + x * (w1 * w2).
Apply SNoLtLe_tra (((x * y) * z + v * w) + v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) (v * (y * z) + x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2)) ((v * (y * z) + x * w) + v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Lxyzvw.
An exact proof term for the current goal is Lvw1zvyw2xw1w2.
An exact proof term for the current goal is Lvyzxw1zxyw2vwvw1w2.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Lvyzxw.
An exact proof term for the current goal is Lvw1zvyw2xw1w2.
We will prove ((x * y) * z + v * w) + v * (w1 * z) + v * (y * w2) + x * (w1 * w2) < v * (y * z) + x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2).
rewrite the current goal using add_SNo_com ((x * y) * z) (v * w) Lxyz2 Lvw (from left to right).
rewrite the current goal using add_SNo_assoc (v * w) ((x * y) * z) (v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) Lvw Lxyz2 Lvw1zvyw2xw1w2 (from right to left).
We will prove v * w + (x * y) * z + v * (w1 * z) + v * (y * w2) + x * (w1 * w2) < v * (y * z) + x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2).
rewrite the current goal using add_SNo_rotate_5_2 (v * (y * z)) (x * (w1 * z)) (x * (y * w2)) (v * w) (v * (w1 * w2)) Lvyz Lxw1z Lxyw2 Lvw Lvw1w2 (from left to right).
We will prove v * w + (x * y) * z + v * (w1 * z) + v * (y * w2) + x * (w1 * w2) < v * w + v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2).
Apply add_SNo_Lt2 (v * w) ((x * y) * z + v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) (v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2)) Lvw (SNo_add_SNo_4 ((x * y) * z) (v * (w1 * z)) (v * (y * w2)) (x * (w1 * w2)) Lxyz2 Lvw1z Lvyw2 Lxw1w2) (SNo_add_SNo_4 (v * (w1 * w2)) (v * (y * z)) (x * (w1 * z)) (x * (y * w2)) Lvw1w2 Lvyz Lxw1z Lxyw2) to the current goal.
We will prove (x * y) * z + v * (w1 * z) + v * (y * w2) + x * (w1 * w2) < v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2).
rewrite the current goal using add_SNo_assoc ((x * y) * z) (v * (w1 * z)) (v * (y * w2) + x * (w1 * w2)) Lxyz2 Lvw1z (SNo_add_SNo (v * (y * w2)) (x * (w1 * w2)) Lvyw2 Lxw1w2) (from left to right).
We will prove ((x * y) * z + v * (w1 * z)) + v * (y * w2) + x * (w1 * w2) < v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2).
rewrite the current goal using IHxz v Hv w2 Hw2 (from left to right).
rewrite the current goal using IHyz w1 Hw1 w2 Hw2 (from left to right).
We will prove ((x * y) * z + v * (w1 * z)) + (v * y) * w2 + (x * w1) * w2 < v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2).
rewrite the current goal using DR (v * y) (x * w1) w2 Lvy Lxw1 Hw23 (from right to left).
We will prove ((x * y) * z + v * (w1 * z)) + (v * y + x * w1) * w2 < v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2).
rewrite the current goal using IHxy v Hv w1 Hw1 (from left to right).
rewrite the current goal using DR (x * y) (v * w1) z Lxy Lvw1 Hz (from right to left).
We will prove (x * y + v * w1) * z + (v * y + x * w1) * w2 < v * (w1 * w2) + v * (y * z) + x * (w1 * z) + x * (y * w2).
rewrite the current goal using add_SNo_rotate_4_1 (v * (y * z)) (x * (w1 * z)) (x * (y * w2)) (v * (w1 * w2)) Lvyz Lxw1z Lxyw2 Lvw1w2 (from right to left).
We will prove (x * y + v * w1) * z + (v * y + x * w1) * w2 < v * (y * z) + x * (w1 * z) + x * (y * w2) + v * (w1 * w2).
rewrite the current goal using add_SNo_assoc (v * (y * z)) (x * (w1 * z)) (x * (y * w2) + v * (w1 * w2)) Lvyz Lxw1z (SNo_add_SNo (x * (y * w2)) (v * (w1 * w2)) Lxyw2 Lvw1w2) (from left to right).
We will prove (x * y + v * w1) * z + (v * y + x * w1) * w2 < (v * (y * z) + x * (w1 * z)) + x * (y * w2) + v * (w1 * w2).
rewrite the current goal using IHx v Hv (from left to right).
rewrite the current goal using IHy w1 Hw1 (from left to right).
rewrite the current goal using IHz w2 Hw2 (from left to right).
rewrite the current goal using IHxyz v Hv w1 Hw1 w2 Hw2 (from left to right).
We will prove (x * y + v * w1) * z + (v * y + x * w1) * w2 < ((v * y) * z + (x * w1) * z) + (x * y) * w2 + (v * w1) * w2.
rewrite the current goal using DR (v * y) (x * w1) z Lvy Lxw1 Hz (from right to left).
rewrite the current goal using DR (x * y) (v * w1) w2 Lxy Lvw1 Hw23 (from right to left).
We will prove (x * y + v * w1) * z + (v * y + x * w1) * w2 < (v * y + x * w1) * z + (x * y + v * w1) * w2.
An exact proof term for the current goal is H2.
We will prove v * (y * z) + x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2) (v * (y * z) + x * w) + v * (w1 * z) + v * (y * w2) + x * (w1 * w2).
rewrite the current goal using add_SNo_assoc (v * (y * z)) (x * w) (v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) Lvyz Lxw Lvw1zvyw2xw1w2 (from right to left).
We will prove v * (y * z) + x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2) v * (y * z) + x * w + v * (w1 * z) + v * (y * w2) + x * (w1 * w2).
Apply add_SNo_Le2 (v * (y * z)) (x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2)) (x * w + v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) Lvyz (SNo_add_SNo_4 (x * (w1 * z)) (x * (y * w2)) (v * w) (v * (w1 * w2)) Lxw1z Lxyw2 Lvw Lvw1w2) (SNo_add_SNo (x * w) (v * (w1 * z) + v * (y * w2) + x * (w1 * w2)) Lxw Lvw1zvyw2xw1w2) to the current goal.
We will prove x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2) x * w + v * (w1 * z) + v * (y * w2) + x * (w1 * w2).
rewrite the current goal using add_SNo_assoc (v * (w1 * z)) (v * (y * w2)) (x * (w1 * w2)) Lvw1z Lvyw2 Lxw1w2 (from left to right).
rewrite the current goal using DL v (w1 * z) (y * w2) Hv3 Lw1z Lyw2 (from right to left).
We will prove x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2) x * w + v * (w1 * z + y * w2) + x * (w1 * w2).
rewrite the current goal using add_SNo_com_3_0_1 (x * w) (v * (w1 * z + y * w2)) (x * (w1 * w2)) Lxw Lvw1zyw2 Lxw1w2 (from left to right).
We will prove x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2) v * (w1 * z + y * w2) + x * w + x * (w1 * w2).
rewrite the current goal using DL x w (w1 * w2) Hx Hw Lw1w2 (from right to left).
We will prove x * (w1 * z) + x * (y * w2) + v * w + v * (w1 * w2) v * (w1 * z + y * w2) + x * (w + w1 * w2).
rewrite the current goal using DL v w (w1 * w2) Hv3 Hw Lw1w2 (from right to left).
We will prove x * (w1 * z) + x * (y * w2) + v * (w + w1 * w2) v * (w1 * z + y * w2) + x * (w + w1 * w2).
rewrite the current goal using add_SNo_assoc (x * (w1 * z)) (x * (y * w2)) (v * (w + w1 * w2)) Lxw1z Lxyw2 Lvww1w2 (from left to right).
rewrite the current goal using DL x (w1 * z) (y * w2) Hx Lw1z Lyw2 (from right to left).
We will prove x * (w1 * z + y * w2) + v * (w + w1 * w2) v * (w1 * z + y * w2) + x * (w + w1 * w2).
An exact proof term for the current goal is H1.
Apply HRE u Hu to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Let w be given.
Assume Hw: w SNoR (y * z).
Assume Hue: u = v * (y * z) + x * w + - v * w.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
We prove the intermediate claim Lw: SNo w.
Apply SNoR_E (y * z) Lyz w Hw to the current goal.
Assume H _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_M v w Hv1 Lw.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_M v y Hv1 Hy.
Apply IR y z Hy Hz w Hw to the current goal.
Let w1 be given.
Assume Hw1: w1 SNoL y.
Let w2 be given.
Assume Hw2: w2 SNoR z.
Assume Hwl: w1 * z + y * w2 w + w1 * w2.
Apply SNoL_E y Hy w1 Hw1 to the current goal.
Assume Hw11 Hw12 Hw13.
Apply SNoR_E z Hz w2 Hw2 to the current goal.
Assume Hw21 Hw22 Hw23.
We prove the intermediate claim Lxw1: SNo (x * w1).
An exact proof term for the current goal is SNo_M x w1 Hx Hw11.
We prove the intermediate claim Lw1z: SNo (w1 * z).
An exact proof term for the current goal is SNo_M w1 z Hw11 Hz.
We prove the intermediate claim Lyw2: SNo (y * w2).
An exact proof term for the current goal is SNo_M y w2 Hy Hw21.
We prove the intermediate claim Lw1zyw2: SNo (w1 * z + y * w2).
An exact proof term for the current goal is SNo_add_SNo (w1 * z) (y * w2) Lw1z Lyw2.
We prove the intermediate claim Lw1w2: SNo (w1 * w2).
An exact proof term for the current goal is SNo_M w1 w2 Hw11 Hw21.
We prove the intermediate claim Lww1w2: SNo (w + w1 * w2).
An exact proof term for the current goal is SNo_add_SNo w (w1 * w2) Lw Lw1w2.
We prove the intermediate claim Lxww1w2: SNo (x * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M x (w + w1 * w2) Hx Lww1w2.
We prove the intermediate claim Lvww1w2: SNo (v * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M v (w + w1 * w2) Hv1 Lww1w2.
We prove the intermediate claim Lvw1w2: SNo (v * (w1 * w2)).
An exact proof term for the current goal is SNo_M v (w1 * w2) Hv1 Lw1w2.
We prove the intermediate claim Lvw1zyw2: SNo (v * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M v (w1 * z + y * w2) Hv1 Lw1zyw2.
We prove the intermediate claim Lvwvw1w2: SNo (v * w + v * (w1 * w2)).
An exact proof term for the current goal is SNo_add_SNo (v * w) (v * (w1 * w2)) Lvw Lvw1w2.
We prove the intermediate claim Lxw1zyw2: SNo (x * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M x (w1 * z + y * w2) Hx Lw1zyw2.
We prove the intermediate claim Lxyvw1: SNo (x * y + v * w1).
An exact proof term for the current goal is SNo_add_SNo (x * y) (v * w1) Lxy (SNo_M v w1 Hv1 Hw11).
We prove the intermediate claim Lvyxw1: SNo (v * y + x * w1).
An exact proof term for the current goal is SNo_add_SNo (v * y) (x * w1) Lvy Lxw1.
We prove the intermediate claim Lxyvw1z: SNo ((x * y + v * w1) * z).
An exact proof term for the current goal is SNo_M (x * y + v * w1) z Lxyvw1 Hz.
We prove the intermediate claim Lvyxw1z: SNo ((v * y + x * w1) * z).
An exact proof term for the current goal is SNo_M (v * y + x * w1) z Lvyxw1 Hz.
We prove the intermediate claim Lxyvw1: SNo (x * y + v * w1).
An exact proof term for the current goal is SNo_add_SNo (x * y) (v * w1) Lxy (SNo_M v w1 Hv1 Hw11).
We prove the intermediate claim Lxyvw1w2: SNo ((x * y + v * w1) * w2).
An exact proof term for the current goal is SNo_M (x * y + v * w1) w2 Lxyvw1 Hw21.
We prove the intermediate claim Lvyxw1w2: SNo ((v * y + x * w1) * w2).
An exact proof term for the current goal is SNo_M (v * y + x * w1) w2 Lvyxw1 Hw21.
Apply L2 v (SNoL_SNoS x Hx v Hv) w Lw w1 (SNoL_SNoS y Hy w1 Hw1) w2 (SNoR_SNoS z Hz w2 Hw2) Hue to the current goal.
We will prove x * (w1 * z + y * w2) + v * (w + w1 * w2) v * (w1 * z + y * w2) + x * (w + w1 * w2).
rewrite the current goal using add_SNo_com (v * (w1 * z + y * w2)) (x * (w + w1 * w2)) Lvw1zyw2 Lxww1w2 (from left to right).
rewrite the current goal using add_SNo_com (x * (w1 * z + y * w2)) (v * (w + w1 * w2)) Lxw1zyw2 Lvww1w2 (from left to right).
We will prove v * (w + w1 * w2) + x * (w1 * z + y * w2) x * (w + w1 * w2) + v * (w1 * z + y * w2).
Apply M_Le x (w + w1 * w2) v (w1 * z + y * w2) Hx Lww1w2 Hv1 Lw1zyw2 to the current goal.
We will prove v x.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hv3.
An exact proof term for the current goal is Hwl.
We will prove (x * y + v * w1) * z + (v * y + x * w1) * w2 < (v * y + x * w1) * z + (x * y + v * w1) * w2.
rewrite the current goal using add_SNo_com ((v * y + x * w1) * z) ((x * y + v * w1) * w2) Lvyxw1z Lxyvw1w2 (from left to right).
rewrite the current goal using add_SNo_com ((x * y + v * w1) * z) ((v * y + x * w1) * w2) Lxyvw1z Lvyxw1w2 (from left to right).
We will prove (v * y + x * w1) * w2 + (x * y + v * w1) * z < (x * y + v * w1) * w2 + (v * y + x * w1) * z.
Apply M_Lt (x * y + v * w1) w2 (v * y + x * w1) z (SNo_add_SNo (x * y) (v * w1) Lxy (SNo_M v w1 Hv1 Hw11)) Hw21 (SNo_add_SNo (v * y) (x * w1) (SNo_M v y Hv1 Hy) (SNo_M x w1 Hx Hw11)) Hz to the current goal.
We will prove v * y + x * w1 < x * y + v * w1.
Apply M_Lt x y v w1 Hx Hy Hv1 Hw11 to the current goal.
We will prove v < x.
An exact proof term for the current goal is Hv3.
We will prove w1 < y.
An exact proof term for the current goal is Hw13.
We will prove z < w2.
An exact proof term for the current goal is Hw23.
Let w1 be given.
Assume Hw1: w1 SNoR y.
Let w2 be given.
Assume Hw2: w2 SNoL z.
Assume Hwl: w1 * z + y * w2 w + w1 * w2.
Apply SNoR_E y Hy w1 Hw1 to the current goal.
Assume Hw11 Hw12 Hw13.
Apply SNoL_E z Hz w2 Hw2 to the current goal.
Assume Hw21 Hw22 Hw23.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_M v y Hv1 Hy.
We prove the intermediate claim Lvw1: SNo (v * w1).
An exact proof term for the current goal is SNo_M v w1 Hv1 Hw11.
We prove the intermediate claim Lxw1: SNo (x * w1).
An exact proof term for the current goal is SNo_M x w1 Hx Hw11.
We prove the intermediate claim Lw1z: SNo (w1 * z).
An exact proof term for the current goal is SNo_M w1 z Hw11 Hz.
We prove the intermediate claim Lyw2: SNo (y * w2).
An exact proof term for the current goal is SNo_M y w2 Hy Hw21.
We prove the intermediate claim Lw1zyw2: SNo (w1 * z + y * w2).
An exact proof term for the current goal is SNo_add_SNo (w1 * z) (y * w2) Lw1z Lyw2.
We prove the intermediate claim Lw1w2: SNo (w1 * w2).
An exact proof term for the current goal is SNo_M w1 w2 Hw11 Hw21.
We prove the intermediate claim Lww1w2: SNo (w + w1 * w2).
An exact proof term for the current goal is SNo_add_SNo w (w1 * w2) Lw Lw1w2.
We prove the intermediate claim Lvww1w2: SNo (v * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M v (w + w1 * w2) Hv1 Lww1w2.
We prove the intermediate claim Lvw1zyw2: SNo (v * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M v (w1 * z + y * w2) Hv1 Lw1zyw2.
We prove the intermediate claim Lxww1w2: SNo (x * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M x (w + w1 * w2) Hx Lww1w2.
We prove the intermediate claim Lxw1zyw2: SNo (x * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M x (w1 * z + y * w2) Hx Lw1zyw2.
Apply L2 v (SNoL_SNoS x Hx v Hv) w Lw w1 (SNoR_SNoS y Hy w1 Hw1) w2 (SNoL_SNoS z Hz w2 Hw2) Hue to the current goal.
We will prove x * (w1 * z + y * w2) + v * (w + w1 * w2) v * (w1 * z + y * w2) + x * (w + w1 * w2).
rewrite the current goal using add_SNo_com (v * (w1 * z + y * w2)) (x * (w + w1 * w2)) Lvw1zyw2 Lxww1w2 (from left to right).
rewrite the current goal using add_SNo_com (x * (w1 * z + y * w2)) (v * (w + w1 * w2)) Lxw1zyw2 Lvww1w2 (from left to right).
Apply M_Le x (w + w1 * w2) v (w1 * z + y * w2) Hx Lww1w2 Hv1 Lw1zyw2 to the current goal.
We will prove v x.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hv3.
An exact proof term for the current goal is Hwl.
We will prove (x * y + v * w1) * z + (v * y + x * w1) * w2 < (v * y + x * w1) * z + (x * y + v * w1) * w2.
We prove the intermediate claim Lvyxw1: SNo (v * y + x * w1).
An exact proof term for the current goal is SNo_add_SNo (v * y) (x * w1) (SNo_M v y Hv1 Hy) (SNo_M x w1 Hx Hw11).
We prove the intermediate claim Lxyvw1: SNo (x * y + v * w1).
An exact proof term for the current goal is SNo_add_SNo (x * y) (v * w1) Lxy (SNo_M v w1 Hv1 Hw11).
Apply M_Lt (v * y + x * w1) z (x * y + v * w1) w2 Lvyxw1 Hz Lxyvw1 Hw21 to the current goal.
We will prove x * y + v * w1 < v * y + x * w1.
rewrite the current goal using add_SNo_com (x * y) (v * w1) Lxy Lvw1 (from left to right).
rewrite the current goal using add_SNo_com (v * y) (x * w1) Lvy Lxw1 (from left to right).
Apply M_Lt x w1 v y Hx Hw11 Hv1 Hy to the current goal.
We will prove v < x.
An exact proof term for the current goal is Hv3.
We will prove y < w1.
An exact proof term for the current goal is Hw13.
We will prove w2 < z.
An exact proof term for the current goal is Hw23.
Let v be given.
Assume Hv: v SNoR x.
Let w be given.
Assume Hw: w SNoL (y * z).
Assume Hue: u = v * (y * z) + x * w + - v * w.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1 Hv2 Hv3.
We prove the intermediate claim Lw: SNo w.
Apply SNoL_E (y * z) Lyz w Hw to the current goal.
Assume H _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_M v w Hv1 Lw.
Apply IL y z Hy Hz w Hw to the current goal.
Let w1 be given.
Assume Hw1: w1 SNoL y.
Let w2 be given.
Assume Hw2: w2 SNoL z.
Assume Hwl: w + w1 * w2 w1 * z + y * w2.
Apply SNoL_E y Hy w1 Hw1 to the current goal.
Assume Hw11 Hw12 Hw13.
Apply SNoL_E z Hz w2 Hw2 to the current goal.
Assume Hw21 Hw22 Hw23.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_M v y Hv1 Hy.
We prove the intermediate claim Lvw1: SNo (v * w1).
An exact proof term for the current goal is SNo_M v w1 Hv1 Hw11.
We prove the intermediate claim Lxw1: SNo (x * w1).
An exact proof term for the current goal is SNo_M x w1 Hx Hw11.
We prove the intermediate claim Lw1z: SNo (w1 * z).
An exact proof term for the current goal is SNo_M w1 z Hw11 Hz.
We prove the intermediate claim Lyw2: SNo (y * w2).
An exact proof term for the current goal is SNo_M y w2 Hy Hw21.
We prove the intermediate claim Lw1zyw2: SNo (w1 * z + y * w2).
An exact proof term for the current goal is SNo_add_SNo (w1 * z) (y * w2) Lw1z Lyw2.
We prove the intermediate claim Lw1w2: SNo (w1 * w2).
An exact proof term for the current goal is SNo_M w1 w2 Hw11 Hw21.
We prove the intermediate claim Lww1w2: SNo (w + w1 * w2).
An exact proof term for the current goal is SNo_add_SNo w (w1 * w2) Lw Lw1w2.
We prove the intermediate claim Lxww1w2: SNo (x * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M x (w + w1 * w2) Hx Lww1w2.
We prove the intermediate claim Lvww1w2: SNo (v * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M v (w + w1 * w2) Hv1 Lww1w2.
We prove the intermediate claim Lvw1w2: SNo (v * (w1 * w2)).
An exact proof term for the current goal is SNo_M v (w1 * w2) Hv1 Lw1w2.
We prove the intermediate claim Lvw1zyw2: SNo (v * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M v (w1 * z + y * w2) Hv1 Lw1zyw2.
We prove the intermediate claim Lvwvw1w2: SNo (v * w + v * (w1 * w2)).
An exact proof term for the current goal is SNo_add_SNo (v * w) (v * (w1 * w2)) Lvw Lvw1w2.
We prove the intermediate claim Lxw1zyw2: SNo (x * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M x (w1 * z + y * w2) Hx Lw1zyw2.
We prove the intermediate claim Lvyxw1: SNo (v * y + x * w1).
An exact proof term for the current goal is SNo_add_SNo (v * y) (x * w1) Lvy Lxw1.
We prove the intermediate claim Lxyvw1: SNo (x * y + v * w1).
An exact proof term for the current goal is SNo_add_SNo (x * y) (v * w1) Lxy Lvw1.
We prove the intermediate claim Lvyxw1z: SNo ((v * y + x * w1) * z).
An exact proof term for the current goal is SNo_M (v * y + x * w1) z Lvyxw1 Hz.
We prove the intermediate claim Lxyvw1z: SNo ((x * y + v * w1) * z).
An exact proof term for the current goal is SNo_M (x * y + v * w1) z Lxyvw1 Hz.
We prove the intermediate claim Lvyxw1w2: SNo ((v * y + x * w1) * w2).
An exact proof term for the current goal is SNo_M (v * y + x * w1) w2 Lvyxw1 Hw21.
We prove the intermediate claim Lxyvw1w2: SNo ((x * y + v * w1) * w2).
An exact proof term for the current goal is SNo_M (x * y + v * w1) w2 Lxyvw1 Hw21.
Apply L2 v (SNoR_SNoS x Hx v Hv) w Lw w1 (SNoL_SNoS y Hy w1 Hw1) w2 (SNoL_SNoS z Hz w2 Hw2) Hue to the current goal.
We will prove x * (w1 * z + y * w2) + v * (w + w1 * w2) v * (w1 * z + y * w2) + x * (w + w1 * w2).
Apply M_Le v (w1 * z + y * w2) x (w + w1 * w2) Hv1 Lw1zyw2 Hx Lww1w2 to the current goal.
We will prove x v.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hv3.
An exact proof term for the current goal is Hwl.
We will prove (x * y + v * w1) * z + (v * y + x * w1) * w2 < (v * y + x * w1) * z + (x * y + v * w1) * w2.
Apply M_Lt (v * y + x * w1) z (x * y + v * w1) w2 Lvyxw1 Hz Lxyvw1 Hw21 to the current goal.
We will prove x * y + v * w1 < v * y + x * w1.
Apply M_Lt v y x w1 Hv1 Hy Hx Hw11 to the current goal.
We will prove x < v.
An exact proof term for the current goal is Hv3.
We will prove w1 < y.
An exact proof term for the current goal is Hw13.
An exact proof term for the current goal is Hw23.
Let w1 be given.
Assume Hw1: w1 SNoR y.
Let w2 be given.
Assume Hw2: w2 SNoR z.
Assume Hwl: w + w1 * w2 w1 * z + y * w2.
Apply SNoR_E y Hy w1 Hw1 to the current goal.
Assume Hw11 Hw12 Hw13.
Apply SNoR_E z Hz w2 Hw2 to the current goal.
Assume Hw21 Hw22 Hw23.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_M v y Hv1 Hy.
We prove the intermediate claim Lvw1: SNo (v * w1).
An exact proof term for the current goal is SNo_M v w1 Hv1 Hw11.
We prove the intermediate claim Lxw1: SNo (x * w1).
An exact proof term for the current goal is SNo_M x w1 Hx Hw11.
We prove the intermediate claim Lw1z: SNo (w1 * z).
An exact proof term for the current goal is SNo_M w1 z Hw11 Hz.
We prove the intermediate claim Lyw2: SNo (y * w2).
An exact proof term for the current goal is SNo_M y w2 Hy Hw21.
We prove the intermediate claim Lw1zyw2: SNo (w1 * z + y * w2).
An exact proof term for the current goal is SNo_add_SNo (w1 * z) (y * w2) Lw1z Lyw2.
We prove the intermediate claim Lw1w2: SNo (w1 * w2).
An exact proof term for the current goal is SNo_M w1 w2 Hw11 Hw21.
We prove the intermediate claim Lww1w2: SNo (w + w1 * w2).
An exact proof term for the current goal is SNo_add_SNo w (w1 * w2) Lw Lw1w2.
We prove the intermediate claim Lxww1w2: SNo (x * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M x (w + w1 * w2) Hx Lww1w2.
We prove the intermediate claim Lvww1w2: SNo (v * (w + w1 * w2)).
An exact proof term for the current goal is SNo_M v (w + w1 * w2) Hv1 Lww1w2.
We prove the intermediate claim Lvw1w2: SNo (v * (w1 * w2)).
An exact proof term for the current goal is SNo_M v (w1 * w2) Hv1 Lw1w2.
We prove the intermediate claim Lvw1zyw2: SNo (v * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M v (w1 * z + y * w2) Hv1 Lw1zyw2.
We prove the intermediate claim Lvwvw1w2: SNo (v * w + v * (w1 * w2)).
An exact proof term for the current goal is SNo_add_SNo (v * w) (v * (w1 * w2)) Lvw Lvw1w2.
We prove the intermediate claim Lxw1zyw2: SNo (x * (w1 * z + y * w2)).
An exact proof term for the current goal is SNo_M x (w1 * z + y * w2) Hx Lw1zyw2.
We prove the intermediate claim Lvyxw1: SNo (v * y + x * w1).
An exact proof term for the current goal is SNo_add_SNo (v * y) (x * w1) Lvy Lxw1.
We prove the intermediate claim Lxyvw1: SNo (x * y + v * w1).
An exact proof term for the current goal is SNo_add_SNo (x * y) (v * w1) Lxy Lvw1.
We prove the intermediate claim Lvyxw1z: SNo ((v * y + x * w1) * z).
An exact proof term for the current goal is SNo_M (v * y + x * w1) z Lvyxw1 Hz.
We prove the intermediate claim Lxyvw1z: SNo ((x * y + v * w1) * z).
An exact proof term for the current goal is SNo_M (x * y + v * w1) z Lxyvw1 Hz.
We prove the intermediate claim Lvyxw1w2: SNo ((v * y + x * w1) * w2).
An exact proof term for the current goal is SNo_M (v * y + x * w1) w2 Lvyxw1 Hw21.
We prove the intermediate claim Lxyvw1w2: SNo ((x * y + v * w1) * w2).
An exact proof term for the current goal is SNo_M (x * y + v * w1) w2 Lxyvw1 Hw21.
Apply L2 v (SNoR_SNoS x Hx v Hv) w Lw w1 (SNoR_SNoS y Hy w1 Hw1) w2 (SNoR_SNoS z Hz w2 Hw2) Hue to the current goal.
We will prove x * (w1 * z + y * w2) + v * (w + w1 * w2) v * (w1 * z + y * w2) + x * (w + w1 * w2).
Apply M_Le v (w1 * z + y * w2) x (w + w1 * w2) Hv1 Lw1zyw2 Hx Lww1w2 to the current goal.
We will prove x v.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hv3.
An exact proof term for the current goal is Hwl.
We will prove (x * y + v * w1) * z + (v * y + x * w1) * w2 < (v * y + x * w1) * z + (x * y + v * w1) * w2.
We prove the intermediate claim Lvyxw1: SNo (v * y + x * w1).
An exact proof term for the current goal is SNo_add_SNo (v * y) (x * w1) (SNo_M v y Hv1 Hy) (SNo_M x w1 Hx Hw11).
We prove the intermediate claim Lxyvw1: SNo (x * y + v * w1).
An exact proof term for the current goal is SNo_add_SNo (x * y) (v * w1) Lxy (SNo_M v w1 Hv1 Hw11).
rewrite the current goal using add_SNo_com ((v * y + x * w1) * z) ((x * y + v * w1) * w2) Lvyxw1z Lxyvw1w2 (from left to right).
rewrite the current goal using add_SNo_com ((x * y + v * w1) * z) ((v * y + x * w1) * w2) Lxyvw1z Lvyxw1w2 (from left to right).
We will prove (v * y + x * w1) * w2 + (x * y + v * w1) * z < (x * y + v * w1) * w2 + (v * y + x * w1) * z.
Apply M_Lt (x * y + v * w1) w2 (v * y + x * w1) z Lxyvw1 Hw21 Lvyxw1 Hz to the current goal.
We will prove v * y + x * w1 < x * y + v * w1.
rewrite the current goal using add_SNo_com (x * y) (v * w1) Lxy Lvw1 (from left to right).
rewrite the current goal using add_SNo_com (v * y) (x * w1) Lvy Lxw1 (from left to right).
We will prove x * w1 + v * y < v * w1 + x * y.
Apply M_Lt v w1 x y Hv1 Hw11 Hx Hy to the current goal.
We will prove x < v.
An exact proof term for the current goal is Hv3.
We will prove y < w1.
An exact proof term for the current goal is Hw13.
An exact proof term for the current goal is Hw23.
End of Section mul_SNo_assoc_lems
Theorem. (mul_SNo_assoc) The following is provable:
∀x y z, SNo xSNo ySNo zx * (y * z) = (x * y) * z
Proof:
Set P to be the term λx y z ⇒ x * (y * z) = (x * y) * z of type setsetsetprop.
We will prove ∀x y z, SNo xSNo ySNo zP x y z.
Apply SNoLev_ind3 P to the current goal.
Let x, y and z be given.
Assume Hx Hy Hz.
Assume IHx: uSNoS_ (SNoLev x), u * (y * z) = (u * y) * z.
Assume IHy: vSNoS_ (SNoLev y), x * (v * z) = (x * v) * z.
Assume IHz: wSNoS_ (SNoLev z), x * (y * w) = (x * y) * w.
Assume IHxy: uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), u * (v * z) = (u * v) * z.
Assume IHxz: uSNoS_ (SNoLev x), wSNoS_ (SNoLev z), u * (y * w) = (u * y) * w.
Assume IHyz: vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), x * (v * w) = (x * v) * w.
Assume IHxyz: uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), u * (v * w) = (u * v) * w.
We will prove x * (y * z) = (x * y) * z.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Hx Hy.
We prove the intermediate claim Lyz: SNo (y * z).
An exact proof term for the current goal is SNo_mul_SNo y z Hy Hz.
We prove the intermediate claim Lxyz1: SNo (x * (y * z)).
An exact proof term for the current goal is SNo_mul_SNo x (y * z) Hx Lyz.
We prove the intermediate claim Lxyz2: SNo ((x * y) * z).
An exact proof term for the current goal is SNo_mul_SNo (x * y) z Lxy Hz.
Apply mul_SNo_eq_3 x (y * z) Hx Lyz to the current goal.
Let L and R be given.
Assume HLR HLE HLI1 HLI2 HRE HRI1 HRI2.
Assume HE: x * (y * z) = SNoCut L R.
Apply mul_SNo_eq_3 (x * y) z Lxy Hz to the current goal.
Let L' and R' be given.
Assume HLR' HLE' HLI1' HLI2' HRE' HRI1' HRI2'.
Assume HE': (x * y) * z = SNoCut L' R'.
rewrite the current goal using HE (from left to right).
rewrite the current goal using HE' (from left to right).
We will prove SNoCut L R = SNoCut L' R'.
We prove the intermediate claim LIL': ∀x y, SNo xSNo yuSNoL (y * x), ∀p : prop, (vSNoL x, wSNoL y, u + w * v y * v + w * xp)(vSNoR x, wSNoR y, u + w * v y * v + w * xp)p.
Let x and y be given.
Assume Hx Hy.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp1 Hp2.
Apply mul_SNo_SNoL_interpolate_impred y x Hy Hx u Hu to the current goal.
Let w be given.
Assume Hw: w SNoL y.
Let v be given.
Assume Hv: v SNoL x.
Apply SNoL_E y Hy w Hw to the current goal.
Assume Hw1 _ _.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1 _ _.
We will prove u + w * v w * x + y * vp.
rewrite the current goal using add_SNo_com (w * x) (y * v) (SNo_mul_SNo w x Hw1 Hx) (SNo_mul_SNo y v Hy Hv1) (from left to right).
An exact proof term for the current goal is Hp1 v Hv w Hw.
Let w be given.
Assume Hw: w SNoR y.
Let v be given.
Assume Hv: v SNoR x.
Apply SNoR_E y Hy w Hw to the current goal.
Assume Hw1 _ _.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1 _ _.
We will prove u + w * v w * x + y * vp.
rewrite the current goal using add_SNo_com (w * x) (y * v) (SNo_mul_SNo w x Hw1 Hx) (SNo_mul_SNo y v Hy Hv1) (from left to right).
An exact proof term for the current goal is Hp2 v Hv w Hw.
We prove the intermediate claim LIR': ∀x y, SNo xSNo yuSNoR (y * x), ∀p : prop, (vSNoL x, wSNoR y, y * v + w * x u + w * vp)(vSNoR x, wSNoL y, y * v + w * x u + w * vp)p.
Let x and y be given.
Assume Hx Hy.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp1 Hp2.
Apply mul_SNo_SNoR_interpolate_impred y x Hy Hx u Hu to the current goal.
Let w be given.
Assume Hw: w SNoL y.
Let v be given.
Assume Hv: v SNoR x.
Apply SNoL_E y Hy w Hw to the current goal.
Assume Hw1 _ _.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1 _ _.
rewrite the current goal using add_SNo_com (w * x) (y * v) (SNo_mul_SNo w x Hw1 Hx) (SNo_mul_SNo y v Hy Hv1) (from left to right).
An exact proof term for the current goal is Hp2 v Hv w Hw.
Let w be given.
Assume Hw: w SNoR y.
Let v be given.
Assume Hv: v SNoL x.
Apply SNoR_E y Hy w Hw to the current goal.
Assume Hw1 _ _.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1 _ _.
rewrite the current goal using add_SNo_com (w * x) (y * v) (SNo_mul_SNo w x Hw1 Hx) (SNo_mul_SNo y v Hy Hv1) (from left to right).
An exact proof term for the current goal is Hp1 v Hv w Hw.
We prove the intermediate claim LMLt': ∀x y u v, SNo xSNo ySNo uSNo vu < xv < yy * u + v * x < y * x + v * u.
Let x, y, u and v be given.
Assume Hx Hy Hu Hv Hux Hvy.
rewrite the current goal using add_SNo_com (y * u) (v * x) (SNo_mul_SNo y u Hy Hu) (SNo_mul_SNo v x Hv Hx) (from left to right).
We will prove v * x + y * u < y * x + v * u.
An exact proof term for the current goal is mul_SNo_Lt y x v u Hy Hx Hv Hu Hvy Hux.
We prove the intermediate claim LMLe': ∀x y u v, SNo xSNo ySNo uSNo vu xv yy * u + v * x y * x + v * u.
Let x, y, u and v be given.
Assume Hx Hy Hu Hv Hux Hvy.
rewrite the current goal using add_SNo_com (y * u) (v * x) (SNo_mul_SNo y u Hy Hu) (SNo_mul_SNo v x Hv Hx) (from left to right).
We will prove v * x + y * u y * x + v * u.
An exact proof term for the current goal is mul_SNo_Le y x v u Hy Hx Hv Hu Hvy Hux.
We prove the intermediate claim LIHx': uSNoS_ (SNoLev x), (u * y) * z = u * (y * z).
Let u be given.
Assume Hu.
Use symmetry.
An exact proof term for the current goal is IHx u Hu.
We prove the intermediate claim LIHy': vSNoS_ (SNoLev y), (x * v) * z = x * (v * z).
Let v be given.
Assume Hv.
Use symmetry.
An exact proof term for the current goal is IHy v Hv.
We prove the intermediate claim LIHz': wSNoS_ (SNoLev z), (x * y) * w = x * (y * w).
Let w be given.
Assume Hw.
Use symmetry.
An exact proof term for the current goal is IHz w Hw.
We prove the intermediate claim LIHyx': vSNoS_ (SNoLev y), uSNoS_ (SNoLev x), (u * v) * z = u * (v * z).
Let v be given.
Assume Hv.
Let u be given.
Assume Hu.
Use symmetry.
An exact proof term for the current goal is IHxy u Hu v Hv.
We prove the intermediate claim LIHzx': wSNoS_ (SNoLev z), uSNoS_ (SNoLev x), (u * y) * w = u * (y * w).
Let w be given.
Assume Hw.
Let u be given.
Assume Hu.
Use symmetry.
An exact proof term for the current goal is IHxz u Hu w Hw.
We prove the intermediate claim LIHzy': wSNoS_ (SNoLev z), vSNoS_ (SNoLev y), (x * v) * w = x * (v * w).
Let w be given.
Assume Hw.
Let v be given.
Assume Hv.
Use symmetry.
An exact proof term for the current goal is IHyz v Hv w Hw.
We prove the intermediate claim LIHzyx': wSNoS_ (SNoLev z), vSNoS_ (SNoLev y), uSNoS_ (SNoLev x), (u * v) * w = u * (v * w).
Let w be given.
Assume Hw.
Let v be given.
Assume Hv.
Let u be given.
Assume Hu.
Use symmetry.
An exact proof term for the current goal is IHxyz u Hu v Hv w Hw.
Apply SNoCut_ext to the current goal.
An exact proof term for the current goal is HLR.
An exact proof term for the current goal is HLR'.
rewrite the current goal using HE' (from right to left).
We will prove uL, u < (x * y) * z.
An exact proof term for the current goal is mul_SNo_assoc_lem1 mul_SNo SNo_mul_SNo mul_SNo_distrL mul_SNo_distrR mul_SNo_SNoL_interpolate_impred mul_SNo_SNoR_interpolate_impred mul_SNo_Lt mul_SNo_Le x y z Hx Hy Hz IHx IHy IHz IHxy IHxz IHyz IHxyz L HLE.
rewrite the current goal using HE' (from right to left).
We will prove uR, (x * y) * z < u.
An exact proof term for the current goal is mul_SNo_assoc_lem2 mul_SNo SNo_mul_SNo mul_SNo_distrL mul_SNo_distrR mul_SNo_SNoL_interpolate_impred mul_SNo_SNoR_interpolate_impred mul_SNo_Lt mul_SNo_Le x y z Hx Hy Hz IHx IHy IHz IHxy IHxz IHyz IHxyz R HRE.
rewrite the current goal using HE (from right to left).
We will prove uL', u < x * (y * z).
Apply mul_SNo_assoc_lem1 (λx y ⇒ y * x) (λx y Hx Hy ⇒ SNo_mul_SNo y x Hy Hx) (λx y z Hx Hy Hz ⇒ mul_SNo_distrR y z x Hy Hz Hx) (λx y z Hx Hy Hz ⇒ mul_SNo_distrL z x y Hz Hx Hy) LIL' LIR' LMLt' LMLe' z y x Hz Hy Hx LIHz' LIHy' LIHx' LIHzy' LIHzx' LIHyx' LIHzyx' to the current goal.
We will prove uL', ∀q : prop, (vSNoL z, wSNoL (x * y), u = (x * y) * v + w * z + - w * vq)(vSNoR z, wSNoR (x * y), u = (x * y) * v + w * z + - w * vq)q.
Let u be given.
Assume Hu.
Let q be given.
Assume Hq1 Hq2.
Apply HLE' u Hu to the current goal.
Let w be given.
Assume Hw.
Let v be given.
Assume Hv.
Apply SNoL_E (x * y) Lxy w Hw to the current goal.
Assume Hw1 _ _.
Apply SNoL_E z Hz v Hv to the current goal.
Assume Hv1 _ _.
We will prove u = w * z + (x * y) * v + - w * vq.
rewrite the current goal using add_SNo_com_3_0_1 (w * z) ((x * y) * v) (- w * v) (SNo_mul_SNo w z Hw1 Hz) (SNo_mul_SNo (x * y) v Lxy Hv1) (SNo_minus_SNo (w * v) (SNo_mul_SNo w v Hw1 Hv1)) (from left to right).
An exact proof term for the current goal is Hq1 v Hv w Hw.
Let w be given.
Assume Hw.
Let v be given.
Assume Hv.
Apply SNoR_E (x * y) Lxy w Hw to the current goal.
Assume Hw1 _ _.
Apply SNoR_E z Hz v Hv to the current goal.
Assume Hv1 _ _.
We will prove u = w * z + (x * y) * v + - w * vq.
rewrite the current goal using add_SNo_com_3_0_1 (w * z) ((x * y) * v) (- w * v) (SNo_mul_SNo w z Hw1 Hz) (SNo_mul_SNo (x * y) v Lxy Hv1) (SNo_minus_SNo (w * v) (SNo_mul_SNo w v Hw1 Hv1)) (from left to right).
An exact proof term for the current goal is Hq2 v Hv w Hw.
rewrite the current goal using HE (from right to left).
We will prove uR', x * (y * z) < u.
Apply mul_SNo_assoc_lem2 (λx y ⇒ y * x) (λx y Hx Hy ⇒ SNo_mul_SNo y x Hy Hx) (λx y z Hx Hy Hz ⇒ mul_SNo_distrR y z x Hy Hz Hx) (λx y z Hx Hy Hz ⇒ mul_SNo_distrL z x y Hz Hx Hy) LIL' LIR' LMLt' LMLe' z y x Hz Hy Hx LIHz' LIHy' LIHx' LIHzy' LIHzx' LIHyx' LIHzyx' to the current goal.
We will prove uR', ∀q : prop, (vSNoL z, wSNoR (x * y), u = (x * y) * v + w * z + - w * vq)(vSNoR z, wSNoL (x * y), u = (x * y) * v + w * z + - w * vq)q.
Let u be given.
Assume Hu.
Let q be given.
Assume Hq1 Hq2.
Apply HRE' u Hu to the current goal.
Let w be given.
Assume Hw.
Let v be given.
Assume Hv.
Apply SNoL_E (x * y) Lxy w Hw to the current goal.
Assume Hw1 _ _.
Apply SNoR_E z Hz v Hv to the current goal.
Assume Hv1 _ _.
We will prove u = w * z + (x * y) * v + - w * vq.
rewrite the current goal using add_SNo_com_3_0_1 (w * z) ((x * y) * v) (- w * v) (SNo_mul_SNo w z Hw1 Hz) (SNo_mul_SNo (x * y) v Lxy Hv1) (SNo_minus_SNo (w * v) (SNo_mul_SNo w v Hw1 Hv1)) (from left to right).
An exact proof term for the current goal is Hq2 v Hv w Hw.
Let w be given.
Assume Hw.
Let v be given.
Assume Hv.
Apply SNoR_E (x * y) Lxy w Hw to the current goal.
Assume Hw1 _ _.
Apply SNoL_E z Hz v Hv to the current goal.
Assume Hv1 _ _.
We will prove u = w * z + (x * y) * v + - w * vq.
rewrite the current goal using add_SNo_com_3_0_1 (w * z) ((x * y) * v) (- w * v) (SNo_mul_SNo w z Hw1 Hz) (SNo_mul_SNo (x * y) v Lxy Hv1) (SNo_minus_SNo (w * v) (SNo_mul_SNo w v Hw1 Hv1)) (from left to right).
An exact proof term for the current goal is Hq1 v Hv w Hw.
Theorem. (mul_nat_mul_SNo) The following is provable:
Proof:
Let n be given.
Assume Hn: n ω.
We prove the intermediate claim Ln1: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We prove the intermediate claim Ln2: ordinal n.
An exact proof term for the current goal is nat_p_ordinal n Ln1.
We prove the intermediate claim Ln3: SNo n.
An exact proof term for the current goal is ordinal_SNo n Ln2.
We prove the intermediate claim L1: ∀m, nat_p mmul_nat n m = n * m.
Apply nat_ind to the current goal.
We will prove mul_nat n 0 = n * 0.
rewrite the current goal using mul_SNo_zeroR n Ln3 (from left to right).
We will prove mul_nat n 0 = 0.
An exact proof term for the current goal is mul_nat_0R n.
Let m be given.
Assume Hm: nat_p m.
Assume IH: mul_nat n m = n * m.
We will prove mul_nat n (ordsucc m) = n * (ordsucc m).
Use transitivity with add_nat n (mul_nat n m), n + (mul_nat n m), and n + (n * m).
An exact proof term for the current goal is mul_nat_SR n m Hm.
An exact proof term for the current goal is add_nat_add_SNo n Hn (mul_nat n m) (nat_p_omega (mul_nat n m) (mul_nat_p n Ln1 m Hm)).
Use f_equal.
An exact proof term for the current goal is IH.
We will prove n + n * m = n * ordsucc m.
Use symmetry.
We will prove n * ordsucc m = n + n * m.
rewrite the current goal using add_SNo_0L m (ordinal_SNo m (nat_p_ordinal m Hm)) (from right to left) at position 1.
We will prove n * ordsucc (0 + m) = n + n * m.
rewrite the current goal using add_SNo_ordinal_SL 0 ordinal_Empty m (nat_p_ordinal m Hm) (from right to left).
We will prove n * (1 + m) = n + n * m.
rewrite the current goal using mul_SNo_distrL n 1 m Ln3 SNo_1 (ordinal_SNo m (nat_p_ordinal m Hm)) (from left to right).
We will prove n * 1 + n * m = n + n * m.
Use f_equal.
We will prove n * 1 = n.
An exact proof term for the current goal is mul_SNo_oneR n Ln3.
Let m be given.
Assume Hm: m ω.
We will prove mul_nat n m = n * m.
An exact proof term for the current goal is L1 m (omega_nat_p m Hm).
Theorem. (mul_SNo_In_omega) The following is provable:
Proof:
Let n be given.
Assume Hn.
Let m be given.
Assume Hm.
rewrite the current goal using mul_nat_mul_SNo n Hn m Hm (from right to left).
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is mul_nat_p n (omega_nat_p n Hn) m (omega_nat_p m Hm).
Theorem. (mul_SNo_zeroL) The following is provable:
∀x, SNo x0 * x = 0
Proof:
Let x be given.
Assume Hx.
rewrite the current goal using mul_SNo_com 0 x SNo_0 Hx (from left to right).
An exact proof term for the current goal is mul_SNo_zeroR x Hx.
Theorem. (mul_SNo_oneL) The following is provable:
∀x, SNo x1 * x = x
Proof:
Let x be given.
Assume Hx.
rewrite the current goal using mul_SNo_com 1 x SNo_1 Hx (from left to right).
An exact proof term for the current goal is mul_SNo_oneR x Hx.
Theorem. (mul_SNo_rotate_3_1) The following is provable:
∀x y z, SNo xSNo ySNo zx * y * z = z * x * y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
We will prove x * (y * z) = z * (x * y).
Use transitivity with x * (z * y), (x * z) * y, and (z * x) * y.
Use f_equal.
An exact proof term for the current goal is mul_SNo_com y z Hy Hz.
An exact proof term for the current goal is mul_SNo_assoc x z y Hx Hz Hy.
Use f_equal.
An exact proof term for the current goal is mul_SNo_com x z Hx Hz.
Use symmetry.
An exact proof term for the current goal is mul_SNo_assoc z x y Hz Hx Hy.
Theorem. (pos_mul_SNo_Lt) The following is provable:
∀x y z, SNo x0 < xSNo ySNo zy < zx * y < x * z
Proof:
Let x, y and z be given.
Assume Hx1 Hx2 Hy Hz Hyz.
We will prove x * y < x * z.
We prove the intermediate claim L1: 0 * z + x * y = x * y.
Use transitivity with and 0 + x * y.
Use f_equal.
We will prove 0 * z = 0.
An exact proof term for the current goal is mul_SNo_zeroL z Hz.
An exact proof term for the current goal is add_SNo_0L (x * y) (SNo_mul_SNo x y Hx1 Hy).
We prove the intermediate claim L2: x * z + 0 * y = x * z.
Use transitivity with and x * z + 0.
Use f_equal.
An exact proof term for the current goal is mul_SNo_zeroL y Hy.
An exact proof term for the current goal is add_SNo_0R (x * z) (SNo_mul_SNo x z Hx1 Hz).
rewrite the current goal using L1 (from right to left).
rewrite the current goal using L2 (from right to left).
An exact proof term for the current goal is mul_SNo_Lt x z 0 y Hx1 Hz SNo_0 Hy Hx2 Hyz.
Theorem. (nonneg_mul_SNo_Le) The following is provable:
∀x y z, SNo x0 xSNo ySNo zy zx * y x * z
Proof:
Let x, y and z be given.
Assume Hx1 Hx2 Hy Hz Hyz.
We will prove x * y x * z.
We prove the intermediate claim L1: 0 * z + x * y = x * y.
Use transitivity with and 0 + x * y.
Use f_equal.
We will prove 0 * z = 0.
An exact proof term for the current goal is mul_SNo_zeroL z Hz.
An exact proof term for the current goal is add_SNo_0L (x * y) (SNo_mul_SNo x y Hx1 Hy).
We prove the intermediate claim L2: x * z + 0 * y = x * z.
Use transitivity with and x * z + 0.
Use f_equal.
An exact proof term for the current goal is mul_SNo_zeroL y Hy.
An exact proof term for the current goal is add_SNo_0R (x * z) (SNo_mul_SNo x z Hx1 Hz).
rewrite the current goal using L1 (from right to left).
rewrite the current goal using L2 (from right to left).
An exact proof term for the current goal is mul_SNo_Le x z 0 y Hx1 Hz SNo_0 Hy Hx2 Hyz.
Theorem. (neg_mul_SNo_Lt) The following is provable:
∀x y z, SNo xx < 0SNo ySNo zz < yx * y < x * z
Proof:
Let x, y and z be given.
Assume Hx1 Hx2 Hy Hz Hzy.
We will prove x * y < x * z.
We prove the intermediate claim L1: x * y + 0 * z = x * y.
Use transitivity with and x * y + 0.
Use f_equal.
We will prove 0 * z = 0.
An exact proof term for the current goal is mul_SNo_zeroL z Hz.
An exact proof term for the current goal is add_SNo_0R (x * y) (SNo_mul_SNo x y Hx1 Hy).
We prove the intermediate claim L2: 0 * y + x * z = x * z.
Use transitivity with and 0 + x * z.
Use f_equal.
An exact proof term for the current goal is mul_SNo_zeroL y Hy.
An exact proof term for the current goal is add_SNo_0L (x * z) (SNo_mul_SNo x z Hx1 Hz).
rewrite the current goal using L1 (from right to left).
rewrite the current goal using L2 (from right to left).
An exact proof term for the current goal is mul_SNo_Lt 0 y x z SNo_0 Hy Hx1 Hz Hx2 Hzy.
Theorem. (pos_mul_SNo_Lt') The following is provable:
∀x y z, SNo xSNo ySNo z0 < zx < yx * z < y * z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz Hzpos Hxy.
rewrite the current goal using mul_SNo_com x z Hx Hz (from left to right).
rewrite the current goal using mul_SNo_com y z Hy Hz (from left to right).
An exact proof term for the current goal is pos_mul_SNo_Lt z x y Hz Hzpos Hx Hy Hxy.
Theorem. (mul_SNo_Lt1_pos_Lt) The following is provable:
∀x y, SNo xSNo yx < 10 < yx * y < y
Proof:
Let x and y be given.
Assume Hx Hy Hx1 Hy0.
rewrite the current goal using mul_SNo_oneL y Hy (from right to left) at position 2.
We will prove x * y < 1 * y.
An exact proof term for the current goal is pos_mul_SNo_Lt' x 1 y Hx SNo_1 Hy Hy0 Hx1.
Theorem. (nonneg_mul_SNo_Le') The following is provable:
∀x y z, SNo xSNo ySNo z0 zx yx * z y * z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz Hznn Hxy.
rewrite the current goal using mul_SNo_com x z Hx Hz (from left to right).
rewrite the current goal using mul_SNo_com y z Hy Hz (from left to right).
An exact proof term for the current goal is nonneg_mul_SNo_Le z x y Hz Hznn Hx Hy Hxy.
Theorem. (mul_SNo_Le1_nonneg_Le) The following is provable:
∀x y, SNo xSNo yx 10 yx * y y
Proof:
Let x and y be given.
Assume Hx Hy Hx1 Hy0.
rewrite the current goal using mul_SNo_oneL y Hy (from right to left) at position 2.
We will prove x * y 1 * y.
An exact proof term for the current goal is nonneg_mul_SNo_Le' x 1 y Hx SNo_1 Hy Hy0 Hx1.
Theorem. (pos_mul_SNo_Lt2) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w0 < x0 < yx < zy < wx * y < z * w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw Hxpos Hypos Hxz Hyw.
Apply SNoLt_tra (x * y) (x * w) (z * w) (SNo_mul_SNo x y Hx Hy) (SNo_mul_SNo x w Hx Hw) (SNo_mul_SNo z w Hz Hw) to the current goal.
We will prove x * y < x * w.
An exact proof term for the current goal is pos_mul_SNo_Lt x y w Hx Hxpos Hy Hw Hyw.
We will prove x * w < z * w.
Apply pos_mul_SNo_Lt' x z w Hx Hz Hw to the current goal.
We will prove 0 < w.
An exact proof term for the current goal is SNoLt_tra 0 y w SNo_0 Hy Hw Hypos Hyw.
An exact proof term for the current goal is Hxz.
Theorem. (nonneg_mul_SNo_Le2) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w0 x0 yx zy wx * y z * w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw Hxnn Hynn Hxz Hyw.
Apply SNoLe_tra (x * y) (x * w) (z * w) (SNo_mul_SNo x y Hx Hy) (SNo_mul_SNo x w Hx Hw) (SNo_mul_SNo z w Hz Hw) to the current goal.
We will prove x * y x * w.
An exact proof term for the current goal is nonneg_mul_SNo_Le x y w Hx Hxnn Hy Hw Hyw.
We will prove x * w z * w.
Apply nonneg_mul_SNo_Le' x z w Hx Hz Hw to the current goal.
We will prove 0 w.
An exact proof term for the current goal is SNoLe_tra 0 y w SNo_0 Hy Hw Hynn Hyw.
An exact proof term for the current goal is Hxz.
Theorem. (mul_SNo_pos_pos) The following is provable:
∀x y, SNo xSNo y0 < x0 < y0 < x * y
Proof:
Let x and y be given.
Assume Hx Hy Hx0 Hy0.
We will prove 0 < x * y.
rewrite the current goal using add_SNo_0R 0 SNo_0 (from right to left).
We will prove 0 + 0 < x * y.
rewrite the current goal using add_SNo_0R (x * y) (SNo_mul_SNo x y Hx Hy) (from right to left).
We will prove 0 + 0 < x * y + 0.
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from right to left) at position 3.
rewrite the current goal using mul_SNo_zeroR x Hx (from right to left) at position 2.
rewrite the current goal using mul_SNo_zeroR y Hy (from right to left) at position 1.
We will prove y * 0 + x * 0 < x * y + 0 * 0.
rewrite the current goal using mul_SNo_com y 0 Hy SNo_0 (from left to right).
We will prove 0 * y + x * 0 < x * y + 0 * 0.
An exact proof term for the current goal is mul_SNo_Lt x y 0 0 Hx Hy SNo_0 SNo_0 Hx0 Hy0.
Theorem. (mul_SNo_pos_neg) The following is provable:
∀x y, SNo xSNo y0 < xy < 0x * y < 0
Proof:
Let x and y be given.
Assume Hx Hy Hx0 Hy0.
We will prove x * y < 0.
rewrite the current goal using add_SNo_0R 0 SNo_0 (from right to left).
rewrite the current goal using add_SNo_0L (x * y) (SNo_mul_SNo x y Hx Hy) (from right to left).
We will prove 0 + x * y < 0 + 0.
rewrite the current goal using mul_SNo_zeroR y Hy (from right to left) at position 3.
rewrite the current goal using mul_SNo_zeroR x Hx (from right to left) at position 2.
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from right to left) at position 1.
rewrite the current goal using mul_SNo_com y 0 Hy SNo_0 (from left to right).
We will prove 0 * 0 + x * y < x * 0 + 0 * y.
An exact proof term for the current goal is mul_SNo_Lt x 0 0 y Hx SNo_0 SNo_0 Hy Hx0 Hy0.
Theorem. (mul_SNo_neg_pos) The following is provable:
∀x y, SNo xSNo yx < 00 < yx * y < 0
Proof:
Let x and y be given.
Assume Hx Hy Hx0 Hy0.
We will prove x * y < 0.
rewrite the current goal using add_SNo_0R 0 SNo_0 (from right to left).
rewrite the current goal using add_SNo_0R (x * y) (SNo_mul_SNo x y Hx Hy) (from right to left).
We will prove x * y + 0 < 0 + 0.
rewrite the current goal using mul_SNo_zeroR x Hx (from right to left) at position 3.
rewrite the current goal using mul_SNo_zeroR y Hy (from right to left) at position 2.
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from right to left) at position 1.
rewrite the current goal using mul_SNo_com y 0 Hy SNo_0 (from left to right).
We will prove x * y + 0 * 0 < 0 * y + x * 0.
An exact proof term for the current goal is mul_SNo_Lt 0 y x 0 SNo_0 Hy Hx SNo_0 Hx0 Hy0.
Theorem. (mul_SNo_neg_neg) The following is provable:
∀x y, SNo xSNo yx < 0y < 00 < x * y
Proof:
Let x and y be given.
Assume Hx Hy Hx0 Hy0.
We will prove 0 < x * y.
rewrite the current goal using add_SNo_0R 0 SNo_0 (from right to left).
We will prove 0 + 0 < x * y.
rewrite the current goal using add_SNo_0L (x * y) (SNo_mul_SNo x y Hx Hy) (from right to left).
We will prove 0 + 0 < 0 + x * y.
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from right to left) at position 3.
rewrite the current goal using mul_SNo_zeroR y Hy (from right to left) at position 2.
rewrite the current goal using mul_SNo_zeroR x Hx (from right to left) at position 1.
We will prove x * 0 + y * 0 < 0 * 0 + x * y.
rewrite the current goal using mul_SNo_com y 0 Hy SNo_0 (from left to right).
We will prove x * 0 + 0 * y < 0 * 0 + x * y.
An exact proof term for the current goal is mul_SNo_Lt 0 0 x y SNo_0 SNo_0 Hx Hy Hx0 Hy0.
Theorem. (mul_SNo_nonneg_nonneg) The following is provable:
∀x y, SNo xSNo y0 x0 y0 x * y
Proof:
Let x and y be given.
Assume Hx Hy Hxnn Hynn.
Apply SNoLeE 0 x SNo_0 Hx Hxnn to the current goal.
Assume H1: 0 < x.
Apply SNoLeE 0 y SNo_0 Hy Hynn to the current goal.
Assume H2: 0 < y.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is mul_SNo_pos_pos x y Hx Hy H1 H2.
Assume H2: 0 = y.
rewrite the current goal using H2 (from right to left).
rewrite the current goal using mul_SNo_zeroR x Hx (from left to right).
Apply SNoLe_ref to the current goal.
Assume H1: 0 = x.
rewrite the current goal using H1 (from right to left).
rewrite the current goal using mul_SNo_zeroL y Hy (from left to right).
Apply SNoLe_ref to the current goal.
Theorem. (mul_SNo_nonpos_pos) The following is provable:
∀x y, SNo xSNo yx 00 < yx * y 0
Proof:
Let x and y be given.
Assume Hx Hy Hxnp Hypos.
Apply SNoLtLe_or x 0 Hx SNo_0 to the current goal.
Assume H1: x < 0.
Apply SNoLtLe to the current goal.
We will prove x * y < 0.
An exact proof term for the current goal is mul_SNo_neg_pos x y Hx Hy H1 Hypos.
Assume H1: 0 x.
We prove the intermediate claim L1: x = 0.
Apply SNoLe_antisym x 0 Hx SNo_0 to the current goal.
An exact proof term for the current goal is Hxnp.
An exact proof term for the current goal is H1.
rewrite the current goal using L1 (from left to right).
We will prove 0 * y 0.
rewrite the current goal using mul_SNo_zeroL y Hy (from left to right).
Apply SNoLe_ref to the current goal.
Theorem. (mul_SNo_nonpos_neg) The following is provable:
∀x y, SNo xSNo yx 0y < 00 x * y
Proof:
Let x and y be given.
Assume Hx Hy Hxnp Hyneg.
Apply SNoLtLe_or x 0 Hx SNo_0 to the current goal.
Assume H1: x < 0.
Apply SNoLtLe to the current goal.
We will prove 0 < x * y.
An exact proof term for the current goal is mul_SNo_neg_neg x y Hx Hy H1 Hyneg.
Assume H1: 0 x.
We prove the intermediate claim L1: x = 0.
Apply SNoLe_antisym x 0 Hx SNo_0 to the current goal.
An exact proof term for the current goal is Hxnp.
An exact proof term for the current goal is H1.
rewrite the current goal using L1 (from left to right).
We will prove 0 0 * y.
rewrite the current goal using mul_SNo_zeroL y Hy (from left to right).
Apply SNoLe_ref to the current goal.
Theorem. (nonpos_mul_SNo_Le) The following is provable:
∀x y z, SNo xx 0SNo ySNo zz yx * y x * z
Proof:
Let x, y and z be given.
Assume Hx Hxnp Hy Hz Hzy.
Apply SNoLtLe_or x 0 Hx SNo_0 to the current goal.
Assume H1: x < 0.
Apply SNoLtLe_or z y Hz Hy to the current goal.
Assume H2: z < y.
Apply SNoLtLe to the current goal.
We will prove x * y < x * z.
An exact proof term for the current goal is neg_mul_SNo_Lt x y z Hx H1 Hy Hz H2.
Assume H2: y z.
We prove the intermediate claim L1: y = z.
Apply SNoLe_antisym y z Hy Hz to the current goal.
An exact proof term for the current goal is H2.
An exact proof term for the current goal is Hzy.
rewrite the current goal using L1 (from left to right).
Apply SNoLe_ref to the current goal.
Assume H1: 0 x.
We prove the intermediate claim L1: x = 0.
Apply SNoLe_antisym x 0 Hx SNo_0 to the current goal.
An exact proof term for the current goal is Hxnp.
An exact proof term for the current goal is H1.
rewrite the current goal using L1 (from left to right).
We will prove 0 * y 0 * z.
rewrite the current goal using mul_SNo_zeroL y Hy (from left to right).
rewrite the current goal using mul_SNo_zeroL z Hz (from left to right).
Apply SNoLe_ref to the current goal.
Theorem. (SNo_zero_or_sqr_pos) The following is provable:
∀x, SNo xx = 0 0 < x * x
Proof:
Let x be given.
Assume Hx.
Apply SNoLt_trichotomy_or_impred x 0 Hx SNo_0 to the current goal.
Assume H1: x < 0.
Apply orIR to the current goal.
Apply mul_SNo_neg_neg to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H1.
Assume H1: x = 0.
Apply orIL to the current goal.
An exact proof term for the current goal is H1.
Assume H1: 0 < x.
Apply orIR to the current goal.
Apply mul_SNo_pos_pos to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H1.
Theorem. (SNo_pos_sqr_uniq) The following is provable:
∀x y, SNo xSNo y0 < x0 < yx * x = y * yx = y
Proof:
Let x and y be given.
Assume Hx Hy Hxpos Hypos.
Assume H1: x * x = y * y.
Apply SNoLt_trichotomy_or_impred x y Hx Hy to the current goal.
Assume H2: x < y.
We will prove False.
Apply SNoLt_irref (x * x) to the current goal.
We will prove x * x < x * x.
rewrite the current goal using H1 (from left to right) at position 2.
We will prove x * x < y * y.
An exact proof term for the current goal is pos_mul_SNo_Lt2 x x y y Hx Hx Hy Hy Hxpos Hxpos H2 H2.
Assume H2: x = y.
An exact proof term for the current goal is H2.
Assume H2: y < x.
We will prove False.
Apply SNoLt_irref (x * x) to the current goal.
We will prove x * x < x * x.
rewrite the current goal using H1 (from left to right) at position 1.
We will prove y * y < x * x.
An exact proof term for the current goal is pos_mul_SNo_Lt2 y y x x Hy Hy Hx Hx Hypos Hypos H2 H2.
Theorem. (SNo_nonneg_sqr_uniq) The following is provable:
∀x y, SNo xSNo y0 x0 yx * x = y * yx = y
Proof:
Let x and y be given.
Assume Hx Hy Hxnn Hynn.
Apply SNoLeE 0 x SNo_0 Hx Hxnn to the current goal.
Assume H1: 0 < x.
Apply SNoLeE 0 y SNo_0 Hy Hynn to the current goal.
Assume H2: 0 < y.
An exact proof term for the current goal is SNo_pos_sqr_uniq x y Hx Hy H1 H2.
Assume H2: 0 = y.
rewrite the current goal using H2 (from right to left).
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from left to right).
Assume H3: x * x = 0.
We will prove x = 0.
Apply SNo_zero_or_sqr_pos x Hx to the current goal.
Assume H4: x = 0.
An exact proof term for the current goal is H4.
Assume H4: 0 < x * x.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
rewrite the current goal using H3 (from right to left) at position 2.
An exact proof term for the current goal is H4.
Assume H1: 0 = x.
rewrite the current goal using H1 (from right to left).
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from left to right).
Assume H2: 0 = y * y.
We will prove 0 = y.
Apply SNo_zero_or_sqr_pos y Hy to the current goal.
Assume H3: y = 0.
Use symmetry.
An exact proof term for the current goal is H3.
Assume H3: 0 < y * y.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
rewrite the current goal using H2 (from left to right) at position 2.
An exact proof term for the current goal is H3.
Theorem. (SNo_foil) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w(x + y) * (z + w) = x * z + x * w + y * z + y * w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
Use transitivity with (x + y) * z + (x + y) * w, (x * z + y * z) + (x + y) * w, and (x * z + y * z) + (x * w + y * w).
An exact proof term for the current goal is mul_SNo_distrL (x + y) z w (SNo_add_SNo x y Hx Hy) Hz Hw.
Use f_equal.
An exact proof term for the current goal is mul_SNo_distrR x y z Hx Hy Hz.
Use f_equal.
An exact proof term for the current goal is mul_SNo_distrR x y w Hx Hy Hw.
We will prove (x * z + y * z) + (x * w + y * w) = x * z + (x * w + (y * z + y * w)).
rewrite the current goal using add_SNo_com_4_inner_mid (x * z) (y * z) (x * w) (y * w) (SNo_mul_SNo x z Hx Hz) (SNo_mul_SNo y z Hy Hz) (SNo_mul_SNo x w Hx Hw) (SNo_mul_SNo y w Hy Hw) (from left to right).
We will prove (x * z + x * w) + (y * z + y * w) = x * z + (x * w + (y * z + y * w)).
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc (x * z) (x * w) (y * z + y * w) (SNo_mul_SNo x z Hx Hz) (SNo_mul_SNo x w Hx Hw) (SNo_add_SNo (y * z) (y * w) (SNo_mul_SNo y z Hy Hz) (SNo_mul_SNo y w Hy Hw)).
Theorem. (mul_SNo_minus_minus) The following is provable:
∀x y, SNo xSNo y(- x) * (- y) = x * y
Proof:
Let x and y be given.
Assume Hx Hy.
rewrite the current goal using mul_SNo_minus_distrL x (- y) Hx (SNo_minus_SNo y Hy) (from left to right).
We will prove - (x * (- y)) = x * y.
rewrite the current goal using mul_SNo_minus_distrR x y Hx Hy (from left to right).
We will prove - - (x * y) = x * y.
An exact proof term for the current goal is minus_SNo_invol (x * y) (SNo_mul_SNo x y Hx Hy).
Theorem. (mul_SNo_com_3_0_1) The following is provable:
∀x y z, SNo xSNo ySNo zx * y * z = y * x * z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
rewrite the current goal using mul_SNo_assoc x y z Hx Hy Hz (from left to right).
rewrite the current goal using mul_SNo_assoc y x z Hy Hx Hz (from left to right).
Use f_equal.
An exact proof term for the current goal is mul_SNo_com x y Hx Hy.
Theorem. (mul_SNo_com_3b_1_2) The following is provable:
∀x y z, SNo xSNo ySNo z(x * y) * z = (x * z) * y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
rewrite the current goal using mul_SNo_assoc x y z Hx Hy Hz (from right to left).
rewrite the current goal using mul_SNo_assoc x z y Hx Hz Hy (from right to left).
Use f_equal.
An exact proof term for the current goal is mul_SNo_com y z Hy Hz.
Theorem. (mul_SNo_com_4_inner_mid) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w(x * y) * (z * w) = (x * z) * (y * w)
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
rewrite the current goal using mul_SNo_assoc (x * y) z w (SNo_mul_SNo x y Hx Hy) Hz Hw (from left to right).
We will prove ((x * y) * z) * w = (x * z) * (y * w).
rewrite the current goal using mul_SNo_com_3b_1_2 x y z Hx Hy Hz (from left to right).
We will prove ((x * z) * y) * w = (x * z) * (y * w).
Use symmetry.
An exact proof term for the current goal is mul_SNo_assoc (x * z) y w (SNo_mul_SNo x z Hx Hz) Hy Hw.
Theorem. (SNo_foil_mm) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w(x + - y) * (z + - w) = x * z + - x * w + - y * z + y * w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
We prove the intermediate claim Lmy: SNo (- y).
An exact proof term for the current goal is SNo_minus_SNo y Hy.
We prove the intermediate claim Lmw: SNo (- w).
An exact proof term for the current goal is SNo_minus_SNo w Hw.
rewrite the current goal using SNo_foil x (- y) z (- w) Hx Lmy Hz Lmw (from left to right).
We will prove x * z + x * (- w) + (- y) * z + (- y) * (- w) = x * z + - x * w + - y * z + y * w.
rewrite the current goal using mul_SNo_minus_minus y w Hy Hw (from left to right).
rewrite the current goal using mul_SNo_minus_distrL y z Hy Hz (from left to right).
rewrite the current goal using mul_SNo_minus_distrR x w Hx Hw (from left to right).
Use reflexivity.
Theorem. (mul_SNo_nonzero_cancel) The following is provable:
∀x y z, SNo xx 0SNo ySNo zx * y = x * zy = z
Proof:
Let x, y and z be given.
Assume Hx Hxn0 Hy Hz Hxyz.
Apply SNoLt_trichotomy_or_impred y z Hy Hz to the current goal.
Assume H1: y < z.
We will prove False.
Apply SNoLt_trichotomy_or_impred x 0 Hx SNo_0 to the current goal.
Assume H2: x < 0.
Apply SNoLt_irref (x * y) to the current goal.
We will prove x * y < x * y.
rewrite the current goal using Hxyz (from left to right) at position 1.
We will prove x * z < x * y.
An exact proof term for the current goal is neg_mul_SNo_Lt x z y Hx H2 Hz Hy H1.
Assume H2: x = 0.
An exact proof term for the current goal is Hxn0 H2.
Assume H2: 0 < x.
Apply SNoLt_irref (x * y) to the current goal.
We will prove x * y < x * y.
rewrite the current goal using Hxyz (from left to right) at position 2.
We will prove x * y < x * z.
An exact proof term for the current goal is pos_mul_SNo_Lt x y z Hx H2 Hy Hz H1.
Assume H1.
An exact proof term for the current goal is H1.
Assume H1: z < y.
We will prove False.
Apply SNoLt_trichotomy_or_impred x 0 Hx SNo_0 to the current goal.
Assume H2: x < 0.
Apply SNoLt_irref (x * y) to the current goal.
We will prove x * y < x * y.
rewrite the current goal using Hxyz (from left to right) at position 2.
We will prove x * y < x * z.
An exact proof term for the current goal is neg_mul_SNo_Lt x y z Hx H2 Hy Hz H1.
Assume H2: x = 0.
An exact proof term for the current goal is Hxn0 H2.
Assume H2: 0 < x.
Apply SNoLt_irref (x * y) to the current goal.
We will prove x * y < x * y.
rewrite the current goal using Hxyz (from left to right) at position 1.
We will prove x * z < x * y.
An exact proof term for the current goal is pos_mul_SNo_Lt x z y Hx H2 Hz Hy H1.
Theorem. (mul_SNoCutP_lem) The following is provable:
∀Lx Rx Ly Ry x y, SNoCutP Lx RxSNoCutP Ly Ryx = SNoCut Lx Rxy = SNoCut Ly RySNoCutP ({w 0 * y + x * w 1 + - w 0 * w 1|wLx Ly} {z 0 * y + x * z 1 + - z 0 * z 1|zRx Ry}) ({w 0 * y + x * w 1 + - w 0 * w 1|wLx Ry} {z 0 * y + x * z 1 + - z 0 * z 1|zRx Ly}) x * y = SNoCut ({w 0 * y + x * w 1 + - w 0 * w 1|wLx Ly} {z 0 * y + x * z 1 + - z 0 * z 1|zRx Ry}) ({w 0 * y + x * w 1 + - w 0 * w 1|wLx Ry} {z 0 * y + x * z 1 + - z 0 * z 1|zRx Ly}) ∀q : prop, (∀LxLy' RxRy' LxRy' RxLy', (uLxLy', ∀p : prop, (wLx, w'Ly, SNo wSNo w'w < xw' < yu = w * y + x * w' + - w * w'p)p)(wLx, w'Ly, w * y + x * w' + - w * w' LxLy')(uRxRy', ∀p : prop, (zRx, z'Ry, SNo zSNo z'x < zy < z'u = z * y + x * z' + - z * z'p)p)(zRx, z'Ry, z * y + x * z' + - z * z' RxRy')(uLxRy', ∀p : prop, (wLx, zRy, SNo wSNo zw < xy < zu = w * y + x * z + - w * zp)p)(wLx, zRy, w * y + x * z + - w * z LxRy')(uRxLy', ∀p : prop, (zRx, wLy, SNo zSNo wx < zw < yu = z * y + x * w + - z * wp)p)(zRx, wLy, z * y + x * w + - z * w RxLy')SNoCutP (LxLy' RxRy') (LxRy' RxLy')x * y = SNoCut (LxLy' RxRy') (LxRy' RxLy')q)q
Proof:
Let Lx, Rx, Ly, Ry, x and y be given.
Assume HLRx HLRy Hxe Hye.
Apply HLRx to the current goal.
Assume H.
Apply H to the current goal.
Assume HLRx1: wLx, SNo w.
Assume HLRx2: zRx, SNo z.
Assume HLRx3: wLx, zRx, w < z.
Apply HLRy to the current goal.
Assume H.
Apply H to the current goal.
Assume HLRy1: wLy, SNo w.
Assume HLRy2: zRy, SNo z.
Assume HLRy3: wLy, zRy, w < z.
Apply SNoCutP_SNoCut_impred Lx Rx HLRx to the current goal.
rewrite the current goal using Hxe (from right to left).
Assume Hx1: SNo x.
Assume Hx2: SNoLev x ordsucc ((wLxordsucc (SNoLev w)) (zRxordsucc (SNoLev z))).
Assume Hx3: wLx, w < x.
Assume Hx4: zRx, x < z.
Assume Hx5: (∀u, SNo u(wLx, w < u)(zRx, u < z)SNoLev x SNoLev u SNoEq_ (SNoLev x) x u).
Apply SNoCutP_SNoCut_impred Ly Ry HLRy to the current goal.
rewrite the current goal using Hye (from right to left).
Assume Hy1: SNo y.
Assume Hy2: SNoLev y ordsucc ((wLyordsucc (SNoLev w)) (zRyordsucc (SNoLev z))).
Assume Hy3: wLy, w < y.
Assume Hy4: zRy, y < z.
Assume Hy5: (∀u, SNo u(wLy, w < u)(zRy, u < z)SNoLev y SNoLev u SNoEq_ (SNoLev y) y u).
Set LxLy' to be the term {w 0 * y + x * w 1 + - w 0 * w 1|wLx Ly}.
Set RxRy' to be the term {z 0 * y + x * z 1 + - z 0 * z 1|zRx Ry}.
Set LxRy' to be the term {w 0 * y + x * w 1 + - w 0 * w 1|wLx Ry}.
Set RxLy' to be the term {z 0 * y + x * z 1 + - z 0 * z 1|zRx Ly}.
We prove the intermediate claim LxLy'E: uLxLy', ∀p : prop, (wLx, w'Ly, SNo wSNo w'w < xw' < yu = w * y + x * w' + - w * w'p)p.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp.
Apply ReplE_impred (Lx Ly) (λw ⇒ (w 0) * y + x * (w 1) + - (w 0) * (w 1)) u Hu to the current goal.
Let ww' be given.
Assume Hww': ww' Lx Ly.
Assume Hue: u = (ww' 0) * y + x * (ww' 1) + - (ww' 0) * (ww' 1).
We prove the intermediate claim Lww'0: ww' 0 Lx.
An exact proof term for the current goal is ap0_Sigma Lx (λ_ ⇒ Ly) ww' Hww'.
We prove the intermediate claim Lww'1: ww' 1 Ly.
An exact proof term for the current goal is ap1_Sigma Lx (λ_ ⇒ Ly) ww' Hww'.
Apply Hp (ww' 0) Lww'0 (ww' 1) Lww'1 to the current goal.
We will prove SNo (ww' 0).
An exact proof term for the current goal is HLRx1 (ww' 0) Lww'0.
We will prove SNo (ww' 1).
An exact proof term for the current goal is HLRy1 (ww' 1) Lww'1.
We will prove ww' 0 < x.
An exact proof term for the current goal is Hx3 (ww' 0) Lww'0.
We will prove ww' 1 < y.
An exact proof term for the current goal is Hy3 (ww' 1) Lww'1.
An exact proof term for the current goal is Hue.
We prove the intermediate claim LxLy'I: wLx, w'Ly, w * y + x * w' + - w * w' LxLy'.
Let w be given.
Assume Hw.
Let w' be given.
Assume Hw'.
rewrite the current goal using tuple_2_0_eq w w' (from right to left).
rewrite the current goal using tuple_2_1_eq w w' (from right to left) at positions 2 and 4.
Apply ReplI (Lx Ly) (λw ⇒ w 0 * y + x * w 1 + - w 0 * w 1) (w,w') to the current goal.
We will prove (w,w') Lx Ly.
An exact proof term for the current goal is tuple_2_setprod Lx Ly w Hw w' Hw'.
We prove the intermediate claim RxRy'E: uRxRy', ∀p : prop, (zRx, z'Ry, SNo zSNo z'x < zy < z'u = z * y + x * z' + - z * z'p)p.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp.
Apply ReplE_impred (Rx Ry) (λz ⇒ (z 0) * y + x * (z 1) + - (z 0) * (z 1)) u Hu to the current goal.
Let zz' be given.
Assume Hzz': zz' Rx Ry.
Assume Hue: u = (zz' 0) * y + x * (zz' 1) + - (zz' 0) * (zz' 1).
We prove the intermediate claim Lzz'0: zz' 0 Rx.
An exact proof term for the current goal is ap0_Sigma Rx (λ_ ⇒ Ry) zz' Hzz'.
We prove the intermediate claim Lzz'1: zz' 1 Ry.
An exact proof term for the current goal is ap1_Sigma Rx (λ_ ⇒ Ry) zz' Hzz'.
Apply Hp (zz' 0) Lzz'0 (zz' 1) Lzz'1 to the current goal.
We will prove SNo (zz' 0).
An exact proof term for the current goal is HLRx2 (zz' 0) Lzz'0.
We will prove SNo (zz' 1).
An exact proof term for the current goal is HLRy2 (zz' 1) Lzz'1.
We will prove x < zz' 0.
An exact proof term for the current goal is Hx4 (zz' 0) Lzz'0.
We will prove y < zz' 1.
An exact proof term for the current goal is Hy4 (zz' 1) Lzz'1.
An exact proof term for the current goal is Hue.
We prove the intermediate claim RxRy'I: zRx, z'Ry, z * y + x * z' + - z * z' RxRy'.
Let z be given.
Assume Hz.
Let z' be given.
Assume Hz'.
rewrite the current goal using tuple_2_0_eq z z' (from right to left).
rewrite the current goal using tuple_2_1_eq z z' (from right to left) at positions 2 and 4.
Apply ReplI (Rx Ry) (λz ⇒ z 0 * y + x * z 1 + - z 0 * z 1) (z,z') to the current goal.
We will prove (z,z') Rx Ry.
An exact proof term for the current goal is tuple_2_setprod Rx Ry z Hz z' Hz'.
We prove the intermediate claim LxRy'E: uLxRy', ∀p : prop, (wLx, zRy, SNo wSNo zw < xy < zu = w * y + x * z + - w * zp)p.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp.
Apply ReplE_impred (Lx Ry) (λw ⇒ (w 0) * y + x * (w 1) + - (w 0) * (w 1)) u Hu to the current goal.
Let wz be given.
Assume Hwz: wz Lx Ry.
Assume Hue: u = (wz 0) * y + x * (wz 1) + - (wz 0) * (wz 1).
We prove the intermediate claim Lwz0: wz 0 Lx.
An exact proof term for the current goal is ap0_Sigma Lx (λ_ ⇒ Ry) wz Hwz.
We prove the intermediate claim Lwz1: wz 1 Ry.
An exact proof term for the current goal is ap1_Sigma Lx (λ_ ⇒ Ry) wz Hwz.
Apply Hp (wz 0) Lwz0 (wz 1) Lwz1 to the current goal.
We will prove SNo (wz 0).
An exact proof term for the current goal is HLRx1 (wz 0) Lwz0.
We will prove SNo (wz 1).
An exact proof term for the current goal is HLRy2 (wz 1) Lwz1.
We will prove wz 0 < x.
An exact proof term for the current goal is Hx3 (wz 0) Lwz0.
We will prove y < wz 1.
An exact proof term for the current goal is Hy4 (wz 1) Lwz1.
An exact proof term for the current goal is Hue.
We prove the intermediate claim LxRy'I: wLx, zRy, w * y + x * z + - w * z LxRy'.
Let w be given.
Assume Hw.
Let z be given.
Assume Hz.
rewrite the current goal using tuple_2_0_eq w z (from right to left).
rewrite the current goal using tuple_2_1_eq w z (from right to left) at positions 2 and 4.
Apply ReplI (Lx Ry) (λw ⇒ w 0 * y + x * w 1 + - w 0 * w 1) (w,z) to the current goal.
We will prove (w,z) Lx Ry.
An exact proof term for the current goal is tuple_2_setprod Lx Ry w Hw z Hz.
We prove the intermediate claim RxLy'E: uRxLy', ∀p : prop, (zRx, wLy, SNo zSNo wx < zw < yu = z * y + x * w + - z * wp)p.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp.
Apply ReplE_impred (Rx Ly) (λz ⇒ (z 0) * y + x * (z 1) + - (z 0) * (z 1)) u Hu to the current goal.
Let zw be given.
Assume Hzw: zw Rx Ly.
Assume Hue: u = (zw 0) * y + x * (zw 1) + - (zw 0) * (zw 1).
We prove the intermediate claim Lzw0: zw 0 Rx.
An exact proof term for the current goal is ap0_Sigma Rx (λ_ ⇒ Ly) zw Hzw.
We prove the intermediate claim Lzw1: zw 1 Ly.
An exact proof term for the current goal is ap1_Sigma Rx (λ_ ⇒ Ly) zw Hzw.
Apply Hp (zw 0) Lzw0 (zw 1) Lzw1 to the current goal.
We will prove SNo (zw 0).
An exact proof term for the current goal is HLRx2 (zw 0) Lzw0.
We will prove SNo (zw 1).
An exact proof term for the current goal is HLRy1 (zw 1) Lzw1.
We will prove x < zw 0.
An exact proof term for the current goal is Hx4 (zw 0) Lzw0.
We will prove zw 1 < y.
An exact proof term for the current goal is Hy3 (zw 1) Lzw1.
An exact proof term for the current goal is Hue.
We prove the intermediate claim RxLy'I: zRx, wLy, z * y + x * w + - z * w RxLy'.
Let z be given.
Assume Hz.
Let w be given.
Assume Hw.
rewrite the current goal using tuple_2_0_eq z w (from right to left).
rewrite the current goal using tuple_2_1_eq z w (from right to left) at positions 2 and 4.
Apply ReplI (Rx Ly) (λw ⇒ w 0 * y + x * w 1 + - w 0 * w 1) (z,w) to the current goal.
We will prove (z,w) Rx Ly.
An exact proof term for the current goal is tuple_2_setprod Rx Ly z Hz w Hw.
We prove the intermediate claim L1: SNoCutP (LxLy' RxRy') (LxRy' RxLy').
We will prove (wLxLy' RxRy', SNo w) (zLxRy' RxLy', SNo z) (wLxLy' RxRy', zLxRy' RxLy', w < z).
Apply and3I to the current goal.
Let w be given.
Apply binunionE' to the current goal.
Assume Hw: w LxLy'.
Apply LxLy'E w Hw to the current goal.
Let w' be given.
Assume Hw': w' Lx.
Let w'' be given.
Assume Hw'': w'' Ly.
Assume Hw'1: SNo w'.
Assume Hw''1: SNo w''.
Assume Hw'2: w' < x.
Assume Hw''2: w'' < y.
Assume Hwe.
rewrite the current goal using Hwe (from left to right).
We will prove SNo (w' * y + x * w'' + - w' * w'').
Apply SNo_add_SNo_3 to the current goal.
An exact proof term for the current goal is SNo_mul_SNo w' y Hw'1 Hy1.
An exact proof term for the current goal is SNo_mul_SNo x w'' Hx1 Hw''1.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is SNo_mul_SNo w' w'' Hw'1 Hw''1.
Assume Hw: w RxRy'.
Apply RxRy'E w Hw to the current goal.
Let z' be given.
Assume Hz': z' Rx.
Let z'' be given.
Assume Hz'': z'' Ry.
Assume Hz'1: SNo z'.
Assume Hz''1: SNo z''.
Assume Hz'2: x < z'.
Assume Hz''2: y < z''.
Assume Hwe.
rewrite the current goal using Hwe (from left to right).
We will prove SNo (z' * y + x * z'' + - z' * z'').
Apply SNo_add_SNo_3 to the current goal.
An exact proof term for the current goal is SNo_mul_SNo z' y Hz'1 Hy1.
An exact proof term for the current goal is SNo_mul_SNo x z'' Hx1 Hz''1.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is SNo_mul_SNo z' z'' Hz'1 Hz''1.
Let z be given.
Apply binunionE' to the current goal.
Assume Hz: z LxRy'.
Apply LxRy'E z Hz to the current goal.
Let w' be given.
Assume Hw': w' Lx.
Let z' be given.
Assume Hz': z' Ry.
Assume Hw'1: SNo w'.
Assume Hz'1: SNo z'.
Assume Hw'2: w' < x.
Assume Hz'2: y < z'.
Assume Hze.
rewrite the current goal using Hze (from left to right).
We will prove SNo (w' * y + x * z' + - w' * z').
Apply SNo_add_SNo_3 to the current goal.
An exact proof term for the current goal is SNo_mul_SNo w' y Hw'1 Hy1.
An exact proof term for the current goal is SNo_mul_SNo x z' Hx1 Hz'1.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is SNo_mul_SNo w' z' Hw'1 Hz'1.
Assume Hz: z RxLy'.
Apply RxLy'E z Hz to the current goal.
Let z' be given.
Assume Hz': z' Rx.
Let w' be given.
Assume Hw': w' Ly.
Assume Hz'1: SNo z'.
Assume Hw'1: SNo w'.
Assume Hz'2: x < z'.
Assume Hw'2: w' < y.
Assume Hze.
rewrite the current goal using Hze (from left to right).
We will prove SNo (z' * y + x * w' + - z' * w').
Apply SNo_add_SNo_3 to the current goal.
An exact proof term for the current goal is SNo_mul_SNo z' y Hz'1 Hy1.
An exact proof term for the current goal is SNo_mul_SNo x w' Hx1 Hw'1.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is SNo_mul_SNo z' w' Hz'1 Hw'1.
Let w be given.
Apply binunionE' to the current goal.
Assume Hw: w LxLy'.
Apply LxLy'E w Hw to the current goal.
Let w' be given.
Assume Hw': w' Lx.
Let w'' be given.
Assume Hw'': w'' Ly.
Assume Hw'1: SNo w'.
Assume Hw''1: SNo w''.
Assume Hw'2: w' < x.
Assume Hw''2: w'' < y.
Assume Hwe.
rewrite the current goal using Hwe (from left to right).
Let z be given.
Apply binunionE' to the current goal.
Assume Hz: z LxRy'.
Apply LxRy'E z Hz to the current goal.
Let w''' be given.
Assume Hw''': w''' Lx.
Let z' be given.
Assume Hz': z' Ry.
Assume Hw'''1: SNo w'''.
Assume Hz'1: SNo z'.
Assume Hw'''2: w''' < x.
Assume Hz'2: y < z'.
Assume Hze.
rewrite the current goal using Hze (from left to right).
We will prove w' * y + x * w'' + - w' * w'' < w''' * y + x * z' + - w''' * z'.
Apply add_SNo_minus_Lt12b3 (w' * y) (x * w'') (w' * w'') (w''' * y) (x * z') (w''' * z') (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x w'' Hx1 Hw''1) (SNo_mul_SNo w' w'' Hw'1 Hw''1) (SNo_mul_SNo w''' y Hw'''1 Hy1) (SNo_mul_SNo x z' Hx1 Hz'1) (SNo_mul_SNo w''' z' Hw'''1 Hz'1) to the current goal.
We will prove w' * y + x * w'' + w''' * z' < w''' * y + x * z' + w' * w''.
Apply SNoLt_tra (w' * y + x * w'' + w''' * z') (x * y + w' * w'' + w''' * z') (w''' * y + x * z' + w' * w'') (SNo_add_SNo_3 (w' * y) (x * w'') (w''' * z') (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x w'' Hx1 Hw''1) (SNo_mul_SNo w''' z' Hw'''1 Hz'1)) (SNo_add_SNo_3 (x * y) (w' * w'') (w''' * z') (SNo_mul_SNo x y Hx1 Hy1) (SNo_mul_SNo w' w'' Hw'1 Hw''1) (SNo_mul_SNo w''' z' Hw'''1 Hz'1)) (SNo_add_SNo_3 (w''' * y) (x * z') (w' * w'') (SNo_mul_SNo w''' y Hw'''1 Hy1) (SNo_mul_SNo x z' Hx1 Hz'1) (SNo_mul_SNo w' w'' Hw'1 Hw''1)) to the current goal.
We will prove w' * y + x * w'' + w''' * z' < x * y + w' * w'' + w''' * z'.
rewrite the current goal using add_SNo_rotate_3_1 (w' * y) (x * w'') (w''' * z') (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x w'' Hx1 Hw''1) (SNo_mul_SNo w''' z' Hw'''1 Hz'1) (from left to right).
rewrite the current goal using add_SNo_rotate_3_1 (x * y) (w' * w'') (w''' * z') (SNo_mul_SNo x y Hx1 Hy1) (SNo_mul_SNo w' w'' Hw'1 Hw''1) (SNo_mul_SNo w''' z' Hw'''1 Hz'1) (from left to right).
We will prove w''' * z' + w' * y + x * w'' < w''' * z' + x * y + w' * w''.
Apply add_SNo_Lt2 (w''' * z') (w' * y + x * w'') (x * y + w' * w'') (SNo_mul_SNo w''' z' Hw'''1 Hz'1) (SNo_add_SNo (w' * y) (x * w'') (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x w'' Hx1 Hw''1)) (SNo_add_SNo (x * y) (w' * w'') (SNo_mul_SNo x y Hx1 Hy1) (SNo_mul_SNo w' w'' Hw'1 Hw''1)) to the current goal.
We will prove w' * y + x * w'' < x * y + w' * w''.
An exact proof term for the current goal is mul_SNo_Lt x y w' w'' Hx1 Hy1 Hw'1 Hw''1 Hw'2 Hw''2.
We will prove x * y + w' * w'' + w''' * z' < w''' * y + x * z' + w' * w''.
rewrite the current goal using add_SNo_com_3_0_1 (x * y) (w' * w'') (w''' * z') (SNo_mul_SNo x y Hx1 Hy1) (SNo_mul_SNo w' w'' Hw'1 Hw''1) (SNo_mul_SNo w''' z' Hw'''1 Hz'1) (from left to right).
rewrite the current goal using add_SNo_rotate_3_1 (w''' * y) (x * z') (w' * w'') (SNo_mul_SNo w''' y Hw'''1 Hy1) (SNo_mul_SNo x z' Hx1 Hz'1) (SNo_mul_SNo w' w'' Hw'1 Hw''1) (from left to right).
We will prove w' * w'' + x * y + w''' * z' < w' * w'' + w''' * y + x * z'.
Apply add_SNo_Lt2 (w' * w'') (x * y + w''' * z') (w''' * y + x * z') (SNo_mul_SNo w' w'' Hw'1 Hw''1) (SNo_add_SNo (x * y) (w''' * z') (SNo_mul_SNo x y Hx1 Hy1) (SNo_mul_SNo w''' z' Hw'''1 Hz'1)) (SNo_add_SNo (w''' * y) (x * z') (SNo_mul_SNo w''' y Hw'''1 Hy1) (SNo_mul_SNo x z' Hx1 Hz'1)) to the current goal.
We will prove x * y + w''' * z' < w''' * y + x * z'.
rewrite the current goal using add_SNo_com (x * y) (w''' * z') (SNo_mul_SNo x y Hx1 Hy1) (SNo_mul_SNo w''' z' Hw'''1 Hz'1) (from left to right).
rewrite the current goal using add_SNo_com (w''' * y) (x * z') (SNo_mul_SNo w''' y Hw'''1 Hy1) (SNo_mul_SNo x z' Hx1 Hz'1) (from left to right).
We will prove w''' * z' + x * y < x * z' + w''' * y.
An exact proof term for the current goal is mul_SNo_Lt x z' w''' y Hx1 Hz'1 Hw'''1 Hy1 Hw'''2 Hz'2.
Assume Hz: z RxLy'.
Apply RxLy'E z Hz to the current goal.
Let z' be given.
Assume Hz': z' Rx.
Let w''' be given.
Assume Hw''': w''' Ly.
Assume Hz'1: SNo z'.
Assume Hw'''1: SNo w'''.
Assume Hz'2: x < z'.
Assume Hw'''2: w''' < y.
Assume Hze.
rewrite the current goal using Hze (from left to right).
We will prove w' * y + x * w'' + - w' * w'' < z' * y + x * w''' + - z' * w'''.
Apply add_SNo_minus_Lt12b3 (w' * y) (x * w'') (w' * w'') (z' * y) (x * w''') (z' * w''') (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x w'' Hx1 Hw''1) (SNo_mul_SNo w' w'' Hw'1 Hw''1) (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x w''' Hx1 Hw'''1) (SNo_mul_SNo z' w''' Hz'1 Hw'''1) to the current goal.
We will prove w' * y + x * w'' + z' * w''' < z' * y + x * w''' + w' * w''.
Apply SNoLt_tra (w' * y + x * w'' + z' * w''') (z' * w''' + x * y + w' * w'') (z' * y + x * w''' + w' * w'') (SNo_add_SNo_3 (w' * y) (x * w'') (z' * w''') (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x w'' Hx1 Hw''1) (SNo_mul_SNo z' w''' Hz'1 Hw'''1)) (SNo_add_SNo_3 (z' * w''') (x * y) (w' * w'') (SNo_mul_SNo z' w''' Hz'1 Hw'''1) (SNo_mul_SNo x y Hx1 Hy1) (SNo_mul_SNo w' w'' Hw'1 Hw''1)) (SNo_add_SNo_3 (z' * y) (x * w''') (w' * w'') (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x w''' Hx1 Hw'''1) (SNo_mul_SNo w' w'' Hw'1 Hw''1)) to the current goal.
We will prove w' * y + x * w'' + z' * w''' < z' * w''' + x * y + w' * w''.
rewrite the current goal using add_SNo_rotate_3_1 (w' * y) (x * w'') (z' * w''') (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x w'' Hx1 Hw''1) (SNo_mul_SNo z' w''' Hz'1 Hw'''1) (from left to right).
We will prove z' * w''' + w' * y + x * w'' < z' * w''' + x * y + w' * w''.
Apply add_SNo_Lt2 (z' * w''') (w' * y + x * w'') (x * y + w' * w'') (SNo_mul_SNo z' w''' Hz'1 Hw'''1) (SNo_add_SNo (w' * y) (x * w'') (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x w'' Hx1 Hw''1)) (SNo_add_SNo (x * y) (w' * w'') (SNo_mul_SNo x y Hx1 Hy1) (SNo_mul_SNo w' w'' Hw'1 Hw''1)) to the current goal.
We will prove w' * y + x * w'' < x * y + w' * w''.
An exact proof term for the current goal is mul_SNo_Lt x y w' w'' Hx1 Hy1 Hw'1 Hw''1 Hw'2 Hw''2.
We will prove z' * w''' + x * y + w' * w'' < z' * y + x * w''' + w' * w''.
rewrite the current goal using add_SNo_rotate_3_1 (z' * w''') (x * y) (w' * w'') (SNo_mul_SNo z' w''' Hz'1 Hw'''1) (SNo_mul_SNo x y Hx1 Hy1) (SNo_mul_SNo w' w'' Hw'1 Hw''1) (from left to right).
rewrite the current goal using add_SNo_rotate_3_1 (z' * y) (x * w''') (w' * w'') (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x w''' Hx1 Hw'''1) (SNo_mul_SNo w' w'' Hw'1 Hw''1) (from left to right).
We will prove w' * w'' + z' * w''' + x * y < w' * w'' + z' * y + x * w'''.
Apply add_SNo_Lt2 (w' * w'') (z' * w''' + x * y) (z' * y + x * w''') (SNo_mul_SNo w' w'' Hw'1 Hw''1) (SNo_add_SNo (z' * w''') (x * y) (SNo_mul_SNo z' w''' Hz'1 Hw'''1) (SNo_mul_SNo x y Hx1 Hy1)) (SNo_add_SNo (z' * y) (x * w''') (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x w''' Hx1 Hw'''1)) to the current goal.
We will prove z' * w''' + x * y < z' * y + x * w'''.
rewrite the current goal using add_SNo_com (z' * w''') (x * y) (SNo_mul_SNo z' w''' Hz'1 Hw'''1) (SNo_mul_SNo x y Hx1 Hy1) (from left to right).
We will prove x * y + z' * w''' < z' * y + x * w'''.
An exact proof term for the current goal is mul_SNo_Lt z' y x w''' Hz'1 Hy1 Hx1 Hw'''1 Hz'2 Hw'''2.
Assume Hw: w RxRy'.
Apply RxRy'E w Hw to the current goal.
Let z' be given.
Assume Hz': z' Rx.
Let z'' be given.
Assume Hz'': z'' Ry.
Assume Hz'1: SNo z'.
Assume Hz''1: SNo z''.
Assume Hz'2: x < z'.
Assume Hz''2: y < z''.
Assume Hwe.
rewrite the current goal using Hwe (from left to right).
Let z be given.
Apply binunionE' to the current goal.
Assume Hz: z LxRy'.
Apply LxRy'E z Hz to the current goal.
Let w' be given.
Assume Hw': w' Lx.
Let z''' be given.
Assume Hz''': z''' Ry.
Assume Hw'1: SNo w'.
Assume Hz'''1: SNo z'''.
Assume Hw'2: w' < x.
Assume Hz'''2: y < z'''.
Assume Hze.
rewrite the current goal using Hze (from left to right).
We will prove z' * y + x * z'' + - z' * z'' < w' * y + x * z''' + - w' * z'''.
Apply add_SNo_minus_Lt12b3 (z' * y) (x * z'') (z' * z'') (w' * y) (x * z''') (w' * z''') (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x z'' Hx1 Hz''1) (SNo_mul_SNo z' z'' Hz'1 Hz''1) (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x z''' Hx1 Hz'''1) (SNo_mul_SNo w' z''' Hw'1 Hz'''1) to the current goal.
We will prove z' * y + x * z'' + w' * z''' < w' * y + x * z''' + z' * z''.
Apply SNoLt_tra (z' * y + x * z'' + w' * z''') (w' * z''' + z' * z'' + x * y) (w' * y + x * z''' + z' * z'') (SNo_add_SNo_3 (z' * y) (x * z'') (w' * z''') (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x z'' Hx1 Hz''1) (SNo_mul_SNo w' z''' Hw'1 Hz'''1)) (SNo_add_SNo_3 (w' * z''') (z' * z'') (x * y) (SNo_mul_SNo w' z''' Hw'1 Hz'''1) (SNo_mul_SNo z' z'' Hz'1 Hz''1) (SNo_mul_SNo x y Hx1 Hy1)) (SNo_add_SNo_3 (w' * y) (x * z''') (z' * z'') (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x z''' Hx1 Hz'''1) (SNo_mul_SNo z' z'' Hz'1 Hz''1)) to the current goal.
We will prove z' * y + x * z'' + w' * z''' < w' * z''' + z' * z'' + x * y.
rewrite the current goal using add_SNo_rotate_3_1 (z' * y) (x * z'') (w' * z''') (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x z'' Hx1 Hz''1) (SNo_mul_SNo w' z''' Hw'1 Hz'''1) (from left to right).
We will prove w' * z''' + z' * y + x * z'' < w' * z''' + z' * z'' + x * y.
Apply add_SNo_Lt2 (w' * z''') (z' * y + x * z'') (z' * z'' + x * y) (SNo_mul_SNo w' z''' Hw'1 Hz'''1) (SNo_add_SNo (z' * y) (x * z'') (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x z'' Hx1 Hz''1)) (SNo_add_SNo (z' * z'') (x * y) (SNo_mul_SNo z' z'' Hz'1 Hz''1) (SNo_mul_SNo x y Hx1 Hy1)) to the current goal.
We will prove z' * y + x * z'' < z' * z'' + x * y.
rewrite the current goal using add_SNo_com (z' * y) (x * z'') (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x z'' Hx1 Hz''1) (from left to right).
An exact proof term for the current goal is mul_SNo_Lt z' z'' x y Hz'1 Hz''1 Hx1 Hy1 Hz'2 Hz''2.
We will prove w' * z''' + z' * z'' + x * y < w' * y + x * z''' + z' * z''.
rewrite the current goal using add_SNo_com_3_0_1 (w' * z''') (z' * z'') (x * y) (SNo_mul_SNo w' z''' Hw'1 Hz'''1) (SNo_mul_SNo z' z'' Hz'1 Hz''1) (SNo_mul_SNo x y Hx1 Hy1) (from left to right).
rewrite the current goal using add_SNo_rotate_3_1 (w' * y) (x * z''') (z' * z'') (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x z''' Hx1 Hz'''1) (SNo_mul_SNo z' z'' Hz'1 Hz''1) (from left to right).
We will prove z' * z'' + w' * z''' + x * y < z' * z'' + w' * y + x * z'''.
Apply add_SNo_Lt2 (z' * z'') (w' * z''' + x * y) (w' * y + x * z''') (SNo_mul_SNo z' z'' Hz'1 Hz''1) (SNo_add_SNo (w' * z''') (x * y) (SNo_mul_SNo w' z''' Hw'1 Hz'''1) (SNo_mul_SNo x y Hx1 Hy1)) (SNo_add_SNo (w' * y) (x * z''') (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x z''' Hx1 Hz'''1)) to the current goal.
We will prove w' * z''' + x * y < w' * y + x * z'''.
rewrite the current goal using add_SNo_com (w' * y) (x * z''') (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x z''' Hx1 Hz'''1) (from left to right).
An exact proof term for the current goal is mul_SNo_Lt x z''' w' y Hx1 Hz'''1 Hw'1 Hy1 Hw'2 Hz'''2.
Assume Hz: z RxLy'.
Apply RxLy'E z Hz to the current goal.
Let z''' be given.
Assume Hz''': z''' Rx.
Let w' be given.
Assume Hw': w' Ly.
Assume Hz'''1: SNo z'''.
Assume Hw'1: SNo w'.
Assume Hz'''2: x < z'''.
Assume Hw'2: w' < y.
Assume Hze.
rewrite the current goal using Hze (from left to right).
We will prove z' * y + x * z'' + - z' * z'' < z''' * y + x * w' + - z''' * w'.
Apply add_SNo_minus_Lt12b3 (z' * y) (x * z'') (z' * z'') (z''' * y) (x * w') (z''' * w') (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x z'' Hx1 Hz''1) (SNo_mul_SNo z' z'' Hz'1 Hz''1) (SNo_mul_SNo z''' y Hz'''1 Hy1) (SNo_mul_SNo x w' Hx1 Hw'1) (SNo_mul_SNo z''' w' Hz'''1 Hw'1) to the current goal.
We will prove z' * y + x * z'' + z''' * w' < z''' * y + x * w' + z' * z''.
Apply SNoLt_tra (z' * y + x * z'' + z''' * w') (z''' * w' + z' * z'' + x * y) (z''' * y + x * w' + z' * z'') (SNo_add_SNo_3 (z' * y) (x * z'') (z''' * w') (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x z'' Hx1 Hz''1) (SNo_mul_SNo z''' w' Hz'''1 Hw'1)) (SNo_add_SNo_3 (z''' * w') (z' * z'') (x * y) (SNo_mul_SNo z''' w' Hz'''1 Hw'1) (SNo_mul_SNo z' z'' Hz'1 Hz''1) (SNo_mul_SNo x y Hx1 Hy1)) (SNo_add_SNo_3 (z''' * y) (x * w') (z' * z'') (SNo_mul_SNo z''' y Hz'''1 Hy1) (SNo_mul_SNo x w' Hx1 Hw'1) (SNo_mul_SNo z' z'' Hz'1 Hz''1)) to the current goal.
We will prove z' * y + x * z'' + z''' * w' < z''' * w' + z' * z'' + x * y.
rewrite the current goal using add_SNo_rotate_3_1 (z' * y) (x * z'') (z''' * w') (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x z'' Hx1 Hz''1) (SNo_mul_SNo z''' w' Hz'''1 Hw'1) (from left to right).
rewrite the current goal using add_SNo_com (z' * y) (x * z'') (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x z'' Hx1 Hz''1) (from left to right).
We will prove z''' * w' + x * z'' + z' * y < z''' * w' + z' * z'' + x * y.
Apply add_SNo_Lt2 (z''' * w') (x * z'' + z' * y) (z' * z'' + x * y) (SNo_mul_SNo z''' w' Hz'''1 Hw'1) (SNo_add_SNo (x * z'') (z' * y) (SNo_mul_SNo x z'' Hx1 Hz''1) (SNo_mul_SNo z' y Hz'1 Hy1)) (SNo_add_SNo (z' * z'') (x * y) (SNo_mul_SNo z' z'' Hz'1 Hz''1) (SNo_mul_SNo x y Hx1 Hy1)) to the current goal.
We will prove x * z'' + z' * y < z' * z'' + x * y.
An exact proof term for the current goal is mul_SNo_Lt z' z'' x y Hz'1 Hz''1 Hx1 Hy1 Hz'2 Hz''2.
We will prove z''' * w' + z' * z'' + x * y < z''' * y + x * w' + z' * z''.
rewrite the current goal using add_SNo_com_3_0_1 (z''' * w') (z' * z'') (x * y) (SNo_mul_SNo z''' w' Hz'''1 Hw'1) (SNo_mul_SNo z' z'' Hz'1 Hz''1) (SNo_mul_SNo x y Hx1 Hy1) (from left to right).
rewrite the current goal using add_SNo_rotate_3_1 (z''' * y) (x * w') (z' * z'') (SNo_mul_SNo z''' y Hz'''1 Hy1) (SNo_mul_SNo x w' Hx1 Hw'1) (SNo_mul_SNo z' z'' Hz'1 Hz''1) (from left to right).
We will prove z' * z'' + z''' * w' + x * y < z' * z'' + z''' * y + x * w'.
Apply add_SNo_Lt2 (z' * z'') (z''' * w' + x * y) (z''' * y + x * w') (SNo_mul_SNo z' z'' Hz'1 Hz''1) (SNo_add_SNo (z''' * w') (x * y) (SNo_mul_SNo z''' w' Hz'''1 Hw'1) (SNo_mul_SNo x y Hx1 Hy1)) (SNo_add_SNo (z''' * y) (x * w') (SNo_mul_SNo z''' y Hz'''1 Hy1) (SNo_mul_SNo x w' Hx1 Hw'1)) to the current goal.
We will prove z''' * w' + x * y < z''' * y + x * w'.
rewrite the current goal using add_SNo_com (z''' * w') (x * y) (SNo_mul_SNo z''' w' Hz'''1 Hw'1) (SNo_mul_SNo x y Hx1 Hy1) (from left to right).
An exact proof term for the current goal is mul_SNo_Lt z''' y x w' Hz'''1 Hy1 Hx1 Hw'1 Hz'''2 Hw'2.
We prove the intermediate claim Lxyeq: x * y = SNoCut (LxLy' RxRy') (LxRy' RxLy').
Set v to be the term SNoCut (LxLy' RxRy') (LxRy' RxLy').
Apply SNoCutP_SNoCut_impred (LxLy' RxRy') (LxRy' RxLy') L1 to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v ordsucc ((wLxLy' RxRy'ordsucc (SNoLev w)) (zLxRy' RxLy'ordsucc (SNoLev z))).
Assume Hv3: wLxLy' RxRy', w < v.
Assume Hv4: zLxRy' RxLy', v < z.
Assume Hv5: ∀u, SNo u(wLxLy' RxRy', w < u)(zLxRy' RxLy', u < z)SNoLev v SNoLev u SNoEq_ (SNoLev v) v u.
Apply mul_SNo_eq_3 x y Hx1 Hy1 to the current goal.
Let L' and R' be given.
Assume HLR': SNoCutP L' R'.
Assume HL'E: ∀u, u L'∀q : prop, (w0SNoL x, w1SNoL y, u = w0 * y + x * w1 + - w0 * w1q)(z0SNoR x, z1SNoR y, u = z0 * y + x * z1 + - z0 * z1q)q.
Assume HL'I1: w0SNoL x, w1SNoL y, w0 * y + x * w1 + - w0 * w1 L'.
Assume HL'I2: z0SNoR x, z1SNoR y, z0 * y + x * z1 + - z0 * z1 L'.
Assume HR'E: ∀u, u R'∀q : prop, (w0SNoL x, z1SNoR y, u = w0 * y + x * z1 + - w0 * z1q)(z0SNoR x, w1SNoL y, u = z0 * y + x * w1 + - z0 * w1q)q.
Assume HR'I1: w0SNoL x, z1SNoR y, w0 * y + x * z1 + - w0 * z1 R'.
Assume HR'I2: z0SNoR x, w1SNoL y, z0 * y + x * w1 + - z0 * w1 R'.
Assume HLR'eq: x * y = SNoCut L' R'.
rewrite the current goal using HLR'eq (from left to right).
Apply SNoCut_ext L' R' (LxLy' RxRy') (LxRy' RxLy') to the current goal.
An exact proof term for the current goal is HLR'.
An exact proof term for the current goal is L1.
We will prove wL', w < v.
Let w be given.
Assume Hw.
Apply HL'E w Hw to the current goal.
Let w0 be given.
Assume Hw0: w0 SNoL x.
Let w1 be given.
Assume Hw1: w1 SNoL y.
Assume Hwe.
rewrite the current goal using Hwe (from left to right).
We will prove w0 * y + x * w1 + - w0 * w1 < v.
Apply SNoL_E x Hx1 w0 Hw0 to the current goal.
Assume Hw0a Hw0b Hw0c.
Apply SNoL_E y Hy1 w1 Hw1 to the current goal.
Assume Hw1a Hw1b Hw1c.
We prove the intermediate claim L2: w0'Lx, w0 w0'.
Apply dneg to the current goal.
Assume HC.
We prove the intermediate claim L2a: SNoLev x SNoLev w0 SNoEq_ (SNoLev x) x w0.
Apply Hx5 w0 Hw0a to the current goal.
We will prove w'Lx, w' < w0.
Let w' be given.
Assume Hw'.
Apply SNoLtLe_or w' w0 (HLRx1 w' Hw') Hw0a to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: w0 w'.
We will prove False.
Apply HC to the current goal.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw'.
We will prove w0 w'.
An exact proof term for the current goal is H.
We will prove z'Rx, w0 < z'.
Let z' be given.
Assume Hz'.
Apply SNoLt_tra w0 x z' Hw0a Hx1 (HLRx2 z' Hz') to the current goal.
We will prove w0 < x.
An exact proof term for the current goal is Hw0c.
We will prove x < z'.
An exact proof term for the current goal is Hx4 z' Hz'.
Apply L2a to the current goal.
Assume Hxw0: SNoLev x SNoLev w0.
Assume _.
Apply In_irref (SNoLev w0) to the current goal.
We will prove SNoLev w0 SNoLev w0.
Apply Hxw0 to the current goal.
An exact proof term for the current goal is Hw0b.
We prove the intermediate claim L3: w1'Ly, w1 w1'.
Apply dneg to the current goal.
Assume HC.
We prove the intermediate claim L3a: SNoLev y SNoLev w1 SNoEq_ (SNoLev y) y w1.
Apply Hy5 w1 Hw1a to the current goal.
We will prove w'Ly, w' < w1.
Let w' be given.
Assume Hw'.
Apply SNoLtLe_or w' w1 (HLRy1 w' Hw') Hw1a to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: w1 w'.
We will prove False.
Apply HC to the current goal.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw'.
We will prove w1 w'.
An exact proof term for the current goal is H.
We will prove z'Ry, w1 < z'.
Let z' be given.
Assume Hz'.
Apply SNoLt_tra w1 y z' Hw1a Hy1 (HLRy2 z' Hz') to the current goal.
We will prove w1 < y.
An exact proof term for the current goal is Hw1c.
We will prove y < z'.
An exact proof term for the current goal is Hy4 z' Hz'.
Apply L3a to the current goal.
Assume Hyw1: SNoLev y SNoLev w1.
Assume _.
Apply In_irref (SNoLev w1) to the current goal.
We will prove SNoLev w1 SNoLev w1.
Apply Hyw1 to the current goal.
An exact proof term for the current goal is Hw1b.
Apply L2 to the current goal.
Let w0' be given.
Assume H.
Apply H to the current goal.
Assume Hw0'1: w0' Lx.
Assume Hw0'2: w0 w0'.
Apply L3 to the current goal.
Let w1' be given.
Assume H.
Apply H to the current goal.
Assume Hw1'1: w1' Ly.
Assume Hw1'2: w1 w1'.
We will prove w0 * y + x * w1 + - w0 * w1 < v.
Apply SNoLeLt_tra (w0 * y + x * w1 + - w0 * w1) (w0' * y + x * w1' + - w0' * w1') v (SNo_add_SNo_3 (w0 * y) (x * w1) (- w0 * w1) (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_minus_SNo (w0 * w1) (SNo_mul_SNo w0 w1 Hw0a Hw1a))) (SNo_add_SNo_3 (w0' * y) (x * w1') (- w0' * w1') (SNo_mul_SNo w0' y (HLRx1 w0' Hw0'1) Hy1) (SNo_mul_SNo x w1' Hx1 (HLRy1 w1' Hw1'1)) (SNo_minus_SNo (w0' * w1') (SNo_mul_SNo w0' w1' (HLRx1 w0' Hw0'1) (HLRy1 w1' Hw1'1)))) Hv1 to the current goal.
We will prove w0 * y + x * w1 + - w0 * w1 w0' * y + x * w1' + - w0' * w1'.
Apply add_SNo_minus_Le12b3 (w0 * y) (x * w1) (w0 * w1) (w0' * y) (x * w1') (w0' * w1') (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_mul_SNo w0 w1 Hw0a Hw1a) (SNo_mul_SNo w0' y (HLRx1 w0' Hw0'1) Hy1) (SNo_mul_SNo x w1' Hx1 (HLRy1 w1' Hw1'1)) (SNo_mul_SNo w0' w1' (HLRx1 w0' Hw0'1) (HLRy1 w1' Hw1'1)) to the current goal.
We will prove w0 * y + x * w1 + w0' * w1' w0' * y + x * w1' + w0 * w1.
Apply SNoLe_tra (w0 * y + x * w1 + w0' * w1') (w0 * y + x * w1' + w0' * w1) (w0' * y + x * w1' + w0 * w1) (SNo_add_SNo_3 (w0 * y) (x * w1) (w0' * w1') (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_mul_SNo w0' w1' (HLRx1 w0' Hw0'1) (HLRy1 w1' Hw1'1))) (SNo_add_SNo_3 (w0 * y) (x * w1') (w0' * w1) (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_mul_SNo x w1' Hx1 (HLRy1 w1' Hw1'1)) (SNo_mul_SNo w0' w1 (HLRx1 w0' Hw0'1) Hw1a)) (SNo_add_SNo_3 (w0' * y) (x * w1') (w0 * w1) (SNo_mul_SNo w0' y (HLRx1 w0' Hw0'1) Hy1) (SNo_mul_SNo x w1' Hx1 (HLRy1 w1' Hw1'1)) (SNo_mul_SNo w0 w1 Hw0a Hw1a)) to the current goal.
We will prove w0 * y + x * w1 + w0' * w1' w0 * y + x * w1' + w0' * w1.
Apply add_SNo_Le2 (w0 * y) (x * w1 + w0' * w1') (x * w1' + w0' * w1) (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_add_SNo (x * w1) (w0' * w1') (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_mul_SNo w0' w1' (HLRx1 w0' Hw0'1) (HLRy1 w1' Hw1'1))) (SNo_add_SNo (x * w1') (w0' * w1) (SNo_mul_SNo x w1' Hx1 (HLRy1 w1' Hw1'1)) (SNo_mul_SNo w0' w1 (HLRx1 w0' Hw0'1) Hw1a)) to the current goal.
We will prove x * w1 + w0' * w1' x * w1' + w0' * w1.
rewrite the current goal using add_SNo_com (x * w1) (w0' * w1') (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_mul_SNo w0' w1' (HLRx1 w0' Hw0'1) (HLRy1 w1' Hw1'1)) (from left to right).
We will prove w0' * w1' + x * w1 x * w1' + w0' * w1.
Apply mul_SNo_Le x w1' w0' w1 Hx1 (HLRy1 w1' Hw1'1) (HLRx1 w0' Hw0'1) Hw1a to the current goal.
We will prove w0' x.
Apply SNoLtLe to the current goal.
We will prove w0' < x.
An exact proof term for the current goal is Hx3 w0' Hw0'1.
We will prove w1 w1'.
An exact proof term for the current goal is Hw1'2.
We will prove w0 * y + x * w1' + w0' * w1 w0' * y + x * w1' + w0 * w1.
rewrite the current goal using add_SNo_com_3_0_1 (w0 * y) (x * w1') (w0' * w1) (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_mul_SNo x w1' Hx1 (HLRy1 w1' Hw1'1)) (SNo_mul_SNo w0' w1 (HLRx1 w0' Hw0'1) Hw1a) (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (w0' * y) (x * w1') (w0 * w1) (SNo_mul_SNo w0' y (HLRx1 w0' Hw0'1) Hy1) (SNo_mul_SNo x w1' Hx1 (HLRy1 w1' Hw1'1)) (SNo_mul_SNo w0 w1 Hw0a Hw1a) (from left to right).
Apply add_SNo_Le2 (x * w1') (w0 * y + w0' * w1) (w0' * y + w0 * w1) (SNo_mul_SNo x w1' Hx1 (HLRy1 w1' Hw1'1)) (SNo_add_SNo (w0 * y) (w0' * w1) (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_mul_SNo w0' w1 (HLRx1 w0' Hw0'1) Hw1a)) (SNo_add_SNo (w0' * y) (w0 * w1) (SNo_mul_SNo w0' y (HLRx1 w0' Hw0'1) Hy1) (SNo_mul_SNo w0 w1 Hw0a Hw1a)) to the current goal.
We will prove w0 * y + w0' * w1 w0' * y + w0 * w1.
Apply mul_SNo_Le w0' y w0 w1 (HLRx1 w0' Hw0'1) Hy1 Hw0a Hw1a to the current goal.
We will prove w0 w0'.
An exact proof term for the current goal is Hw0'2.
We will prove w1 y.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hw1c.
We will prove w0' * y + x * w1' + - w0' * w1' < v.
Apply Hv3 to the current goal.
We will prove w0' * y + x * w1' + - w0' * w1' LxLy' RxRy'.
Apply binunionI1 to the current goal.
Apply LxLy'I to the current goal.
An exact proof term for the current goal is Hw0'1.
An exact proof term for the current goal is Hw1'1.
Let z0 be given.
Assume Hz0: z0 SNoR x.
Let z1 be given.
Assume Hz1: z1 SNoR y.
Assume Hwe.
rewrite the current goal using Hwe (from left to right).
We will prove z0 * y + x * z1 + - z0 * z1 < v.
Apply SNoR_E x Hx1 z0 Hz0 to the current goal.
Assume Hz0a Hz0b Hz0c.
Apply SNoR_E y Hy1 z1 Hz1 to the current goal.
Assume Hz1a Hz1b Hz1c.
We prove the intermediate claim L4: z0'Rx, z0' z0.
Apply dneg to the current goal.
Assume HC.
We prove the intermediate claim L4a: SNoLev x SNoLev z0 SNoEq_ (SNoLev x) x z0.
Apply Hx5 z0 Hz0a to the current goal.
We will prove w'Lx, w' < z0.
Let w' be given.
Assume Hw'.
Apply SNoLt_tra w' x z0 (HLRx1 w' Hw') Hx1 Hz0a to the current goal.
We will prove w' < x.
An exact proof term for the current goal is Hx3 w' Hw'.
We will prove x < z0.
An exact proof term for the current goal is Hz0c.
We will prove z'Rx, z0 < z'.
Let z' be given.
Assume Hz'.
Apply SNoLtLe_or z0 z' Hz0a (HLRx2 z' Hz') to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: z' z0.
We will prove False.
Apply HC to the current goal.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz'.
We will prove z' z0.
An exact proof term for the current goal is H.
Apply L4a to the current goal.
Assume Hxz0: SNoLev x SNoLev z0.
Assume _.
Apply In_irref (SNoLev z0) to the current goal.
We will prove SNoLev z0 SNoLev z0.
Apply Hxz0 to the current goal.
An exact proof term for the current goal is Hz0b.
We prove the intermediate claim L5: z1'Ry, z1' z1.
Apply dneg to the current goal.
Assume HC.
We prove the intermediate claim L5a: SNoLev y SNoLev z1 SNoEq_ (SNoLev y) y z1.
Apply Hy5 z1 Hz1a to the current goal.
We will prove w'Ly, w' < z1.
Let w' be given.
Assume Hw'.
Apply SNoLt_tra w' y z1 (HLRy1 w' Hw') Hy1 Hz1a to the current goal.
We will prove w' < y.
An exact proof term for the current goal is Hy3 w' Hw'.
We will prove y < z1.
An exact proof term for the current goal is Hz1c.
We will prove z'Ry, z1 < z'.
Let z' be given.
Assume Hz'.
Apply SNoLtLe_or z1 z' Hz1a (HLRy2 z' Hz') to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: z' z1.
We will prove False.
Apply HC to the current goal.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz'.
We will prove z' z1.
An exact proof term for the current goal is H.
Apply L5a to the current goal.
Assume Hyz1: SNoLev y SNoLev z1.
Assume _.
Apply In_irref (SNoLev z1) to the current goal.
We will prove SNoLev z1 SNoLev z1.
Apply Hyz1 to the current goal.
An exact proof term for the current goal is Hz1b.
Apply L4 to the current goal.
Let z0' be given.
Assume H.
Apply H to the current goal.
Assume Hz0'1: z0' Rx.
Assume Hz0'2: z0' z0.
Apply L5 to the current goal.
Let z1' be given.
Assume H.
Apply H to the current goal.
Assume Hz1'1: z1' Ry.
Assume Hz1'2: z1' z1.
We will prove z0 * y + x * z1 + - z0 * z1 < v.
Apply SNoLeLt_tra (z0 * y + x * z1 + - z0 * z1) (z0' * y + x * z1' + - z0' * z1') v (SNo_add_SNo_3 (z0 * y) (x * z1) (- z0 * z1) (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo x z1 Hx1 Hz1a) (SNo_minus_SNo (z0 * z1) (SNo_mul_SNo z0 z1 Hz0a Hz1a))) (SNo_add_SNo_3 (z0' * y) (x * z1') (- z0' * z1') (SNo_mul_SNo z0' y (HLRx2 z0' Hz0'1) Hy1) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_minus_SNo (z0' * z1') (SNo_mul_SNo z0' z1' (HLRx2 z0' Hz0'1) (HLRy2 z1' Hz1'1)))) Hv1 to the current goal.
We will prove z0 * y + x * z1 + - z0 * z1 z0' * y + x * z1' + - z0' * z1'.
Apply add_SNo_minus_Le12b3 (z0 * y) (x * z1) (z0 * z1) (z0' * y) (x * z1') (z0' * z1') (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo x z1 Hx1 Hz1a) (SNo_mul_SNo z0 z1 Hz0a Hz1a) (SNo_mul_SNo z0' y (HLRx2 z0' Hz0'1) Hy1) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_mul_SNo z0' z1' (HLRx2 z0' Hz0'1) (HLRy2 z1' Hz1'1)) to the current goal.
We will prove z0 * y + x * z1 + z0' * z1' z0' * y + x * z1' + z0 * z1.
Apply SNoLe_tra (z0 * y + x * z1 + z0' * z1') (z0 * y + z0' * z1 + x * z1') (z0' * y + x * z1' + z0 * z1) (SNo_add_SNo_3 (z0 * y) (x * z1) (z0' * z1') (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo x z1 Hx1 Hz1a) (SNo_mul_SNo z0' z1' (HLRx2 z0' Hz0'1) (HLRy2 z1' Hz1'1))) (SNo_add_SNo_3 (z0 * y) (z0' * z1) (x * z1') (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo z0' z1 (HLRx2 z0' Hz0'1) Hz1a) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1))) (SNo_add_SNo_3 (z0' * y) (x * z1') (z0 * z1) (SNo_mul_SNo z0' y (HLRx2 z0' Hz0'1) Hy1) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_mul_SNo z0 z1 Hz0a Hz1a)) to the current goal.
We will prove z0 * y + x * z1 + z0' * z1' z0 * y + z0' * z1 + x * z1'.
Apply add_SNo_Le2 (z0 * y) (x * z1 + z0' * z1') (z0' * z1 + x * z1') (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_add_SNo (x * z1) (z0' * z1') (SNo_mul_SNo x z1 Hx1 Hz1a) (SNo_mul_SNo z0' z1' (HLRx2 z0' Hz0'1) (HLRy2 z1' Hz1'1))) (SNo_add_SNo (z0' * z1) (x * z1') (SNo_mul_SNo z0' z1 (HLRx2 z0' Hz0'1) Hz1a) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1))) to the current goal.
We will prove x * z1 + z0' * z1' z0' * z1 + x * z1'.
Apply mul_SNo_Le z0' z1 x z1' (HLRx2 z0' Hz0'1) Hz1a Hx1 (HLRy2 z1' Hz1'1) to the current goal.
We will prove x z0'.
Apply SNoLtLe to the current goal.
We will prove x < z0'.
An exact proof term for the current goal is Hx4 z0' Hz0'1.
We will prove z1' z1.
An exact proof term for the current goal is Hz1'2.
We will prove z0 * y + z0' * z1 + x * z1' z0' * y + x * z1' + z0 * z1.
rewrite the current goal using add_SNo_rotate_3_1 (z0 * y) (z0' * z1) (x * z1') (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo z0' z1 (HLRx2 z0' Hz0'1) Hz1a) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (z0' * y) (x * z1') (z0 * z1) (SNo_mul_SNo z0' y (HLRx2 z0' Hz0'1) Hy1) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_mul_SNo z0 z1 Hz0a Hz1a) (from left to right).
We will prove x * z1' + z0 * y + z0' * z1 x * z1' + z0' * y + z0 * z1.
Apply add_SNo_Le2 (x * z1') (z0 * y + z0' * z1) (z0' * y + z0 * z1) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_add_SNo (z0 * y) (z0' * z1) (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo z0' z1 (HLRx2 z0' Hz0'1) Hz1a)) (SNo_add_SNo (z0' * y) (z0 * z1) (SNo_mul_SNo z0' y (HLRx2 z0' Hz0'1) Hy1) (SNo_mul_SNo z0 z1 Hz0a Hz1a)) to the current goal.
We will prove z0 * y + z0' * z1 z0' * y + z0 * z1.
rewrite the current goal using add_SNo_com (z0 * y) (z0' * z1) (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo z0' z1 (HLRx2 z0' Hz0'1) Hz1a) (from left to right).
rewrite the current goal using add_SNo_com (z0' * y) (z0 * z1) (SNo_mul_SNo z0' y (HLRx2 z0' Hz0'1) Hy1) (SNo_mul_SNo z0 z1 Hz0a Hz1a) (from left to right).
Apply mul_SNo_Le z0 z1 z0' y Hz0a Hz1a (HLRx2 z0' Hz0'1) Hy1 to the current goal.
We will prove z0' z0.
An exact proof term for the current goal is Hz0'2.
We will prove y z1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz1c.
We will prove z0' * y + x * z1' + - z0' * z1' < v.
Apply Hv3 to the current goal.
We will prove z0' * y + x * z1' + - z0' * z1' LxLy' RxRy'.
Apply binunionI2 to the current goal.
Apply RxRy'I to the current goal.
An exact proof term for the current goal is Hz0'1.
An exact proof term for the current goal is Hz1'1.
We will prove zR', v < z.
Let z be given.
Assume Hz.
Apply HR'E z Hz to the current goal.
Let w0 be given.
Assume Hw0: w0 SNoL x.
Let z1 be given.
Assume Hz1: z1 SNoR y.
Assume Hze.
rewrite the current goal using Hze (from left to right).
We will prove v < w0 * y + x * z1 + - w0 * z1.
Apply SNoL_E x Hx1 w0 Hw0 to the current goal.
Assume Hw0a Hw0b Hw0c.
Apply SNoR_E y Hy1 z1 Hz1 to the current goal.
Assume Hz1a Hz1b Hz1c.
We prove the intermediate claim L6: w0'Lx, w0 w0'.
Apply dneg to the current goal.
Assume HC.
We prove the intermediate claim L6a: SNoLev x SNoLev w0 SNoEq_ (SNoLev x) x w0.
Apply Hx5 w0 Hw0a to the current goal.
We will prove w'Lx, w' < w0.
Let w' be given.
Assume Hw'.
Apply SNoLtLe_or w' w0 (HLRx1 w' Hw') Hw0a to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: w0 w'.
We will prove False.
Apply HC to the current goal.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw'.
We will prove w0 w'.
An exact proof term for the current goal is H.
We will prove z'Rx, w0 < z'.
Let z' be given.
Assume Hz'.
Apply SNoLt_tra w0 x z' Hw0a Hx1 (HLRx2 z' Hz') to the current goal.
We will prove w0 < x.
An exact proof term for the current goal is Hw0c.
We will prove x < z'.
An exact proof term for the current goal is Hx4 z' Hz'.
Apply L6a to the current goal.
Assume Hxw0: SNoLev x SNoLev w0.
Assume _.
Apply In_irref (SNoLev w0) to the current goal.
We will prove SNoLev w0 SNoLev w0.
Apply Hxw0 to the current goal.
An exact proof term for the current goal is Hw0b.
We prove the intermediate claim L7: z1'Ry, z1' z1.
Apply dneg to the current goal.
Assume HC.
We prove the intermediate claim L7a: SNoLev y SNoLev z1 SNoEq_ (SNoLev y) y z1.
Apply Hy5 z1 Hz1a to the current goal.
We will prove w'Ly, w' < z1.
Let w' be given.
Assume Hw'.
Apply SNoLt_tra w' y z1 (HLRy1 w' Hw') Hy1 Hz1a to the current goal.
We will prove w' < y.
An exact proof term for the current goal is Hy3 w' Hw'.
We will prove y < z1.
An exact proof term for the current goal is Hz1c.
We will prove z'Ry, z1 < z'.
Let z' be given.
Assume Hz'.
Apply SNoLtLe_or z1 z' Hz1a (HLRy2 z' Hz') to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: z' z1.
We will prove False.
Apply HC to the current goal.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz'.
We will prove z' z1.
An exact proof term for the current goal is H.
Apply L7a to the current goal.
Assume Hyz1: SNoLev y SNoLev z1.
Assume _.
Apply In_irref (SNoLev z1) to the current goal.
We will prove SNoLev z1 SNoLev z1.
Apply Hyz1 to the current goal.
An exact proof term for the current goal is Hz1b.
Apply L6 to the current goal.
Let w0' be given.
Assume H.
Apply H to the current goal.
Assume Hw0'1: w0' Lx.
Assume Hw0'2: w0 w0'.
Apply L7 to the current goal.
Let z1' be given.
Assume H.
Apply H to the current goal.
Assume Hz1'1: z1' Ry.
Assume Hz1'2: z1' z1.
We will prove v < w0 * y + x * z1 + - w0 * z1.
Apply SNoLtLe_tra v (w0' * y + x * z1' + - w0' * z1') (w0 * y + x * z1 + - w0 * z1) Hv1 (SNo_add_SNo_3 (w0' * y) (x * z1') (- w0' * z1') (SNo_mul_SNo w0' y (HLRx1 w0' Hw0'1) Hy1) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_minus_SNo (w0' * z1') (SNo_mul_SNo w0' z1' (HLRx1 w0' Hw0'1) (HLRy2 z1' Hz1'1)))) (SNo_add_SNo_3 (w0 * y) (x * z1) (- w0 * z1) (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_mul_SNo x z1 Hx1 Hz1a) (SNo_minus_SNo (w0 * z1) (SNo_mul_SNo w0 z1 Hw0a Hz1a))) to the current goal.
We will prove v < w0' * y + x * z1' + - w0' * z1'.
Apply Hv4 to the current goal.
We will prove w0' * y + x * z1' + - w0' * z1' LxRy' RxLy'.
Apply binunionI1 to the current goal.
Apply LxRy'I to the current goal.
An exact proof term for the current goal is Hw0'1.
An exact proof term for the current goal is Hz1'1.
We will prove w0' * y + x * z1' + - w0' * z1' w0 * y + x * z1 + - w0 * z1.
Apply add_SNo_minus_Le12b3 (w0' * y) (x * z1') (w0' * z1') (w0 * y) (x * z1) (w0 * z1) (SNo_mul_SNo w0' y (HLRx1 w0' Hw0'1) Hy1) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_mul_SNo w0' z1' (HLRx1 w0' Hw0'1) (HLRy2 z1' Hz1'1)) (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_mul_SNo x z1 Hx1 Hz1a) (SNo_mul_SNo w0 z1 Hw0a Hz1a) to the current goal.
We will prove w0' * y + x * z1' + w0 * z1 w0 * y + x * z1 + w0' * z1'.
Apply SNoLe_tra (w0' * y + x * z1' + w0 * z1) (x * z1' + w0' * z1 + w0 * y) (w0 * y + x * z1 + w0' * z1') (SNo_add_SNo_3 (w0' * y) (x * z1') (w0 * z1) (SNo_mul_SNo w0' y (HLRx1 w0' Hw0'1) Hy1) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_mul_SNo w0 z1 Hw0a Hz1a)) (SNo_add_SNo_3 (x * z1') (w0' * z1) (w0 * y) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_mul_SNo w0' z1 (HLRx1 w0' Hw0'1) Hz1a) (SNo_mul_SNo w0 y Hw0a Hy1)) (SNo_add_SNo_3 (w0 * y) (x * z1) (w0' * z1') (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_mul_SNo x z1 Hx1 Hz1a) (SNo_mul_SNo w0' z1' (HLRx1 w0' Hw0'1) (HLRy2 z1' Hz1'1))) to the current goal.
We will prove w0' * y + x * z1' + w0 * z1 x * z1' + w0' * z1 + w0 * y.
rewrite the current goal using add_SNo_com_3_0_1 (w0' * y) (x * z1') (w0 * z1) (SNo_mul_SNo w0' y (HLRx1 w0' Hw0'1) Hy1) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_mul_SNo w0 z1 Hw0a Hz1a) (from left to right).
Apply add_SNo_Le2 (x * z1') (w0' * y + w0 * z1) (w0' * z1 + w0 * y) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_add_SNo (w0' * y) (w0 * z1) (SNo_mul_SNo w0' y (HLRx1 w0' Hw0'1) Hy1) (SNo_mul_SNo w0 z1 Hw0a Hz1a)) (SNo_add_SNo (w0' * z1) (w0 * y) (SNo_mul_SNo w0' z1 (HLRx1 w0' Hw0'1) Hz1a) (SNo_mul_SNo w0 y Hw0a Hy1)) to the current goal.
We will prove w0' * y + w0 * z1 w0' * z1 + w0 * y.
rewrite the current goal using add_SNo_com (w0' * y) (w0 * z1) (SNo_mul_SNo w0' y (HLRx1 w0' Hw0'1) Hy1) (SNo_mul_SNo w0 z1 Hw0a Hz1a) (from left to right).
Apply mul_SNo_Le w0' z1 w0 y (HLRx1 w0' Hw0'1) Hz1a Hw0a Hy1 to the current goal.
We will prove w0 w0'.
An exact proof term for the current goal is Hw0'2.
We will prove y z1.
Apply SNoLtLe to the current goal.
We will prove y < z1.
An exact proof term for the current goal is Hz1c.
We will prove x * z1' + w0' * z1 + w0 * y w0 * y + x * z1 + w0' * z1'.
rewrite the current goal using add_SNo_rotate_3_1 (x * z1') (w0' * z1) (w0 * y) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_mul_SNo w0' z1 (HLRx1 w0' Hw0'1) Hz1a) (SNo_mul_SNo w0 y Hw0a Hy1) (from left to right).
We will prove w0 * y + x * z1' + w0' * z1 w0 * y + x * z1 + w0' * z1'.
Apply add_SNo_Le2 (w0 * y) (x * z1' + w0' * z1) (x * z1 + w0' * z1') (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_add_SNo (x * z1') (w0' * z1) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_mul_SNo w0' z1 (HLRx1 w0' Hw0'1) Hz1a)) (SNo_add_SNo (x * z1) (w0' * z1') (SNo_mul_SNo x z1 Hx1 Hz1a) (SNo_mul_SNo w0' z1' (HLRx1 w0' Hw0'1) (HLRy2 z1' Hz1'1))) to the current goal.
We will prove x * z1' + w0' * z1 x * z1 + w0' * z1'.
rewrite the current goal using add_SNo_com (x * z1') (w0' * z1) (SNo_mul_SNo x z1' Hx1 (HLRy2 z1' Hz1'1)) (SNo_mul_SNo w0' z1 (HLRx1 w0' Hw0'1) Hz1a) (from left to right).
We will prove w0' * z1 + x * z1' x * z1 + w0' * z1'.
Apply mul_SNo_Le x z1 w0' z1' Hx1 Hz1a (HLRx1 w0' Hw0'1) (HLRy2 z1' Hz1'1) to the current goal.
We will prove w0' x.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hx3 w0' Hw0'1.
We will prove z1' z1.
An exact proof term for the current goal is Hz1'2.
Let z0 be given.
Assume Hz0: z0 SNoR x.
Let w1 be given.
Assume Hw1: w1 SNoL y.
Assume Hze.
rewrite the current goal using Hze (from left to right).
We will prove v < z0 * y + x * w1 + - z0 * w1.
Apply SNoR_E x Hx1 z0 Hz0 to the current goal.
Assume Hz0a Hz0b Hz0c.
Apply SNoL_E y Hy1 w1 Hw1 to the current goal.
Assume Hw1a Hw1b Hw1c.
We prove the intermediate claim L8: z0'Rx, z0' z0.
Apply dneg to the current goal.
Assume HC.
We prove the intermediate claim L8a: SNoLev x SNoLev z0 SNoEq_ (SNoLev x) x z0.
Apply Hx5 z0 Hz0a to the current goal.
We will prove w'Lx, w' < z0.
Let w' be given.
Assume Hw'.
Apply SNoLt_tra w' x z0 (HLRx1 w' Hw') Hx1 Hz0a to the current goal.
We will prove w' < x.
An exact proof term for the current goal is Hx3 w' Hw'.
We will prove x < z0.
An exact proof term for the current goal is Hz0c.
We will prove z'Rx, z0 < z'.
Let z' be given.
Assume Hz'.
Apply SNoLtLe_or z0 z' Hz0a (HLRx2 z' Hz') to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: z' z0.
We will prove False.
Apply HC to the current goal.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz'.
We will prove z' z0.
An exact proof term for the current goal is H.
Apply L8a to the current goal.
Assume Hxz0: SNoLev x SNoLev z0.
Assume _.
Apply In_irref (SNoLev z0) to the current goal.
We will prove SNoLev z0 SNoLev z0.
Apply Hxz0 to the current goal.
An exact proof term for the current goal is Hz0b.
We prove the intermediate claim L9: w1'Ly, w1 w1'.
Apply dneg to the current goal.
Assume HC.
We prove the intermediate claim L9a: SNoLev y SNoLev w1 SNoEq_ (SNoLev y) y w1.
Apply Hy5 w1 Hw1a to the current goal.
We will prove w'Ly, w' < w1.
Let w' be given.
Assume Hw'.
Apply SNoLtLe_or w' w1 (HLRy1 w' Hw') Hw1a to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: w1 w'.
We will prove False.
Apply HC to the current goal.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw'.
We will prove w1 w'.
An exact proof term for the current goal is H.
We will prove z'Ry, w1 < z'.
Let z' be given.
Assume Hz'.
Apply SNoLt_tra w1 y z' Hw1a Hy1 (HLRy2 z' Hz') to the current goal.
We will prove w1 < y.
An exact proof term for the current goal is Hw1c.
We will prove y < z'.
An exact proof term for the current goal is Hy4 z' Hz'.
Apply L9a to the current goal.
Assume Hyw1: SNoLev y SNoLev w1.
Assume _.
Apply In_irref (SNoLev w1) to the current goal.
We will prove SNoLev w1 SNoLev w1.
Apply Hyw1 to the current goal.
An exact proof term for the current goal is Hw1b.
Apply L8 to the current goal.
Let z0' be given.
Assume H.
Apply H to the current goal.
Assume Hz0'1: z0' Rx.
Assume Hz0'2: z0' z0.
Apply L9 to the current goal.
Let w1' be given.
Assume H.
Apply H to the current goal.
Assume Hw1'1: w1' Ly.
Assume Hw1'2: w1 w1'.
We will prove v < z0 * y + x * w1 + - z0 * w1.
Apply SNoLtLe_tra v (z0' * y + x * w1' + - z0' * w1') (z0 * y + x * w1 + - z0 * w1) Hv1 (SNo_add_SNo_3 (z0' * y) (x * w1') (- z0' * w1') (SNo_mul_SNo z0' y (HLRx2 z0' Hz0'1) Hy1) (SNo_mul_SNo x w1' Hx1 (HLRy1 w1' Hw1'1)) (SNo_minus_SNo (z0' * w1') (SNo_mul_SNo z0' w1' (HLRx2 z0' Hz0'1) (HLRy1 w1' Hw1'1)))) (SNo_add_SNo_3 (z0 * y) (x * w1) (- z0 * w1) (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_minus_SNo (z0 * w1) (SNo_mul_SNo z0 w1 Hz0a Hw1a))) to the current goal.
We will prove v < z0' * y + x * w1' + - z0' * w1'.
Apply Hv4 to the current goal.
We will prove z0' * y + x * w1' + - z0' * w1' LxRy' RxLy'.
Apply binunionI2 to the current goal.
Apply RxLy'I to the current goal.
An exact proof term for the current goal is Hz0'1.
An exact proof term for the current goal is Hw1'1.
We will prove z0' * y + x * w1' + - z0' * w1' z0 * y + x * w1 + - z0 * w1.
Apply add_SNo_minus_Le12b3 (z0' * y) (x * w1') (z0' * w1') (z0 * y) (x * w1) (z0 * w1) (SNo_mul_SNo z0' y (HLRx2 z0' Hz0'1) Hy1) (SNo_mul_SNo x w1' Hx1 (HLRy1 w1' Hw1'1)) (SNo_mul_SNo z0' w1' (HLRx2 z0' Hz0'1) (HLRy1 w1' Hw1'1)) (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_mul_SNo z0 w1 Hz0a Hw1a) to the current goal.
We will prove z0' * y + x * w1' + z0 * w1 z0 * y + x * w1 + z0' * w1'.
Apply SNoLe_tra (z0' * y + x * w1' + z0 * w1) (z0' * y + x * w1 + z0 * w1') (z0 * y + x * w1 + z0' * w1') (SNo_add_SNo_3 (z0' * y) (x * w1') (z0 * w1) (SNo_mul_SNo z0' y (HLRx2 z0' Hz0'1) Hy1) (SNo_mul_SNo x w1' Hx1 (HLRy1 w1' Hw1'1)) (SNo_mul_SNo z0 w1 Hz0a Hw1a)) (SNo_add_SNo_3 (z0' * y) (x * w1) (z0 * w1') (SNo_mul_SNo z0' y (HLRx2 z0' Hz0'1) Hy1) (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_mul_SNo z0 w1' Hz0a (HLRy1 w1' Hw1'1))) (SNo_add_SNo_3 (z0 * y) (x * w1) (z0' * w1') (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_mul_SNo z0' w1' (HLRx2 z0' Hz0'1) (HLRy1 w1' Hw1'1))) to the current goal.
We will prove z0' * y + x * w1' + z0 * w1 z0' * y + x * w1 + z0 * w1'.
Apply add_SNo_Le2 (z0' * y) (x * w1' + z0 * w1) (x * w1 + z0 * w1') (SNo_mul_SNo z0' y (HLRx2 z0' Hz0'1) Hy1) (SNo_add_SNo (x * w1') (z0 * w1) (SNo_mul_SNo x w1' Hx1 (HLRy1 w1' Hw1'1)) (SNo_mul_SNo z0 w1 Hz0a Hw1a)) (SNo_add_SNo (x * w1) (z0 * w1') (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_mul_SNo z0 w1' Hz0a (HLRy1 w1' Hw1'1))) to the current goal.
We will prove x * w1' + z0 * w1 x * w1 + z0 * w1'.
rewrite the current goal using add_SNo_com (x * w1) (z0 * w1') (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_mul_SNo z0 w1' Hz0a (HLRy1 w1' Hw1'1)) (from left to right).
Apply mul_SNo_Le z0 w1' x w1 Hz0a (HLRy1 w1' Hw1'1) Hx1 Hw1a to the current goal.
We will prove x z0.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz0c.
We will prove w1 w1'.
An exact proof term for the current goal is Hw1'2.
We will prove z0' * y + x * w1 + z0 * w1' z0 * y + x * w1 + z0' * w1'.
rewrite the current goal using add_SNo_com_3_0_1 (z0' * y) (x * w1) (z0 * w1') (SNo_mul_SNo z0' y (HLRx2 z0' Hz0'1) Hy1) (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_mul_SNo z0 w1' Hz0a (HLRy1 w1' Hw1'1)) (from left to right).
rewrite the current goal using add_SNo_com_3_0_1 (z0 * y) (x * w1) (z0' * w1') (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_mul_SNo z0' w1' (HLRx2 z0' Hz0'1) (HLRy1 w1' Hw1'1)) (from left to right).
We will prove x * w1 + z0' * y + z0 * w1' x * w1 + z0 * y + z0' * w1'.
Apply add_SNo_Le2 (x * w1) (z0' * y + z0 * w1') (z0 * y + z0' * w1') (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_add_SNo (z0' * y) (z0 * w1') (SNo_mul_SNo z0' y (HLRx2 z0' Hz0'1) Hy1) (SNo_mul_SNo z0 w1' Hz0a (HLRy1 w1' Hw1'1))) (SNo_add_SNo (z0 * y) (z0' * w1') (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo z0' w1' (HLRx2 z0' Hz0'1) (HLRy1 w1' Hw1'1))) to the current goal.
We will prove z0' * y + z0 * w1' z0 * y + z0' * w1'.
Apply mul_SNo_Le z0 y z0' w1' Hz0a Hy1 (HLRx2 z0' Hz0'1) (HLRy1 w1' Hw1'1) to the current goal.
We will prove z0' z0.
An exact proof term for the current goal is Hz0'2.
We will prove w1' y.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hy3 w1' Hw1'1.
rewrite the current goal using HLR'eq (from right to left).
We will prove wLxLy' RxRy', w < x * y.
Let w be given.
Apply binunionE' to the current goal.
Assume Hw: w LxLy'.
Apply LxLy'E w Hw to the current goal.
Let w' be given.
Assume Hw': w' Lx.
Let w'' be given.
Assume Hw'': w'' Ly.
Assume Hw'1: SNo w'.
Assume Hw''1: SNo w''.
Assume Hw'2: w' < x.
Assume Hw''2: w'' < y.
Assume Hwe.
rewrite the current goal using Hwe (from left to right).
We will prove w' * y + x * w'' + - w' * w'' < x * y.
Apply add_SNo_minus_Lt1b3 (w' * y) (x * w'') (w' * w'') (x * y) (SNo_mul_SNo w' y Hw'1 Hy1) (SNo_mul_SNo x w'' Hx1 Hw''1) (SNo_mul_SNo w' w'' Hw'1 Hw''1) (SNo_mul_SNo x y Hx1 Hy1) to the current goal.
We will prove w' * y + x * w'' < x * y + w' * w''.
An exact proof term for the current goal is mul_SNo_Lt x y w' w'' Hx1 Hy1 Hw'1 Hw''1 Hw'2 Hw''2.
Assume Hw: w RxRy'.
Apply RxRy'E w Hw to the current goal.
Let z be given.
Assume Hz: z Rx.
Let z' be given.
Assume Hz': z' Ry.
Assume Hz1: SNo z.
Assume Hz'1: SNo z'.
Assume Hz2: x < z.
Assume Hz'2: y < z'.
Assume Hwe.
rewrite the current goal using Hwe (from left to right).
We will prove z * y + x * z' + - z * z' < x * y.
Apply add_SNo_minus_Lt1b3 (z * y) (x * z') (z * z') (x * y) (SNo_mul_SNo z y Hz1 Hy1) (SNo_mul_SNo x z' Hx1 Hz'1) (SNo_mul_SNo z z' Hz1 Hz'1) (SNo_mul_SNo x y Hx1 Hy1) to the current goal.
We will prove z * y + x * z' < x * y + z * z'.
rewrite the current goal using add_SNo_com (z * y) (x * z') (SNo_mul_SNo z y Hz1 Hy1) (SNo_mul_SNo x z' Hx1 Hz'1) (from left to right).
rewrite the current goal using add_SNo_com (x * y) (z * z') (SNo_mul_SNo x y Hx1 Hy1) (SNo_mul_SNo z z' Hz1 Hz'1) (from left to right).
An exact proof term for the current goal is mul_SNo_Lt z z' x y Hz1 Hz'1 Hx1 Hy1 Hz2 Hz'2.
rewrite the current goal using HLR'eq (from right to left).
We will prove zLxRy' RxLy', x * y < z.
Let z be given.
Apply binunionE' to the current goal.
Assume Hz: z LxRy'.
Apply LxRy'E z Hz to the current goal.
Let w be given.
Assume Hw: w Lx.
Let z' be given.
Assume Hz': z' Ry.
Assume Hw1: SNo w.
Assume Hz'1: SNo z'.
Assume Hw2: w < x.
Assume Hz'2: y < z'.
Assume Hze.
rewrite the current goal using Hze (from left to right).
We will prove x * y < w * y + x * z' + - w * z'.
Apply add_SNo_minus_Lt2b3 (w * y) (x * z') (w * z') (x * y) (SNo_mul_SNo w y Hw1 Hy1) (SNo_mul_SNo x z' Hx1 Hz'1) (SNo_mul_SNo w z' Hw1 Hz'1) (SNo_mul_SNo x y Hx1 Hy1) to the current goal.
We will prove x * y + w * z' < w * y + x * z'.
rewrite the current goal using add_SNo_com (x * y) (w * z') (SNo_mul_SNo x y Hx1 Hy1) (SNo_mul_SNo w z' Hw1 Hz'1) (from left to right).
rewrite the current goal using add_SNo_com (w * y) (x * z') (SNo_mul_SNo w y Hw1 Hy1) (SNo_mul_SNo x z' Hx1 Hz'1) (from left to right).
We will prove w * z' + x * y < x * z' + w * y.
An exact proof term for the current goal is mul_SNo_Lt x z' w y Hx1 Hz'1 Hw1 Hy1 Hw2 Hz'2.
Assume Hz: z RxLy'.
Apply RxLy'E z Hz to the current goal.
Let z' be given.
Assume Hz': z' Rx.
Let w be given.
Assume Hw: w Ly.
Assume Hz'1: SNo z'.
Assume Hw1: SNo w.
Assume Hz'2: x < z'.
Assume Hw2: w < y.
Assume Hze.
rewrite the current goal using Hze (from left to right).
We will prove x * y < z' * y + x * w + - z' * w.
Apply add_SNo_minus_Lt2b3 (z' * y) (x * w) (z' * w) (x * y) (SNo_mul_SNo z' y Hz'1 Hy1) (SNo_mul_SNo x w Hx1 Hw1) (SNo_mul_SNo z' w Hz'1 Hw1) (SNo_mul_SNo x y Hx1 Hy1) to the current goal.
We will prove x * y + z' * w < z' * y + x * w.
An exact proof term for the current goal is mul_SNo_Lt z' y x w Hz'1 Hy1 Hx1 Hw1 Hz'2 Hw2.
Apply and3I to the current goal.
An exact proof term for the current goal is L1.
An exact proof term for the current goal is Lxyeq.
Let q be given.
Assume Hq.
Apply Hq LxLy' RxRy' LxRy' RxLy' to the current goal.
An exact proof term for the current goal is LxLy'E.
An exact proof term for the current goal is LxLy'I.
An exact proof term for the current goal is RxRy'E.
An exact proof term for the current goal is RxRy'I.
An exact proof term for the current goal is LxRy'E.
An exact proof term for the current goal is LxRy'I.
An exact proof term for the current goal is RxLy'E.
An exact proof term for the current goal is RxLy'I.
An exact proof term for the current goal is L1.
An exact proof term for the current goal is Lxyeq.
Theorem. (mul_SNoCut_abs) The following is provable:
∀Lx Rx Ly Ry x y, SNoCutP Lx RxSNoCutP Ly Ryx = SNoCut Lx Rxy = SNoCut Ly Ry∀q : prop, (∀LxLy' RxRy' LxRy' RxLy', (uLxLy', ∀p : prop, (wLx, w'Ly, SNo wSNo w'w < xw' < yu = w * y + x * w' + - w * w'p)p)(wLx, w'Ly, w * y + x * w' + - w * w' LxLy')(uRxRy', ∀p : prop, (zRx, z'Ry, SNo zSNo z'x < zy < z'u = z * y + x * z' + - z * z'p)p)(zRx, z'Ry, z * y + x * z' + - z * z' RxRy')(uLxRy', ∀p : prop, (wLx, zRy, SNo wSNo zw < xy < zu = w * y + x * z + - w * zp)p)(wLx, zRy, w * y + x * z + - w * z LxRy')(uRxLy', ∀p : prop, (zRx, wLy, SNo zSNo wx < zw < yu = z * y + x * w + - z * wp)p)(zRx, wLy, z * y + x * w + - z * w RxLy')SNoCutP (LxLy' RxRy') (LxRy' RxLy')x * y = SNoCut (LxLy' RxRy') (LxRy' RxLy')q)q
Proof:
Let Lx, Rx, Ly, Ry, x and y be given.
Assume HLRx HLRy Hxe Hye.
Apply mul_SNoCutP_lem Lx Rx Ly Ry x y HLRx HLRy Hxe Hye to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
Theorem. (mul_SNo_SNoCut_SNoL_interpolate) The following is provable:
∀Lx Rx Ly Ry, SNoCutP Lx RxSNoCutP Ly Ry∀x y, x = SNoCut Lx Rxy = SNoCut Ly RyuSNoL (x * y), (vLx, wLy, u + v * w v * y + x * w) (vRx, wRy, u + v * w v * y + x * w)
Proof:
Let Lx, Rx, Ly and Ry be given.
Assume HLRx HLRy.
Let x and y be given.
Assume Hx Hy.
Set P1 to be the term λu ⇒ vLx, wLy, u + v * w v * y + x * w of type setprop.
Set P2 to be the term λu ⇒ vRx, wRy, u + v * w v * y + x * w of type setprop.
Set P to be the term λu ⇒ P1 u P2 u of type setprop.
Apply HLRx to the current goal.
Assume H.
Apply H to the current goal.
Assume HLx HRx HLRx'.
Apply HLRy to the current goal.
Assume H.
Apply H to the current goal.
Assume HLy HRy HLRy'.
Apply SNoCutP_SNoCut_impred Lx Rx HLRx to the current goal.
rewrite the current goal using Hx (from right to left).
Assume Hx1: SNo x.
Assume Hx2: SNoLev x ordsucc ((xLxordsucc (SNoLev x)) (yRxordsucc (SNoLev y))).
Assume Hx3: wLx, w < x.
Assume Hx4: zRx, x < z.
Assume Hx5: ∀u, SNo u(wLx, w < u)(zRx, u < z)SNoLev x SNoLev u SNoEq_ (SNoLev x) x u.
Apply SNoCutP_SNoCut_impred Ly Ry HLRy to the current goal.
rewrite the current goal using Hy (from right to left).
Assume Hy1: SNo y.
Assume Hy2: SNoLev y ordsucc ((yLyordsucc (SNoLev y)) (yRyordsucc (SNoLev y))).
Assume Hy3: wLy, w < y.
Assume Hy4: zRy, y < z.
Assume Hy5: ∀u, SNo u(wLy, w < u)(zRy, u < z)SNoLev y SNoLev u SNoEq_ (SNoLev y) y u.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Hx1 Hy1.
We prove the intermediate claim LI: ∀u, SNo uSNoLev u SNoLev (x * y)u < x * yP u.
Apply SNoLev_ind to the current goal.
Let u be given.
Assume Hu1: SNo u.
Assume IH: zSNoS_ (SNoLev u), SNoLev z SNoLev (x * y)z < x * yP z.
Assume Hu2: SNoLev u SNoLev (x * y).
Assume Hu3: u < x * y.
Apply dneg to the current goal.
Assume HNC: ¬ P u.
We prove the intermediate claim L1: vLx, wLy, v * y + x * w < u + v * w.
Let v be given.
Assume Hv.
Let w be given.
Assume Hw.
We prove the intermediate claim Lv1: SNo v.
An exact proof term for the current goal is HLx v Hv.
We prove the intermediate claim Lw1: SNo w.
An exact proof term for the current goal is HLy w Hw.
Apply SNoLtLe_or (v * y + x * w) (u + v * w) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Lv1 Hy1) (SNo_mul_SNo x w Hx1 Lw1)) (SNo_add_SNo u (v * w) Hu1 (SNo_mul_SNo v w Lv1 Lw1)) to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H.
Apply HNC to the current goal.
Apply orIL to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We use w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is H.
We prove the intermediate claim L2: vRx, wRy, v * y + x * w < u + v * w.
Let v be given.
Assume Hv.
Let w be given.
Assume Hw.
We prove the intermediate claim Lv1: SNo v.
An exact proof term for the current goal is HRx v Hv.
We prove the intermediate claim Lw1: SNo w.
An exact proof term for the current goal is HRy w Hw.
Apply SNoLtLe_or (v * y + x * w) (u + v * w) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Lv1 Hy1) (SNo_mul_SNo x w Hx1 Lw1)) (SNo_add_SNo u (v * w) Hu1 (SNo_mul_SNo v w Lv1 Lw1)) to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H.
Apply HNC to the current goal.
Apply orIR to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We use w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is H.
Apply SNoLt_irref u to the current goal.
Apply SNoLtLe_tra u (x * y) u Hu1 Lxy Hu1 Hu3 to the current goal.
We will prove x * y u.
Apply mul_SNoCut_abs Lx Rx Ly Ry x y HLRx HLRy Hx Hy to the current goal.
Let LxLy', RxRy', LxRy' and RxLy' be given.
Assume LxLy'E LxLy'I RxRy'E RxRy'I LxRy'E LxRy'I RxLy'E RxLy'I.
Assume HSC: SNoCutP (LxLy' RxRy') (LxRy' RxLy').
Assume HE: x * y = SNoCut (LxLy' RxRy') (LxRy' RxLy').
rewrite the current goal using HE (from left to right).
We will prove SNoCut (LxLy' RxRy') (LxRy' RxLy') u.
rewrite the current goal using SNo_eta u Hu1 (from left to right).
We will prove SNoCut (LxLy' RxRy') (LxRy' RxLy') SNoCut (SNoL u) (SNoR u).
Apply SNoCut_Le (LxLy' RxRy') (LxRy' RxLy') (SNoL u) (SNoR u) HSC (SNoCutP_SNoL_SNoR u Hu1) to the current goal.
We will prove zLxLy' RxRy', z < SNoCut (SNoL u) (SNoR u).
Let z be given.
rewrite the current goal using SNo_eta u Hu1 (from right to left).
Apply binunionE' to the current goal.
Assume Hz: z LxLy'.
Apply LxLy'E z Hz to the current goal.
Let w0 be given.
Assume Hw0.
Let w1 be given.
Assume Hw1.
Assume Hw0a Hw1a Hw0x Hw1y Hze.
rewrite the current goal using Hze (from left to right).
We will prove w0 * y + x * w1 + - w0 * w1 < u.
Apply add_SNo_minus_Lt1b3 (w0 * y) (x * w1) (w0 * w1) u (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_mul_SNo w0 w1 Hw0a Hw1a) Hu1 to the current goal.
We will prove w0 * y + x * w1 < u + w0 * w1.
Apply SNoLtLe_or (w0 * y + x * w1) (u + w0 * w1) (SNo_add_SNo (w0 * y) (x * w1) (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_mul_SNo x w1 Hx1 Hw1a)) (SNo_add_SNo u (w0 * w1) Hu1 (SNo_mul_SNo w0 w1 Hw0a Hw1a)) to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: u + w0 * w1 w0 * y + x * w1.
Apply HNC to the current goal.
We will prove P1 u P2 u.
Apply orIL to the current goal.
We will prove vLx, wLy, u + v * w v * y + x * w.
We use w0 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw0.
We use w1 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw1.
An exact proof term for the current goal is H.
Assume Hz: z RxRy'.
Apply RxRy'E z Hz to the current goal.
Let z0 be given.
Assume Hz0.
Let z1 be given.
Assume Hz1.
Assume Hz0a Hz1a Hz0x Hz1y Hze.
rewrite the current goal using Hze (from left to right).
We will prove z0 * y + x * z1 + - z0 * z1 < u.
Apply add_SNo_minus_Lt1b3 (z0 * y) (x * z1) (z0 * z1) u (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo x z1 Hx1 Hz1a) (SNo_mul_SNo z0 z1 Hz0a Hz1a) Hu1 to the current goal.
We will prove z0 * y + x * z1 < u + z0 * z1.
Apply SNoLtLe_or (z0 * y + x * z1) (u + z0 * z1) (SNo_add_SNo (z0 * y) (x * z1) (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo x z1 Hx1 Hz1a)) (SNo_add_SNo u (z0 * z1) Hu1 (SNo_mul_SNo z0 z1 Hz0a Hz1a)) to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: u + z0 * z1 z0 * y + x * z1.
Apply HNC to the current goal.
We will prove P1 u P2 u.
Apply orIR to the current goal.
We will prove vRx, wRy, u + v * w v * y + x * w.
We use z0 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz0.
We use z1 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz1.
An exact proof term for the current goal is H.
We will prove zSNoR u, SNoCut (LxLy' RxRy') (LxRy' RxLy') < z.
Let z be given.
Assume Hz: z SNoR u.
rewrite the current goal using HE (from right to left).
We will prove x * y < z.
Apply SNoR_E u Hu1 z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev u.
Assume Hz3: u < z.
Apply SNoLt_trichotomy_or_impred z (x * y) Hz1 Lxy to the current goal.
Assume H1: z < x * y.
We prove the intermediate claim LPz: P z.
Apply IH z to the current goal.
We will prove z SNoS_ (SNoLev u).
Apply SNoS_I2 to the current goal.
An exact proof term for the current goal is Hz1.
An exact proof term for the current goal is Hu1.
An exact proof term for the current goal is Hz2.
We will prove SNoLev z SNoLev (x * y).
An exact proof term for the current goal is ordinal_TransSet (SNoLev (x * y)) (SNoLev_ordinal (x * y) Lxy) (SNoLev u) Hu2 (SNoLev z) Hz2.
We will prove z < x * y.
An exact proof term for the current goal is H1.
Apply LPz to the current goal.
Assume H2: P1 z.
Apply H2 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v Lx.
Assume H2.
Apply H2 to the current goal.
Let w be given.
Assume H2.
Apply H2 to the current goal.
Assume Hw: w Ly.
Assume Hvw: z + v * w v * y + x * w.
We prove the intermediate claim Lv1: SNo v.
An exact proof term for the current goal is HLx v Hv.
We prove the intermediate claim Lw1: SNo w.
An exact proof term for the current goal is HLy w Hw.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Lv1 Lw1.
We prove the intermediate claim L3: z + v * w < u + v * w.
Apply SNoLeLt_tra (z + v * w) (v * y + x * w) (u + v * w) (SNo_add_SNo z (v * w) Hz1 Lvw) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Lv1 Hy1) (SNo_mul_SNo x w Hx1 Lw1)) (SNo_add_SNo u (v * w) Hu1 Lvw) Hvw to the current goal.
We will prove v * y + x * w < u + v * w.
An exact proof term for the current goal is L1 v Hv w Hw.
We prove the intermediate claim L4: z < u.
An exact proof term for the current goal is add_SNo_Lt1_cancel z (v * w) u Hz1 Lvw Hu1 L3.
We will prove False.
Apply SNoLt_irref u to the current goal.
An exact proof term for the current goal is SNoLt_tra u z u Hu1 Hz1 Hu1 Hz3 L4.
Assume H2: P2 z.
Apply H2 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v Rx.
Assume H2.
Apply H2 to the current goal.
Let w be given.
Assume H2.
Apply H2 to the current goal.
Assume Hw: w Ry.
Assume Hvw: z + v * w v * y + x * w.
We prove the intermediate claim Lv1: SNo v.
An exact proof term for the current goal is HRx v Hv.
We prove the intermediate claim Lw1: SNo w.
An exact proof term for the current goal is HRy w Hw.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Lv1 Lw1.
We prove the intermediate claim L5: z + v * w < u + v * w.
Apply SNoLeLt_tra (z + v * w) (v * y + x * w) (u + v * w) (SNo_add_SNo z (v * w) Hz1 Lvw) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Lv1 Hy1) (SNo_mul_SNo x w Hx1 Lw1)) (SNo_add_SNo u (v * w) Hu1 Lvw) Hvw to the current goal.
We will prove v * y + x * w < u + v * w.
An exact proof term for the current goal is L2 v Hv w Hw.
We prove the intermediate claim L6: z < u.
An exact proof term for the current goal is add_SNo_Lt1_cancel z (v * w) u Hz1 Lvw Hu1 L5.
We will prove False.
Apply SNoLt_irref u to the current goal.
An exact proof term for the current goal is SNoLt_tra u z u Hu1 Hz1 Hu1 Hz3 L6.
Assume H1: z = x * y.
Apply In_no2cycle (SNoLev u) (SNoLev (x * y)) Hu2 to the current goal.
We will prove SNoLev (x * y) SNoLev u.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hz2.
Assume H1: x * y < z.
An exact proof term for the current goal is H1.
Let u be given.
Assume Hu: u SNoL (x * y).
Apply SNoL_E (x * y) Lxy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev (x * y).
Assume Hu3: u < x * y.
An exact proof term for the current goal is LI u Hu1 Hu2 Hu3.
Theorem. (mul_SNo_SNoCut_SNoL_interpolate_impred) The following is provable:
∀Lx Rx Ly Ry, SNoCutP Lx RxSNoCutP Ly Ry∀x y, x = SNoCut Lx Rxy = SNoCut Ly RyuSNoL (x * y), ∀p : prop, (vLx, wLy, u + v * w v * y + x * wp)(vRx, wRy, u + v * w v * y + x * wp)p
Proof:
Let Lx, Rx, Ly and Ry be given.
Assume HLRx HLRy.
Let x and y be given.
Assume Hx Hy.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp1 Hp2.
Apply mul_SNo_SNoCut_SNoL_interpolate Lx Rx Ly Ry HLRx HLRy x y Hx Hy u Hu to the current goal.
Assume H1.
Apply H1 to the current goal.
Let v be given.
Assume H1.
Apply H1 to the current goal.
Assume Hv.
Assume H1.
Apply H1 to the current goal.
Let w be given.
Assume H1.
Apply H1 to the current goal.
Assume Hw Hvw.
An exact proof term for the current goal is Hp1 v Hv w Hw Hvw.
Assume H1.
Apply H1 to the current goal.
Let v be given.
Assume H1.
Apply H1 to the current goal.
Assume Hv.
Assume H1.
Apply H1 to the current goal.
Let w be given.
Assume H1.
Apply H1 to the current goal.
Assume Hw Hvw.
An exact proof term for the current goal is Hp2 v Hv w Hw Hvw.
Theorem. (mul_SNo_SNoCut_SNoR_interpolate) The following is provable:
∀Lx Rx Ly Ry, SNoCutP Lx RxSNoCutP Ly Ry∀x y, x = SNoCut Lx Rxy = SNoCut Ly RyuSNoR (x * y), (vLx, wRy, v * y + x * w u + v * w) (vRx, wLy, v * y + x * w u + v * w)
Proof:
Let Lx, Rx, Ly and Ry be given.
Assume HLRx HLRy.
Let x and y be given.
Assume Hx Hy.
Set P1 to be the term λu ⇒ vLx, wRy, v * y + x * w u + v * w of type setprop.
Set P2 to be the term λu ⇒ vRx, wLy, v * y + x * w u + v * w of type setprop.
Set P to be the term λu ⇒ P1 u P2 u of type setprop.
Apply HLRx to the current goal.
Assume H.
Apply H to the current goal.
Assume HLx HRx HLRx'.
Apply HLRy to the current goal.
Assume H.
Apply H to the current goal.
Assume HLy HRy HLRy'.
Apply SNoCutP_SNoCut_impred Lx Rx HLRx to the current goal.
rewrite the current goal using Hx (from right to left).
Assume Hx1: SNo x.
Assume Hx2: SNoLev x ordsucc ((xLxordsucc (SNoLev x)) (yRxordsucc (SNoLev y))).
Assume Hx3: wLx, w < x.
Assume Hx4: zRx, x < z.
Assume Hx5: ∀u, SNo u(wLx, w < u)(zRx, u < z)SNoLev x SNoLev u SNoEq_ (SNoLev x) x u.
Apply SNoCutP_SNoCut_impred Ly Ry HLRy to the current goal.
rewrite the current goal using Hy (from right to left).
Assume Hy1: SNo y.
Assume Hy2: SNoLev y ordsucc ((yLyordsucc (SNoLev y)) (yRyordsucc (SNoLev y))).
Assume Hy3: wLy, w < y.
Assume Hy4: zRy, y < z.
Assume Hy5: ∀u, SNo u(wLy, w < u)(zRy, u < z)SNoLev y SNoLev u SNoEq_ (SNoLev y) y u.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Hx1 Hy1.
We prove the intermediate claim LI: ∀u, SNo uSNoLev u SNoLev (x * y)x * y < uP u.
Apply SNoLev_ind to the current goal.
Let u be given.
Assume Hu1: SNo u.
Assume IH: zSNoS_ (SNoLev u), SNoLev z SNoLev (x * y)x * y < zP z.
Assume Hu2: SNoLev u SNoLev (x * y).
Assume Hu3: x * y < u.
Apply dneg to the current goal.
Assume HNC: ¬ P u.
We prove the intermediate claim L1: vLx, wRy, u + v * w < v * y + x * w.
Let v be given.
Assume Hv.
Let w be given.
Assume Hw.
We prove the intermediate claim Lv1: SNo v.
An exact proof term for the current goal is HLx v Hv.
We prove the intermediate claim Lw1: SNo w.
An exact proof term for the current goal is HRy w Hw.
Apply SNoLtLe_or (u + v * w) (v * y + x * w) (SNo_add_SNo u (v * w) Hu1 (SNo_mul_SNo v w Lv1 Lw1)) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Lv1 Hy1) (SNo_mul_SNo x w Hx1 Lw1)) to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H.
Apply HNC to the current goal.
Apply orIL to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We use w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is H.
We prove the intermediate claim L2: vRx, wLy, u + v * w < v * y + x * w.
Let v be given.
Assume Hv.
Let w be given.
Assume Hw.
We prove the intermediate claim Lv1: SNo v.
An exact proof term for the current goal is HRx v Hv.
We prove the intermediate claim Lw1: SNo w.
An exact proof term for the current goal is HLy w Hw.
Apply SNoLtLe_or (u + v * w) (v * y + x * w) (SNo_add_SNo u (v * w) Hu1 (SNo_mul_SNo v w Lv1 Lw1)) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Lv1 Hy1) (SNo_mul_SNo x w Hx1 Lw1)) to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H.
Apply HNC to the current goal.
Apply orIR to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We use w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is H.
Apply SNoLt_irref (x * y) to the current goal.
Apply SNoLtLe_tra (x * y) u (x * y) Lxy Hu1 Lxy Hu3 to the current goal.
We will prove u x * y.
Apply mul_SNoCut_abs Lx Rx Ly Ry x y HLRx HLRy Hx Hy to the current goal.
Let LxLy', RxRy', LxRy' and RxLy' be given.
Assume LxLy'E LxLy'I RxRy'E RxRy'I LxRy'E LxRy'I RxLy'E RxLy'I.
Assume HSC: SNoCutP (LxLy' RxRy') (LxRy' RxLy').
Assume HE: x * y = SNoCut (LxLy' RxRy') (LxRy' RxLy').
rewrite the current goal using HE (from left to right).
We will prove u SNoCut (LxLy' RxRy') (LxRy' RxLy').
rewrite the current goal using SNo_eta u Hu1 (from left to right).
We will prove SNoCut (SNoL u) (SNoR u) SNoCut (LxLy' RxRy') (LxRy' RxLy').
Apply SNoCut_Le (SNoL u) (SNoR u) (LxLy' RxRy') (LxRy' RxLy') (SNoCutP_SNoL_SNoR u Hu1) HSC to the current goal.
We will prove zSNoL u, z < SNoCut (LxLy' RxRy') (LxRy' RxLy').
Let z be given.
Assume Hz: z SNoL u.
rewrite the current goal using HE (from right to left).
We will prove z < x * y.
Apply SNoL_E u Hu1 z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev u.
Assume Hz3: z < u.
Apply SNoLt_trichotomy_or_impred (x * y) z Lxy Hz1 to the current goal.
Assume H1: x * y < z.
We prove the intermediate claim LPz: P z.
Apply IH z to the current goal.
We will prove z SNoS_ (SNoLev u).
Apply SNoS_I2 to the current goal.
An exact proof term for the current goal is Hz1.
An exact proof term for the current goal is Hu1.
An exact proof term for the current goal is Hz2.
We will prove SNoLev z SNoLev (x * y).
An exact proof term for the current goal is ordinal_TransSet (SNoLev (x * y)) (SNoLev_ordinal (x * y) Lxy) (SNoLev u) Hu2 (SNoLev z) Hz2.
We will prove x * y < z.
An exact proof term for the current goal is H1.
Apply LPz to the current goal.
Assume H2: P1 z.
Apply H2 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v Lx.
Assume H2.
Apply H2 to the current goal.
Let w be given.
Assume H2.
Apply H2 to the current goal.
Assume Hw: w Ry.
Assume Hvw: v * y + x * w z + v * w.
We prove the intermediate claim Lv1: SNo v.
An exact proof term for the current goal is HLx v Hv.
We prove the intermediate claim Lw1: SNo w.
An exact proof term for the current goal is HRy w Hw.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Lv1 Lw1.
We prove the intermediate claim L3: u + v * w < z + v * w.
Apply SNoLtLe_tra (u + v * w) (v * y + x * w) (z + v * w) (SNo_add_SNo u (v * w) Hu1 Lvw) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Lv1 Hy1) (SNo_mul_SNo x w Hx1 Lw1)) (SNo_add_SNo z (v * w) Hz1 Lvw) to the current goal.
We will prove u + v * w < v * y + x * w.
An exact proof term for the current goal is L1 v Hv w Hw.
An exact proof term for the current goal is Hvw.
We prove the intermediate claim L4: u < z.
An exact proof term for the current goal is add_SNo_Lt1_cancel u (v * w) z Hu1 Lvw Hz1 L3.
We will prove False.
Apply SNoLt_irref u to the current goal.
An exact proof term for the current goal is SNoLt_tra u z u Hu1 Hz1 Hu1 L4 Hz3.
Assume H2: P2 z.
Apply H2 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: v Rx.
Assume H2.
Apply H2 to the current goal.
Let w be given.
Assume H2.
Apply H2 to the current goal.
Assume Hw: w Ly.
Assume Hvw: v * y + x * w z + v * w.
We prove the intermediate claim Lv1: SNo v.
An exact proof term for the current goal is HRx v Hv.
We prove the intermediate claim Lw1: SNo w.
An exact proof term for the current goal is HLy w Hw.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Lv1 Lw1.
We prove the intermediate claim L5: u + v * w < z + v * w.
Apply SNoLtLe_tra (u + v * w) (v * y + x * w) (z + v * w) (SNo_add_SNo u (v * w) Hu1 Lvw) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Lv1 Hy1) (SNo_mul_SNo x w Hx1 Lw1)) (SNo_add_SNo z (v * w) Hz1 Lvw) to the current goal.
We will prove u + v * w < v * y + x * w.
An exact proof term for the current goal is L2 v Hv w Hw.
An exact proof term for the current goal is Hvw.
We prove the intermediate claim L6: u < z.
An exact proof term for the current goal is add_SNo_Lt1_cancel u (v * w) z Hu1 Lvw Hz1 L5.
We will prove False.
Apply SNoLt_irref u to the current goal.
An exact proof term for the current goal is SNoLt_tra u z u Hu1 Hz1 Hu1 L6 Hz3.
Assume H1: x * y = z.
Apply In_no2cycle (SNoLev u) (SNoLev (x * y)) Hu2 to the current goal.
We will prove SNoLev (x * y) SNoLev u.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is Hz2.
Assume H1: z < x * y.
An exact proof term for the current goal is H1.
We will prove zLxRy' RxLy', SNoCut (SNoL u) (SNoR u) < z.
Let z be given.
rewrite the current goal using SNo_eta u Hu1 (from right to left).
Apply binunionE' to the current goal.
Assume Hz: z LxRy'.
Apply LxRy'E z Hz to the current goal.
Let w0 be given.
Assume Hw0.
Let w1 be given.
Assume Hw1.
Assume Hw0a Hw1a Hw0x Hw1y Hze.
rewrite the current goal using Hze (from left to right).
We will prove u < w0 * y + x * w1 + - w0 * w1.
Apply add_SNo_minus_Lt2b3 (w0 * y) (x * w1) (w0 * w1) u (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_mul_SNo x w1 Hx1 Hw1a) (SNo_mul_SNo w0 w1 Hw0a Hw1a) Hu1 to the current goal.
We will prove u + w0 * w1 < w0 * y + x * w1.
Apply SNoLtLe_or (u + w0 * w1) (w0 * y + x * w1) (SNo_add_SNo u (w0 * w1) Hu1 (SNo_mul_SNo w0 w1 Hw0a Hw1a)) (SNo_add_SNo (w0 * y) (x * w1) (SNo_mul_SNo w0 y Hw0a Hy1) (SNo_mul_SNo x w1 Hx1 Hw1a)) to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: w0 * y + x * w1 u + w0 * w1.
Apply HNC to the current goal.
We will prove P1 u P2 u.
Apply orIL to the current goal.
We will prove vLx, wRy, v * y + x * w u + v * w.
We use w0 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw0.
We use w1 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw1.
An exact proof term for the current goal is H.
Assume Hz: z RxLy'.
Apply RxLy'E z Hz to the current goal.
Let z0 be given.
Assume Hz0.
Let z1 be given.
Assume Hz1.
Assume Hz0a Hz1a Hz0x Hz1y Hze.
rewrite the current goal using Hze (from left to right).
We will prove u < z0 * y + x * z1 + - z0 * z1.
Apply add_SNo_minus_Lt2b3 (z0 * y) (x * z1) (z0 * z1) u (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo x z1 Hx1 Hz1a) (SNo_mul_SNo z0 z1 Hz0a Hz1a) Hu1 to the current goal.
We will prove u + z0 * z1 < z0 * y + x * z1.
Apply SNoLtLe_or (u + z0 * z1) (z0 * y + x * z1) (SNo_add_SNo u (z0 * z1) Hu1 (SNo_mul_SNo z0 z1 Hz0a Hz1a)) (SNo_add_SNo (z0 * y) (x * z1) (SNo_mul_SNo z0 y Hz0a Hy1) (SNo_mul_SNo x z1 Hx1 Hz1a)) to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: z0 * y + x * z1 u + z0 * z1.
Apply HNC to the current goal.
We will prove P1 u P2 u.
Apply orIR to the current goal.
We will prove vRx, wLy, v * y + x * w u + v * w.
We use z0 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz0.
We use z1 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz1.
An exact proof term for the current goal is H.
Let u be given.
Assume Hu: u SNoR (x * y).
Apply SNoR_E (x * y) Lxy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev (x * y).
Assume Hu3: x * y < u.
An exact proof term for the current goal is LI u Hu1 Hu2 Hu3.
Theorem. (mul_SNo_SNoCut_SNoR_interpolate_impred) The following is provable:
∀Lx Rx Ly Ry, SNoCutP Lx RxSNoCutP Ly Ry∀x y, x = SNoCut Lx Rxy = SNoCut Ly RyuSNoR (x * y), ∀p : prop, (vLx, wRy, v * y + x * w u + v * wp)(vRx, wLy, v * y + x * w u + v * wp)p
Proof:
Let Lx, Rx, Ly and Ry be given.
Assume HLRx HLRy.
Let x and y be given.
Assume Hx Hy.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp1 Hp2.
Apply mul_SNo_SNoCut_SNoR_interpolate Lx Rx Ly Ry HLRx HLRy x y Hx Hy u Hu to the current goal.
Assume H1.
Apply H1 to the current goal.
Let v be given.
Assume H1.
Apply H1 to the current goal.
Assume Hv.
Assume H1.
Apply H1 to the current goal.
Let w be given.
Assume H1.
Apply H1 to the current goal.
Assume Hw Hvw.
An exact proof term for the current goal is Hp1 v Hv w Hw Hvw.
Assume H1.
Apply H1 to the current goal.
Let v be given.
Assume H1.
Apply H1 to the current goal.
Assume Hv.
Assume H1.
Apply H1 to the current goal.
Let w be given.
Assume H1.
Apply H1 to the current goal.
Assume Hw Hvw.
An exact proof term for the current goal is Hp2 v Hv w Hw Hvw.
Theorem. (nonpos_nonneg_0) The following is provable:
m nω, m = - nm = 0 n = 0
Proof:
Let m be given.
Assume Hm.
Let n be given.
Assume Hn Hmn.
Apply nat_inv n (omega_nat_p n Hn) to the current goal.
Assume H1: n = 0.
Apply andI to the current goal.
rewrite the current goal using Hmn (from left to right).
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is minus_SNo_0.
An exact proof term for the current goal is H1.
Assume H1.
We will prove False.
Apply H1 to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: nat_p k.
Assume H1: n = ordsucc k.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLeLt_tra 0 m 0 SNo_0 (omega_SNo m Hm) SNo_0 to the current goal.
We will prove 0 m.
Apply ordinal_Subq_SNoLe 0 m ordinal_Empty (nat_p_ordinal m (omega_nat_p m Hm)) to the current goal.
We will prove 0 m.
Apply Subq_Empty to the current goal.
We will prove m < 0.
rewrite the current goal using Hmn (from left to right).
We will prove - n < 0.
Apply minus_SNo_Lt_contra1 0 n SNo_0 (omega_SNo n Hn) to the current goal.
We will prove - 0 < n.
rewrite the current goal using minus_SNo_0 (from left to right).
We will prove 0 < n.
Apply ordinal_In_SNoLt n (nat_p_ordinal n (omega_nat_p n Hn)) to the current goal.
We will prove 0 n.
rewrite the current goal using H1 (from left to right).
We will prove 0 ordsucc k.
Apply nat_0_in_ordsucc to the current goal.
An exact proof term for the current goal is Hk.
Theorem. (mul_minus_SNo_distrR) The following is provable:
∀x y, SNo xSNo yx * (- y) = - (x * y)
Proof:
Let x and y be given.
Assume Hx Hy.
Use transitivity with (- y) * x, and - (y * x).
An exact proof term for the current goal is mul_SNo_com x (- y) Hx (SNo_minus_SNo y Hy).
An exact proof term for the current goal is mul_SNo_minus_distrL y x Hy Hx.
Use f_equal.
An exact proof term for the current goal is mul_SNo_com y x Hy Hx.
End of Section SurrealMul
Beginning of Section Int
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Definition. We define int to be ω {- n|nω} of type set.
Theorem. (int_SNo_cases) The following is provable:
∀p : setprop, (nω, p n)(nω, p (- n))xint, p x
Proof:
Let p be given.
Assume Hp1 Hp2.
Let x be given.
Assume Hx.
We will prove p x.
Apply binunionE ω {- n|nω} x Hx to the current goal.
Assume Hx: x ω.
An exact proof term for the current goal is Hp1 x Hx.
Assume Hx.
Apply ReplE_impred ω minus_SNo x Hx to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hxn: x = - n.
rewrite the current goal using Hxn (from left to right).
An exact proof term for the current goal is Hp2 n Hn.
Theorem. (int_3_cases) The following is provable:
nint, ∀p : prop, (mω, n = - ordsucc mp)(n = 0p)(mω, n = ordsucc mp)p
Proof:
Apply int_SNo_cases to the current goal.
Let m be given.
Assume Hm: m ω.
Let p be given.
Assume Hneg H0 Hpos.
We prove the intermediate claim L1: ∀k, nat_p km = ordsucc kp.
Let k be given.
Assume Hk HmSk.
An exact proof term for the current goal is Hpos k (nat_p_omega k Hk) HmSk.
An exact proof term for the current goal is nat_inv_impred (λk ⇒ m = kp) H0 L1 m (omega_nat_p m Hm) (λq H ⇒ H).
Let m be given.
Assume Hm: m ω.
Let p be given.
Assume Hneg: kω, - m = - ordsucc kp.
Assume H0: - m = 0p.
Assume Hpos: kω, - m = ordsucc kp.
We prove the intermediate claim L2: m = 0p.
Assume Hm0.
Apply H0 to the current goal.
rewrite the current goal using Hm0 (from left to right).
An exact proof term for the current goal is minus_SNo_0.
We prove the intermediate claim L3: ∀k, nat_p km = ordsucc kp.
Let k be given.
Assume Hk HmSk.
Apply Hneg k (nat_p_omega k Hk) to the current goal.
We will prove - m = - ordsucc k.
Use f_equal.
An exact proof term for the current goal is HmSk.
Apply nat_inv_impred (λk ⇒ m = kp) L2 L3 m (omega_nat_p m Hm) (λq H ⇒ H) to the current goal.
Theorem. (int_SNo) The following is provable:
Proof:
Apply int_SNo_cases to the current goal.
An exact proof term for the current goal is omega_SNo.
Let n be given.
Assume Hn.
We will prove SNo (- n).
Apply SNo_minus_SNo to the current goal.
We will prove SNo n.
An exact proof term for the current goal is omega_SNo n Hn.
Theorem. (Subq_omega_int) The following is provable:
Proof:
Let n be given.
Assume Hn.
We will prove n ω {- k|kω}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hn.
Theorem. (int_minus_SNo_omega) The following is provable:
Proof:
Let n be given.
Assume Hn.
We will prove - n ω {- k|kω}.
Apply binunionI2 to the current goal.
We will prove - n {- k|kω}.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hn.
Theorem. (int_add_SNo_lem) The following is provable:
nω, ∀m, nat_p m- n + m int
Proof:
Let n be given.
Assume Hn.
We prove the intermediate claim Lnn: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We prove the intermediate claim Lno: ordinal n.
An exact proof term for the current goal is nat_p_ordinal n Lnn.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is ordinal_SNo n Lno.
Apply nat_ind to the current goal.
We will prove - n + 0 int.
rewrite the current goal using add_SNo_0R (- n) (SNo_minus_SNo n LnS) (from left to right).
We will prove - n int.
Apply int_minus_SNo_omega to the current goal.
An exact proof term for the current goal is Hn.
Let m be given.
Assume Hm: nat_p m.
Assume IHm: - n + m int.
We prove the intermediate claim Lmo: ordinal m.
An exact proof term for the current goal is nat_p_ordinal m Hm.
We prove the intermediate claim LmS: SNo m.
An exact proof term for the current goal is ordinal_SNo m Lmo.
We will prove - n + ordsucc m int.
rewrite the current goal using ordinal_ordsucc_SNo_eq m Lmo (from left to right).
We will prove - n + (1 + m) int.
rewrite the current goal using add_SNo_com_3_0_1 (- n) 1 m (SNo_minus_SNo n LnS) SNo_1 LmS (from left to right).
We will prove 1 + (- n + m) int.
We prove the intermediate claim L1: kω, - n + m = k1 + (- n + m) int.
Let k be given.
Assume Hk He.
rewrite the current goal using He (from left to right).
We will prove 1 + k int.
rewrite the current goal using ordinal_ordsucc_SNo_eq k (nat_p_ordinal k (omega_nat_p k Hk)) (from right to left).
We will prove ordsucc k int.
Apply Subq_omega_int to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Hk.
We prove the intermediate claim L2: kω, - n + m = - k1 + (- n + m) int.
Let k be given.
Assume Hk He.
rewrite the current goal using He (from left to right).
We will prove 1 + - k int.
Apply nat_inv k (omega_nat_p k Hk) to the current goal.
Assume H1: k = 0.
rewrite the current goal using H1 (from left to right).
rewrite the current goal using minus_SNo_0 (from left to right).
rewrite the current goal using add_SNo_0R 1 SNo_1 (from left to right).
We will prove 1 int.
Apply Subq_omega_int to the current goal.
We will prove 1 ω.
An exact proof term for the current goal is nat_p_omega 1 nat_1.
Assume H1.
Apply H1 to the current goal.
Let k' be given.
Assume H1.
Apply H1 to the current goal.
Assume H1: nat_p k'.
Assume H2: k = ordsucc k'.
rewrite the current goal using H2 (from left to right).
We will prove 1 + - (ordsucc k') int.
rewrite the current goal using ordinal_ordsucc_SNo_eq k' (nat_p_ordinal k' H1) (from left to right).
We will prove 1 + - (1 + k') int.
rewrite the current goal using minus_add_SNo_distr 1 k' SNo_1 (ordinal_SNo k' (nat_p_ordinal k' H1)) (from left to right).
We will prove 1 + - 1 + - k' int.
rewrite the current goal using add_SNo_minus_L2' 1 (- k') SNo_1 (SNo_minus_SNo k' (ordinal_SNo k' (nat_p_ordinal k' H1))) (from left to right).
We will prove - k' int.
Apply int_minus_SNo_omega to the current goal.
An exact proof term for the current goal is nat_p_omega k' H1.
Apply int_SNo_cases (λx ⇒ - n + m = x1 + (- n + m) int) L1 L2 (- n + m) IHm to the current goal.
Use reflexivity.
Theorem. (int_add_SNo) The following is provable:
Proof:
Apply int_SNo_cases to the current goal.
Let n be given.
Assume Hn: n ω.
Apply int_SNo_cases to the current goal.
Let m be given.
Assume Hm: m ω.
Apply Subq_omega_int to the current goal.
We will prove n + m ω.
An exact proof term for the current goal is add_SNo_In_omega n Hn m Hm.
Let m be given.
Assume Hm: m ω.
We will prove n + - m int.
rewrite the current goal using add_SNo_com n (- m) (ordinal_SNo n (nat_p_ordinal n (omega_nat_p n Hn))) (SNo_minus_SNo m (ordinal_SNo m (nat_p_ordinal m (omega_nat_p m Hm)))) (from left to right).
We will prove - m + n int.
An exact proof term for the current goal is int_add_SNo_lem m Hm n (omega_nat_p n Hn).
Let n be given.
Assume Hn: n ω.
Apply int_SNo_cases to the current goal.
Let m be given.
Assume Hm: m ω.
We will prove - n + m int.
An exact proof term for the current goal is int_add_SNo_lem n Hn m (omega_nat_p m Hm).
Let m be given.
Assume Hm: m ω.
We will prove - n + - m int.
We prove the intermediate claim Ln: SNo n.
An exact proof term for the current goal is ordinal_SNo n (nat_p_ordinal n (omega_nat_p n Hn)).
We prove the intermediate claim Lm: SNo m.
An exact proof term for the current goal is ordinal_SNo m (nat_p_ordinal m (omega_nat_p m Hm)).
rewrite the current goal using minus_add_SNo_distr n m Ln Lm (from right to left).
Apply int_minus_SNo_omega to the current goal.
We will prove n + m ω.
An exact proof term for the current goal is add_SNo_In_omega n Hn m Hm.
Theorem. (int_minus_SNo) The following is provable:
Proof:
Apply int_SNo_cases to the current goal.
Let n be given.
Assume Hn.
We will prove - n int.
Apply int_minus_SNo_omega to the current goal.
An exact proof term for the current goal is Hn.
Let n be given.
Assume Hn.
We will prove - - n int.
rewrite the current goal using minus_SNo_invol n (ordinal_SNo n (nat_p_ordinal n (omega_nat_p n Hn))) (from left to right).
We will prove n int.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is Hn.
Theorem. (int_mul_SNo) The following is provable:
Proof:
Apply int_SNo_cases to the current goal.
Let n be given.
Assume Hn: n ω.
We prove the intermediate claim Lnn: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We prove the intermediate claim Lno: ordinal n.
An exact proof term for the current goal is nat_p_ordinal n Lnn.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is ordinal_SNo n Lno.
Apply int_SNo_cases to the current goal.
Let m be given.
Assume Hm: m ω.
Apply Subq_omega_int to the current goal.
We will prove n * m ω.
An exact proof term for the current goal is mul_SNo_In_omega n Hn m Hm.
Let m be given.
Assume Hm: m ω.
We prove the intermediate claim Lmn: nat_p m.
An exact proof term for the current goal is omega_nat_p m Hm.
We prove the intermediate claim Lmo: ordinal m.
An exact proof term for the current goal is nat_p_ordinal m Lmn.
We prove the intermediate claim LmS: SNo m.
An exact proof term for the current goal is ordinal_SNo m Lmo.
We will prove n * (- m) int.
rewrite the current goal using mul_SNo_com n (- m) LnS (SNo_minus_SNo m LmS) (from left to right).
We will prove (- m) * n int.
rewrite the current goal using mul_SNo_minus_distrL m n LmS LnS (from left to right).
We will prove - (m * n) int.
Apply int_minus_SNo to the current goal.
We will prove m * n int.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is mul_SNo_In_omega m Hm n Hn.
Let n be given.
Assume Hn: n ω.
We prove the intermediate claim Lnn: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We prove the intermediate claim Lno: ordinal n.
An exact proof term for the current goal is nat_p_ordinal n Lnn.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is ordinal_SNo n Lno.
Apply int_SNo_cases to the current goal.
Let m be given.
Assume Hm: m ω.
We prove the intermediate claim Lmn: nat_p m.
An exact proof term for the current goal is omega_nat_p m Hm.
We prove the intermediate claim Lmo: ordinal m.
An exact proof term for the current goal is nat_p_ordinal m Lmn.
We prove the intermediate claim LmS: SNo m.
An exact proof term for the current goal is ordinal_SNo m Lmo.
We will prove (- n) * m int.
rewrite the current goal using mul_SNo_minus_distrL n m LnS LmS (from left to right).
We will prove - (n * m) int.
Apply int_minus_SNo to the current goal.
We will prove n * m int.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is mul_SNo_In_omega n Hn m Hm.
Let m be given.
Assume Hm: m ω.
We prove the intermediate claim Lmn: nat_p m.
An exact proof term for the current goal is omega_nat_p m Hm.
We prove the intermediate claim Lmo: ordinal m.
An exact proof term for the current goal is nat_p_ordinal m Lmn.
We prove the intermediate claim LmS: SNo m.
An exact proof term for the current goal is ordinal_SNo m Lmo.
We will prove (- n) * (- m) int.
rewrite the current goal using mul_SNo_minus_distrL n (- m) LnS (SNo_minus_SNo m LmS) (from left to right).
We will prove - (n * (- m)) int.
rewrite the current goal using mul_SNo_com n (- m) LnS (SNo_minus_SNo m LmS) (from left to right).
We will prove - ((- m) * n) int.
rewrite the current goal using mul_SNo_minus_distrL m n LmS LnS (from left to right).
We will prove - - (m * n) int.
rewrite the current goal using minus_SNo_invol (m * n) (SNo_mul_SNo m n LmS LnS) (from left to right).
We will prove m * n int.
Apply Subq_omega_int to the current goal.
We will prove m * n ω.
An exact proof term for the current goal is mul_SNo_In_omega m Hm n Hn.
Theorem. (nonneg_int_nat_p) The following is provable:
Proof:
Apply int_SNo_cases to the current goal.
Let n be given.
Assume H1: n ω.
Assume H2: 0 n.
We will prove nat_p n.
An exact proof term for the current goal is omega_nat_p n H1.
Let n be given.
Assume H1: n ω.
Assume H2: 0 - n.
We will prove nat_p (- n).
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is omega_SNo n H1.
We prove the intermediate claim L1: n = 0.
Apply SNoLe_antisym n 0 LnS SNo_0 to the current goal.
We will prove n 0.
rewrite the current goal using minus_SNo_invol n LnS (from right to left).
rewrite the current goal using minus_SNo_0 (from right to left).
We will prove - - n - 0.
Apply minus_SNo_Le_contra 0 (- n) SNo_0 (SNo_minus_SNo n LnS) to the current goal.
We will prove 0 - n.
An exact proof term for the current goal is H2.
We will prove 0 n.
Apply ordinal_Subq_SNoLe 0 n ordinal_Empty (nat_p_ordinal n (omega_nat_p n H1)) to the current goal.
We will prove 0 n.
Apply Subq_Empty to the current goal.
rewrite the current goal using L1 (from left to right).
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is nat_0.
End of Section Int
Beginning of Section BezoutAndGCD
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_nat.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_nat.
Theorem. (quotient_remainder_nat) The following is provable:
Proof:
Let n be given.
Assume Hn.
Apply setminusE ω {0} n Hn to the current goal.
Assume Hn1: n ω.
Assume Hn2: n {0}.
We prove the intermediate claim LnN: nat_p n.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hn1.
We prove the intermediate claim Lno: ordinal n.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is LnN.
We prove the intermediate claim L0n: 0 n.
Apply ordinal_In_Or_Subq 0 n ordinal_Empty Lno to the current goal.
Assume H1: 0 n.
An exact proof term for the current goal is H1.
Assume H1: n 0.
We will prove False.
Apply Hn2 to the current goal.
We will prove n {0}.
rewrite the current goal using Empty_Subq_eq n H1 (from left to right).
Apply SingI to the current goal.
Apply nat_ind to the current goal.
We will prove qω, rn, 0 = q * n + r.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_0.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is L0n.
We will prove 0 = 0 * n + 0.
rewrite the current goal using mul_nat_0L n LnN (from left to right).
Use symmetry.
An exact proof term for the current goal is add_nat_0R 0.
Let m be given.
Assume Hm.
Assume IHm: qω, rn, m = q * n + r.
We will prove qω, rn, ordsucc m = q * n + r.
Apply IHm to the current goal.
Let q be given.
Assume H.
Apply H to the current goal.
Assume Hq: q ω.
Assume H.
Apply H to the current goal.
Let r be given.
Assume H.
Apply H to the current goal.
Assume Hr: r n.
Assume H1: m = q * n + r.
We prove the intermediate claim LqN: nat_p q.
An exact proof term for the current goal is omega_nat_p q Hq.
We prove the intermediate claim LrN: nat_p r.
An exact proof term for the current goal is nat_p_trans n LnN r Hr.
Apply ordinal_trichotomy_or_impred (ordsucc r) n (ordinal_ordsucc r (nat_p_ordinal r LrN)) Lno to the current goal.
Assume H2: ordsucc r n.
We use q to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hq.
We use (ordsucc r) to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H2.
We will prove ordsucc m = q * n + ordsucc r.
rewrite the current goal using add_nat_SR (q * n) r LrN (from left to right).
Use f_equal.
An exact proof term for the current goal is H1.
Assume H2: ordsucc r = n.
We use (ordsucc q) to witness the existential quantifier.
Apply andI to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Hq.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is L0n.
We will prove ordsucc m = ordsucc q * n + 0.
rewrite the current goal using add_nat_0R (ordsucc q * n) (from left to right).
We will prove ordsucc m = ordsucc q * n.
rewrite the current goal using mul_nat_SL q LqN n LnN (from left to right).
We will prove ordsucc m = q * n + n.
rewrite the current goal using H2 (from right to left) at position 2.
We will prove ordsucc m = q * n + ordsucc r.
rewrite the current goal using add_nat_SR (q * n) r LrN (from left to right).
Use f_equal.
An exact proof term for the current goal is H1.
Assume H2: n ordsucc r.
We will prove False.
Apply In_irref n to the current goal.
Apply ordinal_ordsucc_In_Subq n Lno r Hr to the current goal.
An exact proof term for the current goal is H2.
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Theorem. (mul_SNo_nonpos_nonneg) The following is provable:
∀x y, SNo xSNo yx 00 yx * y 0
Proof:
Let x and y be given.
Assume Hx Hy Hxnp Hynn.
Apply SNoLeE 0 y SNo_0 Hy Hynn to the current goal.
Assume H1: 0 < y.
An exact proof term for the current goal is mul_SNo_nonpos_pos x y Hx Hy Hxnp H1.
Assume H1: 0 = y.
rewrite the current goal using H1 (from right to left).
We will prove x * 0 0.
rewrite the current goal using mul_SNo_zeroR x Hx (from left to right).
Apply SNoLe_ref to the current goal.
Theorem. (ordinal_0_In_ordsucc) The following is provable:
∀α, ordinal α0 ordsucc α
Proof:
Let α be given.
Assume Ha.
Apply ordinal_In_Or_Subq 0 (ordsucc α) ordinal_Empty (ordinal_ordsucc α Ha) to the current goal.
Assume H1: 0 ordsucc α.
An exact proof term for the current goal is H1.
Assume H1: ordsucc α 0.
We will prove False.
Apply EmptyE α to the current goal.
We will prove α 0.
Apply H1 to the current goal.
Apply ordsuccI2 to the current goal.
Theorem. (ordinal_ordsucc_pos) The following is provable:
∀α, ordinal α0 < ordsucc α
Proof:
Let α be given.
Assume Ha.
Apply ordinal_In_SNoLt (ordsucc α) (ordinal_ordsucc α Ha) 0 to the current goal.
We will prove 0 ordsucc α.
An exact proof term for the current goal is ordinal_0_In_ordsucc α Ha.
Proof:
Let n be given.
Assume Hn.
Apply setminusE ω {0} n Hn to the current goal.
Assume Hn1: n ω.
Assume Hn2: n {0}.
We prove the intermediate claim LnN: nat_p n.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hn1.
We prove the intermediate claim Lno: ordinal n.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is LnN.
We prove the intermediate claim L0n: 0 n.
Apply ordinal_In_Or_Subq 0 n ordinal_Empty Lno to the current goal.
Assume H1: 0 n.
An exact proof term for the current goal is H1.
Assume H1: n 0.
We will prove False.
Apply Hn2 to the current goal.
We will prove n {0}.
rewrite the current goal using Empty_Subq_eq n H1 (from left to right).
Apply SingI to the current goal.
Apply int_SNo_cases to the current goal.
Let m be given.
Assume Hm: m ω.
Apply quotient_remainder_nat n Hn m (omega_nat_p m Hm) to the current goal.
Let q be given.
Assume H.
Apply H to the current goal.
Assume Hq: q ω.
Assume H.
Apply H to the current goal.
Let r be given.
Assume H.
Apply H to the current goal.
Assume Hr: r n.
Assume H1: m = add_nat (mul_nat q n) r.
We prove the intermediate claim LqN: nat_p q.
An exact proof term for the current goal is omega_nat_p q Hq.
We prove the intermediate claim LrN: nat_p r.
An exact proof term for the current goal is nat_p_trans n LnN r Hr.
We prove the intermediate claim L1: m = q * n + r.
Use transitivity with and mul_nat q n + r.
We will prove m = mul_nat q n + r.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is add_nat_add_SNo (mul_nat q n) (nat_p_omega (mul_nat q n) (mul_nat_p q LqN n LnN)) r (nat_p_omega r LrN).
We will prove mul_nat q n + r = q * n + r.
Use f_equal.
An exact proof term for the current goal is mul_nat_mul_SNo q Hq n Hn1.
We use q to witness the existential quantifier.
Apply andI to the current goal.
We will prove q int.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is Hq.
We use r to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hr.
We will prove m = q * n + r.
An exact proof term for the current goal is L1.
Let m be given.
Assume Hm: m ω.
We will prove qint, rn, - m = q * n + r.
Apply quotient_remainder_nat n Hn m (omega_nat_p m Hm) to the current goal.
Let q be given.
Assume H.
Apply H to the current goal.
Assume Hq: q ω.
Assume H.
Apply H to the current goal.
Let r be given.
Assume H.
Apply H to the current goal.
Assume Hr: r n.
Assume H1: m = add_nat (mul_nat q n) r.
We prove the intermediate claim LqN: nat_p q.
An exact proof term for the current goal is omega_nat_p q Hq.
We prove the intermediate claim LqS: SNo q.
Apply nat_p_SNo to the current goal.
An exact proof term for the current goal is LqN.
We prove the intermediate claim LrN: nat_p r.
An exact proof term for the current goal is nat_p_trans n LnN r Hr.
We prove the intermediate claim LrS: SNo r.
Apply nat_p_SNo to the current goal.
An exact proof term for the current goal is LrN.
We prove the intermediate claim LnS: SNo n.
Apply nat_p_SNo to the current goal.
An exact proof term for the current goal is LnN.
We prove the intermediate claim LqnS: SNo (q * n).
An exact proof term for the current goal is SNo_mul_SNo q n LqS LnS.
We prove the intermediate claim L2: m = q * n + r.
Use transitivity with and mul_nat q n + r.
We will prove m = mul_nat q n + r.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is add_nat_add_SNo (mul_nat q n) (nat_p_omega (mul_nat q n) (mul_nat_p q LqN n LnN)) r (nat_p_omega r LrN).
We will prove mul_nat q n + r = q * n + r.
Use f_equal.
An exact proof term for the current goal is mul_nat_mul_SNo q Hq n Hn1.
We prove the intermediate claim L3: 0 r.
Apply omega_nonneg to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is LrN.
Apply SNoLeE 0 r SNo_0 LrS L3 to the current goal.
Assume H2: 0 < r.
We prove the intermediate claim L4: n + - r n.
Apply ordinal_SNoLt_In to the current goal.
We will prove ordinal (n + - r).
Apply nat_p_ordinal to the current goal.
We will prove nat_p (n + - r).
Apply nonneg_int_nat_p to the current goal.
We will prove n + - r int.
Apply int_add_SNo to the current goal.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is Hn1.
Apply int_minus_SNo to the current goal.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is LrN.
We will prove 0 n + - r.
Apply add_SNo_minus_Le2b n r 0 LnS LrS SNo_0 to the current goal.
We will prove 0 + r n.
rewrite the current goal using add_SNo_0L r LrS (from left to right).
Apply SNoLtLe to the current goal.
We will prove r < n.
An exact proof term for the current goal is ordinal_In_SNoLt n Lno r Hr.
We will prove ordinal n.
An exact proof term for the current goal is Lno.
We will prove n + - r < n.
Apply add_SNo_minus_Lt1b n r n LnS LrS LnS to the current goal.
We will prove n < n + r.
rewrite the current goal using add_SNo_0R n LnS (from right to left) at position 1.
We will prove n + 0 < n + r.
An exact proof term for the current goal is add_SNo_Lt2 n 0 r LnS SNo_0 LrS H2.
We use (- q + - 1) to witness the existential quantifier.
Apply andI to the current goal.
Apply int_add_SNo to the current goal.
Apply int_minus_SNo_omega to the current goal.
An exact proof term for the current goal is Hq.
Apply int_minus_SNo_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
We use (n + - r) to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is L4.
We will prove - m = (- q + - 1) * n + (n + - r).
rewrite the current goal using mul_SNo_distrR (- q) (- 1) n (SNo_minus_SNo q LqS) (SNo_minus_SNo 1 SNo_1) LnS (from left to right).
We will prove - m = ((- q) * n + (- 1) * n) + (n + - r).
rewrite the current goal using mul_SNo_minus_distrL 1 n SNo_1 LnS (from left to right).
rewrite the current goal using mul_SNo_minus_distrL q n LqS LnS (from left to right).
We will prove - m = (- q * n + - 1 * n) + (n + - r).
rewrite the current goal using mul_SNo_oneL n LnS (from left to right).
We will prove - m = (- q * n + - n) + (n + - r).
rewrite the current goal using add_SNo_assoc (- q * n) (- n) (n + - r) (SNo_minus_SNo (q * n) LqnS) (SNo_minus_SNo n LnS) (SNo_add_SNo n (- r) LnS (SNo_minus_SNo r LrS)) (from right to left).
We will prove - m = - q * n + - n + n + - r.
rewrite the current goal using add_SNo_minus_L2 n (- r) LnS (SNo_minus_SNo r LrS) (from left to right).
We will prove - m = - q * n + - r.
rewrite the current goal using minus_add_SNo_distr (q * n) r LqnS LrS (from right to left).
Use f_equal.
An exact proof term for the current goal is L2.
Assume H2: 0 = r.
We use (- q) to witness the existential quantifier.
Apply andI to the current goal.
We will prove - q int.
Apply int_minus_SNo_omega to the current goal.
An exact proof term for the current goal is Hq.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is L0n.
We will prove - m = (- q) * n + 0.
rewrite the current goal using mul_SNo_minus_distrL q n LqS LnS (from left to right).
We will prove - m = - (q * n) + 0.
rewrite the current goal using L2 (from left to right).
We will prove - (q * n + r) = - (q * n) + 0.
rewrite the current goal using H2 (from right to left).
We will prove - (q * n + 0) = - (q * n) + 0.
rewrite the current goal using add_SNo_0R (q * n) LqnS (from left to right).
Use symmetry.
An exact proof term for the current goal is add_SNo_0R (- q * n) (SNo_minus_SNo (q * n) LqnS).
Definition. We define divides_int to be λm n ⇒ m int n int kint, m * k = n of type setsetprop.
Theorem. (divides_int_ref) The following is provable:
Proof:
Let n be given.
Assume Hn: n int.
We will prove n int n int kint, n * k = n.
Apply and3I to the current goal.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is Hn.
We use 1 to witness the existential quantifier.
Apply andI to the current goal.
We will prove 1 int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
We will prove n * 1 = n.
An exact proof term for the current goal is mul_SNo_oneR n (int_SNo n Hn).
Theorem. (divides_int_0) The following is provable:
Proof:
Let n be given.
Assume Hn: n int.
We prove the intermediate claim L0i: 0 int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_0.
We will prove n int 0 int kint, n * k = 0.
Apply and3I to the current goal.
An exact proof term for the current goal is Hn.
We will prove 0 int.
An exact proof term for the current goal is L0i.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
We will prove 0 int.
An exact proof term for the current goal is L0i.
We will prove n * 0 = 0.
An exact proof term for the current goal is mul_SNo_zeroR n (int_SNo n Hn).
Theorem. (divides_int_add_SNo) The following is provable:
∀m n k, divides_int m ndivides_int m kdivides_int m (n + k)
Proof:
Let m, n and k be given.
Assume H1: divides_int m n.
Assume H2: divides_int m k.
Apply H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume Hn: n int.
Assume H.
Apply H to the current goal.
Let n' be given.
Assume H.
Apply H to the current goal.
Assume Hn': n' int.
Assume H3: m * n' = n.
Apply H2 to the current goal.
Assume H.
Apply H to the current goal.
Assume _.
Assume Hk: k int.
Assume H.
Apply H to the current goal.
Let k' be given.
Assume H.
Apply H to the current goal.
Assume Hk': k' int.
Assume H4: m * k' = k.
We will prove m int n + k int lint, m * l = n + k.
Apply and3I to the current goal.
An exact proof term for the current goal is Hm.
Apply int_add_SNo to the current goal.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is Hk.
We use n' + k' to witness the existential quantifier.
Apply andI to the current goal.
We will prove n' + k' int.
Apply int_add_SNo to the current goal.
An exact proof term for the current goal is Hn'.
An exact proof term for the current goal is Hk'.
We will prove m * (n' + k') = n + k.
rewrite the current goal using mul_SNo_distrL m n' k' (int_SNo m Hm) (int_SNo n' Hn') (int_SNo k' Hk') (from left to right).
We will prove m * n' + m * k' = n + k.
Use f_equal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is H4.
Theorem. (divides_int_mul_SNo) The following is provable:
∀m n m' n', divides_int m m'divides_int n n'divides_int (m * n) (m' * n')
Proof:
Let m, n, m' and n' be given.
Assume H1: divides_int m m'.
Assume H2: divides_int n n'.
Apply H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume Hm': m' int.
Assume H.
Apply H to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k int.
Assume H3: m * k = m'.
Apply H2 to the current goal.
Assume H.
Apply H to the current goal.
Assume Hn: n int.
Assume Hn': n' int.
Assume H.
Apply H to the current goal.
Let l be given.
Assume H.
Apply H to the current goal.
Assume Hl: l int.
Assume H4: n * l = n'.
We will prove m * n int m' * n' int qint, (m * n) * q = m' * n'.
Apply and3I to the current goal.
Apply int_mul_SNo to the current goal.
An exact proof term for the current goal is Hm.
An exact proof term for the current goal is Hn.
Apply int_mul_SNo to the current goal.
An exact proof term for the current goal is Hm'.
An exact proof term for the current goal is Hn'.
We use k * l to witness the existential quantifier.
Apply andI to the current goal.
Apply int_mul_SNo to the current goal.
An exact proof term for the current goal is Hk.
An exact proof term for the current goal is Hl.
We will prove (m * n) * (k * l) = m' * n'.
rewrite the current goal using mul_SNo_com_4_inner_mid m n k l (int_SNo m Hm) (int_SNo n Hn) (int_SNo k Hk) (int_SNo l Hl) (from left to right).
We will prove (m * k) * (n * l) = m' * n'.
Use f_equal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is H4.
Theorem. (divides_nat_divides_int) The following is provable:
∀m n, divides_nat m ndivides_int m n
Proof:
Let m and n be given.
Assume H1: divides_nat m n.
Apply H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume Hm: m ω.
Assume Hn: n ω.
Assume H.
Apply H to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k ω.
Assume H2: mul_nat m k = n.
We will prove m int n int kint, m * k = n.
Apply and3I to the current goal.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is Hm.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is Hn.
We use k to witness the existential quantifier.
Apply andI to the current goal.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is Hk.
We will prove m * k = n.
rewrite the current goal using mul_nat_mul_SNo m Hm k Hk (from right to left).
We will prove mul_nat m k = n.
An exact proof term for the current goal is H2.
Theorem. (divides_int_divides_nat) The following is provable:
Proof:
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
Assume H.
Apply H to the current goal.
Assume _.
Assume Hmn: kint, m * k = n.
We will prove m ω n ω kω, mul_nat m k = n.
Apply and3I to the current goal.
An exact proof term for the current goal is Hm.
An exact proof term for the current goal is Hn.
Apply Hmn to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k int.
Assume H1: m * k = n.
Apply binunionE ω {- n|nω} k Hk to the current goal.
Assume H2: k ω.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is H2.
We will prove mul_nat m k = n.
rewrite the current goal using mul_nat_mul_SNo m Hm k H2 (from left to right).
An exact proof term for the current goal is H1.
Assume H2: k {- n|nω}.
Apply xm (n = 0) to the current goal.
Assume H3: n = 0.
We prove the intermediate claim L0: 0 ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_0.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is L0.
rewrite the current goal using mul_nat_mul_SNo m Hm 0 L0 (from left to right).
rewrite the current goal using H3 (from left to right).
We will prove m * 0 = 0.
rewrite the current goal using mul_nat_mul_SNo m Hm 0 (nat_p_omega 0 nat_0) (from right to left).
Apply mul_nat_0R to the current goal.
Assume H3: n 0.
We will prove False.
Apply ReplE_impred ω minus_SNo k H2 to the current goal.
Let j be given.
Assume Hj: j ω.
We will prove k - j.
Assume H4: k = - j.
We prove the intermediate claim L1: m * (- j) = n.
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is H1.
We prove the intermediate claim L2: n = - (m * j).
Use symmetry.
rewrite the current goal using mul_minus_SNo_distrR m j (omega_SNo m Hm) (omega_SNo j Hj) (from right to left).
An exact proof term for the current goal is L1.
Apply H3 to the current goal.
We prove the intermediate claim Lmj: m * j ω.
Apply mul_SNo_In_omega to the current goal.
An exact proof term for the current goal is Hm.
An exact proof term for the current goal is Hj.
We will prove n = 0.
Apply nonpos_nonneg_0 n Hn (m * j) Lmj L2 to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Theorem. (divides_int_minus_SNo) The following is provable:
∀m n, divides_int m ndivides_int m (- n)
Proof:
Let m and n be given.
Assume H1: divides_int m n.
Apply H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume Hn: n int.
Assume H.
Apply H to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k int.
Assume H2: m * k = n.
We will prove m int - n int kint, m * k = - n.
Apply and3I to the current goal.
An exact proof term for the current goal is Hm.
Apply int_minus_SNo to the current goal.
An exact proof term for the current goal is Hn.
We use - k to witness the existential quantifier.
Apply andI to the current goal.
Apply int_minus_SNo to the current goal.
An exact proof term for the current goal is Hk.
We will prove m * (- k) = - n.
rewrite the current goal using mul_SNo_minus_distrR m k (int_SNo m Hm) (int_SNo k Hk) (from left to right).
We will prove - m * k = - n.
Use f_equal.
An exact proof term for the current goal is H2.
Theorem. (divides_int_mul_SNo_L) The following is provable:
∀m n, kint, divides_int m ndivides_int m (n * k)
Proof:
Let m, n and k be given.
Assume Hk: k int.
Assume H1: divides_int m n.
Apply H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume Hn: n int.
Assume H.
Apply H to the current goal.
Let l be given.
Assume H.
Apply H to the current goal.
Assume Hl: l int.
Assume H2: m * l = n.
We will prove m int n * k int lint, m * l = n * k.
Apply and3I to the current goal.
An exact proof term for the current goal is Hm.
Apply int_mul_SNo to the current goal.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is Hk.
We will prove lint, m * l = n * k.
We use l * k to witness the existential quantifier.
Apply andI to the current goal.
We will prove l * k int.
Apply int_mul_SNo to the current goal.
An exact proof term for the current goal is Hl.
An exact proof term for the current goal is Hk.
We will prove m * (l * k) = n * k.
rewrite the current goal using mul_SNo_assoc m l k (int_SNo m Hm) (int_SNo l Hl) (int_SNo k Hk) (from left to right).
We will prove (m * l) * k = n * k.
Use f_equal.
An exact proof term for the current goal is H2.
Theorem. (divides_int_mul_SNo_R) The following is provable:
∀m n, kint, divides_int m ndivides_int m (k * n)
Proof:
Let m, n and k be given.
Assume Hk: k int.
Assume H1: divides_int m n.
Apply H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume Hn: n int.
Assume _.
rewrite the current goal using mul_SNo_com k n (int_SNo k Hk) (int_SNo n Hn) (from left to right).
We will prove divides_int m (n * k).
An exact proof term for the current goal is divides_int_mul_SNo_L m n k Hk H1.
Theorem. (divides_int_1) The following is provable:
Proof:
Let n be given.
Assume Hn: n int.
We will prove 1 int n int kint, 1 * k = n.
Apply and3I to the current goal.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
An exact proof term for the current goal is Hn.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hn.
We will prove 1 * n = n.
An exact proof term for the current goal is mul_SNo_oneL n (int_SNo n Hn).
Theorem. (divides_int_pos_Le) The following is provable:
∀m n, divides_int m n0 < nm n
Proof:
Let m and n be given.
Assume H1 H2.
Apply H1 to the current goal.
Assume H _.
Apply H to the current goal.
Assume HmZ: m int.
Assume HnZ: n int.
We prove the intermediate claim LnS: SNo n.
Apply int_SNo to the current goal.
An exact proof term for the current goal is HnZ.
We prove the intermediate claim L1: mint, divides_int m nm n.
Apply int_SNo_cases to the current goal.
Let m be given.
Assume Hm: m ω.
Assume H3: divides_int m n.
Apply H3 to the current goal.
Assume _.
Assume H.
Apply H to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k int.
Assume H4: m * k = n.
We will prove m n.
We prove the intermediate claim LmS: SNo m.
Apply omega_SNo to the current goal.
An exact proof term for the current goal is Hm.
We prove the intermediate claim LkS: SNo k.
Apply int_SNo to the current goal.
An exact proof term for the current goal is Hk.
We will prove m n.
rewrite the current goal using H4 (from right to left).
We will prove m m * k.
rewrite the current goal using mul_SNo_oneR m LmS (from right to left) at position 1.
We will prove m * 1 m * k.
We prove the intermediate claim L0m: 0 m.
Apply omega_nonneg to the current goal.
An exact proof term for the current goal is Hm.
Apply nonneg_mul_SNo_Le m 1 k LmS to the current goal.
We will prove 0 m.
An exact proof term for the current goal is L0m.
An exact proof term for the current goal is SNo_1.
We will prove SNo k.
An exact proof term for the current goal is LkS.
We will prove 1 k.
Apply SNoLtLe_or k 1 LkS SNo_1 to the current goal.
Assume H5: k < 1.
We will prove False.
We prove the intermediate claim Lk0: k 0.
Apply SNoLtLe_or 0 k SNo_0 LkS to the current goal.
Assume H6: 0 < k.
We will prove False.
We prove the intermediate claim LkN: nat_p k.
Apply nonneg_int_nat_p k Hk to the current goal.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is H6.
Apply SNoLt_irref k to the current goal.
We will prove k < k.
Apply SNoLtLe_tra k 1 k LkS SNo_1 LkS H5 to the current goal.
We will prove 1 k.
Apply ordinal_Subq_SNoLe 1 k (ordinal_ordsucc 0 ordinal_Empty) (nat_p_ordinal k LkN) to the current goal.
We will prove 1 k.
Apply ordinal_ordsucc_In_Subq k (nat_p_ordinal k LkN) 0 to the current goal.
We will prove 0 k.
Apply ordinal_SNoLt_In 0 k ordinal_Empty (nat_p_ordinal k LkN) to the current goal.
We will prove 0 < k.
An exact proof term for the current goal is H6.
Assume H6: k 0.
An exact proof term for the current goal is H6.
We prove the intermediate claim Lmk0: m * k 0.
rewrite the current goal using mul_SNo_com m k LmS LkS (from left to right).
Apply mul_SNo_nonpos_nonneg k m LkS LmS to the current goal.
We will prove k 0.
An exact proof term for the current goal is Lk0.
We will prove 0 m.
An exact proof term for the current goal is L0m.
Apply SNoLt_irref n to the current goal.
We will prove n < n.
rewrite the current goal using H4 (from right to left) at position 1.
We will prove m * k < n.
An exact proof term for the current goal is SNoLeLt_tra (m * k) 0 n (SNo_mul_SNo m k LmS LkS) SNo_0 LnS Lmk0 H2.
Assume H5: 1 k.
An exact proof term for the current goal is H5.
Let m be given.
Assume Hm: m ω.
Assume H3: divides_int (- m) n.
We prove the intermediate claim LmS: SNo m.
Apply omega_SNo to the current goal.
An exact proof term for the current goal is Hm.
We will prove - m n.
Apply SNoLe_tra (- m) 0 n (SNo_minus_SNo m LmS) SNo_0 LnS to the current goal.
We will prove - m 0.
rewrite the current goal using minus_SNo_0 (from right to left).
Apply minus_SNo_Le_contra 0 m SNo_0 LmS to the current goal.
We will prove 0 m.
Apply omega_nonneg to the current goal.
An exact proof term for the current goal is Hm.
We will prove 0 n.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is H2.
An exact proof term for the current goal is L1 m HmZ H1.
Definition. We define gcd_reln to be λm n d ⇒ divides_int d m divides_int d n ∀d', divides_int d' mdivides_int d' nd' d of type setsetsetprop.
Theorem. (gcd_reln_uniq) The following is provable:
∀a b c d, gcd_reln a b cgcd_reln a b dc = d
Proof:
Let a, b, c and d be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Hca: divides_int c a.
Assume Hcb: divides_int c b.
Assume Hcg: ∀d', divides_int d' adivides_int d' bd' c.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Hda: divides_int d a.
Assume Hdb: divides_int d b.
Assume Hdg: ∀d', divides_int d' adivides_int d' bd' d.
Apply Hca to the current goal.
Assume H _.
Apply H to the current goal.
Assume Hc: c int.
Assume _.
Apply Hda to the current goal.
Assume H _.
Apply H to the current goal.
Assume Hd: d int.
Assume _.
Apply SNoLe_antisym c d (int_SNo c Hc) (int_SNo d Hd) to the current goal.
We will prove c d.
Apply Hdg to the current goal.
We will prove divides_int c a.
An exact proof term for the current goal is Hca.
We will prove divides_int c b.
An exact proof term for the current goal is Hcb.
We will prove d c.
Apply Hcg to the current goal.
We will prove divides_int d a.
An exact proof term for the current goal is Hda.
We will prove divides_int d b.
An exact proof term for the current goal is Hdb.
Definition. We define int_lin_comb to be λa b c ⇒ a int b int c int m nint, m * a + n * b = c of type setsetsetprop.
Theorem. (int_lin_comb_I) The following is provable:
a b cint, (m nint, m * a + n * b = c)int_lin_comb a b c
Proof:
Let a be given.
Assume Ha.
Let b be given.
Assume Hb.
Let c be given.
Assume Hc.
Assume H1.
We will prove a int b int c int m nint, m * a + n * b = c.
Apply and4I to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is Hb.
An exact proof term for the current goal is Hc.
An exact proof term for the current goal is H1.
Theorem. (int_lin_comb_E) The following is provable:
∀a b c, int_lin_comb a b c∀p : prop, (a intb intc intm nint, m * a + n * b = cp)p
Proof:
Let a, b and c be given.
Assume H.
Let p be given.
Assume Hp.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Ha Hb Hc H.
Apply H to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm.
Assume H.
Apply H to the current goal.
Let n be given.
Assume H.
Apply H to the current goal.
Assume Hn.
Assume H1: m * a + n * b = c.
An exact proof term for the current goal is Hp Ha Hb Hc m Hm n Hn H1.
Theorem. (int_lin_comb_E1) The following is provable:
∀a b c, int_lin_comb a b ca int
Proof:
Let a, b and c be given.
Assume H.
Apply int_lin_comb_E a b c H to the current goal.
Assume Ha _ _.
Let m be given.
Assume _.
Let n be given.
Assume _ _.
An exact proof term for the current goal is Ha.
Theorem. (int_lin_comb_E2) The following is provable:
∀a b c, int_lin_comb a b cb int
Proof:
Let a, b and c be given.
Assume H.
Apply int_lin_comb_E a b c H to the current goal.
Assume _ Hb _.
Let m be given.
Assume _.
Let n be given.
Assume _ _.
An exact proof term for the current goal is Hb.
Theorem. (int_lin_comb_E3) The following is provable:
∀a b c, int_lin_comb a b cc int
Proof:
Let a, b and c be given.
Assume H.
Apply int_lin_comb_E a b c H to the current goal.
Assume _ _ Hc.
Let m be given.
Assume _.
Let n be given.
Assume _ _.
An exact proof term for the current goal is Hc.
Theorem. (int_lin_comb_E4) The following is provable:
∀a b c, int_lin_comb a b c∀p : prop, (m nint, m * a + n * b = cp)p
Proof:
Let a, b and c be given.
Assume H.
Let p be given.
Assume Hp.
Apply int_lin_comb_E a b c H to the current goal.
Assume _ _ _.
Let m be given.
Assume Hm.
Let n be given.
Assume Hn H1.
An exact proof term for the current goal is Hp m Hm n Hn H1.
Theorem. (least_pos_int_lin_comb_ex) The following is provable:
a bint, ¬ (a = 0 b = 0)c, int_lin_comb a b c 0 < c ∀c', int_lin_comb a b c'0 < c'c c'
Proof:
Let a be given.
Assume Ha.
Let b be given.
Assume Hb.
Assume H1: ¬ (a = 0 b = 0).
We prove the intermediate claim LaS: SNo a.
An exact proof term for the current goal is int_SNo a Ha.
We prove the intermediate claim LbS: SNo b.
An exact proof term for the current goal is int_SNo b Hb.
Set p to be the term λc ⇒ int_lin_comb a b c 0 < c of type setprop.
We prove the intermediate claim L1: c, ordinal c p c.
Apply int_3_cases a Ha to the current goal.
Let a' be given.
Assume Ha': a' ω.
Assume Haa': a = - ordsucc a'.
We prove the intermediate claim La'N: nat_p a'.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Ha'.
We prove the intermediate claim La': ordinal a'.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is La'N.
We prove the intermediate claim LSa'S: SNo (ordsucc a').
Apply nat_p_SNo to the current goal.
Apply nat_ordsucc to the current goal.
An exact proof term for the current goal is La'N.
We use ordsucc a' to witness the existential quantifier.
Apply andI to the current goal.
We will prove ordinal (ordsucc a').
Apply ordinal_ordsucc to the current goal.
An exact proof term for the current goal is La'.
We will prove int_lin_comb a b (ordsucc a') 0 < ordsucc a'.
Apply andI to the current goal.
We will prove int_lin_comb a b (ordsucc a').
Apply int_lin_comb_I to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is Hb.
We will prove ordsucc a' int.
Apply Subq_omega_int to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Ha'.
We will prove m nint, m * a + n * b = ordsucc a'.
We use (- 1) to witness the existential quantifier.
Apply andI to the current goal.
We will prove - 1 int.
Apply int_minus_SNo_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
We will prove 0 int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_0.
We will prove (- 1) * a + 0 * b = ordsucc a'.
rewrite the current goal using mul_SNo_zeroL b LbS (from left to right).
We will prove (- 1) * a + 0 = ordsucc a'.
rewrite the current goal using mul_SNo_minus_distrL 1 a SNo_1 LaS (from left to right).
We will prove - 1 * a + 0 = ordsucc a'.
rewrite the current goal using mul_SNo_oneL a LaS (from left to right).
We will prove - a + 0 = ordsucc a'.
rewrite the current goal using Haa' (from left to right).
We will prove - - ordsucc a' + 0 = ordsucc a'.
rewrite the current goal using minus_SNo_invol (ordsucc a') LSa'S (from left to right).
An exact proof term for the current goal is add_SNo_0R (ordsucc a') LSa'S.
We will prove 0 < ordsucc a'.
An exact proof term for the current goal is ordinal_ordsucc_pos a' La'.
Assume H2: a = 0.
Apply int_3_cases b Hb to the current goal.
Let b' be given.
Assume Hb': b' ω.
Assume Hbb': b = - ordsucc b'.
We prove the intermediate claim Lb'N: nat_p b'.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hb'.
We prove the intermediate claim Lb': ordinal b'.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is Lb'N.
We prove the intermediate claim LSb'S: SNo (ordsucc b').
Apply nat_p_SNo to the current goal.
Apply nat_ordsucc to the current goal.
An exact proof term for the current goal is Lb'N.
We use ordsucc b' to witness the existential quantifier.
Apply andI to the current goal.
We will prove ordinal (ordsucc b').
Apply ordinal_ordsucc to the current goal.
An exact proof term for the current goal is Lb'.
We will prove int_lin_comb a b (ordsucc b') 0 < ordsucc b'.
Apply andI to the current goal.
We will prove int_lin_comb a b (ordsucc b').
Apply int_lin_comb_I to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is Hb.
We will prove ordsucc b' int.
Apply Subq_omega_int to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Hb'.
We will prove m nint, m * a + n * b = ordsucc b'.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
We will prove 0 int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_0.
We use (- 1) to witness the existential quantifier.
Apply andI to the current goal.
We will prove - 1 int.
Apply int_minus_SNo_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
We will prove 0 * a + (- 1) * b = ordsucc b'.
rewrite the current goal using mul_SNo_zeroL a LaS (from left to right).
We will prove 0 + (- 1) * b = ordsucc b'.
rewrite the current goal using mul_SNo_minus_distrL 1 b SNo_1 LbS (from left to right).
We will prove 0 + - 1 * b = ordsucc b'.
rewrite the current goal using mul_SNo_oneL b LbS (from left to right).
We will prove 0 + - b = ordsucc b'.
rewrite the current goal using Hbb' (from left to right).
We will prove 0 + - - ordsucc b' = ordsucc b'.
rewrite the current goal using minus_SNo_invol (ordsucc b') LSb'S (from left to right).
An exact proof term for the current goal is add_SNo_0L (ordsucc b') LSb'S.
We will prove 0 < ordsucc b'.
An exact proof term for the current goal is ordinal_ordsucc_pos b' Lb'.
Assume H3: b = 0.
We will prove False.
Apply H1 to the current goal.
Apply andI to the current goal.
An exact proof term for the current goal is H2.
An exact proof term for the current goal is H3.
Let b' be given.
Assume Hb': b' ω.
Assume Hbb': b = ordsucc b'.
We prove the intermediate claim Lb': ordinal b'.
Apply nat_p_ordinal to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hb'.
We use ordsucc b' to witness the existential quantifier.
Apply andI to the current goal.
We will prove ordinal (ordsucc b').
Apply ordinal_ordsucc to the current goal.
An exact proof term for the current goal is Lb'.
We will prove int_lin_comb a b (ordsucc b') 0 < ordsucc b'.
Apply andI to the current goal.
We will prove int_lin_comb a b (ordsucc b').
Apply int_lin_comb_I to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is Hb.
We will prove ordsucc b' int.
Apply Subq_omega_int to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Hb'.
We will prove m nint, m * a + n * b = ordsucc b'.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
We will prove 0 int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_0.
We use 1 to witness the existential quantifier.
Apply andI to the current goal.
We will prove 1 int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
We will prove 0 * a + 1 * b = ordsucc b'.
rewrite the current goal using Hbb' (from right to left).
rewrite the current goal using mul_SNo_zeroL a LaS (from left to right).
rewrite the current goal using mul_SNo_oneL b LbS (from left to right).
We will prove 0 + b = b.
An exact proof term for the current goal is add_SNo_0L b LbS.
We will prove 0 < ordsucc b'.
An exact proof term for the current goal is ordinal_ordsucc_pos b' Lb'.
Let a' be given.
Assume Ha': a' ω.
Assume Haa': a = ordsucc a'.
We prove the intermediate claim La': ordinal a'.
Apply nat_p_ordinal to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Ha'.
We use ordsucc a' to witness the existential quantifier.
Apply andI to the current goal.
We will prove ordinal (ordsucc a').
Apply ordinal_ordsucc to the current goal.
An exact proof term for the current goal is La'.
We will prove int_lin_comb a b (ordsucc a') 0 < ordsucc a'.
Apply andI to the current goal.
We will prove int_lin_comb a b (ordsucc a').
Apply int_lin_comb_I to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is Hb.
We will prove ordsucc a' int.
Apply Subq_omega_int to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Ha'.
We will prove m nint, m * a + n * b = ordsucc a'.
We use 1 to witness the existential quantifier.
Apply andI to the current goal.
We will prove 1 int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
We will prove 0 int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_0.
We will prove 1 * a + 0 * b = ordsucc a'.
rewrite the current goal using Haa' (from right to left).
rewrite the current goal using mul_SNo_zeroL b LbS (from left to right).
rewrite the current goal using mul_SNo_oneL a LaS (from left to right).
We will prove a + 0 = a.
An exact proof term for the current goal is add_SNo_0R a LaS.
We will prove 0 < ordsucc a'.
An exact proof term for the current goal is ordinal_ordsucc_pos a' La'.
We prove the intermediate claim L2: c, ordinal c p c βc, ¬ p β.
An exact proof term for the current goal is least_ordinal_ex p L1.
Apply L2 to the current goal.
Let c be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Hco: ordinal c.
Assume Hc1: int_lin_comb a b c 0 < c.
Assume Hc2: βc, ¬ p β.
We prove the intermediate claim LcS: SNo c.
An exact proof term for the current goal is ordinal_SNo c Hco.
We use c to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hc1.
Let c' be given.
Assume Hc'1: int_lin_comb a b c'.
Assume Hc'2: 0 < c'.
We will prove c c'.
We prove the intermediate claim Lc'Z: c' int.
An exact proof term for the current goal is int_lin_comb_E3 a b c' Hc'1.
We prove the intermediate claim Lc'S: SNo c'.
An exact proof term for the current goal is int_SNo c' Lc'Z.
Apply SNoLtLe_or c' c Lc'S LcS to the current goal.
Assume H2: c' < c.
We will prove False.
We prove the intermediate claim Lc'N: nat_p c'.
Apply nonneg_int_nat_p c' Lc'Z to the current goal.
We will prove 0 c'.
Apply SNoLtLe to the current goal.
We will prove 0 < c'.
An exact proof term for the current goal is Hc'2.
We prove the intermediate claim L3: c' c.
An exact proof term for the current goal is ordinal_SNoLt_In c' c (nat_p_ordinal c' Lc'N) Hco H2.
Apply Hc2 c' L3 to the current goal.
We will prove p c'.
We will prove int_lin_comb a b c' 0 < c'.
Apply andI to the current goal.
An exact proof term for the current goal is Hc'1.
An exact proof term for the current goal is Hc'2.
Assume H2: c c'.
An exact proof term for the current goal is H2.
Theorem. (int_lin_comb_sym) The following is provable:
∀a b d, int_lin_comb a b dint_lin_comb b a d
Proof:
Let a, b and d be given.
Assume H1.
Apply int_lin_comb_E a b d H1 to the current goal.
Assume Ha Hb Hd.
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
Assume H2: m * a + n * b = d.
Apply int_lin_comb_I b Hb a Ha d Hd to the current goal.
We will prove n mint, n * b + m * a = d.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hn.
We use m to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hm.
We will prove n * b + m * a = d.
rewrite the current goal using add_SNo_com (n * b) (m * a) (SNo_mul_SNo n b (int_SNo n Hn) (int_SNo b Hb)) (SNo_mul_SNo m a (int_SNo m Hm) (int_SNo a Ha)) (from left to right).
An exact proof term for the current goal is H2.
Theorem. (least_pos_int_lin_comb_divides_int) The following is provable:
∀a b d, int_lin_comb a b d0 < d(∀c, int_lin_comb a b c0 < cd c)divides_int d a
Proof:
Let a, b and d be given.
Assume Hd1: int_lin_comb a b d.
Assume Hd2: 0 < d.
Assume Hd3: ∀c, int_lin_comb a b c0 < cd c.
Apply int_lin_comb_E a b d Hd1 to the current goal.
Assume Ha: a int.
Assume Hb: b int.
Assume HdZ: d int.
Let m be given.
Assume Hm: m int.
Let n be given.
Assume Hn: n int.
Assume H2: m * a + n * b = d.
We prove the intermediate claim LaS: SNo a.
An exact proof term for the current goal is int_SNo a Ha.
We prove the intermediate claim LbS: SNo b.
An exact proof term for the current goal is int_SNo b Hb.
We prove the intermediate claim LmS: SNo m.
An exact proof term for the current goal is int_SNo m Hm.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is int_SNo n Hn.
We prove the intermediate claim LdN: nat_p d.
Apply nonneg_int_nat_p d HdZ to the current goal.
We will prove 0 d.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hd2.
We prove the intermediate claim Ld1: d ω {0}.
Apply setminusI to the current goal.
We will prove d ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is LdN.
Assume H3: d {0}.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
rewrite the current goal using SingE 0 d H3 (from right to left) at position 2.
An exact proof term for the current goal is Hd2.
We prove the intermediate claim LdS: SNo d.
An exact proof term for the current goal is nat_p_SNo d LdN.
Apply quotient_remainder_int d Ld1 a Ha to the current goal.
Let q be given.
Assume H.
Apply H to the current goal.
Assume Hq: q int.
Assume H.
Apply H to the current goal.
Let r be given.
Assume H.
Apply H to the current goal.
Assume Hr: r d.
Assume H1: a = q * d + r.
We prove the intermediate claim LqS: SNo q.
Apply int_SNo to the current goal.
An exact proof term for the current goal is Hq.
We prove the intermediate claim LmqS: SNo (- q).
Apply SNo_minus_SNo q LqS to the current goal.
We prove the intermediate claim LrN: nat_p r.
An exact proof term for the current goal is nat_p_trans d LdN r Hr.
We prove the intermediate claim Lrnn: 0 r.
Apply omega_nonneg to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is LrN.
We prove the intermediate claim Lrd: r < d.
Apply ordinal_In_SNoLt d (nat_p_ordinal d LdN) r Hr to the current goal.
We prove the intermediate claim LqdS: SNo (q * d).
An exact proof term for the current goal is SNo_mul_SNo q d LqS LdS.
We prove the intermediate claim LrS: SNo r.
An exact proof term for the current goal is nat_p_SNo r LrN.
We prove the intermediate claim L1: r = (1 + - q * m) * a + (- q * n) * b.
Use transitivity with a + - q * d, and a + (- q) * (m * a + n * b).
We will prove r = a + - q * d.
rewrite the current goal using add_SNo_com a (- q * d) LaS (SNo_minus_SNo (q * d) LqdS) (from left to right).
We will prove r = - q * d + a.
rewrite the current goal using H1 (from left to right).
We will prove r = - q * d + q * d + r.
Use symmetry.
An exact proof term for the current goal is add_SNo_minus_L2 (q * d) r LqdS LrS.
We will prove a + - q * d = a + (- q) * (m * a + n * b).
Use f_equal.
We will prove - q * d = (- q) * (m * a + n * b).
rewrite the current goal using mul_SNo_minus_distrL q d LqS LdS (from right to left).
We will prove (- q) * d = (- q) * (m * a + n * b).
Use f_equal.
We will prove d = m * a + n * b.
Use symmetry.
An exact proof term for the current goal is H2.
We will prove a + (- q) * (m * a + n * b) = (1 + - q * m) * a + (- q * n) * b.
rewrite the current goal using mul_SNo_distrL (- q) (m * a) (n * b) LmqS (SNo_mul_SNo m a LmS LaS) (SNo_mul_SNo n b LnS LbS) (from left to right).
We will prove a + ((- q) * (m * a)) + ((- q) * (n * b)) = (1 + - q * m) * a + (- q * n) * b.
rewrite the current goal using add_SNo_assoc a ((- q) * (m * a)) ((- q) * (n * b)) LaS (SNo_mul_SNo (- q) (m * a) LmqS (SNo_mul_SNo m a LmS LaS)) (SNo_mul_SNo (- q) (n * b) LmqS (SNo_mul_SNo n b LnS LbS)) (from left to right).
We will prove (a + (- q) * (m * a)) + (- q) * (n * b) = (1 + - q * m) * a + (- q * n) * b.
Use f_equal.
We will prove a + (- q) * (m * a) = (1 + - q * m) * a.
rewrite the current goal using mul_SNo_minus_distrL q m LqS LmS (from right to left).
We will prove a + (- q) * (m * a) = (1 + (- q) * m) * a.
rewrite the current goal using mul_SNo_distrR 1 ((- q) * m) a SNo_1 (SNo_mul_SNo (- q) m LmqS LmS) LaS (from left to right).
We will prove a + (- q) * (m * a) = 1 * a + ((- q) * m) * a.
Use f_equal.
We will prove a = 1 * a.
Use symmetry.
An exact proof term for the current goal is mul_SNo_oneL a LaS.
We will prove (- q) * (m * a) = ((- q) * m) * a.
An exact proof term for the current goal is mul_SNo_assoc (- q) m a LmqS LmS LaS.
We will prove (- q) * (n * b) = (- q * n) * b.
rewrite the current goal using mul_SNo_minus_distrL q n LqS LnS (from right to left).
An exact proof term for the current goal is mul_SNo_assoc (- q) n b LmqS LnS LbS.
We prove the intermediate claim L2: int_lin_comb a b r.
We will prove a int b int r int m nint, m * a + n * b = r.
Apply and4I to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is Hb.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is LrN.
We will prove m nint, m * a + n * b = r.
We use (1 + - q * m) to witness the existential quantifier.
Apply andI to the current goal.
We will prove 1 + - q * m int.
Apply int_add_SNo to the current goal.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
Apply int_minus_SNo to the current goal.
Apply int_mul_SNo to the current goal.
An exact proof term for the current goal is Hq.
An exact proof term for the current goal is Hm.
We use (- q * n) to witness the existential quantifier.
Apply andI to the current goal.
We will prove - q * n int.
Apply int_minus_SNo to the current goal.
Apply int_mul_SNo to the current goal.
An exact proof term for the current goal is Hq.
An exact proof term for the current goal is Hn.
Use symmetry.
An exact proof term for the current goal is L1.
We prove the intermediate claim L3: r = 0.
Apply SNoLeE 0 r SNo_0 LrS Lrnn to the current goal.
Assume H2: 0 < r.
We will prove False.
Apply SNoLt_irref r to the current goal.
We will prove r < r.
Apply SNoLtLe_tra r d r LrS LdS LrS Lrd to the current goal.
We will prove d r.
Apply Hd3 to the current goal.
We will prove int_lin_comb a b r.
An exact proof term for the current goal is L2.
We will prove 0 < r.
An exact proof term for the current goal is H2.
Assume H2: 0 = r.
Use symmetry.
An exact proof term for the current goal is H2.
We will prove divides_int d a.
We will prove d int a int kint, d * k = a.
Apply and3I to the current goal.
An exact proof term for the current goal is HdZ.
An exact proof term for the current goal is Ha.
We use q to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hq.
We will prove d * q = a.
rewrite the current goal using H1 (from left to right).
We will prove d * q = q * d + r.
rewrite the current goal using L3 (from left to right).
rewrite the current goal using add_SNo_0R (q * d) LqdS (from left to right).
We will prove d * q = q * d.
An exact proof term for the current goal is mul_SNo_com d q LdS LqS.
Theorem. (least_pos_int_lin_comb_gcd) The following is provable:
∀a b d, int_lin_comb a b d0 < d(∀c, int_lin_comb a b c0 < cd c)gcd_reln a b d
Proof:
Let a, b and d be given.
Assume Hd1: int_lin_comb a b d.
Assume Hd2: 0 < d.
Assume Hd3: ∀c, int_lin_comb a b c0 < cd c.
Apply int_lin_comb_E a b d Hd1 to the current goal.
Assume Ha: a int.
Assume Hb: b int.
Assume HdZ: d int.
Let m be given.
Assume Hm: m int.
Let n be given.
Assume Hn: n int.
Assume H2: m * a + n * b = d.
We prove the intermediate claim LdN: nat_p d.
Apply nonneg_int_nat_p d HdZ to the current goal.
We will prove 0 d.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hd2.
We prove the intermediate claim Ld1: d ω {0}.
Apply setminusI to the current goal.
We will prove d ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is LdN.
Assume H3: d {0}.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
rewrite the current goal using SingE 0 d H3 (from right to left) at position 2.
An exact proof term for the current goal is Hd2.
We prove the intermediate claim LdS: SNo d.
An exact proof term for the current goal is nat_p_SNo d LdN.
We prove the intermediate claim Lda: divides_int d a.
Apply least_pos_int_lin_comb_divides_int a b d to the current goal.
An exact proof term for the current goal is Hd1.
An exact proof term for the current goal is Hd2.
An exact proof term for the current goal is Hd3.
We prove the intermediate claim Ldb: divides_int d b.
Apply least_pos_int_lin_comb_divides_int b a d to the current goal.
Apply int_lin_comb_sym to the current goal.
An exact proof term for the current goal is Hd1.
An exact proof term for the current goal is Hd2.
Let c be given.
Assume H2: int_lin_comb b a c.
Assume H3: 0 < c.
We will prove d c.
Apply Hd3 c to the current goal.
We will prove int_lin_comb a b c.
Apply int_lin_comb_sym to the current goal.
An exact proof term for the current goal is H2.
An exact proof term for the current goal is H3.
We will prove divides_int d a divides_int d b ∀d', divides_int d' adivides_int d' bd' d.
Apply and3I to the current goal.
An exact proof term for the current goal is Lda.
An exact proof term for the current goal is Ldb.
Let d' be given.
Assume Hd'a: divides_int d' a.
Assume Hd'b: divides_int d' b.
We will prove d' d.
We prove the intermediate claim Ld'd: divides_int d' d.
rewrite the current goal using H2 (from right to left).
We will prove divides_int d' (m * a + n * b).
Apply divides_int_add_SNo to the current goal.
We will prove divides_int d' (m * a).
Apply divides_int_mul_SNo_R to the current goal.
An exact proof term for the current goal is Hm.
An exact proof term for the current goal is Hd'a.
We will prove divides_int d' (n * b).
Apply divides_int_mul_SNo_R to the current goal.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is Hd'b.
Apply divides_int_pos_Le to the current goal.
An exact proof term for the current goal is Ld'd.
An exact proof term for the current goal is Hd2.
Theorem. (BezoutThm) The following is provable:
a bint, ¬ (a = 0 b = 0)∀d, gcd_reln a b d int_lin_comb a b d 0 < d ∀d', int_lin_comb a b d'0 < d'd d'
Proof:
Let a be given.
Assume Ha.
Let b be given.
Assume Hb.
Assume H1: ¬ (a = 0 b = 0).
Let d be given.
Apply iffI to the current goal.
Assume H3: gcd_reln a b d.
We will prove int_lin_comb a b d 0 < d ∀d', int_lin_comb a b d'0 < d'd d'.
Apply least_pos_int_lin_comb_ex a Ha b Hb H1 to the current goal.
Let d' be given.
Assume Hd': int_lin_comb a b d' 0 < d' ∀c, int_lin_comb a b c0 < cd' c.
Apply Hd' to the current goal.
Assume H.
Apply H to the current goal.
Assume Hd'1: int_lin_comb a b d'.
Assume Hd'2: 0 < d'.
Assume Hd'3: ∀c, int_lin_comb a b c0 < cd' c.
We prove the intermediate claim Ld'g: gcd_reln a b d'.
An exact proof term for the current goal is least_pos_int_lin_comb_gcd a b d' Hd'1 Hd'2 Hd'3.
We prove the intermediate claim Ldd': d = d'.
An exact proof term for the current goal is gcd_reln_uniq a b d d' H3 Ld'g.
rewrite the current goal using Ldd' (from left to right).
An exact proof term for the current goal is Hd'.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Hd1: int_lin_comb a b d.
Assume Hd2: 0 < d.
Assume Hd3: ∀d', int_lin_comb a b d'0 < d'd d'.
We will prove gcd_reln a b d.
An exact proof term for the current goal is least_pos_int_lin_comb_gcd a b d Hd1 Hd2 Hd3.
Theorem. (gcd_id) The following is provable:
Proof:
Let m be given.
Assume Hm.
Apply setminusE ω {0} m Hm to the current goal.
Assume Hm1: m ω.
Assume Hm2: m {0}.
We prove the intermediate claim LmN: nat_p m.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hm1.
We prove the intermediate claim Lmo: ordinal m.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is LmN.
We prove the intermediate claim LmZ: m int.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is Hm1.
We prove the intermediate claim LmS: SNo m.
An exact proof term for the current goal is int_SNo m LmZ.
We prove the intermediate claim Lmpos: 0 < m.
Apply SNoLeE 0 m SNo_0 LmS (omega_nonneg m Hm1) to the current goal.
Assume H1: 0 < m.
An exact proof term for the current goal is H1.
Assume H1: 0 = m.
We will prove False.
Apply Hm2 to the current goal.
We will prove m {0}.
rewrite the current goal using H1 (from right to left).
Apply SingI to the current goal.
We will prove divides_int m m divides_int m m ∀d', divides_int d' mdivides_int d' md' m.
Apply and3I to the current goal.
We will prove divides_int m m.
Apply divides_int_ref to the current goal.
We will prove m int.
An exact proof term for the current goal is LmZ.
We will prove divides_int m m.
Apply divides_int_ref to the current goal.
An exact proof term for the current goal is LmZ.
Let d' be given.
Assume H1: divides_int d' m.
Assume _.
We will prove d' m.
Apply H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume Hd': d' int.
Assume Hm: m int.
Assume H.
Apply H to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k int.
Assume Hd'km: d' * k = m.
We will prove d' m.
We prove the intermediate claim Ld'S: SNo d'.
Apply int_SNo to the current goal.
An exact proof term for the current goal is Hd'.
We prove the intermediate claim LkS: SNo k.
Apply int_SNo to the current goal.
An exact proof term for the current goal is Hk.
Apply SNoLtLe_or 0 d' SNo_0 Ld'S to the current goal.
Assume H1: 0 < d'.
Apply SNoLtLe_or k 0 LkS SNo_0 to the current goal.
Assume H2: k < 0.
We will prove False.
Apply SNoLt_irref m to the current goal.
We will prove m < m.
Apply SNoLt_tra m 0 m LmS SNo_0 LmS to the current goal.
We will prove m < 0.
rewrite the current goal using Hd'km (from right to left).
An exact proof term for the current goal is mul_SNo_pos_neg d' k Ld'S LkS H1 H2.
An exact proof term for the current goal is Lmpos.
Assume H2: 0 k.
We prove the intermediate claim LkN: nat_p k.
An exact proof term for the current goal is nonneg_int_nat_p k Hk H2.
We prove the intermediate claim Ld'N: nat_p d'.
Apply nonneg_int_nat_p d' Hd' to the current goal.
We will prove 0 d'.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is H1.
Apply mul_nat_0_or_Subq d' Ld'N k LkN to the current goal.
Assume H3: k = 0.
We will prove False.
Apply SNoLt_irref m to the current goal.
We will prove m < m.
rewrite the current goal using Hd'km (from right to left) at position 1.
rewrite the current goal using H3 (from left to right).
We will prove d' * 0 < m.
rewrite the current goal using mul_SNo_zeroR d' Ld'S (from left to right).
We will prove 0 < m.
An exact proof term for the current goal is Lmpos.
Assume H3: d' mul_nat d' k.
We will prove d' m.
rewrite the current goal using Hd'km (from right to left).
rewrite the current goal using mul_nat_mul_SNo d' (nat_p_omega d' Ld'N) k (nat_p_omega k LkN) (from right to left).
We will prove d' mul_nat d' k.
Apply ordinal_Subq_SNoLe to the current goal.
We will prove ordinal d'.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is Ld'N.
We will prove ordinal (mul_nat d' k).
Apply nat_p_ordinal to the current goal.
Apply mul_nat_p to the current goal.
An exact proof term for the current goal is Ld'N.
An exact proof term for the current goal is LkN.
We will prove d' mul_nat d' k.
An exact proof term for the current goal is H3.
Assume H1: d' 0.
Apply SNoLe_tra d' 0 m Ld'S SNo_0 LmS H1 to the current goal.
We will prove 0 m.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Lmpos.
Theorem. (gcd_0) The following is provable:
Proof:
Let m be given.
Assume Hm.
Apply setminusE ω {0} m Hm to the current goal.
Assume Hm1: m ω.
Assume Hm2: m {0}.
We prove the intermediate claim LmZ: m int.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is Hm1.
Apply gcd_id m Hm to the current goal.
Assume H.
Apply H to the current goal.
Assume _.
Assume H1: divides_int m m.
Assume H2: ∀d', divides_int d' mdivides_int d' md' m.
We will prove divides_int m 0 divides_int m m ∀d', divides_int d' 0divides_int d' md' m.
Apply and3I to the current goal.
We will prove divides_int m 0.
Apply divides_int_0 to the current goal.
We will prove m int.
An exact proof term for the current goal is LmZ.
We will prove divides_int m m.
An exact proof term for the current goal is H1.
Let d' be given.
Assume H3: divides_int d' 0.
Assume H4: divides_int d' m.
We will prove d' m.
Apply H2 to the current goal.
An exact proof term for the current goal is H4.
An exact proof term for the current goal is H4.
Theorem. (gcd_sym) The following is provable:
∀m n d, gcd_reln m n dgcd_reln n m d
Proof:
Let m, n and d be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H1: divides_int d m.
Assume H2: divides_int d n.
Assume H3: ∀d', divides_int d' mdivides_int d' nd' d.
We will prove divides_int d n divides_int d m ∀d', divides_int d' ndivides_int d' md' d.
Apply and3I to the current goal.
An exact proof term for the current goal is H2.
An exact proof term for the current goal is H1.
Let d' be given.
Assume H4 H5.
Apply H3 to the current goal.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is H4.
Theorem. (gcd_minus) The following is provable:
∀m n d, gcd_reln m n dgcd_reln m (- n) d
Proof:
Let m, n and d be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H1: divides_int d m.
Assume H2: divides_int d n.
Assume H3: ∀d', divides_int d' mdivides_int d' nd' d.
We will prove divides_int d m divides_int d (- n) ∀d', divides_int d' mdivides_int d' (- n)d' d.
Apply H2 to the current goal.
Assume H _.
Apply H to the current goal.
Assume _.
Assume Hn: n int.
Apply and3I to the current goal.
An exact proof term for the current goal is H1.
We will prove divides_int d (- n).
Apply divides_int_minus_SNo to the current goal.
An exact proof term for the current goal is H2.
Let d' be given.
Assume H4 H5.
Apply H3 to the current goal.
An exact proof term for the current goal is H4.
We will prove divides_int d' n.
rewrite the current goal using minus_SNo_invol n (int_SNo n Hn) (from right to left).
We will prove divides_int d' (- - n).
Apply divides_int_minus_SNo to the current goal.
An exact proof term for the current goal is H5.
Theorem. (euclidean_algorithm_prop_1) The following is provable:
∀m n d, n intgcd_reln m (n + - m) dgcd_reln m n d
Proof:
Let m, n and d be given.
Assume Hn: n int.
Assume H1: gcd_reln m (n + - m) d.
Apply H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume H2: divides_int d m.
Assume H3: divides_int d (n + - m).
Assume H4: ∀d', divides_int d' mdivides_int d' (n + - m)d' d.
Apply H2 to the current goal.
Assume H _.
Apply H to the current goal.
Assume _.
Assume Hm: m int.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is int_SNo n Hn.
We prove the intermediate claim LmS: SNo m.
An exact proof term for the current goal is int_SNo m Hm.
We will prove divides_int d m divides_int d n ∀d', divides_int d' mdivides_int d' nd' d.
Apply and3I to the current goal.
An exact proof term for the current goal is H2.
We will prove divides_int d n.
rewrite the current goal using add_SNo_minus_R2' n m LnS LmS (from right to left).
We will prove divides_int d ((n + - m) + m).
Apply divides_int_add_SNo to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is H2.
Let d' be given.
Assume H5: divides_int d' m.
Assume H6: divides_int d' n.
We will prove d' d.
Apply H4 to the current goal.
An exact proof term for the current goal is H5.
We will prove divides_int d' (n + - m).
Apply divides_int_add_SNo to the current goal.
An exact proof term for the current goal is H6.
Apply divides_int_minus_SNo to the current goal.
An exact proof term for the current goal is H5.
Theorem. (euclidean_algorithm) The following is provable:
(mω {0}, gcd_reln m m m) (mω {0}, gcd_reln 0 m m) (mω {0}, gcd_reln m 0 m) (m nω, m < n∀d, gcd_reln m (n + - m) dgcd_reln m n d) (m nω, n < m∀d, gcd_reln n m dgcd_reln m n d) (mω, nint, n < 0∀d, gcd_reln m (- n) dgcd_reln m n d) (m nint, m < 0∀d, gcd_reln (- m) n dgcd_reln m n d)
Proof:
Apply and7I to the current goal.
An exact proof term for the current goal is gcd_id.
An exact proof term for the current goal is gcd_0.
Let m be given.
Assume Hm.
Apply gcd_sym to the current goal.
An exact proof term for the current goal is gcd_0 m Hm.
Let m be given.
Assume Hm.
Let n be given.
Assume Hn Hmn.
Let d be given.
We will prove gcd_reln m (n + - m) dgcd_reln m n d.
An exact proof term for the current goal is euclidean_algorithm_prop_1 m n d (Subq_omega_int n Hn).
Let m be given.
Assume Hm.
Let n be given.
Assume Hn Hnm.
Let d be given.
We will prove gcd_reln n m dgcd_reln m n d.
An exact proof term for the current goal is gcd_sym n m d.
Let m be given.
Assume Hm.
Let n be given.
Assume Hn Hnneg.
Let d be given.
We will prove gcd_reln m (- n) dgcd_reln m n d.
rewrite the current goal using minus_SNo_invol n (int_SNo n Hn) (from right to left) at position 2.
We will prove gcd_reln m (- n) dgcd_reln m (- - n) d.
An exact proof term for the current goal is gcd_minus m (- n) d.
Let m be given.
Assume Hm.
Let n be given.
Assume Hn Hmneg.
Let d be given.
We will prove gcd_reln (- m) n dgcd_reln m n d.
Assume H1: gcd_reln (- m) n d.
We will prove gcd_reln m n d.
Apply gcd_sym to the current goal.
We will prove gcd_reln n m d.
rewrite the current goal using minus_SNo_invol m (int_SNo m Hm) (from right to left).
Apply gcd_minus to the current goal.
Apply gcd_sym to the current goal.
An exact proof term for the current goal is H1.
Theorem. (Euclid_lemma) The following is provable:
∀p, prime_nat pa bint, divides_int p (a * b)divides_int p a divides_int p b
Proof:
Let p be given.
Assume Hp.
Let a be given.
Assume Ha.
Let b be given.
Assume Hb.
Apply Hp to the current goal.
Assume H.
Apply H to the current goal.
Assume Hp1: p ω.
Assume Hp2: 1 p.
Assume Hp3: kω, divides_nat k pk = 1 k = p.
Assume H1: divides_int p (a * b).
We prove the intermediate claim LaS: SNo a.
An exact proof term for the current goal is int_SNo a Ha.
We prove the intermediate claim LbS: SNo b.
An exact proof term for the current goal is int_SNo b Hb.
We prove the intermediate claim LpZ: p int.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is Hp1.
Apply xm (divides_int p a) to the current goal.
Assume H2: divides_int p a.
Apply orIL to the current goal.
An exact proof term for the current goal is H2.
Assume H2: ¬ divides_int p a.
Apply orIR to the current goal.
We will prove divides_int p b.
We prove the intermediate claim L1: gcd_reln p a 1.
We will prove divides_int 1 p divides_int 1 a ∀d, divides_int d pdivides_int d ad 1.
Apply and3I to the current goal.
An exact proof term for the current goal is divides_int_1 p LpZ.
An exact proof term for the current goal is divides_int_1 a Ha.
Let d be given.
Assume Hdp: divides_int d p.
Assume Hda: divides_int d a.
We will prove d 1.
Apply Hdp to the current goal.
Assume H _.
Apply H to the current goal.
Assume HdZ: d int.
Assume _.
We prove the intermediate claim LdS: SNo d.
An exact proof term for the current goal is int_SNo d HdZ.
Apply SNoLtLe_or d 0 LdS SNo_0 to the current goal.
Assume H3: d < 0.
We will prove d 1.
Apply SNoLtLe to the current goal.
We will prove d < 1.
Apply SNoLt_tra d 0 1 LdS SNo_0 SNo_1 to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is SNoLt_0_1.
Assume H3: 0 d.
We prove the intermediate claim LdN: d ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nonneg_int_nat_p d HdZ H3.
We prove the intermediate claim Ldp: divides_nat d p.
Apply divides_int_divides_nat to the current goal.
We will prove d ω.
An exact proof term for the current goal is LdN.
We will prove p ω.
An exact proof term for the current goal is Hp1.
An exact proof term for the current goal is Hdp.
Apply Hp3 d LdN Ldp to the current goal.
Assume H4: d = 1.
rewrite the current goal using H4 (from left to right).
Apply SNoLe_ref to the current goal.
Assume H4: d = p.
Apply H2 to the current goal.
We will prove divides_int p a.
rewrite the current goal using H4 (from right to left).
We will prove divides_int d a.
An exact proof term for the current goal is Hda.
We prove the intermediate claim L2: ¬ (p = 0 a = 0).
Assume H3.
Apply H3 to the current goal.
Assume H4: p = 0.
Assume _.
Apply In_no2cycle 0 1 In_0_1 to the current goal.
We will prove 1 0.
rewrite the current goal using H4 (from right to left) at position 2.
We will prove 1 p.
An exact proof term for the current goal is Hp2.
Apply BezoutThm p LpZ a Ha L2 1 to the current goal.
Assume HBezout1: gcd_reln p a 1int_lin_comb p a 1 0 < 1 ∀d, int_lin_comb p a d0 < d1 d.
Assume _.
Apply HBezout1 L1 to the current goal.
Assume H.
Apply H to the current goal.
Assume H3: int_lin_comb p a 1.
Assume _.
Assume H4: ∀d, int_lin_comb p a d0 < d1 d.
Apply int_lin_comb_E4 p a 1 H3 to the current goal.
Let m be given.
Assume Hm: m int.
Let n be given.
Assume Hn: n int.
Assume H5: m * p + n * a = 1.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is int_SNo n Hn.
We prove the intermediate claim L3: b * m * p + b * n * a = b.
rewrite the current goal using mul_SNo_distrL b (m * p) (n * a) LbS (SNo_mul_SNo m p (int_SNo m Hm) (int_SNo p LpZ)) (SNo_mul_SNo n a LnS LaS) (from right to left).
We will prove b * (m * p + n * a) = b.
rewrite the current goal using H5 (from left to right).
An exact proof term for the current goal is mul_SNo_oneR b LbS.
We will prove divides_int p b.
rewrite the current goal using L3 (from right to left).
We will prove divides_int p (b * m * p + b * n * a).
Apply divides_int_add_SNo to the current goal.
We will prove divides_int p (b * m * p).
Apply divides_int_mul_SNo_R p (m * p) b Hb to the current goal.
We will prove divides_int p (m * p).
Apply divides_int_mul_SNo_R p p m Hm to the current goal.
We will prove divides_int p p.
An exact proof term for the current goal is divides_int_ref p LpZ.
We will prove divides_int p (b * n * a).
rewrite the current goal using mul_SNo_rotate_3_1 n a b LnS LaS LbS (from right to left).
We will prove divides_int p (n * a * b).
Apply divides_int_mul_SNo_R p (a * b) n Hn to the current goal.
We will prove divides_int p (a * b).
An exact proof term for the current goal is H1.
End of Section BezoutAndGCD
Beginning of Section PrimeFactorization
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Theorem. (prime_not_divides_int_1) The following is provable:
∀p, prime_nat p¬ divides_int p 1
Proof:
Let p be given.
Assume Hp.
Assume H1: divides_int p 1.
Apply Hp to the current goal.
Assume H.
Apply H to the current goal.
Assume Hp1: p ω.
Assume Hp2: 1 p.
Assume _.
We prove the intermediate claim LpN: nat_p p.
An exact proof term for the current goal is omega_nat_p p Hp1.
We prove the intermediate claim Lpo: ordinal p.
An exact proof term for the current goal is nat_p_ordinal p LpN.
We prove the intermediate claim LpS: SNo p.
An exact proof term for the current goal is nat_p_SNo p LpN.
Apply SNoLt_irref 1 to the current goal.
We will prove 1 < 1.
Apply SNoLtLe_tra 1 p 1 SNo_1 LpS SNo_1 to the current goal.
We will prove 1 < p.
Apply ordinal_In_SNoLt p Lpo 1 to the current goal.
We will prove 1 p.
An exact proof term for the current goal is Hp2.
We will prove p 1.
An exact proof term for the current goal is divides_int_pos_Le p 1 H1 SNoLt_0_1.
Definition. We define Pi_SNo to be λf n ⇒ nat_primrec 1 (λi r ⇒ r * f i) n of type (setset)setset.
Theorem. (Pi_SNo_0) The following is provable:
∀f : setset, Pi_SNo f 0 = 1
Proof:
Let f be given.
An exact proof term for the current goal is nat_primrec_0 1 (λi r ⇒ r * f i).
Theorem. (Pi_SNo_S) The following is provable:
∀f : setset, ∀n, nat_p nPi_SNo f (ordsucc n) = Pi_SNo f n * f n
Proof:
Let f and n be given.
Assume Hn.
We will prove Pi_SNo f (ordsucc n) = Pi_SNo f n * f n.
An exact proof term for the current goal is nat_primrec_S 1 (λi r ⇒ r * f i) n Hn.
Theorem. (Pi_SNo_In_omega) The following is provable:
∀f : setset, ∀n, nat_p n(in, f i ω)Pi_SNo f n ω
Proof:
Let f be given.
Apply nat_ind to the current goal.
Assume _.
rewrite the current goal using Pi_SNo_0 (from left to right).
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: (in, f i ω)Pi_SNo f n ω.
Assume Hf: iordsucc n, f i ω.
We will prove Pi_SNo f (ordsucc n) ω.
rewrite the current goal using Pi_SNo_S f n Hn (from left to right).
We will prove Pi_SNo f n * f n ω.
Apply mul_SNo_In_omega to the current goal.
Apply IHn to the current goal.
Let i be given.
Assume Hi: i n.
We will prove f i ω.
Apply Hf to the current goal.
We will prove i ordsucc n.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
We will prove f n ω.
Apply Hf to the current goal.
We will prove n ordsucc n.
Apply ordsuccI2 to the current goal.
Theorem. (Pi_SNo_In_int) The following is provable:
∀f : setset, ∀n, nat_p n(in, f i int)Pi_SNo f n int
Proof:
Let f be given.
Apply nat_ind to the current goal.
Assume _.
rewrite the current goal using Pi_SNo_0 (from left to right).
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: (in, f i int)Pi_SNo f n int.
Assume Hf: iordsucc n, f i int.
We will prove Pi_SNo f (ordsucc n) int.
rewrite the current goal using Pi_SNo_S f n Hn (from left to right).
We will prove Pi_SNo f n * f n int.
Apply int_mul_SNo to the current goal.
Apply IHn to the current goal.
Let i be given.
Assume Hi: i n.
We will prove f i int.
Apply Hf to the current goal.
We will prove i ordsucc n.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
We will prove f n int.
Apply Hf to the current goal.
We will prove n ordsucc n.
Apply ordsuccI2 to the current goal.
Theorem. (divides_int_prime_nat_eq) The following is provable:
∀p q, prime_nat pprime_nat qdivides_int p qp = q
Proof:
Let p and q be given.
Assume Hp Hq Hpq.
Apply Hp to the current goal.
Assume H.
Apply H to the current goal.
Assume HpN: p ω.
Assume H1p: 1 p.
Assume Hpp: kω, divides_nat k pk = 1 k = p.
Apply Hq to the current goal.
Assume H.
Apply H to the current goal.
Assume HqN: q ω.
Assume H1q: 1 q.
Assume Hqp: kω, divides_nat k qk = 1 k = q.
We prove the intermediate claim L1: divides_nat p q.
Apply divides_int_divides_nat to the current goal.
An exact proof term for the current goal is HpN.
An exact proof term for the current goal is HqN.
An exact proof term for the current goal is Hpq.
Apply Hqp p HpN L1 to the current goal.
Assume H1: p = 1.
We will prove False.
Apply In_irref p to the current goal.
rewrite the current goal using H1 (from left to right) at position 1.
An exact proof term for the current goal is H1p.
Assume H1: p = q.
An exact proof term for the current goal is H1.
Theorem. (Euclid_lemma_Pi_SNo) The following is provable:
∀f : setset, ∀p, prime_nat p∀n, nat_p n(in, f i int)divides_int p (Pi_SNo f n)in, divides_int p (f i)
Proof:
Let f and p be given.
Assume Hp: prime_nat p.
Apply nat_ind to the current goal.
Assume _.
rewrite the current goal using Pi_SNo_0 (from left to right).
Assume H1: divides_int p 1.
We will prove False.
An exact proof term for the current goal is prime_not_divides_int_1 p Hp H1.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: (in, f i int)divides_int p (Pi_SNo f n)in, divides_int p (f i).
Assume H1: iordsucc n, f i int.
rewrite the current goal using Pi_SNo_S f n Hn (from left to right).
Assume H2: divides_int p (Pi_SNo f n * f n).
We prove the intermediate claim L1: in, f i int.
Let i be given.
Assume Hi.
Apply H1 to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
We prove the intermediate claim L2: f n int.
Apply H1 to the current goal.
Apply ordsuccI2 to the current goal.
Apply Euclid_lemma p Hp (Pi_SNo f n) (Pi_SNo_In_int f n Hn L1) (f n) L2 H2 to the current goal.
Assume H3: divides_int p (Pi_SNo f n).
Apply IHn L1 H3 to the current goal.
Let i be given.
Assume H.
Apply H to the current goal.
Assume Hi: i n.
Assume H4: divides_int p (f i).
We use i to witness the existential quantifier.
Apply andI to the current goal.
We will prove i ordsucc n.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
An exact proof term for the current goal is H4.
Assume H3: divides_int p (f n).
We use n to witness the existential quantifier.
Apply andI to the current goal.
We will prove n ordsucc n.
Apply ordsuccI2 to the current goal.
An exact proof term for the current goal is H3.
Theorem. (divides_nat_mul_SNo_R) The following is provable:
Proof:
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
We will prove m ω m * n ω kω, mul_nat m k = m * n.
Apply and3I to the current goal.
An exact proof term for the current goal is Hm.
Apply mul_SNo_In_omega to the current goal.
An exact proof term for the current goal is Hm.
An exact proof term for the current goal is Hn.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hn.
We will prove mul_nat m n = m * n.
An exact proof term for the current goal is mul_nat_mul_SNo m Hm n Hn.
Theorem. (divides_nat_mul_SNo_L) The following is provable:
Proof:
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
rewrite the current goal using mul_SNo_com m n (omega_SNo m Hm) (omega_SNo n Hn) (from left to right).
We will prove divides_nat n (n * m).
An exact proof term for the current goal is divides_nat_mul_SNo_R n Hn m Hm.
Theorem. (Pi_SNo_divides) The following is provable:
∀f : setset, ∀n, nat_p n(in, f i ω)(in, divides_nat (f i) (Pi_SNo f n))
Proof:
Let f be given.
Apply nat_ind to the current goal.
Assume _.
Let i be given.
Assume Hi: i 0.
We will prove False.
An exact proof term for the current goal is EmptyE i Hi.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: (in, f i ω)(in, divides_nat (f i) (Pi_SNo f n)).
Assume Hf: iordsucc n, f i ω.
We prove the intermediate claim L1: in, f i ω.
Let i be given.
Assume Hi.
Apply Hf to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
We prove the intermediate claim L2: Pi_SNo f n ω.
An exact proof term for the current goal is Pi_SNo_In_omega f n Hn L1.
We prove the intermediate claim L3: f n ω.
Apply Hf to the current goal.
Apply ordsuccI2 to the current goal.
Let i be given.
Assume Hi: i ordsucc n.
rewrite the current goal using Pi_SNo_S f n Hn (from left to right).
We will prove divides_nat (f i) (Pi_SNo f n * f n).
Apply ordsuccE n i Hi to the current goal.
Assume H1: i n.
Apply divides_nat_tra (f i) (Pi_SNo f n) to the current goal.
We will prove divides_nat (f i) (Pi_SNo f n).
An exact proof term for the current goal is IHn L1 i H1.
We will prove divides_nat (Pi_SNo f n) (Pi_SNo f n * f n).
An exact proof term for the current goal is divides_nat_mul_SNo_R (Pi_SNo f n) L2 (f n) L3.
Assume H1: i = n.
rewrite the current goal using H1 (from left to right).
We will prove divides_nat (f n) (Pi_SNo f n * f n).
An exact proof term for the current goal is divides_nat_mul_SNo_L (Pi_SNo f n) L2 (f n) L3.
Definition. We define nonincrfinseq to be λA n f ⇒ in, A (f i) ji, f i f j of type (setprop)set(setset)prop.
Theorem. (Pi_SNo_eq) The following is provable:
∀f g : setset, ∀m, nat_p m(im, f i = g i)Pi_SNo f m = Pi_SNo g m
Proof:
Let f and g be given.
Apply nat_ind to the current goal.
Assume _.
rewrite the current goal using Pi_SNo_0 g (from left to right).
An exact proof term for the current goal is Pi_SNo_0 f.
Let m be given.
Assume Hm.
Assume IHm: (im, f i = g i)Pi_SNo f m = Pi_SNo g m.
Assume H1: iordsucc m, f i = g i.
We prove the intermediate claim L1: im, f i = g i.
Let i be given.
Assume Hi.
Apply H1 to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
We prove the intermediate claim L2: f m = g m.
Apply H1 to the current goal.
Apply ordsuccI2 to the current goal.
We will prove Pi_SNo f (ordsucc m) = Pi_SNo g (ordsucc m).
rewrite the current goal using Pi_SNo_S f m Hm (from left to right).
rewrite the current goal using Pi_SNo_S g m Hm (from left to right).
We will prove Pi_SNo f m * f m = Pi_SNo g m * g m.
Use f_equal.
An exact proof term for the current goal is IHm L1.
An exact proof term for the current goal is L2.
Theorem. (prime_factorization_ex_uniq) The following is provable:
∀n, nat_p n0 nkω, f : setset, nonincrfinseq prime_nat k f Pi_SNo f k = n k'ω, ∀f' : setset, nonincrfinseq prime_nat k' f'Pi_SNo f' k' = nk' = k ik, f' i = f i
Proof:
Apply nat_complete_ind to the current goal.
Let n be given.
Assume Hn: nat_p n.
Assume IH: mn, 0 mkω, f : setset, nonincrfinseq prime_nat k f Pi_SNo f k = m k'ω, ∀f' : setset, nonincrfinseq prime_nat k' f'Pi_SNo f' k' = mk' = k ik, f' i = f i.
Assume H1: 0 n.
We prove the intermediate claim Ln: n ω.
An exact proof term for the current goal is nat_p_omega n Hn.
Apply xm (n = 1) to the current goal.
Assume H2: n = 1.
Set f to be the term λi ⇒ 0 of type setset.
We will prove kω, f : setset, nonincrfinseq prime_nat k f Pi_SNo f k = n k'ω, ∀f' : setset, nonincrfinseq prime_nat k' f'Pi_SNo f' k' = nk' = k ik, f' i = f i.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
We will prove 0 ω.
An exact proof term for the current goal is nat_p_omega 0 nat_0.
We use f to witness the existential quantifier.
Apply and3I to the current goal.
Let i be given.
Assume Hi: i 0.
We will prove False.
An exact proof term for the current goal is EmptyE i Hi.
We will prove Pi_SNo f 0 = n.
rewrite the current goal using Pi_SNo_0 f (from left to right).
Use symmetry.
An exact proof term for the current goal is H2.
Let k' be given.
Assume Hk': k' ω.
Let f' be given.
Assume Hf': nonincrfinseq prime_nat k' f'.
Assume H3: Pi_SNo f' k' = n.
We prove the intermediate claim Lf'1: ik', prime_nat (f' i).
Let i be given.
Assume Hi: i k'.
Apply Hf' i Hi to the current goal.
Assume H4: prime_nat (f' i).
Assume _.
An exact proof term for the current goal is H4.
We prove the intermediate claim Lf'2: ik', f' i ω.
Let i be given.
Assume Hi: i k'.
Apply Lf'1 i Hi to the current goal.
Assume H.
Apply H to the current goal.
Assume H4: f' i ω.
Assume _ _.
An exact proof term for the current goal is H4.
Apply andI to the current goal.
We will prove k' = 0.
Apply Empty_eq to the current goal.
Let i be given.
Assume Hi: i k'.
We will prove False.
We prove the intermediate claim Lf'i1: prime_nat (f' i).
An exact proof term for the current goal is Lf'1 i Hi.
We prove the intermediate claim Lf'i2: f' i ω.
An exact proof term for the current goal is Lf'2 i Hi.
Apply SNoLt_irref n to the current goal.
We will prove n < n.
rewrite the current goal using H2 (from left to right) at position 1.
We will prove 1 < n.
Apply SNoLtLe_tra 1 (f' i) n SNo_1 to the current goal.
We will prove SNo (f' i).
An exact proof term for the current goal is omega_SNo (f' i) Lf'i2.
We will prove SNo n.
Apply nat_p_SNo to the current goal.
An exact proof term for the current goal is Hn.
We will prove 1 < f' i.
Apply Lf'i1 to the current goal.
Assume H.
Apply H to the current goal.
Assume _.
Assume H4: 1 f' i.
Assume _.
We will prove 1 < f' i.
An exact proof term for the current goal is ordinal_In_SNoLt (f' i) (nat_p_ordinal (f' i) (omega_nat_p (f' i) Lf'i2)) 1 H4.
We will prove f' i n.
Apply divides_int_pos_Le (f' i) n to the current goal.
We will prove divides_int (f' i) n.
Apply divides_nat_divides_int to the current goal.
We will prove divides_nat (f' i) n.
rewrite the current goal using H3 (from right to left).
We will prove divides_nat (f' i) (Pi_SNo f' k').
An exact proof term for the current goal is Pi_SNo_divides f' k' (omega_nat_p k' Hk') Lf'2 i Hi.
We will prove 0 < n.
rewrite the current goal using H2 (from left to right).
An exact proof term for the current goal is SNoLt_0_1.
Let i be given.
Assume Hi: i 0.
We will prove False.
An exact proof term for the current goal is EmptyE i Hi.
Assume H2: n 1.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is nat_p_SNo n Hn.
We prove the intermediate claim Lno: ordinal n.
An exact proof term for the current goal is nat_p_ordinal n Hn.
We prove the intermediate claim L1: 1 n.
Apply ordinal_In_Or_Subq 1 n (nat_p_ordinal 1 nat_1) Lno to the current goal.
Assume H3: 1 n.
An exact proof term for the current goal is H3.
Assume H3: n 1.
We will prove False.
Apply H2 to the current goal.
Apply set_ext to the current goal.
An exact proof term for the current goal is H3.
We will prove 1 n.
Let i be given.
Assume Hi: i 1.
Apply cases_1 i Hi to the current goal.
We will prove 0 n.
An exact proof term for the current goal is H1.
We prove the intermediate claim L2: p, ordinal p (prime_nat p divides_nat p n) qp, ¬ (prime_nat q divides_nat q n).
Apply least_ordinal_ex to the current goal.
We will prove p, ordinal p (prime_nat p divides_nat p n).
Apply prime_nat_divisor_ex n Hn L1 to the current goal.
Let p be given.
Assume H.
Apply H to the current goal.
Assume H3: prime_nat p.
Assume H4: divides_nat p n.
We use p to witness the existential quantifier.
Apply andI to the current goal.
We will prove ordinal p.
Apply H3 to the current goal.
Assume H _.
Apply H to the current goal.
Assume H5: p ω.
Assume _.
An exact proof term for the current goal is nat_p_ordinal p (omega_nat_p p H5).
Apply andI to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is H4.
Apply L2 to the current goal.
Let p be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Hpo: ordinal p.
Assume H.
Apply H to the current goal.
Assume Hpp: prime_nat p.
Assume Hpn: divides_nat p n.
Assume Hpleast: qp, ¬ (prime_nat q divides_nat q n).
Apply Hpp to the current goal.
Assume H _.
Apply H to the current goal.
Assume HpN: p ω.
Assume H1p: 1 p.
Apply Hpn to the current goal.
Assume _ H.
Apply H to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m ω.
rewrite the current goal using mul_nat_mul_SNo p HpN m Hm (from left to right).
Assume Hpm: p * m = n.
We prove the intermediate claim LmS: SNo m.
An exact proof term for the current goal is omega_SNo m Hm.
We prove the intermediate claim LmN: nat_p m.
An exact proof term for the current goal is omega_nat_p m Hm.
We prove the intermediate claim Lmo: ordinal m.
An exact proof term for the current goal is nat_p_ordinal m LmN.
We prove the intermediate claim LpS: SNo p.
An exact proof term for the current goal is omega_SNo p HpN.
We prove the intermediate claim LpN: nat_p p.
An exact proof term for the current goal is omega_nat_p p HpN.
We prove the intermediate claim Lpo: ordinal p.
An exact proof term for the current goal is nat_p_ordinal p LpN.
We prove the intermediate claim Lmp: m * p = n.
rewrite the current goal using mul_SNo_com m p LmS LpS (from left to right).
An exact proof term for the current goal is Hpm.
We prove the intermediate claim L1p: 1 < p.
Apply ordinal_In_SNoLt p Hpo 1 to the current goal.
We will prove 1 p.
An exact proof term for the current goal is H1p.
We prove the intermediate claim Lmpos: 0 < m.
Apply SNoLeE 0 m SNo_0 LmS (omega_nonneg m Hm) to the current goal.
Assume H3: 0 < m.
An exact proof term for the current goal is H3.
Assume H3: 0 = m.
We will prove False.
We prove the intermediate claim Ln0: n = 0.
rewrite the current goal using Hpm (from right to left).
We will prove p * m = 0.
rewrite the current goal using H3 (from right to left).
An exact proof term for the current goal is mul_SNo_zeroR p LpS.
Apply In_irref n to the current goal.
We will prove n n.
rewrite the current goal using Ln0 (from left to right) at position 1.
An exact proof term for the current goal is H1.
We prove the intermediate claim L3: m < n.
rewrite the current goal using Lmp (from right to left).
We will prove m < m * p.
rewrite the current goal using mul_SNo_oneR m LmS (from right to left) at position 1.
We will prove m * 1 < m * p.
Apply pos_mul_SNo_Lt m 1 p LmS Lmpos SNo_1 LpS L1p to the current goal.
We prove the intermediate claim L4: m n.
An exact proof term for the current goal is ordinal_SNoLt_In m n Lmo Lno L3.
We prove the intermediate claim L5: 0 m.
An exact proof term for the current goal is ordinal_SNoLt_In 0 m ordinal_Empty Lmo Lmpos.
Apply IH m L4 L5 to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k ω.
Assume H.
Apply H to the current goal.
Let f be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Hf: nonincrfinseq prime_nat k f.
Assume Hfkm: Pi_SNo f k = m.
Assume Huniq: k'ω, ∀f' : setset, nonincrfinseq prime_nat k' f'Pi_SNo f' k' = mk' = k ik, f' i = f i.
We prove the intermediate claim LkN: nat_p k.
An exact proof term for the current goal is omega_nat_p k Hk.
We prove the intermediate claim Lf1: ik, prime_nat (f i).
Let i be given.
Assume Hi: i k.
Apply Hf i Hi to the current goal.
Assume H3: prime_nat (f i).
Assume _.
An exact proof term for the current goal is H3.
We prove the intermediate claim Lf2: ik, f i ω.
Let i be given.
Assume Hi: i k.
Apply Lf1 i Hi to the current goal.
Assume H.
Apply H to the current goal.
Assume H3: f i ω.
Assume _ _.
An exact proof term for the current goal is H3.
We prove the intermediate claim Lg: g : setset, g k = p ik, g i = f i.
Set g to be the term λi ⇒ if i k then f i else p of type setset.
We use g to witness the existential quantifier.
Apply andI to the current goal.
We will prove g k = p.
An exact proof term for the current goal is If_i_0 (k k) (f k) p (In_irref k).
Let i be given.
Assume Hi: i k.
We will prove g i = f i.
An exact proof term for the current goal is If_i_1 (i k) (f i) p Hi.
Apply Lg to the current goal.
Let g be given.
Assume H.
Apply H to the current goal.
Assume Hgk: g k = p.
Assume Hgi: ik, g i = f i.
We will prove kω, f : setset, nonincrfinseq prime_nat k f Pi_SNo f k = n k'ω, ∀f' : setset, nonincrfinseq prime_nat k' f'Pi_SNo f' k' = nk' = k ik, f' i = f i.
We use (ordsucc k) to witness the existential quantifier.
Apply andI to the current goal.
We will prove ordsucc k ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Hk.
We use g to witness the existential quantifier.
Apply and3I to the current goal.
We will prove nonincrfinseq prime_nat (ordsucc k) g.
Let i be given.
Assume Hi: i ordsucc k.
Apply ordsuccE k i Hi to the current goal.
Assume H3: i k.
We will prove prime_nat (g i) ji, g i g j.
rewrite the current goal using Hgi i H3 (from left to right).
We will prove prime_nat (f i) ji, f i g j.
Apply Hf i H3 to the current goal.
Assume H4: prime_nat (f i).
Assume H5: ji, f i f j.
Apply andI to the current goal.
An exact proof term for the current goal is H4.
Let j be given.
Assume Hj: j i.
We will prove f i g j.
We prove the intermediate claim Lj: j k.
An exact proof term for the current goal is nat_trans k LkN i H3 j Hj.
rewrite the current goal using Hgi j Lj (from left to right).
An exact proof term for the current goal is H5 j Hj.
Assume H3: i = k.
We will prove prime_nat (g i) ji, g i g j.
rewrite the current goal using H3 (from left to right).
rewrite the current goal using Hgk (from left to right).
We will prove prime_nat p jk, p g j.
Apply andI to the current goal.
An exact proof term for the current goal is Hpp.
Let j be given.
Assume Hj: j k.
rewrite the current goal using Hgi j Hj (from left to right).
We will prove p f j.
We prove the intermediate claim LfjN: nat_p (f j).
An exact proof term for the current goal is omega_nat_p (f j) (Lf2 j Hj).
We prove the intermediate claim LfjS: SNo (f j).
An exact proof term for the current goal is nat_p_SNo (f j) LfjN.
We prove the intermediate claim Lfjo: ordinal (f j).
An exact proof term for the current goal is nat_p_ordinal (f j) LfjN.
Apply SNoLtLe_or (f j) p LfjS LpS to the current goal.
Assume H4: f j < p.
We will prove False.
Apply Hpleast (f j) to the current goal.
We will prove f j p.
Apply ordinal_SNoLt_In (f j) p Lfjo Lpo to the current goal.
We will prove f j < p.
An exact proof term for the current goal is H4.
Apply andI to the current goal.
We will prove prime_nat (f j).
An exact proof term for the current goal is Lf1 j Hj.
We will prove divides_nat (f j) n.
Apply divides_nat_tra (f j) m n to the current goal.
We will prove divides_nat (f j) m.
rewrite the current goal using Hfkm (from right to left).
We will prove divides_nat (f j) (Pi_SNo f k).
An exact proof term for the current goal is Pi_SNo_divides f k LkN Lf2 j Hj.
We will prove divides_nat m n.
rewrite the current goal using Lmp (from right to left).
We will prove divides_nat m (m * p).
An exact proof term for the current goal is divides_nat_mul_SNo_R m Hm p HpN.
Assume H4: p f j.
An exact proof term for the current goal is H4.
We will prove Pi_SNo g (ordsucc k) = n.
rewrite the current goal using Pi_SNo_S g k LkN (from left to right).
We will prove Pi_SNo g k * g k = n.
rewrite the current goal using Lmp (from right to left).
We will prove Pi_SNo g k * g k = m * p.
Use f_equal.
We will prove Pi_SNo g k = m.
rewrite the current goal using Pi_SNo_eq g f k LkN Hgi (from left to right).
We will prove Pi_SNo f k = m.
An exact proof term for the current goal is Hfkm.
We will prove g k = p.
An exact proof term for the current goal is Hgk.
We will prove k'ω, ∀g' : setset, nonincrfinseq prime_nat k' g'Pi_SNo g' k' = nk' = ordsucc k iordsucc k, g' i = g i.
Let k' be given.
Assume Hk': k' ω.
Let g' be given.
Assume Hg': nonincrfinseq prime_nat k' g'.
Assume Hg'k': Pi_SNo g' k' = n.
We prove the intermediate claim Lg'1: ik', prime_nat (g' i).
Let i be given.
Assume Hi: i k'.
Apply Hg' i Hi to the current goal.
Assume H4: prime_nat (g' i).
Assume _.
An exact proof term for the current goal is H4.
We prove the intermediate claim Lg'2: ik', g' i ω.
Let i be given.
Assume Hi: i k'.
Apply Lg'1 i Hi to the current goal.
Assume H.
Apply H to the current goal.
Assume H4: g' i ω.
Assume _ _.
An exact proof term for the current goal is H4.
We will prove k' = ordsucc k iordsucc k, g' i = g i.
We prove the intermediate claim Lk'N: nat_p k'.
An exact proof term for the current goal is omega_nat_p k' Hk'.
Apply nat_inv k' Lk'N to the current goal.
Assume Hk': k' = 0.
We will prove False.
Apply H2 to the current goal.
We will prove n = 1.
rewrite the current goal using Hg'k' (from right to left).
rewrite the current goal using Hk' (from left to right).
Apply Pi_SNo_0 to the current goal.
Assume H.
Apply H to the current goal.
Let k'' be given.
Assume H.
Apply H to the current goal.
Assume Hk'': nat_p k''.
Assume Hk'k'': k' = ordsucc k''.
We prove the intermediate claim L6: nonincrfinseq prime_nat k'' g'.
Let i be given.
Assume Hi: i k''.
We will prove prime_nat (g' i) ji, g' i g' j.
We prove the intermediate claim Li: i k'.
rewrite the current goal using Hk'k'' (from left to right).
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
An exact proof term for the current goal is Hg' i Li.
We prove the intermediate claim LPg'k''N: Pi_SNo g' k'' ω.
Apply Pi_SNo_In_omega g' k'' Hk'' to the current goal.
Let i be given.
Assume Hi: i k''.
We prove the intermediate claim Li: i k'.
rewrite the current goal using Hk'k'' (from left to right).
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
An exact proof term for the current goal is Lg'2 i Li.
We prove the intermediate claim LPg'k''S: SNo (Pi_SNo g' k'').
An exact proof term for the current goal is omega_SNo (Pi_SNo g' k'') LPg'k''N.
We prove the intermediate claim L7: g' k'' = p.
We prove the intermediate claim L7a: prime_nat (g' k'') jk'', g' k'' g' j.
Apply Hg' k'' to the current goal.
We will prove k'' k'.
rewrite the current goal using Hk'k'' (from left to right).
Apply ordsuccI2 to the current goal.
Apply L7a to the current goal.
Assume Hg'k''P: prime_nat (g' k'').
Assume Hg'k''minimal: jk'', g' k'' g' j.
Apply Hg'k''P to the current goal.
Assume H _.
Apply H to the current goal.
Assume H4: g' k'' ω.
Assume H5: 1 g' k''.
We prove the intermediate claim Lg'k''N: nat_p (g' k'').
An exact proof term for the current goal is omega_nat_p (g' k'') H4.
We prove the intermediate claim Lg'k''o: ordinal (g' k'').
An exact proof term for the current goal is nat_p_ordinal (g' k'') Lg'k''N.
We prove the intermediate claim Lg'k''S: SNo (g' k'').
An exact proof term for the current goal is nat_p_SNo (g' k'') Lg'k''N.
We prove the intermediate claim L7b: divides_nat (g' k'') n.
rewrite the current goal using Hg'k' (from right to left).
We will prove divides_nat (g' k'') (Pi_SNo g' k').
rewrite the current goal using Hk'k'' (from left to right).
rewrite the current goal using Pi_SNo_S g' k'' Hk'' (from left to right).
We will prove divides_nat (g' k'') (Pi_SNo g' k'' * g' k'').
Apply divides_nat_mul_SNo_L to the current goal.
An exact proof term for the current goal is LPg'k''N.
An exact proof term for the current goal is H4.
We prove the intermediate claim L7c: divides_int p (Pi_SNo g' k').
Apply Hg'k' (λu v ⇒ divides_int p v) to the current goal.
We will prove divides_int p n.
Apply divides_nat_divides_int to the current goal.
An exact proof term for the current goal is Hpn.
We prove the intermediate claim L7d: divides_int p (Pi_SNo g' k'') divides_int p (g' k'').
Apply Euclid_lemma p Hpp to the current goal.
We will prove Pi_SNo g' k'' int.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is LPg'k''N.
We will prove g' k'' int.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is H4.
We will prove divides_int p (Pi_SNo g' k'' * g' k'').
rewrite the current goal using Pi_SNo_S g' k'' Hk'' (from right to left).
We will prove divides_int p (Pi_SNo g' (ordsucc k'')).
rewrite the current goal using Hk'k'' (from right to left).
An exact proof term for the current goal is L7c.
We prove the intermediate claim L7e: ik'', g' i int.
Let i be given.
Assume Hi.
Apply Subq_omega_int to the current goal.
Apply Lg'2 to the current goal.
We will prove i k'.
rewrite the current goal using Hk'k'' (from left to right).
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
Apply L7d to the current goal.
Assume H6: divides_int p (Pi_SNo g' k'').
We will prove g' k'' = p.
Apply SNoLt_trichotomy_or_impred (g' k'') p Lg'k''S LpS to the current goal.
Assume H7: g' k'' < p.
We will prove False.
Apply Hpleast (g' k'') to the current goal.
We will prove g' k'' p.
An exact proof term for the current goal is ordinal_SNoLt_In (g' k'') p Lg'k''o Lpo H7.
We will prove prime_nat (g' k'') divides_nat (g' k'') n.
Apply andI to the current goal.
An exact proof term for the current goal is Hg'k''P.
An exact proof term for the current goal is L7b.
Assume H7: g' k'' = p.
An exact proof term for the current goal is H7.
Assume H7: p < g' k''.
We will prove False.
Apply Euclid_lemma_Pi_SNo g' p Hpp k'' Hk'' L7e H6 to the current goal.
Let j be given.
Assume H.
Apply H to the current goal.
Assume Hj: j k''.
Assume H8: divides_int p (g' j).
We prove the intermediate claim L7f: prime_nat (g' j).
Apply Lg'1 to the current goal.
rewrite the current goal using Hk'k'' (from left to right).
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hj.
We prove the intermediate claim L7g: p = g' j.
An exact proof term for the current goal is divides_int_prime_nat_eq p (g' j) Hpp L7f H8.
Apply SNoLt_irref p to the current goal.
We will prove p < p.
Apply SNoLtLe_tra p (g' k'') p LpS Lg'k''S LpS H7 to the current goal.
We will prove g' k'' p.
rewrite the current goal using L7g (from left to right).
We will prove g' k'' g' j.
Apply Hg'k''minimal to the current goal.
We will prove j k''.
An exact proof term for the current goal is Hj.
Assume H6: divides_int p (g' k'').
We will prove g' k'' = p.
Use symmetry.
Apply divides_int_prime_nat_eq p (g' k'') Hpp to the current goal.
We will prove prime_nat (g' k'').
Apply Lg'1 to the current goal.
rewrite the current goal using Hk'k'' (from left to right).
Apply ordsuccI2 to the current goal.
We will prove divides_int p (g' k'').
An exact proof term for the current goal is H6.
We prove the intermediate claim L8: Pi_SNo g' k'' = m.
Apply mul_SNo_nonzero_cancel p (Pi_SNo g' k'') m to the current goal.
We will prove SNo p.
An exact proof term for the current goal is LpS.
We will prove p 0.
Assume H4: p = 0.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
rewrite the current goal using H4 (from right to left) at position 2.
We will prove 0 < p.
An exact proof term for the current goal is SNoLt_tra 0 1 p SNo_0 SNo_1 LpS SNoLt_0_1 L1p.
We will prove SNo (Pi_SNo g' k'').
An exact proof term for the current goal is LPg'k''S.
We will prove SNo m.
An exact proof term for the current goal is LmS.
We will prove p * Pi_SNo g' k'' = p * m.
rewrite the current goal using Hpm (from left to right).
We will prove p * Pi_SNo g' k'' = n.
rewrite the current goal using Hg'k' (from right to left).
We will prove p * Pi_SNo g' k'' = Pi_SNo g' k'.
rewrite the current goal using Hk'k'' (from left to right).
We will prove p * Pi_SNo g' k'' = Pi_SNo g' (ordsucc k'').
rewrite the current goal using Pi_SNo_S g' k'' Hk'' (from left to right).
We will prove p * Pi_SNo g' k'' = Pi_SNo g' k'' * g' k''.
rewrite the current goal using L7 (from left to right).
We will prove p * Pi_SNo g' k'' = Pi_SNo g' k'' * p.
An exact proof term for the current goal is mul_SNo_com p (Pi_SNo g' k'') LpS LPg'k''S.
Apply Huniq k'' (nat_p_omega k'' Hk'') g' L6 L8 to the current goal.
Assume H3: k'' = k.
Assume H4: ik, g' i = f i.
We will prove k' = ordsucc k iordsucc k, g' i = g i.
Apply andI to the current goal.
We will prove k' = ordsucc k.
rewrite the current goal using Hk'k'' (from left to right).
Use f_equal.
An exact proof term for the current goal is H3.
Let i be given.
Assume Hi: i ordsucc k.
Apply ordsuccE k i Hi to the current goal.
Assume H5: i k.
We will prove g' i = g i.
rewrite the current goal using Hgi i H5 (from left to right).
We will prove g' i = f i.
An exact proof term for the current goal is H4 i H5.
Assume H5: i = k.
We will prove g' i = g i.
rewrite the current goal using H5 (from left to right).
rewrite the current goal using Hgk (from left to right).
We will prove g' k = p.
rewrite the current goal using H3 (from right to left).
An exact proof term for the current goal is L7.
End of Section PrimeFactorization
Beginning of Section SurrealExp
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Definition. We define exp_SNo_nat to be λn m : setnat_primrec 1 (λ_ r ⇒ n * r) m of type setsetset.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Theorem. (exp_SNo_nat_0) The following is provable:
∀x, SNo xx ^ 0 = 1
Proof:
Let x be given.
Assume Hx.
An exact proof term for the current goal is nat_primrec_0 1 (λ_ r ⇒ x * r).
Theorem. (exp_SNo_nat_S) The following is provable:
∀x, SNo x∀n, nat_p nx ^ (ordsucc n) = x * x ^ n
Proof:
Let x be given.
Assume Hx.
Let n be given.
Assume Hn.
An exact proof term for the current goal is nat_primrec_S 1 (λ_ r ⇒ x * r) n Hn.
Theorem. (exp_SNo_nat_1) The following is provable:
∀x, SNo xx ^ 1 = x
Proof:
Let x be given.
Assume Hx.
rewrite the current goal using exp_SNo_nat_S x Hx 0 nat_0 (from left to right).
We will prove x * x ^ 0 = x.
rewrite the current goal using exp_SNo_nat_0 x Hx (from left to right).
We will prove x * 1 = x.
An exact proof term for the current goal is mul_SNo_oneR x Hx.
Theorem. (SNo_exp_SNo_nat) The following is provable:
∀x, SNo x∀n, nat_p nSNo (x ^ n)
Proof:
Let x be given.
Assume Hx.
Apply nat_ind to the current goal.
We will prove SNo (x ^ 0).
rewrite the current goal using exp_SNo_nat_0 x Hx (from left to right).
An exact proof term for the current goal is SNo_1.
Let n be given.
Assume Hn.
Assume IHn: SNo (x ^ n).
We will prove SNo (x ^ (ordsucc n)).
rewrite the current goal using exp_SNo_nat_S x Hx n Hn (from left to right).
We will prove SNo (x * x ^ n).
An exact proof term for the current goal is SNo_mul_SNo x (x ^ n) Hx IHn.
Theorem. (nat_exp_SNo_nat) The following is provable:
∀x, nat_p x∀n, nat_p nnat_p (x ^ n)
Proof:
Let x be given.
Assume Hx.
We prove the intermediate claim Lx: SNo x.
An exact proof term for the current goal is nat_p_SNo x Hx.
Apply nat_ind to the current goal.
We will prove nat_p (x ^ 0).
rewrite the current goal using exp_SNo_nat_0 x Lx (from left to right).
An exact proof term for the current goal is nat_1.
Let n be given.
Assume Hn.
Assume IHn: nat_p (x ^ n).
We will prove nat_p (x ^ (ordsucc n)).
rewrite the current goal using exp_SNo_nat_S x Lx n Hn (from left to right).
We will prove nat_p (x * x ^ n).
rewrite the current goal using mul_nat_mul_SNo x (nat_p_omega x Hx) (x ^ n) (nat_p_omega (x ^ n) IHn) (from right to left).
We will prove nat_p (mul_nat x (x ^ n)).
An exact proof term for the current goal is mul_nat_p x Hx (x ^ n) IHn.
Theorem. (eps_ordsucc_half_add) The following is provable:
∀n, nat_p neps_ (ordsucc n) + eps_ (ordsucc n) = eps_ n
Proof:
Apply nat_complete_ind to the current goal.
Let n be given.
Assume Hn.
Assume IH: mn, eps_ (ordsucc m) + eps_ (ordsucc m) = eps_ m.
We prove the intermediate claim Ln: n ω.
An exact proof term for the current goal is nat_p_omega n Hn.
rewrite the current goal using eps_SNoCut n Ln (from left to right).
Set x to be the term eps_ (ordsucc n).
We prove the intermediate claim Lx: SNo x.
An exact proof term for the current goal is SNo_eps_ (ordsucc n) (omega_ordsucc n Ln).
We prove the intermediate claim Lx2: 0 < x.
An exact proof term for the current goal is SNo_eps_pos (ordsucc n) (omega_ordsucc n Ln).
rewrite the current goal using add_SNo_eq x Lx x Lx (from left to right).
We will prove SNoCut ({w + x|wSNoL x} {x + w|wSNoL x}) ({z + x|zSNoR x} {x + z|zSNoR x}) = SNoCut {0} {eps_ m|mn}.
Apply SNoCut_ext ({w + x|wSNoL x} {x + w|wSNoL x}) ({z + x|zSNoR x} {x + z|zSNoR x}) {0} {eps_ m|mn} (add_SNo_SNoCutP x x Lx Lx) (eps_SNoCutP n Ln) to the current goal.
We prove the intermediate claim L1: wSNoL x, w + x < eps_ n x + w < eps_ n.
Let w be given.
Assume Hw: w SNoL x.
Apply SNoL_E x Lx w Hw to the current goal.
Assume Hw1: SNo w.
rewrite the current goal using SNoLev_eps_ (ordsucc n) (omega_ordsucc n Ln) (from left to right).
Assume Hw2: SNoLev w ordsucc (ordsucc n).
Assume Hw3: w < x.
We prove the intermediate claim Lw0: w 0.
Apply SNoLtLe_or 0 w SNo_0 Hw1 to the current goal.
Assume H1: 0 < w.
We will prove False.
Apply SNoLt_irref w to the current goal.
We will prove w < w.
Apply SNoLt_tra w x w Hw1 Lx Hw1 Hw3 to the current goal.
We will prove x < w.
Apply SNo_pos_eps_Lt (ordsucc n) (nat_ordsucc n Hn) w to the current goal.
We will prove w SNoS_ (ordsucc (ordsucc n)).
Apply SNoS_I (ordsucc (ordsucc n)) (nat_p_ordinal (ordsucc (ordsucc n)) (nat_ordsucc (ordsucc n) (nat_ordsucc n Hn))) w (SNoLev w) Hw2 to the current goal.
We will prove SNo_ (SNoLev w) w.
An exact proof term for the current goal is SNoLev_ w Hw1.
We will prove 0 < w.
An exact proof term for the current goal is H1.
Assume H1: w 0.
An exact proof term for the current goal is H1.
We prove the intermediate claim L1a: w + x < eps_ n.
Apply SNoLeLt_tra (w + x) (0 + x) (eps_ n) to the current goal.
An exact proof term for the current goal is SNo_add_SNo w x Hw1 Lx.
An exact proof term for the current goal is SNo_add_SNo 0 x SNo_0 Lx.
An exact proof term for the current goal is SNo_eps_ n Ln.
We will prove w + x 0 + x.
An exact proof term for the current goal is add_SNo_Le1 w x 0 Hw1 Lx SNo_0 Lw0.
We will prove 0 + x < eps_ n.
rewrite the current goal using add_SNo_0L x Lx (from left to right).
We will prove eps_ (ordsucc n) < eps_ n.
An exact proof term for the current goal is SNo_eps_decr (ordsucc n) (omega_ordsucc n Ln) n (ordsuccI2 n).
Apply andI to the current goal.
An exact proof term for the current goal is L1a.
rewrite the current goal using add_SNo_com x w Lx Hw1 (from left to right).
An exact proof term for the current goal is L1a.
Let w' be given.
Assume Hw': w' {w + x|wSNoL x} {x + w|wSNoL x}.
We will prove w' < SNoCut {0} {eps_ m|mn}.
rewrite the current goal using eps_SNoCut n Ln (from right to left).
We will prove w' < eps_ n.
Apply binunionE {w + x|wSNoL x} {x + w|wSNoL x} w' Hw' to the current goal.
Assume Hw': w' {w + x|wSNoL x}.
Apply ReplE_impred (SNoL x) (λw ⇒ w + x) w' Hw' to the current goal.
Let w be given.
Assume Hw1: w SNoL x.
Assume Hw2: w' = w + x.
rewrite the current goal using Hw2 (from left to right).
An exact proof term for the current goal is andEL (w + x < eps_ n) (x + w < eps_ n) (L1 w Hw1).
Assume Hw': w' {x + w|wSNoL x}.
Apply ReplE_impred (SNoL x) (λw ⇒ x + w) w' Hw' to the current goal.
Let w be given.
Assume Hw1: w SNoL x.
Assume Hw2: w' = x + w.
rewrite the current goal using Hw2 (from left to right).
An exact proof term for the current goal is andER (w + x < eps_ n) (x + w < eps_ n) (L1 w Hw1).
We prove the intermediate claim L2: zSNoR x, eps_ n < z + x eps_ n < x + z.
Let z be given.
Assume Hz: z SNoR x.
Apply SNoR_E x Lx z Hz to the current goal.
Assume Hz1: SNo z.
rewrite the current goal using SNoLev_eps_ (ordsucc n) (omega_ordsucc n Ln) (from left to right).
Assume Hz2: SNoLev z ordsucc (ordsucc n).
Assume Hz3: x < z.
We prove the intermediate claim L2a: eps_ n < z + x.
Apply SNoLeLt_tra (eps_ n) z (z + x) (SNo_eps_ n Ln) Hz1 to the current goal.
An exact proof term for the current goal is SNo_add_SNo z x Hz1 Lx.
We will prove eps_ n z.
Apply SNo_pos_eps_Le n Hn z to the current goal.
We will prove z SNoS_ (ordsucc (ordsucc n)).
Apply SNoS_I (ordsucc (ordsucc n)) (nat_p_ordinal (ordsucc (ordsucc n)) (nat_ordsucc (ordsucc n) (nat_ordsucc n Hn))) z (SNoLev z) Hz2 to the current goal.
We will prove SNo_ (SNoLev z) z.
An exact proof term for the current goal is SNoLev_ z Hz1.
We will prove 0 < z.
Apply SNoLt_tra 0 x z SNo_0 Lx Hz1 to the current goal.
We will prove 0 < x.
An exact proof term for the current goal is SNo_eps_pos (ordsucc n) (omega_ordsucc n Ln).
We will prove x < z.
An exact proof term for the current goal is Hz3.
We will prove z < z + x.
rewrite the current goal using add_SNo_0R z Hz1 (from right to left) at position 1.
We will prove z + 0 < z + x.
Apply add_SNo_Lt2 z 0 x Hz1 SNo_0 Lx to the current goal.
We will prove 0 < x.
An exact proof term for the current goal is SNo_eps_pos (ordsucc n) (omega_ordsucc n Ln).
Apply andI to the current goal.
An exact proof term for the current goal is L2a.
rewrite the current goal using add_SNo_com x z Lx Hz1 (from left to right).
An exact proof term for the current goal is L2a.
Let z' be given.
Assume Hz': z' {z + x|zSNoR x} {x + z|zSNoR x}.
We will prove SNoCut {0} {eps_ m|mn} < z'.
rewrite the current goal using eps_SNoCut n Ln (from right to left).
We will prove eps_ n < z'.
Apply binunionE {z + x|zSNoR x} {x + z|zSNoR x} z' Hz' to the current goal.
Assume Hz': z' {z + x|zSNoR x}.
Apply ReplE_impred (SNoR x) (λz ⇒ z + x) z' Hz' to the current goal.
Let z be given.
Assume Hz1: z SNoR x.
Assume Hz2: z' = z + x.
rewrite the current goal using Hz2 (from left to right).
We will prove eps_ n < z + x.
An exact proof term for the current goal is andEL (eps_ n < z + x) (eps_ n < x + z) (L2 z Hz1).
Assume Hz': z' {x + z|zSNoR x}.
Apply ReplE_impred (SNoR x) (λz ⇒ x + z) z' Hz' to the current goal.
Let z be given.
Assume Hz1: z SNoR x.
Assume Hz2: z' = x + z.
rewrite the current goal using Hz2 (from left to right).
We will prove eps_ n < x + z.
An exact proof term for the current goal is andER (eps_ n < z + x) (eps_ n < x + z) (L2 z Hz1).
Let w be given.
Assume Hw: w {0}.
We will prove w < SNoCut ({w + x|wSNoL x} {x + w|wSNoL x}) ({z + x|zSNoR x} {x + z|zSNoR x}).
rewrite the current goal using SingE 0 w Hw (from left to right).
We will prove 0 < SNoCut ({w + x|wSNoL x} {x + w|wSNoL x}) ({z + x|zSNoR x} {x + z|zSNoR x}).
rewrite the current goal using add_SNo_eq x Lx x Lx (from right to left).
We will prove 0 < x + x.
rewrite the current goal using add_SNo_0L 0 SNo_0 (from right to left).
We will prove 0 + 0 < x + x.
An exact proof term for the current goal is add_SNo_Lt3 0 0 x x SNo_0 SNo_0 Lx Lx Lx2 Lx2.
Let z be given.
Assume Hz: z {eps_ m|mn}.
We will prove SNoCut ({w + x|wSNoL x} {x + w|wSNoL x}) ({z + x|zSNoR x} {x + z|zSNoR x}) < z.
rewrite the current goal using add_SNo_eq x Lx x Lx (from right to left).
We will prove x + x < z.
Apply ReplE_impred n eps_ z Hz to the current goal.
Let m be given.
Assume Hm1: m n.
Assume Hm2: z = eps_ m.
rewrite the current goal using Hm2 (from left to right).
We will prove x + x < eps_ m.
rewrite the current goal using IH m Hm1 (from right to left).
We will prove x + x < eps_ (ordsucc m) + eps_ (ordsucc m).
Set y to be the term eps_ (ordsucc m).
We will prove x + x < y + y.
We prove the intermediate claim Lm: m ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_p_trans n Hn m Hm1.
We prove the intermediate claim Ly: SNo y.
An exact proof term for the current goal is SNo_eps_ (ordsucc m) (omega_ordsucc m Lm).
We prove the intermediate claim Lxy: x < y.
Apply SNo_eps_decr (ordsucc n) (omega_ordsucc n Ln) (ordsucc m) to the current goal.
We will prove ordsucc m ordsucc n.
Apply ordinal_ordsucc_In to the current goal.
We will prove ordinal n.
An exact proof term for the current goal is nat_p_ordinal n Hn.
An exact proof term for the current goal is Hm1.
An exact proof term for the current goal is add_SNo_Lt3 x x y y Lx Lx Ly Ly Lxy Lxy.
Theorem. (eps_1_half_eq1) The following is provable:
Proof:
Use transitivity with and eps_ 0.
An exact proof term for the current goal is eps_ordsucc_half_add 0 nat_0.
An exact proof term for the current goal is eps_0_1.
Theorem. (eps_1_half_eq2) The following is provable:
Proof:
rewrite the current goal using add_SNo_1_1_2 (from right to left).
We will prove (1 + 1) * eps_ 1 = 1.
rewrite the current goal using mul_SNo_distrR 1 1 (eps_ 1) SNo_1 SNo_1 SNo_eps_1 (from left to right).
We will prove 1 * eps_ 1 + 1 * eps_ 1 = 1.
rewrite the current goal using mul_SNo_oneL (eps_ 1) SNo_eps_1 (from left to right).
An exact proof term for the current goal is eps_1_half_eq1.
Theorem. (double_eps_1) The following is provable:
∀x y z, SNo xSNo ySNo zx + x = y + zx = eps_ 1 * (y + z)
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
We prove the intermediate claim Lyz: SNo (y + z).
An exact proof term for the current goal is SNo_add_SNo y z Hy Hz.
Apply mul_SNo_nonzero_cancel 2 x (eps_ 1 * (y + z)) SNo_2 neq_2_0 Hx (SNo_mul_SNo (eps_ 1) (y + z) (SNo_eps_ 1 (nat_p_omega 1 nat_1)) Lyz) to the current goal.
We will prove 2 * x = 2 * eps_ 1 * (y + z).
rewrite the current goal using mul_SNo_assoc 2 (eps_ 1) (y + z) SNo_2 (SNo_eps_ 1 (nat_p_omega 1 nat_1)) Lyz (from left to right).
We will prove 2 * x = (2 * eps_ 1) * (y + z).
rewrite the current goal using eps_1_half_eq2 (from left to right).
We will prove 2 * x = 1 * (y + z).
rewrite the current goal using mul_SNo_oneL (y + z) Lyz (from left to right).
We will prove 2 * x = y + z.
rewrite the current goal using add_SNo_1_1_2 (from right to left).
We will prove (1 + 1) * x = y + z.
rewrite the current goal using mul_SNo_distrR 1 1 x SNo_1 SNo_1 Hx (from left to right).
We will prove 1 * x + 1 * x = y + z.
rewrite the current goal using mul_SNo_oneL x Hx (from left to right).
We will prove x + x = y + z.
An exact proof term for the current goal is H1.
Theorem. (exp_SNo_1_bd) The following is provable:
∀x, SNo x1 x∀n, nat_p n1 x ^ n
Proof:
Let x be given.
Assume Hx Hx1.
Apply nat_ind to the current goal.
We will prove 1 x ^ 0.
rewrite the current goal using exp_SNo_nat_0 x Hx (from left to right).
Apply SNoLe_ref to the current goal.
Let n be given.
Assume Hn.
Assume IHn: 1 x ^ n.
We prove the intermediate claim Lxn: SNo (x ^ n).
An exact proof term for the current goal is SNo_exp_SNo_nat x Hx n Hn.
We will prove 1 x ^ (ordsucc n).
rewrite the current goal using exp_SNo_nat_S x Hx n Hn (from left to right).
We will prove 1 x * x ^ n.
rewrite the current goal using mul_SNo_oneL 1 SNo_1 (from right to left).
We will prove 1 * 1 x * x ^ n.
Apply nonneg_mul_SNo_Le2 1 1 x (x ^ n) SNo_1 SNo_1 Hx Lxn to the current goal.
We will prove 0 1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLt_0_1.
We will prove 0 1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLt_0_1.
We will prove 1 x.
An exact proof term for the current goal is Hx1.
We will prove 1 x ^ n.
An exact proof term for the current goal is IHn.
Theorem. (exp_SNo_2_bd) The following is provable:
∀n, nat_p nn < 2 ^ n
Proof:
Apply nat_ind to the current goal.
We will prove 0 < 2 ^ 0.
rewrite the current goal using exp_SNo_nat_0 2 SNo_2 (from left to right).
An exact proof term for the current goal is SNoLt_0_1.
Let n be given.
Assume Hn.
Assume IHn: n < 2 ^ n.
We prove the intermediate claim Ln: SNo n.
An exact proof term for the current goal is nat_p_SNo n Hn.
We prove the intermediate claim L2n: SNo (2 ^ n).
An exact proof term for the current goal is SNo_exp_SNo_nat 2 SNo_2 n Hn.
We will prove ordsucc n < 2 ^ (ordsucc n).
rewrite the current goal using exp_SNo_nat_S 2 SNo_2 n Hn (from left to right).
We will prove ordsucc n < 2 * 2 ^ n.
rewrite the current goal using add_SNo_1_ordsucc n (nat_p_omega n Hn) (from right to left).
We will prove n + 1 < 2 * 2 ^ n.
rewrite the current goal using add_SNo_1_1_2 (from right to left) at position 1.
We will prove n + 1 < (1 + 1) * 2 ^ n.
rewrite the current goal using mul_SNo_distrR 1 1 (2 ^ n) SNo_1 SNo_1 L2n (from left to right).
We will prove n + 1 < 1 * 2 ^ n + 1 * 2 ^ n.
rewrite the current goal using mul_SNo_oneL (2 ^ n) L2n (from left to right).
We will prove n + 1 < 2 ^ n + 2 ^ n.
Apply SNoLtLe_tra (n + 1) (2 ^ n + 1) (2 ^ n + 2 ^ n) (SNo_add_SNo n 1 Ln SNo_1) (SNo_add_SNo (2 ^ n) 1 L2n SNo_1) (SNo_add_SNo (2 ^ n) (2 ^ n) L2n L2n) to the current goal.
We will prove n + 1 < 2 ^ n + 1.
An exact proof term for the current goal is add_SNo_Lt1 n 1 (2 ^ n) Ln SNo_1 L2n IHn.
We will prove 2 ^ n + 1 2 ^ n + 2 ^ n.
Apply add_SNo_Le2 (2 ^ n) 1 (2 ^ n) L2n SNo_1 L2n to the current goal.
We will prove 1 2 ^ n.
Apply exp_SNo_1_bd 2 SNo_2 to the current goal.
We will prove 1 2.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLt_1_2.
An exact proof term for the current goal is Hn.
Theorem. (mul_SNo_eps_power_2) The following is provable:
∀n, nat_p neps_ n * 2 ^ n = 1
Proof:
Apply nat_ind to the current goal.
We will prove eps_ 0 * 2 ^ 0 = 1.
rewrite the current goal using eps_0_1 (from left to right).
rewrite the current goal using exp_SNo_nat_0 2 SNo_2 (from left to right).
We will prove 1 * 1 = 1.
An exact proof term for the current goal is mul_SNo_oneR 1 SNo_1.
Let n be given.
Assume Hn.
Assume IHn: eps_ n * 2 ^ n = 1.
We will prove eps_ (ordsucc n) * 2 ^ (ordsucc n) = 1.
rewrite the current goal using exp_SNo_nat_S 2 SNo_2 n Hn (from left to right).
We will prove eps_ (ordsucc n) * (2 * 2 ^ n) = 1.
We prove the intermediate claim LeSn: SNo (eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_eps_ (ordsucc n) (nat_p_omega (ordsucc n) (nat_ordsucc n Hn)).
rewrite the current goal using mul_SNo_assoc (eps_ (ordsucc n)) 2 (2 ^ n) LeSn SNo_2 (SNo_exp_SNo_nat 2 SNo_2 n Hn) (from left to right).
We will prove (eps_ (ordsucc n) * 2) * 2 ^ n = 1.
rewrite the current goal using add_SNo_1_1_2 (from right to left) at position 1.
We will prove (eps_ (ordsucc n) * (1 + 1)) * 2 ^ n = 1.
rewrite the current goal using mul_SNo_distrL (eps_ (ordsucc n)) 1 1 LeSn SNo_1 SNo_1 (from left to right).
We will prove ((eps_ (ordsucc n) * 1) + (eps_ (ordsucc n) * 1)) * 2 ^ n = 1.
rewrite the current goal using mul_SNo_oneR (eps_ (ordsucc n)) LeSn (from left to right).
We will prove (eps_ (ordsucc n) + eps_ (ordsucc n)) * 2 ^ n = 1.
rewrite the current goal using eps_ordsucc_half_add n Hn (from left to right).
We will prove eps_ n * 2 ^ n = 1.
An exact proof term for the current goal is IHn.
Theorem. (eps_bd_1) The following is provable:
Proof:
Let n be given.
Assume Hn.
We will prove eps_ n 1.
rewrite the current goal using mul_SNo_oneR (eps_ n) (SNo_eps_ n Hn) (from right to left).
We will prove eps_ n * 1 1.
rewrite the current goal using mul_SNo_eps_power_2 n (omega_nat_p n Hn) (from right to left) at position 2.
We will prove eps_ n * 1 eps_ n * 2 ^ n.
Apply nonneg_mul_SNo_Le (eps_ n) 1 (2 ^ n) (SNo_eps_ n Hn) to the current goal.
We will prove 0 eps_ n.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos n Hn.
An exact proof term for the current goal is SNo_1.
We will prove SNo (2 ^ n).
Apply SNo_exp_SNo_nat to the current goal.
An exact proof term for the current goal is SNo_2.
We will prove nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We will prove 1 2 ^ n.
Apply exp_SNo_1_bd 2 SNo_2 to the current goal.
We will prove 1 2.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLt_1_2.
We will prove nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
Theorem. (mul_SNo_eps_power_2') The following is provable:
∀n, nat_p n2 ^ n * eps_ n = 1
Proof:
Let n be given.
Assume Hn.
Use transitivity with and eps_ n * 2 ^ n.
Apply mul_SNo_com to the current goal.
An exact proof term for the current goal is SNo_exp_SNo_nat 2 SNo_2 n Hn.
An exact proof term for the current goal is SNo_eps_ n (nat_p_omega n Hn).
An exact proof term for the current goal is mul_SNo_eps_power_2 n Hn.
Theorem. (exp_SNo_nat_mul_add) The following is provable:
∀x, SNo x∀m, nat_p m∀n, nat_p nx ^ m * x ^ n = x ^ (m + n)
Proof:
Let x be given.
Assume Hx.
Let m be given.
Assume Hm.
We prove the intermediate claim Lm: SNo m.
An exact proof term for the current goal is nat_p_SNo m Hm.
Apply nat_ind to the current goal.
We will prove x ^ m * x ^ 0 = x ^ (m + 0).
rewrite the current goal using exp_SNo_nat_0 x Hx (from left to right).
rewrite the current goal using add_SNo_0R m Lm (from left to right).
An exact proof term for the current goal is mul_SNo_oneR (x ^ m) (SNo_exp_SNo_nat x Hx m Hm).
Let n be given.
Assume Hn: nat_p n.
Assume IHn: x ^ m * x ^ n = x ^ (m + n).
We will prove x ^ m * x ^ (ordsucc n) = x ^ (m + ordsucc n).
rewrite the current goal using exp_SNo_nat_S x Hx n Hn (from left to right).
We will prove x ^ m * (x * x ^ n) = x ^ (m + ordsucc n).
rewrite the current goal using add_nat_add_SNo m (nat_p_omega m Hm) (ordsucc n) (omega_ordsucc n (nat_p_omega n Hn)) (from right to left).
We will prove x ^ m * (x * x ^ n) = x ^ (add_nat m (ordsucc n)).
rewrite the current goal using add_nat_SR m n Hn (from left to right).
We will prove x ^ m * (x * x ^ n) = x ^ (ordsucc (add_nat m n)).
rewrite the current goal using exp_SNo_nat_S x Hx (add_nat m n) (add_nat_p m Hm n Hn) (from left to right).
We will prove x ^ m * (x * x ^ n) = x * x ^ (add_nat m n).
rewrite the current goal using add_nat_add_SNo m (nat_p_omega m Hm) n (nat_p_omega n Hn) (from left to right).
We will prove x ^ m * (x * x ^ n) = x * x ^ (m + n).
rewrite the current goal using IHn (from right to left).
We will prove x ^ m * (x * x ^ n) = x * (x ^ m * x ^ n).
rewrite the current goal using mul_SNo_assoc (x ^ m) x (x ^ n) (SNo_exp_SNo_nat x Hx m Hm) Hx (SNo_exp_SNo_nat x Hx n Hn) (from left to right).
We will prove (x ^ m * x) * x ^ n = x * (x ^ m * x ^ n).
rewrite the current goal using mul_SNo_com (x ^ m) x (SNo_exp_SNo_nat x Hx m Hm) Hx (from left to right).
We will prove (x * x ^ m) * x ^ n = x * (x ^ m * x ^ n).
Use symmetry.
An exact proof term for the current goal is mul_SNo_assoc x (x ^ m) (x ^ n) Hx (SNo_exp_SNo_nat x Hx m Hm) (SNo_exp_SNo_nat x Hx n Hn).
Theorem. (exp_SNo_nat_mul_add') The following is provable:
∀x, SNo xm nω, x ^ m * x ^ n = x ^ (m + n)
Proof:
Let x be given.
Assume Hx.
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
An exact proof term for the current goal is exp_SNo_nat_mul_add x Hx m (omega_nat_p m Hm) n (omega_nat_p n Hn).
Theorem. (exp_SNo_nat_pos) The following is provable:
∀x, SNo x0 < x∀n, nat_p n0 < x ^ n
Proof:
Let x be given.
Assume Hx Hxpos.
Apply nat_ind to the current goal.
We will prove 0 < x ^ 0.
rewrite the current goal using exp_SNo_nat_0 x Hx (from left to right).
We will prove 0 < 1.
An exact proof term for the current goal is SNoLt_0_1.
Let n be given.
Assume Hn: nat_p n.
Assume IHn: 0 < x ^ n.
We will prove 0 < x ^ (ordsucc n).
rewrite the current goal using exp_SNo_nat_S x Hx n Hn (from left to right).
We will prove 0 < x * x ^ n.
rewrite the current goal using mul_SNo_zeroR x Hx (from right to left).
We will prove x * 0 < x * x ^ n.
An exact proof term for the current goal is pos_mul_SNo_Lt x 0 (x ^ n) Hx Hxpos SNo_0 (SNo_exp_SNo_nat x Hx n Hn) IHn.
Theorem. (mul_SNo_eps_eps_add_SNo) The following is provable:
m nω, eps_ m * eps_ n = eps_ (m + n)
Proof:
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
We prove the intermediate claim Lmn1: m + n ω.
An exact proof term for the current goal is add_SNo_In_omega m Hm n Hn.
We prove the intermediate claim Lmn2: nat_p (m + n).
An exact proof term for the current goal is omega_nat_p (m + n) Lmn1.
We prove the intermediate claim Lem: SNo (eps_ m).
An exact proof term for the current goal is SNo_eps_ m Hm.
We prove the intermediate claim Len: SNo (eps_ n).
An exact proof term for the current goal is SNo_eps_ n Hn.
We prove the intermediate claim Lemen: SNo (eps_ m * eps_ n).
An exact proof term for the current goal is SNo_mul_SNo (eps_ m) (eps_ n) Lem Len.
We prove the intermediate claim Lemn: SNo (eps_ (m + n)).
An exact proof term for the current goal is SNo_eps_ (m + n) Lmn1.
We prove the intermediate claim L2m: SNo (2 ^ m).
An exact proof term for the current goal is SNo_exp_SNo_nat 2 SNo_2 m (omega_nat_p m Hm).
We prove the intermediate claim L2n: SNo (2 ^ n).
An exact proof term for the current goal is SNo_exp_SNo_nat 2 SNo_2 n (omega_nat_p n Hn).
Apply mul_SNo_nonzero_cancel (2 ^ (m + n)) to the current goal.
We will prove SNo (2 ^ (m + n)).
An exact proof term for the current goal is SNo_exp_SNo_nat 2 SNo_2 (m + n) Lmn2.
We will prove 2 ^ (m + n) 0.
Assume H1: 2 ^ (m + n) = 0.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
rewrite the current goal using H1 (from right to left) at position 2.
We will prove 0 < 2 ^ (m + n).
An exact proof term for the current goal is exp_SNo_nat_pos 2 SNo_2 SNoLt_0_2 (m + n) Lmn2.
We will prove SNo (eps_ m * eps_ n).
An exact proof term for the current goal is Lemen.
We will prove SNo (eps_ (m + n)).
An exact proof term for the current goal is Lemn.
We will prove 2 ^ (m + n) * (eps_ m * eps_ n) = 2 ^ (m + n) * eps_ (m + n).
Use transitivity with (2 ^ m * 2 ^ n) * (eps_ m * eps_ n), 2 ^ m * (2 ^ n * (eps_ m * eps_ n)), 2 ^ m * eps_ m, and 1.
Use f_equal.
Use symmetry.
An exact proof term for the current goal is exp_SNo_nat_mul_add' 2 SNo_2 m Hm n Hn.
Use symmetry.
An exact proof term for the current goal is mul_SNo_assoc (2 ^ m) (2 ^ n) (eps_ m * eps_ n) L2m L2n (SNo_mul_SNo (eps_ m) (eps_ n) Lem Len).
Use f_equal.
We will prove 2 ^ n * (eps_ m * eps_ n) = eps_ m.
Use transitivity with (2 ^ n * eps_ n) * eps_ m, and 1 * eps_ m.
rewrite the current goal using mul_SNo_com (eps_ m) (eps_ n) Lem Len (from left to right).
An exact proof term for the current goal is mul_SNo_assoc (2 ^ n) (eps_ n) (eps_ m) L2n Len Lem.
Use f_equal.
An exact proof term for the current goal is mul_SNo_eps_power_2' n (omega_nat_p n Hn).
An exact proof term for the current goal is mul_SNo_oneL (eps_ m) Lem.
We will prove 2 ^ m * eps_ m = 1.
An exact proof term for the current goal is mul_SNo_eps_power_2' m (omega_nat_p m Hm).
Use symmetry.
We will prove 2 ^ (m + n) * eps_ (m + n) = 1.
An exact proof term for the current goal is mul_SNo_eps_power_2' (m + n) Lmn2.
Theorem. (SNoS_omega_Lev_equip) The following is provable:
∀n, nat_p nequip {xSNoS_ ω|SNoLev x = n} (2 ^ n)
Proof:
Apply nat_ind to the current goal.
We will prove equip {xSNoS_ ω|SNoLev x = 0} (2 ^ 0).
rewrite the current goal using exp_SNo_nat_0 2 SNo_2 (from left to right).
We will prove equip {xSNoS_ ω|SNoLev x = 0} 1.
Apply equip_sym to the current goal.
We will prove f : setset, bij 1 {xSNoS_ ω|SNoLev x = 0} f.
Set f to be the term λi : set0.
We use f to witness the existential quantifier.
Apply bijI to the current goal.
Let i be given.
Assume Hi: i 1.
We will prove 0 {xSNoS_ ω|SNoLev x = 0}.
Apply SepI to the current goal.
We will prove 0 SNoS_ ω.
Apply SNoS_I ω omega_ordinal 0 0 (nat_p_omega 0 nat_0) to the current goal.
We will prove SNo_ 0 0.
An exact proof term for the current goal is ordinal_SNo_ 0 ordinal_Empty.
We will prove SNoLev 0 = 0.
An exact proof term for the current goal is SNoLev_0.
Let i be given.
Assume Hi: i 1.
Let j be given.
Assume Hj: j 1.
Assume Hij: 0 = 0.
We will prove i = j.
Apply cases_1 i Hi to the current goal.
Apply cases_1 j Hj to the current goal.
We will prove 0 = 0.
An exact proof term for the current goal is Hij.
Let x be given.
Assume Hx: x {xSNoS_ ω|SNoLev x = 0}.
Apply SepE (SNoS_ ω) (λx ⇒ SNoLev x = 0) x Hx to the current goal.
Assume Hx1: x SNoS_ ω.
Assume Hx2: SNoLev x = 0.
Apply SNoS_E2 ω omega_ordinal x Hx1 to the current goal.
Assume Hx1a: SNoLev x ω.
Assume Hx1b: ordinal (SNoLev x).
Assume Hx1c: SNo x.
Assume Hx1d: SNo_ (SNoLev x) x.
We prove the intermediate claim L1: x = 0.
Use symmetry.
Apply SNo_eq 0 x SNo_0 Hx1c to the current goal.
We will prove SNoLev 0 = SNoLev x.
rewrite the current goal using SNoLev_0 (from left to right).
Use symmetry.
An exact proof term for the current goal is Hx2.
We will prove SNoEq_ (SNoLev 0) 0 x.
rewrite the current goal using SNoLev_0 (from left to right).
Let α be given.
Assume Ha: α 0.
We will prove False.
An exact proof term for the current goal is EmptyE α Ha.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is In_0_1.
We will prove 0 = x.
Use symmetry.
An exact proof term for the current goal is L1.
Let n be given.
Assume Hn.
Assume IHn: equip {xSNoS_ ω|SNoLev x = n} (2 ^ n).
We will prove equip {xSNoS_ ω|SNoLev x = ordsucc n} (2 ^ ordsucc n).
rewrite the current goal using exp_SNo_nat_S 2 SNo_2 n Hn (from left to right).
We will prove equip {xSNoS_ ω|SNoLev x = ordsucc n} (2 * 2 ^ n).
rewrite the current goal using add_SNo_1_1_2 (from right to left) at position 1.
We will prove equip {xSNoS_ ω|SNoLev x = ordsucc n} ((1 + 1) * 2 ^ n).
rewrite the current goal using mul_SNo_distrR 1 1 (2 ^ n) SNo_1 SNo_1 (SNo_exp_SNo_nat 2 SNo_2 n Hn) (from left to right).
rewrite the current goal using mul_SNo_oneL (2 ^ n) (SNo_exp_SNo_nat 2 SNo_2 n Hn) (from left to right).
We will prove equip {xSNoS_ ω|SNoLev x = ordsucc n} (2 ^ n + 2 ^ n).
We prove the intermediate claim L2n1: nat_p (2 ^ n).
An exact proof term for the current goal is nat_exp_SNo_nat 2 nat_2 n Hn.
We prove the intermediate claim L2n2: ordinal (2 ^ n).
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is L2n1.
We prove the intermediate claim L2n3: SNo (2 ^ n).
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is L2n2.
We prove the intermediate claim L2n2n1: nat_p (2 ^ n + 2 ^ n).
Apply omega_nat_p to the current goal.
Apply add_SNo_In_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is L2n1.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is L2n1.
We prove the intermediate claim L2n2n2: ordinal (2 ^ n + 2 ^ n).
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is L2n2n1.
We prove the intermediate claim L2n2n3: SNo (2 ^ n + 2 ^ n).
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is L2n2n2.
We prove the intermediate claim L2npLt2n2n: ∀m, SNo mm < 2 ^ n2 ^ n + m < 2 ^ n + 2 ^ n.
Let m be given.
Assume Hm H1.
An exact proof term for the current goal is add_SNo_Lt2 (2 ^ n) m (2 ^ n) L2n3 Hm L2n3 H1.
We prove the intermediate claim L2nLt2n2n: 2 ^ n < 2 ^ n + 2 ^ n.
rewrite the current goal using add_SNo_0R (2 ^ n) L2n3 (from right to left) at position 1.
We will prove 2 ^ n + 0 < 2 ^ n + 2 ^ n.
Apply L2npLt2n2n 0 SNo_0 to the current goal.
We will prove 0 < 2 ^ n.
An exact proof term for the current goal is exp_SNo_nat_pos 2 SNo_2 SNoLt_0_2 n Hn.
Apply IHn to the current goal.
Let f be given.
Assume Hf: bij {xSNoS_ ω|SNoLev x = n} (2 ^ n) f.
Apply bijE {xSNoS_ ω|SNoLev x = n} (2 ^ n) f Hf to the current goal.
Assume Hf1: u{xSNoS_ ω|SNoLev x = n}, f u (2 ^ n).
Assume Hf2: u v{xSNoS_ ω|SNoLev x = n}, f u = f vu = v.
Assume Hf3: w2 ^ n, u{xSNoS_ ω|SNoLev x = n}, f u = w.
We prove the intermediate claim L2: x{xSNoS_ ω|SNoLev x = ordsucc n}, ∀p : prop, (SNo xSNoLev x = ordsucc n(x SNoElts_ n) {xSNoS_ ω|SNoLev x = n}SNo (x SNoElts_ n)SNoLev (x SNoElts_ n) = np)p.
Let x be given.
Assume Hx.
Apply SepE (SNoS_ ω) (λx ⇒ SNoLev x = ordsucc n) x Hx to the current goal.
Assume Hx HxSn.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume Hx1: SNoLev x ω.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
Let p be given.
Assume Hp.
We prove the intermediate claim L2a: n SNoLev x.
rewrite the current goal using HxSn (from left to right).
Apply ordsuccI2 to the current goal.
We prove the intermediate claim L2b: SNoLev (x SNoElts_ n) = n.
An exact proof term for the current goal is restr_SNoLev x Hx3 n L2a.
Apply Hp to the current goal.
An exact proof term for the current goal is Hx3.
An exact proof term for the current goal is HxSn.
Apply SepI to the current goal.
We will prove (x SNoElts_ n) SNoS_ ω.
Apply SNoS_I ω omega_ordinal (x SNoElts_ n) n (nat_p_omega n Hn) to the current goal.
We will prove SNo_ n (x SNoElts_ n).
An exact proof term for the current goal is restr_SNo_ x Hx3 n L2a.
We will prove SNoLev (x SNoElts_ n) = n.
An exact proof term for the current goal is L2b.
An exact proof term for the current goal is restr_SNo x Hx3 n L2a.
An exact proof term for the current goal is L2b.
We prove the intermediate claim Lf: u{xSNoS_ ω|SNoLev x = ordsucc n}, ∀p : prop, (nat_p (f (u SNoElts_ n))ordinal (f (u SNoElts_ n))SNo (f (u SNoElts_ n))f (u SNoElts_ n) < 2 ^ np)p.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp.
Apply L2 u Hu to the current goal.
Assume Hu0a: SNo u.
Assume Hu0b: SNoLev u = ordsucc n.
Assume Hu1: (u SNoElts_ n) {xSNoS_ ω|SNoLev x = n}.
Assume Hu2: SNo (u SNoElts_ n).
Assume Hu3: SNoLev (u SNoElts_ n) = n.
We prove the intermediate claim Lf1a: f (u SNoElts_ n) 2 ^ n.
An exact proof term for the current goal is Hf1 (u SNoElts_ n) Hu1.
We prove the intermediate claim Lf1b: nat_p (f (u SNoElts_ n)).
An exact proof term for the current goal is nat_p_trans (2 ^ n) L2n1 (f (u SNoElts_ n)) Lf1a.
We prove the intermediate claim Lf1c: ordinal (f (u SNoElts_ n)).
An exact proof term for the current goal is nat_p_ordinal (f (u SNoElts_ n)) Lf1b.
Apply Hp to the current goal.
An exact proof term for the current goal is Lf1b.
An exact proof term for the current goal is Lf1c.
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is Lf1c.
Apply ordinal_In_SNoLt to the current goal.
We will prove ordinal (2 ^ n).
An exact proof term for the current goal is L2n2.
We will prove f (u SNoElts_ n) 2 ^ n.
An exact proof term for the current goal is Lf1a.
We prove the intermediate claim Lg: g : setset, (∀x, n xg x = f (x SNoElts_ n)) (∀x, n xg x = 2 ^ n + f (x SNoElts_ n)).
We use (λx ⇒ if n x then f (x SNoElts_ n) else 2 ^ n + f (x SNoElts_ n)) to witness the existential quantifier.
Apply andI to the current goal.
Let x be given.
Assume H1: n x.
An exact proof term for the current goal is If_i_1 (n x) (f (x SNoElts_ n)) (2 ^ n + f (x SNoElts_ n)) H1.
Let x be given.
Assume H1: n x.
An exact proof term for the current goal is If_i_0 (n x) (f (x SNoElts_ n)) (2 ^ n + f (x SNoElts_ n)) H1.
Apply Lg to the current goal.
Let g be given.
Assume H.
Apply H to the current goal.
Assume Hg1: ∀x, n xg x = f (x SNoElts_ n).
Assume Hg2: ∀x, n xg x = 2 ^ n + f (x SNoElts_ n).
We will prove g : setset, bij {xSNoS_ ω|SNoLev x = ordsucc n} (2 ^ n + 2 ^ n) g.
We use g to witness the existential quantifier.
Apply bijI to the current goal.
Let u be given.
Assume Hu: u {xSNoS_ ω|SNoLev x = ordsucc n}.
We will prove g u 2 ^ n + 2 ^ n.
Apply L2 u Hu to the current goal.
Assume Hu0a: SNo u.
Assume Hu0b: SNoLev u = ordsucc n.
Assume Hu1: (u SNoElts_ n) {xSNoS_ ω|SNoLev x = n}.
Assume Hu2: SNo (u SNoElts_ n).
Assume Hu3: SNoLev (u SNoElts_ n) = n.
Apply Lf u Hu to the current goal.
Assume Lfu1: nat_p (f (u SNoElts_ n)).
Assume Lfu2: ordinal (f (u SNoElts_ n)).
Assume Lfu3: SNo (f (u SNoElts_ n)).
Assume Lfu4: f (u SNoElts_ n) < 2 ^ n.
Apply xm (n u) to the current goal.
Assume H1: n u.
rewrite the current goal using Hg1 u H1 (from left to right).
We will prove f (u SNoElts_ n) 2 ^ n + 2 ^ n.
Apply ordinal_SNoLt_In (f (u SNoElts_ n)) (2 ^ n + 2 ^ n) Lfu2 L2n2n2 to the current goal.
We will prove f (u SNoElts_ n) < 2 ^ n + 2 ^ n.
An exact proof term for the current goal is SNoLt_tra (f (u SNoElts_ n)) (2 ^ n) (2 ^ n + 2 ^ n) Lfu3 L2n3 L2n2n3 Lfu4 L2nLt2n2n.
Assume H1: n u.
rewrite the current goal using Hg2 u H1 (from left to right).
We will prove 2 ^ n + f (u SNoElts_ n) 2 ^ n + 2 ^ n.
Apply ordinal_SNoLt_In (2 ^ n + f (u SNoElts_ n)) (2 ^ n + 2 ^ n) (add_SNo_ordinal_ordinal (2 ^ n) L2n2 (f (u SNoElts_ n)) Lfu2) L2n2n2 to the current goal.
We will prove 2 ^ n + f (u SNoElts_ n) < 2 ^ n + 2 ^ n.
An exact proof term for the current goal is L2npLt2n2n (f (u SNoElts_ n)) Lfu3 Lfu4.
Let u be given.
Assume Hu: u {xSNoS_ ω|SNoLev x = ordsucc n}.
Let v be given.
Assume Hv: v {xSNoS_ ω|SNoLev x = ordsucc n}.
Apply L2 u Hu to the current goal.
Assume Hu0a: SNo u.
Assume Hu0b: SNoLev u = ordsucc n.
Assume Hu1: (u SNoElts_ n) {xSNoS_ ω|SNoLev x = n}.
Assume Hu2: SNo (u SNoElts_ n).
Assume Hu3: SNoLev (u SNoElts_ n) = n.
Apply Lf u Hu to the current goal.
Assume Lfu1: nat_p (f (u SNoElts_ n)).
Assume Lfu2: ordinal (f (u SNoElts_ n)).
Assume Lfu3: SNo (f (u SNoElts_ n)).
Assume Lfu4: f (u SNoElts_ n) < 2 ^ n.
Apply L2 v Hv to the current goal.
Assume Hv0a: SNo v.
Assume Hv0b: SNoLev v = ordsucc n.
Assume Hv1: (v SNoElts_ n) {xSNoS_ ω|SNoLev x = n}.
Assume Hv2: SNo (v SNoElts_ n).
Assume Hv3: SNoLev (v SNoElts_ n) = n.
Apply Lf v Hv to the current goal.
Assume Lfv1: nat_p (f (v SNoElts_ n)).
Assume Lfv2: ordinal (f (v SNoElts_ n)).
Assume Lfv3: SNo (f (v SNoElts_ n)).
Assume Lfv4: f (v SNoElts_ n) < 2 ^ n.
We prove the intermediate claim LnLu: n SNoLev u.
rewrite the current goal using Hu0b (from left to right).
Apply ordsuccI2 to the current goal.
We prove the intermediate claim LnLv: n SNoLev v.
rewrite the current goal using Hv0b (from left to right).
Apply ordsuccI2 to the current goal.
Apply xm (n u) to the current goal.
Assume H1: n u.
rewrite the current goal using Hg1 u H1 (from left to right).
Apply xm (n v) to the current goal.
Assume H2: n v.
rewrite the current goal using Hg1 v H2 (from left to right).
Assume Hguv: f (u SNoElts_ n) = f (v SNoElts_ n).
We will prove u = v.
We prove the intermediate claim Luv: u SNoElts_ n = v SNoElts_ n.
An exact proof term for the current goal is Hf2 (u SNoElts_ n) Hu1 (v SNoElts_ n) Hv1 Hguv.
Apply SNo_eq u v Hu0a Hv0a to the current goal.
We will prove SNoLev u = SNoLev v.
rewrite the current goal using Hv0b (from left to right).
An exact proof term for the current goal is Hu0b.
We will prove SNoEq_ (SNoLev u) u v.
rewrite the current goal using Hu0b (from left to right).
We will prove SNoEq_ (ordsucc n) u v.
Let i be given.
Assume Hi: i ordsucc n.
Apply ordsuccE n i Hi to the current goal.
Assume H3: i n.
We will prove i u i v.
Apply iff_trans (i u) (i u SNoElts_ n) (i v) to the current goal.
We will prove i u i u SNoElts_ n.
Apply iff_sym to the current goal.
An exact proof term for the current goal is restr_SNoEq u ?? n LnLu i H3.
We will prove i u SNoElts_ n i v.
rewrite the current goal using Luv (from left to right).
We will prove i v SNoElts_ n i v.
An exact proof term for the current goal is restr_SNoEq v ?? n LnLv i H3.
Assume H3: i = n.
rewrite the current goal using H3 (from left to right).
Apply iffI to the current goal.
Assume _.
An exact proof term for the current goal is H2.
Assume _.
An exact proof term for the current goal is H1.
Assume H2: n v.
rewrite the current goal using Hg2 v H2 (from left to right).
Assume Hguv: f (u SNoElts_ n) = 2 ^ n + f (v SNoElts_ n).
We will prove False.
Apply SNoLt_irref (2 ^ n) to the current goal.
We will prove 2 ^ n < 2 ^ n.
Apply SNoLeLt_tra (2 ^ n) (2 ^ n + f (v SNoElts_ n)) (2 ^ n) L2n3 (SNo_add_SNo (2 ^ n) (f (v SNoElts_ n)) L2n3 Lfv3) L2n3 to the current goal.
We will prove 2 ^ n 2 ^ n + f (v SNoElts_ n).
rewrite the current goal using add_SNo_0R (2 ^ n) L2n3 (from right to left) at position 1.
We will prove 2 ^ n + 0 2 ^ n + f (v SNoElts_ n).
Apply add_SNo_Le2 (2 ^ n) 0 (f (v SNoElts_ n)) L2n3 SNo_0 Lfv3 to the current goal.
We will prove 0 f (v SNoElts_ n).
An exact proof term for the current goal is omega_nonneg (f (v SNoElts_ n)) (nat_p_omega (f (v SNoElts_ n)) Lfv1).
We will prove 2 ^ n + f (v SNoElts_ n) < 2 ^ n.
rewrite the current goal using Hguv (from right to left).
An exact proof term for the current goal is Lfu4.
Assume H1: n u.
rewrite the current goal using Hg2 u H1 (from left to right).
Apply xm (n v) to the current goal.
Assume H2: n v.
rewrite the current goal using Hg1 v H2 (from left to right).
Assume Hguv: 2 ^ n + f (u SNoElts_ n) = f (v SNoElts_ n).
We will prove False.
Apply SNoLt_irref (2 ^ n) to the current goal.
We will prove 2 ^ n < 2 ^ n.
Apply SNoLeLt_tra (2 ^ n) (2 ^ n + f (u SNoElts_ n)) (2 ^ n) L2n3 (SNo_add_SNo (2 ^ n) (f (u SNoElts_ n)) L2n3 Lfu3) L2n3 to the current goal.
We will prove 2 ^ n 2 ^ n + f (u SNoElts_ n).
rewrite the current goal using add_SNo_0R (2 ^ n) L2n3 (from right to left) at position 1.
We will prove 2 ^ n + 0 2 ^ n + f (u SNoElts_ n).
Apply add_SNo_Le2 (2 ^ n) 0 (f (u SNoElts_ n)) L2n3 SNo_0 Lfu3 to the current goal.
We will prove 0 f (u SNoElts_ n).
An exact proof term for the current goal is omega_nonneg (f (u SNoElts_ n)) (nat_p_omega (f (u SNoElts_ n)) Lfu1).
We will prove 2 ^ n + f (u SNoElts_ n) < 2 ^ n.
rewrite the current goal using Hguv (from left to right).
An exact proof term for the current goal is Lfv4.
Assume H2: n v.
rewrite the current goal using Hg2 v H2 (from left to right).
Assume Hguv: 2 ^ n + f (u SNoElts_ n) = 2 ^ n + f (v SNoElts_ n).
We will prove u = v.
We prove the intermediate claim Luv: u SNoElts_ n = v SNoElts_ n.
Apply Hf2 (u SNoElts_ n) Hu1 (v SNoElts_ n) Hv1 to the current goal.
We will prove f (u SNoElts_ n) = f (v SNoElts_ n).
An exact proof term for the current goal is add_SNo_cancel_L (2 ^ n) (f (u SNoElts_ n)) (f (v SNoElts_ n)) L2n3 Lfu3 Lfv3 Hguv.
Apply SNo_eq u v Hu0a Hv0a to the current goal.
We will prove SNoLev u = SNoLev v.
rewrite the current goal using Hv0b (from left to right).
An exact proof term for the current goal is Hu0b.
We will prove SNoEq_ (SNoLev u) u v.
rewrite the current goal using Hu0b (from left to right).
We will prove SNoEq_ (ordsucc n) u v.
Let i be given.
Assume Hi: i ordsucc n.
Apply ordsuccE n i Hi to the current goal.
Assume H3: i n.
We will prove i u i v.
Apply iff_trans (i u) (i u SNoElts_ n) (i v) to the current goal.
We will prove i u i u SNoElts_ n.
Apply iff_sym to the current goal.
An exact proof term for the current goal is restr_SNoEq u ?? n LnLu i H3.
We will prove i u SNoElts_ n i v.
rewrite the current goal using Luv (from left to right).
We will prove i v SNoElts_ n i v.
An exact proof term for the current goal is restr_SNoEq v ?? n LnLv i H3.
Assume H3: i = n.
rewrite the current goal using H3 (from left to right).
Apply iffI to the current goal.
Assume H4: n u.
We will prove False.
An exact proof term for the current goal is H1 H4.
Assume H4: n v.
We will prove False.
An exact proof term for the current goal is H2 H4.
We will prove m2 ^ n + 2 ^ n, u{xSNoS_ ω|SNoLev x = ordsucc n}, g u = m.
Let m be given.
Assume Hm: m 2 ^ n + 2 ^ n.
We prove the intermediate claim Lm1: nat_p m.
An exact proof term for the current goal is nat_p_trans (2 ^ n + 2 ^ n) L2n2n1 m Hm.
We prove the intermediate claim Lm2: SNo m.
An exact proof term for the current goal is nat_p_SNo m Lm1.
Apply add_SNo_omega_In_cases m (2 ^ n) (nat_p_omega (2 ^ n) L2n1) (2 ^ n) L2n1 Hm to the current goal.
Assume H1: m 2 ^ n.
Apply Hf3 m H1 to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu1: u {xSNoS_ ω|SNoLev x = n}.
Assume Hu2: f u = m.
Apply SepE (SNoS_ ω) (λx ⇒ SNoLev x = n) u Hu1 to the current goal.
Assume Hu3: u SNoS_ ω.
Assume Hu4: SNoLev u = n.
Apply SNoS_E2 ω omega_ordinal u Hu3 to the current goal.
Assume Hu3a Hu3b Hu3c Hu3d.
We prove the intermediate claim Lu1: SNo (SNo_extend1 u).
An exact proof term for the current goal is SNo_extend1_SNo u ??.
We prove the intermediate claim Lu2: SNoLev (SNo_extend1 u) = ordsucc n.
rewrite the current goal using Hu4 (from right to left).
An exact proof term for the current goal is SNo_extend1_SNoLev u ??.
We prove the intermediate claim Lu3: n SNo_extend1 u.
rewrite the current goal using Hu4 (from right to left).
An exact proof term for the current goal is SNo_extend1_In u ??.
We use (SNo_extend1 u) to witness the existential quantifier.
Apply andI to the current goal.
Apply SepI to the current goal.
Apply SNoS_I ω omega_ordinal (SNo_extend1 u) (ordsucc n) to the current goal.
We will prove ordsucc n ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is nat_p_omega n Hn.
We will prove SNo_ (ordsucc n) (SNo_extend1 u).
rewrite the current goal using Hu4 (from right to left).
We will prove SNo_ (ordsucc (SNoLev u)) (SNo_extend1 u).
An exact proof term for the current goal is SNo_extend1_SNo_ u ??.
We will prove SNoLev (SNo_extend1 u) = ordsucc n.
An exact proof term for the current goal is Lu2.
We will prove g (SNo_extend1 u) = m.
rewrite the current goal using Hg1 (SNo_extend1 u) Lu3 (from left to right).
We will prove f (SNo_extend1 u SNoElts_ n) = m.
rewrite the current goal using Hu4 (from right to left).
We will prove f (SNo_extend1 u SNoElts_ (SNoLev u)) = m.
rewrite the current goal using SNo_extend1_restr_eq u Hu3c (from right to left).
An exact proof term for the current goal is Hu2.
Assume H1: m + - 2 ^ n 2 ^ n.
Apply Hf3 (m + - 2 ^ n) H1 to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu1: u {xSNoS_ ω|SNoLev x = n}.
Assume Hu2: f u = m + - 2 ^ n.
Apply SepE (SNoS_ ω) (λx ⇒ SNoLev x = n) u Hu1 to the current goal.
Assume Hu3: u SNoS_ ω.
Assume Hu4: SNoLev u = n.
Apply SNoS_E2 ω omega_ordinal u Hu3 to the current goal.
Assume Hu3a Hu3b Hu3c Hu3d.
We prove the intermediate claim Lu1: SNo (SNo_extend0 u).
An exact proof term for the current goal is SNo_extend0_SNo u ??.
We prove the intermediate claim Lu2: SNoLev (SNo_extend0 u) = ordsucc n.
rewrite the current goal using Hu4 (from right to left).
An exact proof term for the current goal is SNo_extend0_SNoLev u ??.
We prove the intermediate claim Lu3: n SNo_extend0 u.
rewrite the current goal using Hu4 (from right to left).
An exact proof term for the current goal is SNo_extend0_nIn u ??.
We use (SNo_extend0 u) to witness the existential quantifier.
Apply andI to the current goal.
Apply SepI to the current goal.
Apply SNoS_I ω omega_ordinal (SNo_extend0 u) (ordsucc n) to the current goal.
We will prove ordsucc n ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is nat_p_omega n Hn.
We will prove SNo_ (ordsucc n) (SNo_extend0 u).
rewrite the current goal using Hu4 (from right to left).
We will prove SNo_ (ordsucc (SNoLev u)) (SNo_extend0 u).
An exact proof term for the current goal is SNo_extend0_SNo_ u ??.
We will prove SNoLev (SNo_extend0 u) = ordsucc n.
An exact proof term for the current goal is Lu2.
We will prove g (SNo_extend0 u) = m.
rewrite the current goal using Hg2 (SNo_extend0 u) Lu3 (from left to right).
We will prove 2 ^ n + f (SNo_extend0 u SNoElts_ n) = m.
rewrite the current goal using Hu4 (from right to left) at position 2.
We will prove 2 ^ n + f (SNo_extend0 u SNoElts_ (SNoLev u)) = m.
rewrite the current goal using SNo_extend0_restr_eq u Hu3c (from right to left).
We will prove 2 ^ n + f u = m.
rewrite the current goal using Hu2 (from left to right).
We will prove 2 ^ n + (m + - 2 ^ n) = m.
rewrite the current goal using add_SNo_com (2 ^ n) (m + - 2 ^ n) L2n3 (SNo_add_SNo m (- 2 ^ n) Lm2 (SNo_minus_SNo (2 ^ n) L2n3)) (from left to right).
We will prove (m + - 2 ^ n) + 2 ^ n = m.
rewrite the current goal using add_SNo_assoc m (- 2 ^ n) (2 ^ n) Lm2 (SNo_minus_SNo (2 ^ n) L2n3) L2n3 (from right to left).
We will prove m + (- 2 ^ n + 2 ^ n) = m.
rewrite the current goal using add_SNo_minus_SNo_linv (2 ^ n) L2n3 (from left to right).
We will prove m + 0 = m.
An exact proof term for the current goal is add_SNo_0R m Lm2.
Theorem. (SNoS_finite) The following is provable:
Proof:
Let n be given.
Assume Hn.
We prove the intermediate claim Ln: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We prove the intermediate claim Ln2: ordinal n.
An exact proof term for the current goal is nat_p_ordinal n Ln.
We prove the intermediate claim L1: SNoS_ n = in{xSNoS_ ω|SNoLev x = i}.
Apply set_ext to the current goal.
Let x be given.
Assume Hx.
Apply SNoS_E2 n Ln2 x Hx to the current goal.
Assume Hx1: SNoLev x n.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
Apply famunionI n (λi ⇒ {xSNoS_ ω|SNoLev x = i}) (SNoLev x) x Hx1 to the current goal.
We will prove x {x'SNoS_ ω|SNoLev x' = SNoLev x}.
Apply SepI to the current goal.
We will prove x SNoS_ ω.
Apply SNoS_Subq n ω Ln2 omega_ordinal to the current goal.
We will prove n ω.
An exact proof term for the current goal is omega_TransSet n Hn.
An exact proof term for the current goal is Hx.
We will prove SNoLev x = SNoLev x.
Use reflexivity.
Let x be given.
Assume Hx.
Apply famunionE_impred n (λi ⇒ {xSNoS_ ω|SNoLev x = i}) x Hx to the current goal.
Let i be given.
Assume Hi: i n.
Assume H1.
Apply SepE (SNoS_ ω) (λx ⇒ SNoLev x = i) x H1 to the current goal.
Assume Hxa: x SNoS_ ω.
Assume Hxb: SNoLev x = i.
We will prove x SNoS_ n.
Apply SNoS_E2 ω omega_ordinal x Hxa to the current goal.
Assume Hx1: SNoLev x ω.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
Apply SNoS_I n Ln2 x (SNoLev x) to the current goal.
We will prove SNoLev x n.
rewrite the current goal using Hxb (from left to right).
An exact proof term for the current goal is Hi.
We will prove SNo_ (SNoLev x) x.
An exact proof term for the current goal is Hx4.
rewrite the current goal using L1 (from left to right).
We will prove finite (in{xSNoS_ ω|SNoLev x = i}).
Apply famunion_nat_finite (λi ⇒ {xSNoS_ ω|SNoLev x = i}) n Ln to the current goal.
Let i be given.
Assume Hi: i n.
We will prove finite {xSNoS_ ω|SNoLev x = i}.
We will prove mω, equip {xSNoS_ ω|SNoLev x = i} m.
We use 2 ^ i to witness the existential quantifier.
Apply andI to the current goal.
We will prove 2 ^ i ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_exp_SNo_nat 2 nat_2 i (nat_p_trans n Ln i Hi).
An exact proof term for the current goal is SNoS_omega_Lev_equip i (nat_p_trans n Ln i Hi).
Proof:
Let x be given.
Assume Hx.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume Hx1: SNoLev x ω.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
Apply Subq_finite (SNoS_ (SNoLev x)) to the current goal.
We will prove finite (SNoS_ (SNoLev x)).
An exact proof term for the current goal is SNoS_finite (SNoLev x) Hx1.
We will prove SNoL x SNoS_ (SNoLev x).
Let y be given.
Assume Hy.
Apply SNoL_E x Hx3 y Hy to the current goal.
Assume Hy1 Hy2 Hy3.
We will prove y SNoS_ (SNoLev x).
Apply SNoS_I2 y x ?? ?? to the current goal.
We will prove SNoLev y SNoLev x.
An exact proof term for the current goal is Hy2.
Proof:
Let x be given.
Assume Hx.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume Hx1: SNoLev x ω.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
Apply Subq_finite (SNoS_ (SNoLev x)) to the current goal.
We will prove finite (SNoS_ (SNoLev x)).
An exact proof term for the current goal is SNoS_finite (SNoLev x) Hx1.
We will prove SNoR x SNoS_ (SNoLev x).
Let y be given.
Assume Hy.
Apply SNoR_E x Hx3 y Hy to the current goal.
Assume Hy1 Hy2 Hy3.
We will prove y SNoS_ (SNoLev x).
Apply SNoS_I2 y x ?? ?? to the current goal.
We will prove SNoLev y SNoLev x.
An exact proof term for the current goal is Hy2.
End of Section SurrealExp
Beginning of Section SNoMaxMin
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Definition. We define SNo_max_of to be λX x ⇒ x X SNo x yX, SNo yy x of type setsetprop.
Definition. We define SNo_min_of to be λX x ⇒ x X SNo x yX, SNo yx y of type setsetprop.
Theorem. (minus_SNo_max_min) The following is provable:
∀X y, (xX, SNo x)SNo_max_of X ySNo_min_of {- x|xX} (- y)
Proof:
Let X and y be given.
Assume HX H1.
Apply H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume H1a: y X.
Assume H1b: SNo y.
Assume H1c: zX, SNo zz y.
We will prove - y {- x|xX} SNo (- y) (z{- x|xX}, SNo z- y z).
Apply and3I to the current goal.
Apply ReplI to the current goal.
An exact proof term for the current goal is H1a.
An exact proof term for the current goal is SNo_minus_SNo y H1b.
Let z be given.
Assume Hz1: z {- x|xX}.
Assume Hz2: SNo z.
Apply ReplE_impred X (λx ⇒ - x) z Hz1 to the current goal.
Let x be given.
Assume Hx: x X.
Assume Hze: z = - x.
rewrite the current goal using Hze (from left to right).
We will prove - y - x.
Apply minus_SNo_Le_contra x y (HX x Hx) H1b to the current goal.
We will prove x y.
An exact proof term for the current goal is H1c x Hx (HX x Hx).
Theorem. (minus_SNo_max_min') The following is provable:
∀X y, (xX, SNo x)SNo_max_of {- x|xX} ySNo_min_of X (- y)
Proof:
Let X and y be given.
Assume HX H1.
We prove the intermediate claim L1: {- z|z{- x|xX}} = X.
Apply Repl_invol_eq SNo minus_SNo to the current goal.
We will prove ∀x, SNo x- - x = x.
An exact proof term for the current goal is minus_SNo_invol.
We will prove xX, SNo x.
An exact proof term for the current goal is HX.
We prove the intermediate claim L2: z{- x|xX}, SNo z.
Let z be given.
Assume Hz.
Apply ReplE_impred X (λx ⇒ - x) z Hz to the current goal.
Let x be given.
Assume Hx: x X.
Assume Hzx: z = - x.
rewrite the current goal using Hzx (from left to right).
Apply SNo_minus_SNo to the current goal.
We will prove SNo x.
An exact proof term for the current goal is HX x Hx.
rewrite the current goal using L1 (from right to left).
An exact proof term for the current goal is minus_SNo_max_min {- x|xX} y L2 H1.
Theorem. (minus_SNo_min_max) The following is provable:
∀X y, (xX, SNo x)SNo_min_of X ySNo_max_of {- x|xX} (- y)
Proof:
Let X and y be given.
Assume HX H1.
Apply H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume H1a: y X.
Assume H1b: SNo y.
Assume H1c: zX, SNo zy z.
We will prove - y {- x|xX} SNo (- y) (z{- x|xX}, SNo zz - y).
Apply and3I to the current goal.
Apply ReplI to the current goal.
An exact proof term for the current goal is H1a.
An exact proof term for the current goal is SNo_minus_SNo y H1b.
Let z be given.
Assume Hz1: z {- x|xX}.
Assume Hz2: SNo z.
Apply ReplE_impred X (λx ⇒ - x) z Hz1 to the current goal.
Let x be given.
Assume Hx: x X.
Assume Hze: z = - x.
rewrite the current goal using Hze (from left to right).
We will prove - x - y.
Apply minus_SNo_Le_contra y x H1b (HX x Hx) to the current goal.
We will prove y x.
An exact proof term for the current goal is H1c x Hx (HX x Hx).
Theorem. (double_SNo_max_1) The following is provable:
∀x y, SNo xSNo_max_of (SNoL x) y∀z, SNo zx < zy + z < x + xwSNoR z, y + w = x + x
Proof:
Let x and y be given.
Assume Hx Hy.
Apply Hy to the current goal.
Assume H.
Apply H to the current goal.
Assume Hy1: y SNoL x.
Assume Hy2: SNo y.
Assume Hy3: wSNoL x, SNo ww y.
Apply SNoL_E x Hx y Hy1 to the current goal.
Assume Hy1a.
Assume Hy1b: SNoLev y SNoLev x.
Assume Hy1c: y < x.
Apply SNoLev_ind to the current goal.
Let z be given.
Assume Hz: SNo z.
Assume IH: wSNoS_ (SNoLev z), x < wy + w < x + xuSNoR w, y + u = x + x.
Assume H1: x < z.
Assume H2: y + z < x + x.
We will prove wSNoR z, y + w = x + x.
We prove the intermediate claim Lxx: SNo (x + x).
An exact proof term for the current goal is SNo_add_SNo x x Hx Hx.
We prove the intermediate claim Lyz: SNo (y + z).
An exact proof term for the current goal is SNo_add_SNo y z Hy2 Hz.
We prove the intermediate claim L1: wSNoR y, w + z x + xFalse.
Let w be given.
Assume Hw.
Assume H3: w + z x + x.
Apply SNoR_E y Hy2 w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev y.
Assume Hw3: y < w.
Apply SNoLt_irref (x + x) to the current goal.
We will prove x + x < x + x.
Apply SNoLtLe_tra (x + x) (w + z) (x + x) Lxx (SNo_add_SNo w z Hw1 Hz) Lxx to the current goal.
We will prove x + x < w + z.
Apply add_SNo_Lt3b x x w z Hx Hx Hw1 Hz to the current goal.
We will prove x w.
Apply SNoLtLe_or w x Hw1 Hx to the current goal.
Assume H4: w < x.
We prove the intermediate claim L1a: w SNoL x.
Apply SNoL_I x Hx w Hw1 to the current goal.
We will prove SNoLev w SNoLev x.
An exact proof term for the current goal is ordinal_TransSet (SNoLev x) (SNoLev_ordinal x Hx) (SNoLev y) Hy1b (SNoLev w) Hw2.
We will prove w < x.
An exact proof term for the current goal is H4.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
Apply SNoLtLe_tra y w y Hy2 Hw1 Hy2 Hw3 to the current goal.
We will prove w y.
An exact proof term for the current goal is Hy3 w L1a Hw1.
Assume H4: x w.
An exact proof term for the current goal is H4.
We will prove x < z.
An exact proof term for the current goal is H1.
We will prove w + z x + x.
An exact proof term for the current goal is H3.
We prove the intermediate claim L2: wSNoL x, y + z w + xFalse.
Let w be given.
Assume Hw.
Assume H3: y + z w + x.
Apply SNoL_E x Hx w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: w < x.
Apply SNoLt_irref (w + x) to the current goal.
We will prove w + x < w + x.
Apply SNoLtLe_tra (w + x) (w + z) (w + x) (SNo_add_SNo w x Hw1 Hx) (SNo_add_SNo w z Hw1 Hz) (SNo_add_SNo w x Hw1 Hx) to the current goal.
We will prove w + x < w + z.
Apply add_SNo_Lt2 w x z Hw1 Hx Hz to the current goal.
We will prove x < z.
An exact proof term for the current goal is H1.
We will prove w + z w + x.
Apply SNoLe_tra (w + z) (y + z) (w + x) (SNo_add_SNo w z Hw1 Hz) Lyz (SNo_add_SNo w x Hw1 Hx) to the current goal.
We will prove w + z y + z.
Apply add_SNo_Le1 w z y Hw1 Hz Hy2 to the current goal.
We will prove w y.
An exact proof term for the current goal is Hy3 w Hw Hw1.
We will prove y + z w + x.
An exact proof term for the current goal is H3.
We prove the intermediate claim L3: wSNoR z, y + w < x + xwSNoR z, y + w = x + x.
Let w be given.
Assume Hw: w SNoR z.
Assume H4: y + w < x + x.
Apply SNoR_E z Hz w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2.
Assume Hw3: z < w.
We prove the intermediate claim LIH: uSNoR w, y + u = x + x.
Apply IH w (SNoR_SNoS_ z w Hw) to the current goal.
We will prove x < w.
An exact proof term for the current goal is SNoLt_tra x z w Hx Hz Hw1 H1 Hw3.
We will prove y + w < x + x.
An exact proof term for the current goal is H4.
Apply LIH to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu1: u SNoR w.
Assume Hu2: y + u = x + x.
Apply SNoR_E w Hw1 u Hu1 to the current goal.
Assume Hu1a Hu1b Hu1c.
We use u to witness the existential quantifier.
Apply andI to the current goal.
We will prove u SNoR z.
Apply SNoR_I z Hz u Hu1a to the current goal.
We will prove SNoLev u SNoLev z.
An exact proof term for the current goal is ordinal_TransSet (SNoLev z) (SNoLev_ordinal z Hz) (SNoLev w) Hw2 (SNoLev u) Hu1b.
We will prove z < u.
An exact proof term for the current goal is SNoLt_tra z w u Hz Hw1 Hu1a Hw3 Hu1c.
An exact proof term for the current goal is Hu2.
Apply SNoLt_SNoL_or_SNoR_impred (y + z) (x + x) Lyz Lxx H2 to the current goal.
Let u be given.
Assume Hu1: u SNoL (x + x).
Assume Hu2: u SNoR (y + z).
Apply SNoL_E (x + x) Lxx u Hu1 to the current goal.
Assume Hu1a: SNo u.
Assume Hu1b.
Assume Hu1c: u < x + x.
Apply add_SNo_SNoR_interpolate y z Hy2 Hz u Hu2 to the current goal.
Assume H.
Apply H to the current goal.
Let w be given.
Assume H.
Apply H to the current goal.
Assume Hw: w SNoR y.
Assume H4: w + z u.
Apply SNoR_E y Hy2 w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2.
Assume Hw3: y < w.
We will prove False.
Apply L1 w Hw to the current goal.
We will prove w + z x + x.
Apply SNoLtLe to the current goal.
We will prove w + z < x + x.
Apply SNoLeLt_tra (w + z) u (x + x) (SNo_add_SNo w z Hw1 Hz) Hu1a Lxx H4 to the current goal.
We will prove u < x + x.
An exact proof term for the current goal is Hu1c.
Assume H.
Apply H to the current goal.
Let w be given.
Assume H.
Apply H to the current goal.
Assume Hw: w SNoR z.
Assume H4: y + w u.
Apply SNoR_E z Hz w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2.
Assume Hw3: z < w.
Apply L3 w Hw to the current goal.
We will prove y + w < x + x.
Apply SNoLeLt_tra (y + w) u (x + x) (SNo_add_SNo y w Hy2 Hw1) Hu1a Lxx H4 to the current goal.
We will prove u < x + x.
An exact proof term for the current goal is Hu1c.
Assume H3: y + z SNoL (x + x).
We will prove False.
Apply add_SNo_SNoL_interpolate x x Hx Hx (y + z) H3 to the current goal.
Assume H.
Apply H to the current goal.
Let w be given.
Assume H.
Apply H to the current goal.
Assume Hw: w SNoL x.
Assume H4: y + z w + x.
An exact proof term for the current goal is L2 w Hw H4.
Assume H.
Apply H to the current goal.
Let w be given.
Assume H.
Apply H to the current goal.
Assume Hw: w SNoL x.
Assume H4: y + z x + w.
Apply SNoL_E x Hx w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
Apply L2 w Hw to the current goal.
We will prove y + z w + x.
rewrite the current goal using add_SNo_com w x Hw1 Hx (from left to right).
We will prove y + z x + w.
An exact proof term for the current goal is H4.
Assume H3: x + x SNoR (y + z).
Apply add_SNo_SNoR_interpolate y z Hy2 Hz (x + x) H3 to the current goal.
Assume H.
Apply H to the current goal.
Let w be given.
Assume H.
Apply H to the current goal.
Assume Hw: w SNoR y.
Assume H4: w + z x + x.
We will prove False.
An exact proof term for the current goal is L1 w Hw H4.
Assume H.
Apply H to the current goal.
Let w be given.
Assume H.
Apply H to the current goal.
Assume Hw: w SNoR z.
Assume H4: y + w x + x.
Apply SNoR_E z Hz w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev z.
Assume Hw3: z < w.
Apply SNoLtLe_or (y + w) (x + x) (SNo_add_SNo y w Hy2 Hw1) Lxx to the current goal.
Assume H5: y + w < x + x.
We will prove wSNoR z, y + w = x + x.
Apply L3 w Hw to the current goal.
We will prove y + w < x + x.
An exact proof term for the current goal is H5.
Assume H5: x + x y + w.
We will prove wSNoR z, y + w = x + x.
We use w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw.
Apply SNoLe_antisym (y + w) (x + x) (SNo_add_SNo y w Hy2 Hw1) Lxx to the current goal.
An exact proof term for the current goal is H4.
An exact proof term for the current goal is H5.
Theorem. (double_SNo_min_1) The following is provable:
∀x y, SNo xSNo_min_of (SNoR x) y∀z, SNo zz < xx + x < y + zwSNoL z, y + w = x + x
Proof:
Let x and y be given.
Assume Hx Hy.
Apply Hy to the current goal.
Assume H.
Apply H to the current goal.
Assume Hy1: y SNoR x.
Assume Hy2: SNo y.
Assume Hy3: wSNoR x, SNo wy w.
Apply SNoR_E x Hx y Hy1 to the current goal.
Assume Hy1a.
Assume Hy1b: SNoLev y SNoLev x.
Assume Hy1c: x < y.
Let z be given.
Assume Hz: SNo z.
Assume H1: z < x.
Assume H2: x + x < y + z.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Hx.
We prove the intermediate claim Lmy: SNo (- y).
An exact proof term for the current goal is SNo_minus_SNo y Hy2.
We prove the intermediate claim Lmz: SNo (- z).
An exact proof term for the current goal is SNo_minus_SNo z Hz.
We prove the intermediate claim Lxx: SNo (x + x).
An exact proof term for the current goal is SNo_add_SNo x x Hx Hx.
We prove the intermediate claim Lyz: SNo (y + z).
An exact proof term for the current goal is SNo_add_SNo y z Hy2 Hz.
We prove the intermediate claim L1: SNo_max_of (SNoL (- x)) (- y).
rewrite the current goal using SNoL_minus_SNoR x Hx (from left to right).
We will prove SNo_max_of {- w|wSNoR x} (- y).
Apply minus_SNo_min_max to the current goal.
We will prove wSNoR x, SNo w.
Let w be given.
Assume Hw.
Apply SNoR_E x Hx w Hw to the current goal.
Assume Hw1 _ _.
An exact proof term for the current goal is Hw1.
We will prove SNo_min_of (SNoR x) y.
An exact proof term for the current goal is Hy.
We prove the intermediate claim L2: - x < - z.
An exact proof term for the current goal is minus_SNo_Lt_contra z x Hz Hx H1.
We prove the intermediate claim L3: - y + - z < - x + - x.
rewrite the current goal using minus_add_SNo_distr y z Hy2 Hz (from right to left).
rewrite the current goal using minus_add_SNo_distr x x Hx Hx (from right to left).
An exact proof term for the current goal is minus_SNo_Lt_contra (x + x) (y + z) Lxx Lyz H2.
Apply double_SNo_max_1 (- x) (- y) Lmx L1 (- z) Lmz L2 L3 to the current goal.
Let w be given.
Assume H.
Apply H to the current goal.
Assume Hw: w SNoR (- z).
rewrite the current goal using minus_add_SNo_distr x x Hx Hx (from right to left).
Assume H3: - y + w = - (x + x).
Apply SNoR_E (- z) Lmz w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev (- z).
Assume Hw3: - z < w.
We prove the intermediate claim Lmw: SNo (- w).
An exact proof term for the current goal is SNo_minus_SNo w Hw1.
We use (- w) to witness the existential quantifier.
Apply andI to the current goal.
We will prove - w SNoL z.
rewrite the current goal using minus_SNo_invol z Hz (from right to left).
We will prove - w SNoL (- - z).
rewrite the current goal using SNoL_minus_SNoR (- z) Lmz (from left to right).
We will prove - w {- w|wSNoR (- z)}.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hw.
We will prove y + - w = x + x.
rewrite the current goal using minus_SNo_invol (x + x) Lxx (from right to left).
We will prove y + - w = - - (x + x).
rewrite the current goal using H3 (from right to left).
We will prove y + - w = - (- y + w).
rewrite the current goal using minus_add_SNo_distr (- y) w Lmy Hw1 (from left to right).
We will prove y + - w = - - y + - w.
rewrite the current goal using minus_SNo_invol y Hy2 (from left to right).
Use reflexivity.
Theorem. (finite_max_exists) The following is provable:
∀X, (xX, SNo x)finite XX 0x, SNo_max_of X x
Proof:
We prove the intermediate claim L1: ∀n, nat_p n∀X, (xX, SNo x)equip X (ordsucc n)x, SNo_max_of X x.
Apply nat_ind to the current goal.
Let X be given.
Assume HX.
Assume H1: equip X 1.
Apply equip_sym X 1 H1 to the current goal.
Let f be given.
Assume Hf: bij 1 X f.
Apply bijE 1 X f Hf to the current goal.
Assume Hf1 Hf2 Hf3.
We use f 0 to witness the existential quantifier.
We will prove SNo_max_of X (f 0).
We will prove f 0 X SNo (f 0) yX, SNo yy f 0.
We prove the intermediate claim Lf0X: f 0 X.
An exact proof term for the current goal is Hf1 0 In_0_1.
Apply and3I to the current goal.
We will prove f 0 X.
An exact proof term for the current goal is Lf0X.
An exact proof term for the current goal is HX (f 0) Lf0X.
Let y be given.
Assume Hy: y X.
Assume Hy2: SNo y.
Apply Hf3 y Hy to the current goal.
Let i be given.
Assume H.
Apply H to the current goal.
Assume Hi: i 1.
Assume Hyi: f i = y.
We will prove y f 0.
rewrite the current goal using Hyi (from right to left).
Apply cases_1 i Hi to the current goal.
We will prove f 0 f 0.
Apply SNoLe_ref to the current goal.
Let n be given.
Assume Hn.
Assume IHn: ∀X, (xX, SNo x)equip X (ordsucc n)x, SNo_max_of X x.
Let X be given.
Assume HX.
Assume H1: equip X (ordsucc (ordsucc n)).
Apply equip_sym X (ordsucc (ordsucc n)) H1 to the current goal.
Let f be given.
Assume Hf: bij (ordsucc (ordsucc n)) X f.
Apply bijE (ordsucc (ordsucc n)) X f Hf to the current goal.
Assume Hf1 Hf2 Hf3.
Set X' to be the term {f i|iordsucc n}.
We prove the intermediate claim LX'1: X' X.
Let w be given.
Assume Hw: w X'.
Apply ReplE_impred (ordsucc n) f w Hw to the current goal.
Let i be given.
Assume Hi: i ordsucc n.
Assume Hwi: w = f i.
rewrite the current goal using Hwi (from left to right).
We will prove f i X.
Apply Hf1 i to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
We prove the intermediate claim LX'2: equip X' (ordsucc n).
Apply equip_sym to the current goal.
We will prove f : setset, bij (ordsucc n) X' f.
We use f to witness the existential quantifier.
Apply bijI to the current goal.
Let i be given.
Assume Hi: i ordsucc n.
We will prove f i X'.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hi.
Let i be given.
Assume Hi.
Let j be given.
Assume Hj.
Assume Hij: f i = f j.
Apply Hf2 to the current goal.
We will prove i ordsucc (ordsucc n).
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hi.
We will prove j ordsucc (ordsucc n).
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is Hj.
An exact proof term for the current goal is Hij.
Let w be given.
Assume Hw: w X'.
Apply ReplE_impred (ordsucc n) f w Hw to the current goal.
Let i be given.
Assume Hi: i ordsucc n.
Assume Hwi: w = f i.
We use i to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hi.
Use symmetry.
An exact proof term for the current goal is Hwi.
Apply IHn X' (λx' Hx' ⇒ HX x' (LX'1 x' Hx')) LX'2 to the current goal.
Let z be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Hz1: z X'.
Assume Hz2: SNo z.
Assume Hz3: yX', SNo yy z.
We prove the intermediate claim Lfn1: f (ordsucc n) X.
Apply Hf1 (ordsucc n) to the current goal.
Apply ordsuccI2 to the current goal.
We prove the intermediate claim Lfn1': SNo (f (ordsucc n)).
Apply HX (f (ordsucc n)) Lfn1 to the current goal.
Apply SNoLtLe_or z (f (ordsucc n)) Hz2 Lfn1' to the current goal.
Assume H2: z < f (ordsucc n).
We use (f (ordsucc n)) to witness the existential quantifier.
We will prove f (ordsucc n) X SNo (f (ordsucc n)) yX, SNo yy f (ordsucc n).
Apply and3I to the current goal.
An exact proof term for the current goal is Lfn1.
An exact proof term for the current goal is Lfn1'.
Let y be given.
Assume Hy Hy2.
Apply Hf3 y Hy to the current goal.
Let i be given.
Assume H.
Apply H to the current goal.
Assume Hi: i ordsucc (ordsucc n).
Assume Hyi: f i = y.
Apply ordsuccE (ordsucc n) i Hi to the current goal.
Assume H3: i ordsucc n.
We will prove y f (ordsucc n).
Apply SNoLe_tra y z (f (ordsucc n)) Hy2 Hz2 Lfn1' to the current goal.
We will prove y z.
Apply Hz3 y to the current goal.
We will prove y X'.
rewrite the current goal using Hyi (from right to left).
We will prove f i X'.
Apply ReplI to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is Hy2.
We will prove z f (ordsucc n).
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is H2.
Assume H3: i = ordsucc n.
rewrite the current goal using Hyi (from right to left).
rewrite the current goal using H3 (from left to right).
We will prove f (ordsucc n) f (ordsucc n).
Apply SNoLe_ref to the current goal.
Assume H2: f (ordsucc n) z.
We use z to witness the existential quantifier.
We will prove z X SNo z yX, SNo yy z.
Apply and3I to the current goal.
An exact proof term for the current goal is LX'1 z Hz1.
An exact proof term for the current goal is Hz2.
Let y be given.
Assume Hy Hy2.
Apply Hf3 y Hy to the current goal.
Let i be given.
Assume H.
Apply H to the current goal.
Assume Hi: i ordsucc (ordsucc n).
Assume Hyi: f i = y.
Apply ordsuccE (ordsucc n) i Hi to the current goal.
Assume H3: i ordsucc n.
We will prove y z.
Apply Hz3 y to the current goal.
We will prove y X'.
rewrite the current goal using Hyi (from right to left).
We will prove f i X'.
Apply ReplI to the current goal.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is Hy2.
Assume H3: i = ordsucc n.
rewrite the current goal using Hyi (from right to left).
rewrite the current goal using H3 (from left to right).
We will prove f (ordsucc n) z.
An exact proof term for the current goal is H2.
Let X be given.
Assume HX.
Assume H1: finite X.
Apply H1 to the current goal.
Let n be given.
Assume H.
Apply H to the current goal.
Assume Hn: n ω.
Apply nat_inv n (omega_nat_p n Hn) to the current goal.
Assume Hn0: n = 0.
rewrite the current goal using Hn0 (from left to right).
Assume H2: equip X 0.
Assume H3: X 0.
We will prove False.
Apply H2 to the current goal.
Let f be given.
Assume Hf: bij X 0 f.
Apply bijE X 0 f Hf to the current goal.
Assume Hf1 _ _.
Apply H3 to the current goal.
Apply Empty_eq to the current goal.
Let x be given.
Assume Hx.
Apply EmptyE (f x) to the current goal.
An exact proof term for the current goal is Hf1 x Hx.
Assume H.
Apply H to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: nat_p m.
Assume Hnm: n = ordsucc m.
rewrite the current goal using Hnm (from left to right).
Assume H2: equip X (ordsucc m).
Assume _.
An exact proof term for the current goal is L1 m Hm X HX H2.
Theorem. (finite_min_exists) The following is provable:
∀X, (xX, SNo x)finite XX 0x, SNo_min_of X x
Proof:
Let X be given.
Assume HX: xX, SNo x.
Assume H1: finite X.
Assume H2: X 0.
Set X' to be the term {- x|xX}.
We prove the intermediate claim L1: zX', SNo z.
Let z be given.
Assume Hz.
Apply ReplE_impred X (λx ⇒ - x) z Hz to the current goal.
Let x be given.
Assume Hx: x X.
Assume Hzx: z = - x.
rewrite the current goal using Hzx (from left to right).
Apply SNo_minus_SNo to the current goal.
We will prove SNo x.
An exact proof term for the current goal is HX x Hx.
We prove the intermediate claim L2: finite X'.
Apply H1 to the current goal.
Let n be given.
Assume H.
Apply H to the current goal.
Assume Hn: n ω.
Assume H3: equip X n.
We will prove nω, equip X' n.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hn.
We will prove equip X' n.
Apply equip_tra X' X n to the current goal.
We will prove equip X' X.
Apply equip_sym to the current goal.
We will prove equip X X'.
We will prove f : setset, bij X X' f.
We use minus_SNo to witness the existential quantifier.
Apply bijI to the current goal.
Let x be given.
Assume Hx: x X.
We will prove - x X'.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hx.
Let x be given.
Assume Hx.
Let x' be given.
Assume Hx'.
Assume Hxx': - x = - x'.
We will prove x = x'.
Use transitivity with - - x, and - - x'.
Use symmetry.
An exact proof term for the current goal is minus_SNo_invol x (HX x Hx).
Use f_equal.
An exact proof term for the current goal is Hxx'.
An exact proof term for the current goal is minus_SNo_invol x' (HX x' Hx').
Let w be given.
Assume Hw: w X'.
Apply ReplE_impred X (λx ⇒ - x) w Hw to the current goal.
Let x be given.
Assume Hx.
Assume Hwx: w = - x.
We will prove uX, - u = w.
We use x to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hx.
Use symmetry.
An exact proof term for the current goal is Hwx.
We will prove equip X n.
An exact proof term for the current goal is H3.
We prove the intermediate claim L3: X' 0.
Assume H1: X' = 0.
Apply H2 to the current goal.
We will prove X = 0.
Apply Empty_eq to the current goal.
Let x be given.
Assume Hx: x X.
Apply EmptyE (- x) to the current goal.
We will prove - x 0.
rewrite the current goal using H1 (from right to left).
Apply ReplI to the current goal.
An exact proof term for the current goal is Hx.
Apply finite_max_exists X' L1 L2 L3 to the current goal.
Let y be given.
Assume Hy: SNo_max_of X' y.
We use (- y) to witness the existential quantifier.
We will prove SNo_min_of X (- y).
An exact proof term for the current goal is minus_SNo_max_min' X y HX Hy.
Proof:
Let x be given.
Assume Hx.
Apply xm (SNoL x = 0) to the current goal.
Assume H1: SNoL x = 0.
Apply orIL to the current goal.
An exact proof term for the current goal is H1.
Assume H1: SNoL x 0.
Apply orIR to the current goal.
We prove the intermediate claim L1: ySNoL x, SNo y.
Let y be given.
Assume Hy.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume _ _ Hx3 _.
Apply SNoL_E x Hx3 y Hy to the current goal.
Assume H _ _.
An exact proof term for the current goal is H.
An exact proof term for the current goal is finite_max_exists (SNoL x) L1 (SNoS_omega_SNoL_finite x Hx) H1.
Proof:
Let x be given.
Assume Hx.
Apply xm (SNoR x = 0) to the current goal.
Assume H1: SNoR x = 0.
Apply orIL to the current goal.
An exact proof term for the current goal is H1.
Assume H1: SNoR x 0.
Apply orIR to the current goal.
We prove the intermediate claim L1: ySNoR x, SNo y.
Let y be given.
Assume Hy.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume _ _ Hx3 _.
Apply SNoR_E x Hx3 y Hy to the current goal.
Assume H _ _.
An exact proof term for the current goal is H.
An exact proof term for the current goal is finite_min_exists (SNoR x) L1 (SNoS_omega_SNoR_finite x Hx) H1.
End of Section SNoMaxMin
Beginning of Section DiadicRationals
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Proof:
Let k be given.
Assume Hk.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk.
We prove the intermediate claim Lek2: eps_ k SNoS_ ω.
An exact proof term for the current goal is SNo_eps_SNoS_omega k Hk.
Apply nat_ind to the current goal.
We will prove eps_ k * 0 SNoS_ ω.
rewrite the current goal using mul_SNo_zeroR (eps_ k) Lek (from left to right).
We will prove 0 SNoS_ ω.
An exact proof term for the current goal is omega_SNoS_omega 0 (nat_p_omega 0 nat_0).
Let n be given.
Assume Hn.
Assume IHn: eps_ k * n SNoS_ ω.
We will prove eps_ k * ordsucc n SNoS_ ω.
rewrite the current goal using add_SNo_1_ordsucc n (nat_p_omega n Hn) (from right to left).
We will prove eps_ k * (n + 1) SNoS_ ω.
rewrite the current goal using mul_SNo_distrL (eps_ k) n 1 Lek (omega_SNo n (nat_p_omega n Hn)) (omega_SNo 1 (nat_p_omega 1 nat_1)) (from left to right).
We will prove eps_ k * n + eps_ k * 1 SNoS_ ω.
rewrite the current goal using mul_SNo_oneR (eps_ k) Lek (from left to right).
We will prove eps_ k * n + eps_ k SNoS_ ω.
Apply add_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is IHn.
An exact proof term for the current goal is SNo_eps_SNoS_omega k Hk.
Definition. We define diadic_rational_p to be λx ⇒ kω, mint, x = eps_ k * m of type setprop.
Theorem. (diadic_rational_p_SNoS_omega) The following is provable:
Proof:
Let x be given.
Assume H.
Apply H to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k ω.
Assume H.
Apply H to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume Hxkm: x = eps_ k * m.
rewrite the current goal using Hxkm (from left to right).
We will prove eps_ k * m SNoS_ ω.
We prove the intermediate claim L1: nω, eps_ k * n SNoS_ ω.
Let n be given.
Assume Hn: n ω.
We will prove eps_ k * n SNoS_ ω.
An exact proof term for the current goal is nonneg_diadic_rational_p_SNoS_omega k Hk n (omega_nat_p n Hn).
We prove the intermediate claim L2: nω, eps_ k * (- n) SNoS_ ω.
Let n be given.
Assume Hn: n ω.
We will prove eps_ k * (- n) SNoS_ ω.
rewrite the current goal using mul_SNo_minus_distrR (eps_ k) n (SNo_eps_ k Hk) (omega_SNo n Hn) (from left to right).
Apply minus_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is nonneg_diadic_rational_p_SNoS_omega k Hk n (omega_nat_p n Hn).
An exact proof term for the current goal is int_SNo_cases (λm ⇒ eps_ k * m SNoS_ ω) L1 L2 m Hm.
Proof:
Let m be given.
Assume Hm.
We will prove kω, m'int, m = eps_ k * m'.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is nat_p_omega 0 nat_0.
We use m to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hm.
We will prove m = eps_ 0 * m.
rewrite the current goal using eps_0_1 (from left to right).
Use symmetry.
An exact proof term for the current goal is mul_SNo_oneL m (int_SNo m Hm).
Proof:
Let m be given.
Assume Hm.
Apply int_diadic_rational_p to the current goal.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is Hm.
Proof:
Let k be given.
Assume Hk.
We will prove k'ω, mint, eps_ k = eps_ k' * m.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We use 1 to witness the existential quantifier.
Apply andI to the current goal.
Apply Subq_omega_int to the current goal.
An exact proof term for the current goal is nat_p_omega 1 nat_1.
We will prove eps_ k = eps_ k * 1.
Use symmetry.
An exact proof term for the current goal is mul_SNo_oneR (eps_ k) (SNo_eps_ k Hk).
Proof:
Let x be given.
Assume H.
Apply H to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k ω.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk.
Assume H.
Apply H to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume Hxkm: x = eps_ k * m.
We prove the intermediate claim Lm: SNo m.
An exact proof term for the current goal is int_SNo m Hm.
We prove the intermediate claim Lekm: SNo (eps_ k * m).
An exact proof term for the current goal is SNo_mul_SNo (eps_ k) m Lek Lm.
We will prove k'ω, m'int, - x = eps_ k' * m'.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We use (- m) to witness the existential quantifier.
Apply andI to the current goal.
Apply int_minus_SNo to the current goal.
An exact proof term for the current goal is Hm.
We will prove - x = eps_ k * (- m).
rewrite the current goal using mul_SNo_minus_distrR (eps_ k) m (SNo_eps_ k Hk) Lm (from left to right).
We will prove - x = - eps_ k * m.
Use f_equal.
An exact proof term for the current goal is Hxkm.
Theorem. (mul_SNo_diadic_rational_p) The following is provable:
Proof:
Let x and y be given.
Assume Hx.
Apply Hx to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k ω.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk.
Assume H.
Apply H to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume Hxkm: x = eps_ k * m.
We prove the intermediate claim Lm: SNo m.
An exact proof term for the current goal is int_SNo m Hm.
We prove the intermediate claim Lekm: SNo (eps_ k * m).
An exact proof term for the current goal is SNo_mul_SNo (eps_ k) m Lek Lm.
Assume Hy.
Apply Hy to the current goal.
Let l be given.
Assume H.
Apply H to the current goal.
Assume Hl: l ω.
We prove the intermediate claim Lel: SNo (eps_ l).
An exact proof term for the current goal is SNo_eps_ l Hl.
Assume H.
Apply H to the current goal.
Let n be given.
Assume H.
Apply H to the current goal.
Assume Hn: n int.
We prove the intermediate claim Ln: SNo n.
An exact proof term for the current goal is int_SNo n Hn.
We prove the intermediate claim Leln: SNo (eps_ l * n).
An exact proof term for the current goal is SNo_mul_SNo (eps_ l) n Lel Ln.
Assume Hyln: y = eps_ l * n.
We will prove k'ω, m'int, x * y = eps_ k' * m'.
We use (k + l) to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is add_SNo_In_omega k Hk l Hl.
We use (m * n) to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is int_mul_SNo m Hm n Hn.
We will prove x * y = eps_ (k + l) * (m * n).
rewrite the current goal using mul_SNo_eps_eps_add_SNo k Hk l Hl (from right to left).
We will prove x * y = (eps_ k * eps_ l) * (m * n).
rewrite the current goal using mul_SNo_com_4_inner_mid (eps_ k) (eps_ l) m n Lek Lel Lm Ln (from left to right).
We will prove x * y = (eps_ k * m) * (eps_ l * n).
Use f_equal.
An exact proof term for the current goal is Hxkm.
An exact proof term for the current goal is Hyln.
Theorem. (add_SNo_diadic_rational_p) The following is provable:
Proof:
Let x and y be given.
Assume Hx.
Apply Hx to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k ω.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk.
Assume H.
Apply H to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume Hxkm: x = eps_ k * m.
We prove the intermediate claim Lm: SNo m.
An exact proof term for the current goal is int_SNo m Hm.
We prove the intermediate claim Lekm: SNo (eps_ k * m).
An exact proof term for the current goal is SNo_mul_SNo (eps_ k) m Lek Lm.
Assume Hy.
Apply Hy to the current goal.
Let l be given.
Assume H.
Apply H to the current goal.
Assume Hl: l ω.
We prove the intermediate claim Lel: SNo (eps_ l).
An exact proof term for the current goal is SNo_eps_ l Hl.
Assume H.
Apply H to the current goal.
Let n be given.
Assume H.
Apply H to the current goal.
Assume Hn: n int.
Assume Hyln: y = eps_ l * n.
We prove the intermediate claim Ln: SNo n.
An exact proof term for the current goal is int_SNo n Hn.
We prove the intermediate claim Leln: SNo (eps_ l * n).
An exact proof term for the current goal is SNo_mul_SNo (eps_ l) n Lel Ln.
We will prove k'ω, m'int, x + y = eps_ k' * m'.
We use (k + l) to witness the existential quantifier.
Apply andI to the current goal.
We will prove k + l ω.
An exact proof term for the current goal is add_SNo_In_omega k Hk l Hl.
We use (2 ^ l * m + 2 ^ k * n) to witness the existential quantifier.
We prove the intermediate claim L2l: 2 ^ l int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_exp_SNo_nat 2 nat_2 l (omega_nat_p l Hl).
We prove the intermediate claim L2lm: 2 ^ l * m int.
Apply int_mul_SNo to the current goal.
An exact proof term for the current goal is L2l.
An exact proof term for the current goal is Hm.
We prove the intermediate claim L2k: 2 ^ k int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_exp_SNo_nat 2 nat_2 k (omega_nat_p k Hk).
We prove the intermediate claim L2kn: 2 ^ k * n int.
Apply int_mul_SNo to the current goal.
An exact proof term for the current goal is L2k.
An exact proof term for the current goal is Hn.
Apply andI to the current goal.
We will prove 2 ^ l * m + 2 ^ k * n int.
Apply int_add_SNo to the current goal.
An exact proof term for the current goal is L2lm.
An exact proof term for the current goal is L2kn.
We will prove x + y = eps_ (k + l) * (2 ^ l * m + 2 ^ k * n).
rewrite the current goal using mul_SNo_eps_eps_add_SNo k Hk l Hl (from right to left).
We will prove x + y = (eps_ k * eps_ l) * (2 ^ l * m + 2 ^ k * n).
rewrite the current goal using mul_SNo_distrL (eps_ k * eps_ l) (2 ^ l * m) (2 ^ k * n) (SNo_mul_SNo (eps_ k) (eps_ l) Lek Lel) (int_SNo (2 ^ l * m) L2lm) (int_SNo (2 ^ k * n) L2kn) (from left to right).
We will prove x + y = (eps_ k * eps_ l) * 2 ^ l * m + (eps_ k * eps_ l) * 2 ^ k * n.
Use f_equal.
We will prove x = (eps_ k * eps_ l) * 2 ^ l * m.
rewrite the current goal using mul_SNo_assoc (eps_ k) (eps_ l) (2 ^ l * m) Lek Lel (int_SNo (2 ^ l * m) L2lm) (from right to left).
We will prove x = eps_ k * eps_ l * 2 ^ l * m.
rewrite the current goal using mul_SNo_assoc (eps_ l) (2 ^ l) m Lel (int_SNo (2 ^ l) L2l) (int_SNo m Hm) (from left to right).
We will prove x = eps_ k * (eps_ l * 2 ^ l) * m.
rewrite the current goal using mul_SNo_eps_power_2 l (omega_nat_p l Hl) (from left to right).
We will prove x = eps_ k * 1 * m.
rewrite the current goal using mul_SNo_oneL m (int_SNo m Hm) (from left to right).
We will prove x = eps_ k * m.
An exact proof term for the current goal is Hxkm.
We will prove y = (eps_ k * eps_ l) * (2 ^ k * n).
rewrite the current goal using mul_SNo_com_4_inner_mid (eps_ k) (eps_ l) (2 ^ k) n Lek Lel (int_SNo (2 ^ k) L2k) (int_SNo n Hn) (from left to right).
We will prove y = (eps_ k * 2 ^ k) * (eps_ l * n).
rewrite the current goal using mul_SNo_eps_power_2 k (omega_nat_p k Hk) (from left to right).
We will prove y = 1 * (eps_ l * n).
rewrite the current goal using mul_SNo_oneL (eps_ l * n) Leln (from left to right).
An exact proof term for the current goal is Hyln.
Theorem. (SNoS_omega_diadic_rational_p_lem) The following is provable:
∀n, nat_p n∀x, SNo xSNoLev x = ndiadic_rational_p x
Proof:
Apply nat_complete_ind to the current goal.
Let n be given.
Assume Hn.
Assume IH: mn, ∀x, SNo xSNoLev x = mdiadic_rational_p x.
Let x be given.
Assume Hx: SNo x.
Assume Hxn: SNoLev x = n.
We will prove diadic_rational_p x.
Apply dneg to the current goal.
Assume HC: ¬ diadic_rational_p x.
We will prove False.
We prove the intermediate claim LxSo: x SNoS_ ω.
Apply SNoS_I ω omega_ordinal x (SNoLev x) to the current goal.
We will prove SNoLev x ω.
rewrite the current goal using Hxn (from left to right).
An exact proof term for the current goal is nat_p_omega n Hn.
We will prove SNo_ (SNoLev x) x.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hx.
We prove the intermediate claim L1: y, SNo_max_of (SNoL x) y.
Apply SNoS_omega_SNoL_max_exists x LxSo to the current goal.
Assume H1: SNoL x = 0.
We prove the intermediate claim L1a: ordinal (- x).
Apply SNo_max_ordinal (- x) (SNo_minus_SNo x Hx) to the current goal.
Let w be given.
rewrite the current goal using minus_SNo_Lev x Hx (from left to right).
Assume Hw: w SNoS_ (SNoLev x).
We will prove w < - x.
Apply SNoS_E2 (SNoLev x) (SNoLev_ordinal x Hx) w Hw to the current goal.
Assume Hw1 Hw2 Hw3 Hw4.
Apply SNoLt_trichotomy_or_impred w (- x) ?? (SNo_minus_SNo x Hx) to the current goal.
Assume H2: w < - x.
An exact proof term for the current goal is H2.
Assume H2: w = - x.
We will prove False.
Apply In_irref (SNoLev w) to the current goal.
rewrite the current goal using H2 (from left to right) at position 2.
rewrite the current goal using minus_SNo_Lev x Hx (from left to right).
An exact proof term for the current goal is ??.
Assume H2: - x < w.
We will prove False.
Apply EmptyE (- w) to the current goal.
We will prove - w 0.
rewrite the current goal using H1 (from right to left).
We will prove - w SNoL x.
Apply SNoL_I x Hx (- w) (SNo_minus_SNo w ??) to the current goal.
We will prove SNoLev (- w) SNoLev x.
rewrite the current goal using minus_SNo_Lev w ?? (from left to right).
An exact proof term for the current goal is ??.
We will prove - w < x.
An exact proof term for the current goal is minus_SNo_Lt_contra1 x w Hx ?? ??.
We prove the intermediate claim L1b: - x = n.
rewrite the current goal using Hxn (from right to left).
We will prove - x = SNoLev x.
Use symmetry.
rewrite the current goal using minus_SNo_Lev x ?? (from right to left).
An exact proof term for the current goal is ordinal_SNoLev (- x) L1a.
We will prove False.
Apply HC to the current goal.
We will prove diadic_rational_p x.
rewrite the current goal using minus_SNo_invol x ?? (from right to left).
We will prove diadic_rational_p (- - x).
Apply minus_SNo_diadic_rational_p to the current goal.
We will prove diadic_rational_p (- x).
rewrite the current goal using L1b (from left to right).
We will prove diadic_rational_p n.
Apply omega_diadic_rational_p to the current goal.
An exact proof term for the current goal is nat_p_omega n Hn.
Assume H1.
An exact proof term for the current goal is H1.
We prove the intermediate claim L2: z, SNo_min_of (SNoR x) z.
Apply SNoS_omega_SNoR_min_exists x LxSo to the current goal.
Assume H1: SNoR x = 0.
We prove the intermediate claim L2a: ordinal x.
Apply SNo_max_ordinal x Hx to the current goal.
Let w be given.
Assume Hw: w SNoS_ (SNoLev x).
We will prove w < x.
Apply SNoS_E2 (SNoLev x) (SNoLev_ordinal x ??) w Hw to the current goal.
Assume Hw1 Hw2 Hw3 Hw4.
Apply SNoLt_trichotomy_or_impred w x ?? ?? to the current goal.
Assume H2: w < x.
An exact proof term for the current goal is H2.
Assume H2: w = x.
We will prove False.
Apply In_irref (SNoLev x) to the current goal.
rewrite the current goal using H2 (from right to left) at position 1.
An exact proof term for the current goal is ??.
Assume H2: x < w.
We will prove False.
Apply EmptyE w to the current goal.
We will prove w 0.
rewrite the current goal using H1 (from right to left).
We will prove w SNoR x.
Apply SNoR_I x ?? w ?? ?? ?? to the current goal.
We prove the intermediate claim L2b: x = n.
rewrite the current goal using Hxn (from right to left).
We will prove x = SNoLev x.
Use symmetry.
An exact proof term for the current goal is ordinal_SNoLev x L2a.
We will prove False.
Apply HC to the current goal.
We will prove diadic_rational_p x.
Apply omega_diadic_rational_p to the current goal.
We will prove x ω.
rewrite the current goal using L2b (from left to right).
An exact proof term for the current goal is nat_p_omega n Hn.
Assume H1.
An exact proof term for the current goal is H1.
Apply L1 to the current goal.
Let y be given.
Assume Hy: SNo_max_of (SNoL x) y.
Apply Hy to the current goal.
Assume H.
Apply H to the current goal.
Assume Hy1: y SNoL x.
Assume Hy2: SNo y.
Assume Hy3: wSNoL x, SNo ww y.
Apply SNoL_E x Hx y Hy1 to the current goal.
Assume _ Hy1b Hy1c.
Apply L2 to the current goal.
Let z be given.
Assume Hz: SNo_min_of (SNoR x) z.
Apply Hz to the current goal.
Assume H.
Apply H to the current goal.
Assume Hz1: z SNoR x.
Assume Hz2: SNo z.
Assume Hz3: wSNoR x, SNo wz w.
Apply SNoR_E x Hx z Hz1 to the current goal.
Assume _ Hz1b Hz1c.
We prove the intermediate claim Lxx: SNo (x + x).
An exact proof term for the current goal is SNo_add_SNo x x Hx Hx.
We prove the intermediate claim Lyz: SNo (y + z).
An exact proof term for the current goal is SNo_add_SNo y z Hy2 Hz2.
We prove the intermediate claim Ldry: diadic_rational_p y.
Apply IH (SNoLev y) to the current goal.
We will prove SNoLev y n.
rewrite the current goal using Hxn (from right to left).
We will prove SNoLev y SNoLev x.
An exact proof term for the current goal is Hy1b.
We will prove SNo y.
An exact proof term for the current goal is Hy2.
We will prove SNoLev y = SNoLev y.
Use reflexivity.
We prove the intermediate claim Ldrz: diadic_rational_p z.
Apply IH (SNoLev z) to the current goal.
We will prove SNoLev z n.
rewrite the current goal using Hxn (from right to left).
We will prove SNoLev z SNoLev x.
An exact proof term for the current goal is Hz1b.
We will prove SNo z.
An exact proof term for the current goal is Hz2.
We will prove SNoLev z = SNoLev z.
Use reflexivity.
Apply SNoLt_trichotomy_or_impred (x + x) (y + z) Lxx Lyz to the current goal.
rewrite the current goal using add_SNo_com y z Hy2 Hz2 (from left to right).
Assume H1: x + x < z + y.
Apply double_SNo_min_1 x z Hx Hz y Hy2 Hy1c H1 to the current goal.
Let w be given.
Assume H.
Apply H to the current goal.
Assume Hw: w SNoL y.
Assume H2: z + w = x + x.
Apply SNoL_E y Hy2 w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Ldrw: diadic_rational_p w.
Apply IH (SNoLev w) to the current goal.
We will prove SNoLev w n.
Apply ordinal_TransSet n (nat_p_ordinal n Hn) (SNoLev y) to the current goal.
We will prove SNoLev y n.
rewrite the current goal using Hxn (from right to left).
An exact proof term for the current goal is Hy1b.
We will prove SNoLev w SNoLev y.
An exact proof term for the current goal is Hw2.
We will prove SNo w.
An exact proof term for the current goal is Hw1.
We will prove SNoLev w = SNoLev w.
Use reflexivity.
We prove the intermediate claim Lxe: x = eps_ 1 * (z + w).
Apply double_eps_1 x z w Hx Hz2 Hw1 to the current goal.
Use symmetry.
An exact proof term for the current goal is H2.
Apply HC to the current goal.
We will prove diadic_rational_p x.
rewrite the current goal using Lxe (from left to right).
Apply mul_SNo_diadic_rational_p to the current goal.
We will prove diadic_rational_p (eps_ 1).
An exact proof term for the current goal is eps_diadic_rational_p 1 (nat_p_omega 1 nat_1).
We will prove diadic_rational_p (z + w).
Apply add_SNo_diadic_rational_p to the current goal.
We will prove diadic_rational_p z.
An exact proof term for the current goal is Ldrz.
We will prove diadic_rational_p w.
An exact proof term for the current goal is Ldrw.
Assume H1: x + x = y + z.
We prove the intermediate claim Lxe: x = eps_ 1 * (y + z).
An exact proof term for the current goal is double_eps_1 x y z Hx Hy2 Hz2 H1.
Apply HC to the current goal.
We will prove diadic_rational_p x.
rewrite the current goal using Lxe (from left to right).
Apply mul_SNo_diadic_rational_p to the current goal.
We will prove diadic_rational_p (eps_ 1).
An exact proof term for the current goal is eps_diadic_rational_p 1 (nat_p_omega 1 nat_1).
We will prove diadic_rational_p (y + z).
Apply add_SNo_diadic_rational_p to the current goal.
We will prove diadic_rational_p y.
An exact proof term for the current goal is Ldry.
We will prove diadic_rational_p z.
An exact proof term for the current goal is Ldrz.
Assume H1: y + z < x + x.
Apply double_SNo_max_1 x y Hx Hy z Hz2 Hz1c H1 to the current goal.
Let w be given.
Assume H.
Apply H to the current goal.
Assume Hw: w SNoR z.
Assume H2: y + w = x + x.
Apply SNoR_E z Hz2 w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Ldrw: diadic_rational_p w.
Apply IH (SNoLev w) to the current goal.
We will prove SNoLev w n.
Apply ordinal_TransSet n (nat_p_ordinal n Hn) (SNoLev z) to the current goal.
We will prove SNoLev z n.
rewrite the current goal using Hxn (from right to left).
An exact proof term for the current goal is Hz1b.
We will prove SNoLev w SNoLev z.
An exact proof term for the current goal is Hw2.
We will prove SNo w.
An exact proof term for the current goal is Hw1.
We will prove SNoLev w = SNoLev w.
Use reflexivity.
We prove the intermediate claim Lxe: x = eps_ 1 * (y + w).
Apply double_eps_1 x y w Hx Hy2 Hw1 to the current goal.
Use symmetry.
An exact proof term for the current goal is H2.
Apply HC to the current goal.
We will prove diadic_rational_p x.
rewrite the current goal using Lxe (from left to right).
Apply mul_SNo_diadic_rational_p to the current goal.
We will prove diadic_rational_p (eps_ 1).
An exact proof term for the current goal is eps_diadic_rational_p 1 (nat_p_omega 1 nat_1).
We will prove diadic_rational_p (y + w).
Apply add_SNo_diadic_rational_p to the current goal.
We will prove diadic_rational_p y.
An exact proof term for the current goal is Ldry.
We will prove diadic_rational_p w.
An exact proof term for the current goal is Ldrw.
Proof:
Let x be given.
Assume Hx: x SNoS_ ω.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume Hx1: SNoLev x ω.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
Apply SNoS_omega_diadic_rational_p_lem (SNoLev x) to the current goal.
We will prove nat_p (SNoLev x).
An exact proof term for the current goal is omega_nat_p (SNoLev x) Hx1.
We will prove SNo x.
An exact proof term for the current goal is Hx3.
We will prove SNoLev x = SNoLev x.
Use reflexivity.
Theorem. (mul_SNo_SNoS_omega) The following is provable:
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
Apply diadic_rational_p_SNoS_omega to the current goal.
Apply mul_SNo_diadic_rational_p to the current goal.
Apply SNoS_omega_diadic_rational_p to the current goal.
An exact proof term for the current goal is Hx.
Apply SNoS_omega_diadic_rational_p to the current goal.
An exact proof term for the current goal is Hy.
End of Section DiadicRationals
Beginning of Section SurrealDiv
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Definition. We define SNoL_pos to be λx ⇒ {wSNoL x|0 < w} of type setset.
Theorem. (SNo_recip_pos_pos) The following is provable:
∀x xi, SNo xSNo xi0 < xx * xi = 10 < xi
Proof:
Let x and xi be given.
Assume Hx Hxi Hxpos Hxxi.
Apply SNoLt_trichotomy_or_impred 0 xi SNo_0 Hxi to the current goal.
Assume H1.
An exact proof term for the current goal is H1.
Assume H1: 0 = xi.
We will prove False.
Apply neq_0_1 to the current goal.
We will prove 0 = 1.
rewrite the current goal using Hxxi (from right to left).
We will prove 0 = x * xi.
rewrite the current goal using H1 (from right to left).
We will prove 0 = x * 0.
Use symmetry.
An exact proof term for the current goal is mul_SNo_zeroR x Hx.
Assume H1: xi < 0.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLt_tra 0 1 0 SNo_0 SNo_1 SNo_0 SNoLt_0_1 to the current goal.
We will prove 1 < 0.
rewrite the current goal using Hxxi (from right to left).
We will prove x * xi < 0.
An exact proof term for the current goal is mul_SNo_pos_neg x xi Hx Hxi Hxpos H1.
Theorem. (SNo_recip_lem1) The following is provable:
∀x x' x'i y y', SNo x0 < xx' SNoL_pos xSNo x'ix' * x'i = 1SNo yx * y < 1SNo y'1 + - x * y' = (1 + - x * y) * (x' + - x) * x'i1 < x * y'
Proof:
Let x, x', x'i, y and y' be given.
Assume Hx Hxpos Hx' Hx'i Hx'x'i Hy Hxy1 Hy' Hy'y.
Apply SepE (SNoL x) (λw ⇒ 0 < w) x' Hx' to the current goal.
Assume Hx'L: x' SNoL x.
Assume Hx'pos: 0 < x'.
Apply SNoL_E x Hx x' Hx'L to the current goal.
Assume Hx'1: SNo x'.
Assume Hx'2: SNoLev x' SNoLev x.
Assume Hx'3: x' < x.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Hx Hy.
We prove the intermediate claim Lxy': SNo (x * y').
An exact proof term for the current goal is SNo_mul_SNo x y' Hx Hy'.
We prove the intermediate claim L1: 0 < 1 + - x * y.
Apply add_SNo_minus_Lt2b 1 (x * y) 0 SNo_1 Lxy SNo_0 to the current goal.
We will prove 0 + x * y < 1.
rewrite the current goal using add_SNo_0L (x * y) Lxy (from left to right).
We will prove x * y < 1.
An exact proof term for the current goal is Hxy1.
We prove the intermediate claim L2: (x' + - x) * x'i < 0.
Apply mul_SNo_neg_pos (x' + - x) x'i (SNo_add_SNo x' (- x) Hx'1 (SNo_minus_SNo x Hx)) Hx'i to the current goal.
We will prove x' + - x < 0.
Apply add_SNo_minus_Lt1b x' x 0 Hx'1 Hx SNo_0 to the current goal.
We will prove x' < 0 + x.
rewrite the current goal using add_SNo_0L x Hx (from left to right).
An exact proof term for the current goal is Hx'3.
We will prove 0 < x'i.
An exact proof term for the current goal is SNo_recip_pos_pos x' x'i Hx'1 Hx'i Hx'pos Hx'x'i.
We prove the intermediate claim L3: 1 + - x * y' < 0.
rewrite the current goal using Hy'y (from left to right).
We will prove (1 + - x * y) * (x' + - x) * x'i < 0.
Apply mul_SNo_pos_neg (1 + - x * y) ((x' + - x) * x'i) (SNo_add_SNo 1 (- x * y) SNo_1 (SNo_minus_SNo (x * y) Lxy)) (SNo_mul_SNo (x' + - x) x'i (SNo_add_SNo x' (- x) Hx'1 (SNo_minus_SNo x Hx)) Hx'i) to the current goal.
An exact proof term for the current goal is L1.
An exact proof term for the current goal is L2.
We will prove 1 < x * y'.
rewrite the current goal using add_SNo_0L (x * y') Lxy' (from right to left).
We will prove 1 < 0 + x * y'.
An exact proof term for the current goal is add_SNo_minus_Lt1 1 (x * y') 0 SNo_1 Lxy' SNo_0 L3.
Theorem. (SNo_recip_lem2) The following is provable:
∀x x' x'i y y', SNo x0 < xx' SNoL_pos xSNo x'ix' * x'i = 1SNo y1 < x * ySNo y'1 + - x * y' = (1 + - x * y) * (x' + - x) * x'ix * y' < 1
Proof:
Let x, x', x'i, y and y' be given.
Assume Hx Hxpos Hx' Hx'i Hx'x'i Hy Hxy1 Hy' Hy'y.
Apply SepE (SNoL x) (λw ⇒ 0 < w) x' Hx' to the current goal.
Assume Hx'L: x' SNoL x.
Assume Hx'pos: 0 < x'.
Apply SNoL_E x Hx x' Hx'L to the current goal.
Assume Hx'1: SNo x'.
Assume Hx'2: SNoLev x' SNoLev x.
Assume Hx'3: x' < x.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Hx Hy.
We prove the intermediate claim Lxy': SNo (x * y').
An exact proof term for the current goal is SNo_mul_SNo x y' Hx Hy'.
We prove the intermediate claim L1: 1 + - x * y < 0.
Apply add_SNo_minus_Lt1b 1 (x * y) 0 SNo_1 Lxy SNo_0 to the current goal.
We will prove 1 < 0 + x * y.
rewrite the current goal using add_SNo_0L (x * y) Lxy (from left to right).
We will prove 1 < x * y.
An exact proof term for the current goal is Hxy1.
We prove the intermediate claim L2: (x' + - x) * x'i < 0.
Apply mul_SNo_neg_pos (x' + - x) x'i (SNo_add_SNo x' (- x) Hx'1 (SNo_minus_SNo x Hx)) Hx'i to the current goal.
We will prove x' + - x < 0.
Apply add_SNo_minus_Lt1b x' x 0 Hx'1 Hx SNo_0 to the current goal.
We will prove x' < 0 + x.
rewrite the current goal using add_SNo_0L x Hx (from left to right).
An exact proof term for the current goal is Hx'3.
We will prove 0 < x'i.
An exact proof term for the current goal is SNo_recip_pos_pos x' x'i Hx'1 Hx'i Hx'pos Hx'x'i.
We prove the intermediate claim L3: 0 < 1 + - x * y'.
rewrite the current goal using Hy'y (from left to right).
We will prove 0 < (1 + - x * y) * (x' + - x) * x'i.
Apply mul_SNo_neg_neg (1 + - x * y) ((x' + - x) * x'i) (SNo_add_SNo 1 (- x * y) SNo_1 (SNo_minus_SNo (x * y) Lxy)) (SNo_mul_SNo (x' + - x) x'i (SNo_add_SNo x' (- x) Hx'1 (SNo_minus_SNo x Hx)) Hx'i) to the current goal.
An exact proof term for the current goal is L1.
An exact proof term for the current goal is L2.
We will prove x * y' < 1.
rewrite the current goal using add_SNo_0L (x * y') Lxy' (from right to left).
We will prove 0 + x * y' < 1.
An exact proof term for the current goal is add_SNo_minus_Lt2 1 (x * y') 0 SNo_1 Lxy' SNo_0 L3.
Theorem. (SNo_recip_lem3) The following is provable:
∀x x' x'i y y', SNo x0 < xx' SNoR xSNo x'ix' * x'i = 1SNo yx * y < 1SNo y'1 + - x * y' = (1 + - x * y) * (x' + - x) * x'ix * y' < 1
Proof:
Let x, x', x'i, y and y' be given.
Assume Hx Hxpos Hx' Hx'i Hx'x'i Hy Hxy1 Hy' Hy'y.
Apply SNoR_E x Hx x' Hx' to the current goal.
Assume Hx'1: SNo x'.
Assume Hx'2: SNoLev x' SNoLev x.
Assume Hx'3: x < x'.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Hx Hy.
We prove the intermediate claim Lxy': SNo (x * y').
An exact proof term for the current goal is SNo_mul_SNo x y' Hx Hy'.
We prove the intermediate claim Lx'pos: 0 < x'.
An exact proof term for the current goal is SNoLt_tra 0 x x' SNo_0 Hx Hx'1 Hxpos Hx'3.
We prove the intermediate claim L1: 0 < 1 + - x * y.
Apply add_SNo_minus_Lt2b 1 (x * y) 0 SNo_1 Lxy SNo_0 to the current goal.
We will prove 0 + x * y < 1.
rewrite the current goal using add_SNo_0L (x * y) Lxy (from left to right).
We will prove x * y < 1.
An exact proof term for the current goal is Hxy1.
We prove the intermediate claim L2: 0 < (x' + - x) * x'i.
Apply mul_SNo_pos_pos (x' + - x) x'i (SNo_add_SNo x' (- x) Hx'1 (SNo_minus_SNo x Hx)) Hx'i to the current goal.
We will prove 0 < x' + - x.
Apply add_SNo_minus_Lt2b x' x 0 Hx'1 Hx SNo_0 to the current goal.
We will prove 0 + x < x'.
rewrite the current goal using add_SNo_0L x Hx (from left to right).
An exact proof term for the current goal is Hx'3.
We will prove 0 < x'i.
An exact proof term for the current goal is SNo_recip_pos_pos x' x'i Hx'1 Hx'i Lx'pos Hx'x'i.
We prove the intermediate claim L3: 0 < 1 + - x * y'.
rewrite the current goal using Hy'y (from left to right).
We will prove 0 < (1 + - x * y) * (x' + - x) * x'i.
Apply mul_SNo_pos_pos (1 + - x * y) ((x' + - x) * x'i) (SNo_add_SNo 1 (- x * y) SNo_1 (SNo_minus_SNo (x * y) Lxy)) (SNo_mul_SNo (x' + - x) x'i (SNo_add_SNo x' (- x) Hx'1 (SNo_minus_SNo x Hx)) Hx'i) to the current goal.
An exact proof term for the current goal is L1.
An exact proof term for the current goal is L2.
We will prove x * y' < 1.
rewrite the current goal using add_SNo_0L (x * y') Lxy' (from right to left).
We will prove 0 + x * y' < 1.
An exact proof term for the current goal is add_SNo_minus_Lt2 1 (x * y') 0 SNo_1 Lxy' SNo_0 L3.
Theorem. (SNo_recip_lem4) The following is provable:
∀x x' x'i y y', SNo x0 < xx' SNoR xSNo x'ix' * x'i = 1SNo y1 < x * ySNo y'1 + - x * y' = (1 + - x * y) * (x' + - x) * x'i1 < x * y'
Proof:
Let x, x', x'i, y and y' be given.
Assume Hx Hxpos Hx' Hx'i Hx'x'i Hy Hxy1 Hy' Hy'y.
Apply SNoR_E x Hx x' Hx' to the current goal.
Assume Hx'1: SNo x'.
Assume Hx'2: SNoLev x' SNoLev x.
Assume Hx'3: x < x'.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Hx Hy.
We prove the intermediate claim Lxy': SNo (x * y').
An exact proof term for the current goal is SNo_mul_SNo x y' Hx Hy'.
We prove the intermediate claim Lx'pos: 0 < x'.
An exact proof term for the current goal is SNoLt_tra 0 x x' SNo_0 Hx Hx'1 Hxpos Hx'3.
We prove the intermediate claim L1: 1 + - x * y < 0.
Apply add_SNo_minus_Lt1b 1 (x * y) 0 SNo_1 Lxy SNo_0 to the current goal.
We will prove 1 < 0 + x * y.
rewrite the current goal using add_SNo_0L (x * y) Lxy (from left to right).
We will prove 1 < x * y.
An exact proof term for the current goal is Hxy1.
We prove the intermediate claim L2: 0 < (x' + - x) * x'i.
Apply mul_SNo_pos_pos (x' + - x) x'i (SNo_add_SNo x' (- x) Hx'1 (SNo_minus_SNo x Hx)) Hx'i to the current goal.
We will prove 0 < x' + - x.
Apply add_SNo_minus_Lt2b x' x 0 Hx'1 Hx SNo_0 to the current goal.
We will prove 0 + x < x'.
rewrite the current goal using add_SNo_0L x Hx (from left to right).
An exact proof term for the current goal is Hx'3.
We will prove 0 < x'i.
An exact proof term for the current goal is SNo_recip_pos_pos x' x'i Hx'1 Hx'i Lx'pos Hx'x'i.
We prove the intermediate claim L3: 1 + - x * y' < 0.
rewrite the current goal using Hy'y (from left to right).
We will prove (1 + - x * y) * (x' + - x) * x'i < 0.
Apply mul_SNo_neg_pos (1 + - x * y) ((x' + - x) * x'i) (SNo_add_SNo 1 (- x * y) SNo_1 (SNo_minus_SNo (x * y) Lxy)) (SNo_mul_SNo (x' + - x) x'i (SNo_add_SNo x' (- x) Hx'1 (SNo_minus_SNo x Hx)) Hx'i) to the current goal.
An exact proof term for the current goal is L1.
An exact proof term for the current goal is L2.
We will prove 1 < x * y'.
rewrite the current goal using add_SNo_0L (x * y') Lxy' (from right to left).
We will prove 1 < 0 + x * y'.
An exact proof term for the current goal is add_SNo_minus_Lt1 1 (x * y') 0 SNo_1 Lxy' SNo_0 L3.
Definition. We define SNo_recipauxset to be λY x X g ⇒ yY{(1 + (x' + - x) * y) * g x'|x'X} of type setsetset(setset)set.
Theorem. (SNo_recipauxset_I) The following is provable:
∀Y x X, ∀g : setset, yY, x'X, (1 + (x' + - x) * y) * g x' SNo_recipauxset Y x X g
Proof:
Let Y, x, X, g and y be given.
Assume Hy.
Let x' be given.
Assume Hx'.
We will prove (1 + (x' + - x) * y) * g x' yY{(1 + (x' + - x) * y) * g x'|x'X}.
Apply famunionI Y (λy ⇒ {(1 + (x' + - x) * y) * g x'|x'X}) y ((1 + (x' + - x) * y) * g x') Hy to the current goal.
We will prove (1 + (x' + - x) * y) * g x' {(1 + (x' + - x) * y) * g x'|x'X}.
An exact proof term for the current goal is ReplI X (λx' ⇒ (1 + (x' + - x) * y) * g x') x' Hx'.
Theorem. (SNo_recipauxset_E) The following is provable:
∀Y x X, ∀g : setset, zSNo_recipauxset Y x X g, ∀p : prop, (yY, x'X, z = (1 + (x' + - x) * y) * g x'p)p
Proof:
Let Y, x, X, g and z be given.
Assume Hz.
Let p be given.
Assume H1.
Apply famunionE_impred Y (λy ⇒ {(1 + (x' + - x) * y) * g x'|x'X}) z Hz to the current goal.
Let y be given.
Assume Hy.
Assume H2: z {(1 + (x' + - x) * y) * g x'|x'X}.
Apply ReplE_impred X (λx' ⇒ (1 + (x' + - x) * y) * g x') z H2 to the current goal.
Let x' be given.
Assume Hx': x' X.
Assume H3: z = (1 + (x' + - x) * y) * g x'.
An exact proof term for the current goal is H1 y Hy x' Hx' H3.
Theorem. (SNo_recipauxset_ext) The following is provable:
∀Y x X, ∀g h : setset, (x'X, g x' = h x')SNo_recipauxset Y x X g = SNo_recipauxset Y x X h
Proof:
Let Y, x, X, g and h be given.
Assume Hgh.
We will prove (yY{(1 + (x' + - x) * y) * g x'|x'X}) = (yY{(1 + (x' + - x) * y) * h x'|x'X}).
Apply famunion_ext to the current goal.
Let y be given.
Assume Hy.
Apply ReplEq_ext X (λx' ⇒ (1 + (x' + - x) * y) * g x') (λx' ⇒ (1 + (x' + - x) * y) * h x') to the current goal.
Let x' be given.
Assume Hx'.
We will prove (1 + (x' + - x) * y) * g x' = (1 + (x' + - x) * y) * h x'.
Use f_equal.
An exact proof term for the current goal is Hgh x' Hx'.
Definition. We define SNo_recipaux to be λx g ⇒ nat_primrec ({0},0) (λk p ⇒ (p 0 SNo_recipauxset (p 0) x (SNoR x) g SNo_recipauxset (p 1) x (SNoL_pos x) g,p 1 SNo_recipauxset (p 0) x (SNoL_pos x) g SNo_recipauxset (p 1) x (SNoR x) g)) of type set(setset)setset.
Theorem. (SNo_recipaux_0) The following is provable:
∀x, ∀g : setset, SNo_recipaux x g 0 = ({0},0)
Proof:
Let x and g be given.
An exact proof term for the current goal is nat_primrec_0 ({0},0) (λk p ⇒ (p 0 SNo_recipauxset (p 0) x (SNoR x) g SNo_recipauxset (p 1) x (SNoL_pos x) g,p 1 SNo_recipauxset (p 0) x (SNoL_pos x) g SNo_recipauxset (p 1) x (SNoR x) g)).
Theorem. (SNo_recipaux_S) The following is provable:
∀x, ∀g : setset, ∀n, nat_p nSNo_recipaux x g (ordsucc n) = (SNo_recipaux x g n 0 SNo_recipauxset (SNo_recipaux x g n 0) x (SNoR x) g SNo_recipauxset (SNo_recipaux x g n 1) x (SNoL_pos x) g,SNo_recipaux x g n 1 SNo_recipauxset (SNo_recipaux x g n 0) x (SNoL_pos x) g SNo_recipauxset (SNo_recipaux x g n 1) x (SNoR x) g)
Proof:
Let x, g and n be given.
Assume Hn.
An exact proof term for the current goal is nat_primrec_S ({0},0) (λk p ⇒ (p 0 SNo_recipauxset (p 0) x (SNoR x) g SNo_recipauxset (p 1) x (SNoL_pos x) g,p 1 SNo_recipauxset (p 0) x (SNoL_pos x) g SNo_recipauxset (p 1) x (SNoR x) g)) n Hn.
Theorem. (SNo_recipaux_lem1) The following is provable:
∀x, SNo x0 < x∀g : setset, (x'SNoS_ (SNoLev x), 0 < x'SNo (g x') x' * g x' = 1)∀k, nat_p k(ySNo_recipaux x g k 0, SNo y x * y < 1) (ySNo_recipaux x g k 1, SNo y 1 < x * y)
Proof:
Let x be given.
Assume Hx Hxpos.
Let g be given.
Assume Hg.
Set r to be the term SNo_recipaux x g.
We prove the intermediate claim L1: x'SNoS_ (SNoLev x), 0 < x'∀y y', SNo yy' = (1 + (x' + - x) * y) * g x'SNo y'.
Let x' be given.
Assume Hx' Hx'pos.
Let y and y' be given.
Assume Hy Hy'.
Apply SNoS_E2 (SNoLev x) (SNoLev_ordinal x Hx) x' Hx' to the current goal.
Assume _ _ Hx'1 _.
rewrite the current goal using Hy' (from left to right).
Apply SNo_mul_SNo to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is SNo_1.
Apply SNo_mul_SNo to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hx'1.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hy.
Apply Hg x' Hx' Hx'pos to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim L2: x'SNoS_ (SNoLev x), 0 < x'∀y y', SNo yy' = (1 + (x' + - x) * y) * g x'1 + - x * y' = (1 + - x * y) * (x' + - x) * g x'.
Let x' be given.
Assume Hx' Hx'pos.
Let y and y' be given.
Assume Hy Hy'.
Apply SNoS_E2 (SNoLev x) (SNoLev_ordinal x Hx) x' Hx' to the current goal.
Assume _ _ Hx'1 _.
We will prove 1 + - x * y' = (1 + - x * y) * (x' + - x) * g x'.
Apply Hg x' Hx' Hx'pos to the current goal.
Assume Hgx'1 Hgx'2.
rewrite the current goal using mul_SNo_distrR x' (- x) (g x') Hx'1 (SNo_minus_SNo x Hx) Hgx'1 (from left to right).
We will prove 1 + - x * y' = (1 + - x * y) * (x' * g x' + (- x) * g x').
rewrite the current goal using Hgx'2 (from left to right).
We will prove 1 + - x * y' = (1 + - x * y) * (1 + (- x) * g x').
rewrite the current goal using SNo_foil 1 (- x * y) 1 ((- x) * g x') SNo_1 (SNo_minus_SNo (x * y) (SNo_mul_SNo x y Hx Hy)) SNo_1 (SNo_mul_SNo (- x) (g x') (SNo_minus_SNo x Hx) Hgx'1) (from left to right).
We will prove 1 + - x * y' = 1 * 1 + 1 * (- x) * g x' + (- x * y) * 1 + (- x * y) * (- x) * g x'.
rewrite the current goal using mul_SNo_oneL 1 SNo_1 (from left to right).
rewrite the current goal using mul_SNo_oneL ((- x) * g x') (SNo_mul_SNo (- x) (g x') (SNo_minus_SNo x Hx) Hgx'1) (from left to right).
rewrite the current goal using mul_SNo_oneR (- x * y) (SNo_minus_SNo (x * y) (SNo_mul_SNo x y Hx Hy)) (from left to right).
We will prove 1 + - x * y' = 1 + (- x) * g x' + - x * y + (- x * y) * (- x) * g x'.
Use f_equal.
We will prove - x * y' = (- x) * g x' + - x * y + (- x * y) * (- x) * g x'.
rewrite the current goal using Hy' (from left to right).
We will prove - x * ((1 + (x' + - x) * y) * g x') = (- x) * g x' + - x * y + (- x * y) * (- x) * g x'.
rewrite the current goal using mul_SNo_distrR 1 ((x' + - x) * y) (g x') SNo_1 (SNo_mul_SNo (x' + - x) y (SNo_add_SNo x' (- x) Hx'1 (SNo_minus_SNo x Hx)) Hy) Hgx'1 (from left to right).
We will prove - x * (1 * g x' + ((x' + - x) * y) * g x') = (- x) * g x' + - x * y + (- x * y) * (- x) * g x'.
rewrite the current goal using mul_SNo_oneL (g x') Hgx'1 (from left to right).
We will prove - x * (g x' + ((x' + - x) * y) * g x') = (- x) * g x' + - x * y + (- x * y) * (- x) * g x'.
rewrite the current goal using mul_SNo_minus_distrL x (g x' + ((x' + - x) * y) * g x') Hx (SNo_add_SNo (g x') (((x' + - x) * y) * g x') Hgx'1 (SNo_mul_SNo ((x' + - x) * y) (g x') (SNo_mul_SNo (x' + - x) y (SNo_add_SNo x' (- x) Hx'1 (SNo_minus_SNo x Hx)) Hy) Hgx'1)) (from right to left).
We will prove (- x) * (g x' + ((x' + - x) * y) * g x') = (- x) * g x' + - x * y + (- x * y) * (- x) * g x'.
rewrite the current goal using mul_SNo_distrL (- x) (g x') (((x' + - x) * y) * g x') (SNo_minus_SNo x Hx) Hgx'1 (SNo_mul_SNo ((x' + - x) * y) (g x') (SNo_mul_SNo (x' + - x) y (SNo_add_SNo x' (- x) Hx'1 (SNo_minus_SNo x Hx)) Hy) Hgx'1) (from left to right).
We will prove (- x) * g x' + (- x) * (((x' + - x) * y) * g x') = (- x) * g x' + - x * y + (- x * y) * (- x) * g x'.
Use f_equal.
We will prove (- x) * (((x' + - x) * y) * g x') = - x * y + (- x * y) * (- x) * g x'.
rewrite the current goal using mul_SNo_distrR x' (- x) y Hx'1 (SNo_minus_SNo x Hx) Hy (from left to right).
We will prove (- x) * ((x' * y + (- x) * y) * g x') = - x * y + (- x * y) * (- x) * g x'.
rewrite the current goal using mul_SNo_distrR (x' * y) ((- x) * y) (g x') (SNo_mul_SNo x' y Hx'1 Hy) (SNo_mul_SNo (- x) y (SNo_minus_SNo x Hx) Hy) Hgx'1 (from left to right).
We will prove (- x) * ((x' * y) * g x' + ((- x) * y) * g x') = - x * y + (- x * y) * (- x) * g x'.
rewrite the current goal using mul_SNo_com x' y Hx'1 Hy (from left to right).
rewrite the current goal using mul_SNo_assoc y x' (g x') Hy Hx'1 Hgx'1 (from right to left).
rewrite the current goal using Hgx'2 (from left to right).
rewrite the current goal using mul_SNo_oneR y Hy (from left to right).
We will prove (- x) * (y + ((- x) * y) * g x') = - x * y + (- x * y) * (- x) * g x'.
rewrite the current goal using mul_SNo_distrL (- x) y (((- x) * y) * g x') (SNo_minus_SNo x Hx) Hy (SNo_mul_SNo ((- x) * y) (g x') (SNo_mul_SNo (- x) y (SNo_minus_SNo x Hx) Hy) Hgx'1) (from left to right).
We will prove (- x) * y + (- x) * ((- x) * y) * g x' = - x * y + (- x * y) * (- x) * g x'.
rewrite the current goal using mul_SNo_minus_distrL x y Hx Hy (from left to right) at position 1.
We will prove - x * y + (- x) * ((- x) * y) * g x' = - x * y + (- x * y) * (- x) * g x'.
Use f_equal.
We will prove (- x) * ((- x) * y) * g x' = (- x * y) * (- x) * g x'.
rewrite the current goal using mul_SNo_assoc (- x) ((- x) * y) (g x') (SNo_minus_SNo x Hx) (SNo_mul_SNo (- x) y (SNo_minus_SNo x Hx) Hy) Hgx'1 (from left to right).
rewrite the current goal using mul_SNo_assoc (- x * y) (- x) (g x') (SNo_minus_SNo (x * y) (SNo_mul_SNo x y Hx Hy)) (SNo_minus_SNo x Hx) Hgx'1 (from left to right).
Use f_equal.
We will prove (- x) * ((- x) * y) = (- x * y) * (- x).
rewrite the current goal using mul_SNo_com (- x) y (SNo_minus_SNo x Hx) Hy (from left to right).
We will prove (- x) * (y * (- x)) = (- x * y) * (- x).
rewrite the current goal using mul_SNo_minus_distrL x y Hx Hy (from right to left).
We will prove (- x) * (y * (- x)) = ((- x) * y) * (- x).
An exact proof term for the current goal is mul_SNo_assoc (- x) y (- x) (SNo_minus_SNo x Hx) Hy (SNo_minus_SNo x Hx).
Apply nat_ind to the current goal.
Apply andI to the current goal.
Let y be given.
We will prove y r 0 0SNo y x * y < 1.
rewrite the current goal using SNo_recipaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
We will prove y {0}SNo y x * y < 1.
Assume H1: y {0}.
rewrite the current goal using SingE 0 y H1 (from left to right).
Apply andI to the current goal.
An exact proof term for the current goal is SNo_0.
We will prove x * 0 < 1.
rewrite the current goal using mul_SNo_zeroR x Hx (from left to right).
An exact proof term for the current goal is SNoLt_0_1.
Let y be given.
We will prove y r 0 1SNo y 1 < x * y.
rewrite the current goal using SNo_recipaux_0 (from left to right).
We will prove y ({0},0) 1SNo y 1 < x * y.
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove y 0SNo y 1 < x * y.
Assume H1: y 0.
We will prove False.
An exact proof term for the current goal is EmptyE y H1.
Let k be given.
Assume Hk: nat_p k.
Assume IH.
Apply IH to the current goal.
Assume IH1: yr k 0, SNo y x * y < 1.
Assume IH2: yr k 1, SNo y 1 < x * y.
Apply andI to the current goal.
Let y' be given.
We will prove y' r (ordsucc k) 0SNo y' x * y' < 1.
rewrite the current goal using SNo_recipaux_S (from left to right).
We will prove y' (r k 0 SNo_recipauxset (r k 0) x (SNoR x) g SNo_recipauxset (r k 1) x (SNoL_pos x) g,r k 1 SNo_recipauxset (r k 0) x (SNoL_pos x) g SNo_recipauxset (r k 1) x (SNoR x) g) 0SNo y' x * y' < 1.
rewrite the current goal using tuple_2_0_eq (from left to right).
We will prove y' r k 0 SNo_recipauxset (r k 0) x (SNoR x) g SNo_recipauxset (r k 1) x (SNoL_pos x) gSNo y' x * y' < 1.
Assume H1.
Apply binunionE (r k 0 SNo_recipauxset (r k 0) x (SNoR x) g) (SNo_recipauxset (r k 1) x (SNoL_pos x) g) y' H1 to the current goal.
Assume H1.
Apply binunionE (r k 0) (SNo_recipauxset (r k 0) x (SNoR x) g) y' H1 to the current goal.
An exact proof term for the current goal is IH1 y'.
Assume H1.
Apply SNo_recipauxset_E (r k 0) x (SNoR x) g y' H1 to the current goal.
Let y be given.
Assume Hy: y r k 0.
Let x' be given.
Assume Hx': x' SNoR x.
Assume H2: y' = (1 + (x' + - x) * y) * g x'.
Apply SNoR_E x Hx x' Hx' to the current goal.
Assume Hx'1 Hx'2 Hx'3.
We prove the intermediate claim Lx': x' SNoS_ (SNoLev x).
Apply SNoS_I2 x' x Hx'1 Hx Hx'2 to the current goal.
We prove the intermediate claim Lx'pos: 0 < x'.
An exact proof term for the current goal is SNoLt_tra 0 x x' SNo_0 Hx Hx'1 Hxpos Hx'3.
Apply IH1 y Hy to the current goal.
Assume Hy1: SNo y.
Assume Hxy1: x * y < 1.
Apply Hg x' Lx' Lx'pos to the current goal.
Assume Hgx'1: SNo (g x').
Assume Hgx'2: x' * g x' = 1.
We prove the intermediate claim Ly': SNo y'.
An exact proof term for the current goal is L1 x' Lx' Lx'pos y y' Hy1 H2.
Apply andI to the current goal.
An exact proof term for the current goal is Ly'.
Apply SNo_recip_lem3 x x' (g x') y y' Hx Hxpos Hx' Hgx'1 Hgx'2 Hy1 Hxy1 Ly' to the current goal.
We will prove 1 + - x * y' = (1 + - x * y) * (x' + - x) * g x'.
An exact proof term for the current goal is L2 x' Lx' Lx'pos y y' Hy1 H2.
Assume H1.
Apply SNo_recipauxset_E (r k 1) x (SNoL_pos x) g y' H1 to the current goal.
Let y be given.
Assume Hy: y r k 1.
Let x' be given.
Assume Hx': x' SNoL_pos x.
Assume H2: y' = (1 + (x' + - x) * y) * g x'.
Apply SepE (SNoL x) (λw ⇒ 0 < w) x' Hx' to the current goal.
Assume Hx'0: x' SNoL x.
Assume Hx'pos: 0 < x'.
Apply SNoL_E x Hx x' Hx'0 to the current goal.
Assume Hx'1 Hx'2 Hx'3.
We prove the intermediate claim Lx': x' SNoS_ (SNoLev x).
Apply SNoS_I2 x' x Hx'1 Hx Hx'2 to the current goal.
Apply IH2 y Hy to the current goal.
Assume Hy1: SNo y.
Assume Hxy1: 1 < x * y.
Apply Hg x' Lx' Hx'pos to the current goal.
Assume Hgx'1: SNo (g x').
Assume Hgx'2: x' * g x' = 1.
We prove the intermediate claim Ly': SNo y'.
An exact proof term for the current goal is L1 x' Lx' Hx'pos y y' Hy1 H2.
Apply andI to the current goal.
An exact proof term for the current goal is Ly'.
Apply SNo_recip_lem2 x x' (g x') y y' Hx Hxpos Hx' Hgx'1 Hgx'2 Hy1 Hxy1 Ly' to the current goal.
We will prove 1 + - x * y' = (1 + - x * y) * (x' + - x) * g x'.
An exact proof term for the current goal is L2 x' Lx' Hx'pos y y' Hy1 H2.
An exact proof term for the current goal is Hk.
Let y' be given.
We will prove y' r (ordsucc k) 1SNo y' 1 < x * y'.
rewrite the current goal using SNo_recipaux_S (from left to right).
We will prove y' (r k 0 SNo_recipauxset (r k 0) x (SNoR x) g SNo_recipauxset (r k 1) x (SNoL_pos x) g,r k 1 SNo_recipauxset (r k 0) x (SNoL_pos x) g SNo_recipauxset (r k 1) x (SNoR x) g) 1SNo y' 1 < x * y'.
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove y' r k 1 SNo_recipauxset (r k 0) x (SNoL_pos x) g SNo_recipauxset (r k 1) x (SNoR x) gSNo y' 1 < x * y'.
Assume H1.
Apply binunionE (r k 1 SNo_recipauxset (r k 0) x (SNoL_pos x) g) (SNo_recipauxset (r k 1) x (SNoR x) g) y' H1 to the current goal.
Assume H1.
Apply binunionE (r k 1) (SNo_recipauxset (r k 0) x (SNoL_pos x) g) y' H1 to the current goal.
An exact proof term for the current goal is IH2 y'.
Assume H1.
Apply SNo_recipauxset_E (r k 0) x (SNoL_pos x) g y' H1 to the current goal.
Let y be given.
Assume Hy: y r k 0.
Let x' be given.
Assume Hx': x' SNoL_pos x.
Assume H2: y' = (1 + (x' + - x) * y) * g x'.
Apply SepE (SNoL x) (λw ⇒ 0 < w) x' Hx' to the current goal.
Assume Hx'0: x' SNoL x.
Assume Hx'pos: 0 < x'.
Apply SNoL_E x Hx x' Hx'0 to the current goal.
Assume Hx'1 Hx'2 Hx'3.
We prove the intermediate claim Lx': x' SNoS_ (SNoLev x).
Apply SNoS_I2 x' x Hx'1 Hx Hx'2 to the current goal.
Apply IH1 y Hy to the current goal.
Assume Hy1: SNo y.
Assume Hxy1: x * y < 1.
Apply Hg x' Lx' Hx'pos to the current goal.
Assume Hgx'1: SNo (g x').
Assume Hgx'2: x' * g x' = 1.
We prove the intermediate claim Ly': SNo y'.
An exact proof term for the current goal is L1 x' Lx' Hx'pos y y' Hy1 H2.
Apply andI to the current goal.
An exact proof term for the current goal is Ly'.
Apply SNo_recip_lem1 x x' (g x') y y' Hx Hxpos Hx' Hgx'1 Hgx'2 Hy1 Hxy1 Ly' to the current goal.
We will prove 1 + - x * y' = (1 + - x * y) * (x' + - x) * g x'.
An exact proof term for the current goal is L2 x' Lx' Hx'pos y y' Hy1 H2.
Assume H1.
Apply SNo_recipauxset_E (r k 1) x (SNoR x) g y' H1 to the current goal.
Let y be given.
Assume Hy: y r k 1.
Let x' be given.
Assume Hx': x' SNoR x.
Assume H2: y' = (1 + (x' + - x) * y) * g x'.
Apply SNoR_E x Hx x' Hx' to the current goal.
Assume Hx'1 Hx'2 Hx'3.
We prove the intermediate claim Lx': x' SNoS_ (SNoLev x).
Apply SNoS_I2 x' x Hx'1 Hx Hx'2 to the current goal.
We prove the intermediate claim Lx'pos: 0 < x'.
An exact proof term for the current goal is SNoLt_tra 0 x x' SNo_0 Hx Hx'1 Hxpos Hx'3.
Apply IH2 y Hy to the current goal.
Assume Hy1: SNo y.
Assume Hxy1: 1 < x * y.
Apply Hg x' Lx' Lx'pos to the current goal.
Assume Hgx'1: SNo (g x').
Assume Hgx'2: x' * g x' = 1.
We prove the intermediate claim Ly': SNo y'.
An exact proof term for the current goal is L1 x' Lx' Lx'pos y y' Hy1 H2.
Apply andI to the current goal.
An exact proof term for the current goal is Ly'.
Apply SNo_recip_lem4 x x' (g x') y y' Hx Hxpos Hx' Hgx'1 Hgx'2 Hy1 Hxy1 Ly' to the current goal.
We will prove 1 + - x * y' = (1 + - x * y) * (x' + - x) * g x'.
An exact proof term for the current goal is L2 x' Lx' Lx'pos y y' Hy1 H2.
An exact proof term for the current goal is Hk.
Theorem. (SNo_recipaux_lem2) The following is provable:
∀x, SNo x0 < x∀g : setset, (x'SNoS_ (SNoLev x), 0 < x'SNo (g x') x' * g x' = 1)SNoCutP (kωSNo_recipaux x g k 0) (kωSNo_recipaux x g k 1)
Proof:
Let x be given.
Assume Hx Hxpos.
Let g be given.
Assume Hg.
Set L to be the term kωSNo_recipaux x g k 0.
Set R to be the term kωSNo_recipaux x g k 1.
We will prove (xL, SNo x) (yR, SNo y) (xL, yR, x < y).
We prove the intermediate claim L1: ∀k, nat_p k(ySNo_recipaux x g k 0, SNo y x * y < 1) (ySNo_recipaux x g k 1, SNo y 1 < x * y).
An exact proof term for the current goal is SNo_recipaux_lem1 x Hx Hxpos g Hg.
Apply and3I to the current goal.
Let y be given.
Assume Hy.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x g k 0) y Hy to the current goal.
Let k be given.
Assume Hk.
Assume H1: y SNo_recipaux x g k 0.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume H2 _.
Apply H2 y H1 to the current goal.
Assume H3 _.
An exact proof term for the current goal is H3.
Let y be given.
Assume Hy.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x g k 1) y Hy to the current goal.
Let k be given.
Assume Hk.
Assume H1: y SNo_recipaux x g k 1.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume _ H2.
Apply H2 y H1 to the current goal.
Assume H3 _.
An exact proof term for the current goal is H3.
Let w be given.
Assume Hw.
Let z be given.
Assume Hz.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x g k 0) w Hw to the current goal.
Let k be given.
Assume Hk.
Assume H1: w SNo_recipaux x g k 0.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume H2 _.
Apply H2 w H1 to the current goal.
Assume H3: SNo w.
Assume H4: x * w < 1.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x g k 1) z Hz to the current goal.
Let k' be given.
Assume Hk'.
Assume H5: z SNo_recipaux x g k' 1.
Apply L1 k' (omega_nat_p k' Hk') to the current goal.
Assume _ H6.
Apply H6 z H5 to the current goal.
Assume H7: SNo z.
Assume H8: 1 < x * z.
We will prove w < z.
Apply SNoLtLe_or w z H3 H7 to the current goal.
Assume H9: w < z.
An exact proof term for the current goal is H9.
Assume H9: z w.
We will prove False.
Apply SNoLt_irref 1 to the current goal.
We will prove 1 < 1.
Apply SNoLt_tra 1 (x * z) 1 SNo_1 (SNo_mul_SNo x z Hx H7) SNo_1 H8 to the current goal.
We will prove x * z < 1.
Apply SNoLeLt_tra (x * z) (x * w) 1 (SNo_mul_SNo x z Hx H7) (SNo_mul_SNo x w Hx H3) SNo_1 to the current goal.
We will prove x * z x * w.
Apply nonneg_mul_SNo_Le x z w Hx (SNoLtLe 0 x Hxpos) H7 H3 H9 to the current goal.
We will prove x * w < 1.
An exact proof term for the current goal is H4.
Theorem. (SNo_recipaux_ext) The following is provable:
∀x, SNo x∀g h : setset, (x'SNoS_ (SNoLev x), g x' = h x')∀k, nat_p kSNo_recipaux x g k = SNo_recipaux x h k
Proof:
Let x be given.
Assume Hx.
Let g and h be given.
Assume Hgh.
Apply nat_ind to the current goal.
We will prove SNo_recipaux x g 0 = SNo_recipaux x h 0.
rewrite the current goal using SNo_recipaux_0 x h (from left to right).
An exact proof term for the current goal is SNo_recipaux_0 x g.
Let k be given.
Assume Hk: nat_p k.
Assume IH: SNo_recipaux x g k = SNo_recipaux x h k.
We will prove SNo_recipaux x g (ordsucc k) = SNo_recipaux x h (ordsucc k).
rewrite the current goal using SNo_recipaux_S x g k Hk (from left to right).
rewrite the current goal using SNo_recipaux_S x h k Hk (from left to right).
rewrite the current goal using IH (from left to right).
We prove the intermediate claim L1: SNo_recipaux x h k 0 SNo_recipauxset (SNo_recipaux x h k 0) x (SNoR x) g SNo_recipauxset (SNo_recipaux x h k 1) x (SNoL_pos x) g = SNo_recipaux x h k 0 SNo_recipauxset (SNo_recipaux x h k 0) x (SNoR x) h SNo_recipauxset (SNo_recipaux x h k 1) x (SNoL_pos x) h.
Use f_equal.
Use f_equal.
We will prove SNo_recipauxset (SNo_recipaux x h k 0) x (SNoR x) g = SNo_recipauxset (SNo_recipaux x h k 0) x (SNoR x) h.
Apply SNo_recipauxset_ext to the current goal.
Let w be given.
Assume Hw: w SNoR x.
We will prove g w = h w.
Apply SNoR_E x Hx w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
Apply Hgh to the current goal.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
We will prove SNo_recipauxset (SNo_recipaux x h k 1) x (SNoL_pos x) g = SNo_recipauxset (SNo_recipaux x h k 1) x (SNoL_pos x) h.
Apply SNo_recipauxset_ext to the current goal.
Let w be given.
Assume Hw: w SNoL_pos x.
We will prove g w = h w.
Apply SNoL_E x Hx w (SepE1 (SNoL x) (λw ⇒ 0 < w) w Hw) to the current goal.
Assume Hw1 Hw2 Hw3.
Apply Hgh to the current goal.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
We prove the intermediate claim L2: SNo_recipaux x h k 1 SNo_recipauxset (SNo_recipaux x h k 0) x (SNoL_pos x) g SNo_recipauxset (SNo_recipaux x h k 1) x (SNoR x) g = SNo_recipaux x h k 1 SNo_recipauxset (SNo_recipaux x h k 0) x (SNoL_pos x) h SNo_recipauxset (SNo_recipaux x h k 1) x (SNoR x) h.
Use f_equal.
Use f_equal.
We will prove SNo_recipauxset (SNo_recipaux x h k 0) x (SNoL_pos x) g = SNo_recipauxset (SNo_recipaux x h k 0) x (SNoL_pos x) h.
Apply SNo_recipauxset_ext to the current goal.
Let w be given.
Assume Hw: w SNoL_pos x.
We will prove g w = h w.
Apply SNoL_E x Hx w (SepE1 (SNoL x) (λw ⇒ 0 < w) w Hw) to the current goal.
Assume Hw1 Hw2 Hw3.
Apply Hgh to the current goal.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
We will prove SNo_recipauxset (SNo_recipaux x h k 1) x (SNoR x) g = SNo_recipauxset (SNo_recipaux x h k 1) x (SNoR x) h.
Apply SNo_recipauxset_ext to the current goal.
Let w be given.
Assume Hw: w SNoR x.
We will prove g w = h w.
Apply SNoR_E x Hx w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
Apply Hgh to the current goal.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
rewrite the current goal using L1 (from left to right).
rewrite the current goal using L2 (from left to right).
Use reflexivity.
Beginning of Section recip_SNo_pos
Let G : set(setset)setλx g ⇒ SNoCut (kωSNo_recipaux x g k 0) (kωSNo_recipaux x g k 1)
Definition. We define recip_SNo_pos to be SNo_rec_i G of type setset.
Theorem. (recip_SNo_pos_eq) The following is provable:
∀x, SNo xrecip_SNo_pos x = G x recip_SNo_pos
Proof:
Apply SNo_rec_i_eq G to the current goal.
Let x be given.
Assume Hx.
Let g and h be given.
Assume Hgh.
Use f_equal.
Apply famunion_ext to the current goal.
Let k be given.
Assume Hk.
We will prove SNo_recipaux x g k 0 = SNo_recipaux x h k 0.
Use f_equal.
Apply SNo_recipaux_ext x Hx g h to the current goal.
We will prove wSNoS_ (SNoLev x), g w = h w.
An exact proof term for the current goal is Hgh.
An exact proof term for the current goal is omega_nat_p k Hk.
Apply famunion_ext to the current goal.
Let k be given.
Assume Hk.
We will prove SNo_recipaux x g k 1 = SNo_recipaux x h k 1.
Use f_equal.
Apply SNo_recipaux_ext x Hx g h to the current goal.
We will prove wSNoS_ (SNoLev x), g w = h w.
An exact proof term for the current goal is Hgh.
An exact proof term for the current goal is omega_nat_p k Hk.
Theorem. (recip_SNo_pos_prop1) The following is provable:
∀x, SNo x0 < xSNo (recip_SNo_pos x) x * recip_SNo_pos x = 1
Proof:
Apply SNoLev_ind to the current goal.
Let x be given.
Assume Hx: SNo x.
Assume IH: wSNoS_ (SNoLev x), 0 < wSNo (recip_SNo_pos w) w * recip_SNo_pos w = 1.
Assume Hxpos: 0 < x.
We will prove SNo (recip_SNo_pos x) x * recip_SNo_pos x = 1.
rewrite the current goal using recip_SNo_pos_eq x Hx (from left to right).
We will prove SNo (G x recip_SNo_pos) x * G x recip_SNo_pos = 1.
Set L to be the term kωSNo_recipaux x recip_SNo_pos k 0.
Set R to be the term kωSNo_recipaux x recip_SNo_pos k 1.
We prove the intermediate claim L1: ∀k, nat_p k(ySNo_recipaux x recip_SNo_pos k 0, SNo y x * y < 1) (ySNo_recipaux x recip_SNo_pos k 1, SNo y 1 < x * y).
An exact proof term for the current goal is SNo_recipaux_lem1 x Hx Hxpos recip_SNo_pos IH.
We prove the intermediate claim L1L: wL, x * w < 1.
Let w be given.
Assume Hw.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 0) w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: w SNo_recipaux x recip_SNo_pos k 0.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume H2 _.
Apply H2 w H1 to the current goal.
Assume _ H3.
An exact proof term for the current goal is H3.
We prove the intermediate claim L1R: zR, 1 < x * z.
Let z be given.
Assume Hz.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 1) z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: z SNo_recipaux x recip_SNo_pos k 1.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume _ H2.
Apply H2 z H1 to the current goal.
Assume _ H3.
An exact proof term for the current goal is H3.
We prove the intermediate claim L2: SNoCutP L R.
An exact proof term for the current goal is SNo_recipaux_lem2 x Hx Hxpos recip_SNo_pos IH.
Apply L2 to the current goal.
Assume HLHR.
Apply HLHR to the current goal.
Assume HL: wL, SNo w.
Assume HR: zR, SNo z.
Assume HLR: wL, zR, w < z.
Set y to be the term SNoCut L R.
Apply SNoCutP_SNoCut_impred L R L2 to the current goal.
Assume H1: SNo y.
Assume H3: wL, w < y.
Assume H4: zR, y < z.
Assume H5: ∀u, SNo u(wL, w < u)(zR, u < z)SNoLev y SNoLev u SNoEq_ (SNoLev y) y u.
We prove the intermediate claim L3: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Hx H1.
We prove the intermediate claim L4: 0 < y.
Apply H3 to the current goal.
We will prove 0 L.
Apply famunionI ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 0) 0 to the current goal.
We will prove 0 ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_0.
We will prove 0 SNo_recipaux x recip_SNo_pos 0 0.
rewrite the current goal using SNo_recipaux_0 (from left to right).
We will prove 0 ({0},0) 0.
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply SingI to the current goal.
We prove the intermediate claim L5: 0 < x * y.
An exact proof term for the current goal is mul_SNo_pos_pos x y Hx H1 Hxpos L4.
We prove the intermediate claim L6: wSNoL y, w'L, w w'.
An exact proof term for the current goal is SNoL_SNoCutP_ex L R L2.
We prove the intermediate claim L7: zSNoR y, z'R, z' z.
An exact proof term for the current goal is SNoR_SNoCutP_ex L R L2.
Apply andI to the current goal.
We will prove SNo y.
An exact proof term for the current goal is H1.
We will prove x * y = 1.
Apply dneg to the current goal.
Assume HC: x * y 1.
Apply SNoLt_trichotomy_or_impred (x * y) 1 L3 SNo_1 to the current goal.
Assume H6: x * y < 1.
We prove the intermediate claim L8: 1 SNoR (x * y).
Apply SNoR_I to the current goal.
An exact proof term for the current goal is L3.
An exact proof term for the current goal is SNo_1.
We will prove SNoLev 1 SNoLev (x * y).
rewrite the current goal using ordinal_SNoLev 1 ordinal_1 (from left to right).
We will prove 1 SNoLev (x * y).
Apply ordinal_In_Or_Subq 1 (SNoLev (x * y)) ordinal_1 (SNoLev_ordinal (x * y) L3) to the current goal.
Assume H7: 1 SNoLev (x * y).
An exact proof term for the current goal is H7.
Assume H7: SNoLev (x * y) 1.
We will prove False.
Apply HC to the current goal.
We will prove x * y = 1.
An exact proof term for the current goal is pos_low_eq_one (x * y) L3 L5 H7.
An exact proof term for the current goal is H6.
We prove the intermediate claim L9: ∀v w w', SNo vSNo wSNo w'v SNoS_ (SNoLev x)0 < vv * y + x * w 1 + v * w(1 + (v + - x) * w') * recip_SNo_pos v L(- v + x) * w' (- v + x) * wFalse.
Let v, w and w' be given.
Assume Hv1 Hw1 Hw' HvS Hvpos H7 Hw'' H8.
Set w'' to be the term (1 + (v + - x) * w') * recip_SNo_pos v.
We prove the intermediate claim Lw''1: SNo w''.
An exact proof term for the current goal is HL w'' Hw''.
Apply SNoLt_irref 1 to the current goal.
We will prove 1 < 1.
Apply SNoLtLe_tra 1 (1 + v * (y + - w'')) 1 SNo_1 (SNo_add_SNo 1 (v * (y + - w'')) SNo_1 (SNo_mul_SNo v (y + - w'') Hv1 (SNo_add_SNo y (- w'') H1 (SNo_minus_SNo w'' Lw''1)))) SNo_1 to the current goal.
We will prove 1 < 1 + v * (y + - w'').
rewrite the current goal using add_SNo_0R 1 SNo_1 (from right to left) at position 1.
We will prove 1 + 0 < 1 + v * (y + - w'').
Apply add_SNo_Lt2 1 0 (v * (y + - w'')) SNo_1 SNo_0 (SNo_mul_SNo v (y + - w'') Hv1 (SNo_add_SNo y (- w'') H1 (SNo_minus_SNo w'' Lw''1))) to the current goal.
We will prove 0 < v * (y + - w'').
Apply mul_SNo_pos_pos v (y + - w'') Hv1 (SNo_add_SNo y (- w'') H1 (SNo_minus_SNo w'' Lw''1)) Hvpos to the current goal.
We will prove 0 < y + - w''.
Apply SNoLt_minus_pos w'' y Lw''1 H1 to the current goal.
We will prove w'' < y.
An exact proof term for the current goal is H3 w'' Hw''.
We will prove 1 + v * (y + - w'') 1.
rewrite the current goal using mul_SNo_distrL v y (- w'') Hv1 H1 (SNo_minus_SNo w'' Lw''1) (from left to right).
We will prove 1 + v * y + v * (- w'') 1.
rewrite the current goal using mul_SNo_minus_distrR v w'' Hv1 Lw''1 (from left to right).
We will prove 1 + v * y + - v * w'' 1.
We will prove 1 + v * y + - v * (1 + (v + - x) * w') * recip_SNo_pos v 1.
Apply IH v HvS Hvpos to the current goal.
Assume Hrv1: SNo (recip_SNo_pos v).
Assume Hrv2: v * recip_SNo_pos v = 1.
rewrite the current goal using mul_SNo_com (1 + (v + - x) * w') (recip_SNo_pos v) (SNo_add_SNo 1 ((v + - x) * w') SNo_1 (SNo_mul_SNo (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw')) Hrv1 (from left to right).
We will prove 1 + v * y + - v * recip_SNo_pos v * (1 + (v + - x) * w') 1.
rewrite the current goal using mul_SNo_assoc v (recip_SNo_pos v) (1 + (v + - x) * w') Hv1 Hrv1 (SNo_add_SNo 1 ((v + - x) * w') SNo_1 (SNo_mul_SNo (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw')) (from left to right).
We will prove 1 + v * y + - (v * recip_SNo_pos v) * (1 + (v + - x) * w') 1.
rewrite the current goal using Hrv2 (from left to right).
We will prove 1 + v * y + - 1 * (1 + (v + - x) * w') 1.
rewrite the current goal using mul_SNo_oneL (1 + (v + - x) * w') (SNo_add_SNo 1 ((v + - x) * w') SNo_1 (SNo_mul_SNo (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw')) (from left to right).
We will prove 1 + v * y + - (1 + (v + - x) * w') 1.
rewrite the current goal using minus_add_SNo_distr 1 ((v + - x) * w') SNo_1 (SNo_mul_SNo (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw') (from left to right).
We will prove 1 + v * y + - 1 + - (v + - x) * w' 1.
rewrite the current goal using add_SNo_rotate_3_1 (- 1) (- (v + - x) * w') (v * y) (SNo_minus_SNo 1 SNo_1) (SNo_minus_SNo ((v + - x) * w') (SNo_mul_SNo (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw')) (SNo_mul_SNo v y Hv1 H1) (from right to left).
We will prove 1 + - 1 + - (v + - x) * w' + v * y 1.
rewrite the current goal using add_SNo_minus_SNo_prop2 1 (- (v + - x) * w' + v * y) SNo_1 (SNo_add_SNo (- (v + - x) * w') (v * y) (SNo_minus_SNo ((v + - x) * w') (SNo_mul_SNo (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw')) (SNo_mul_SNo v y Hv1 H1)) (from left to right).
We will prove - (v + - x) * w' + v * y 1.
rewrite the current goal using mul_SNo_minus_distrL (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw' (from right to left).
We will prove (- (v + - x)) * w' + v * y 1.
rewrite the current goal using minus_add_SNo_distr v (- x) Hv1 (SNo_minus_SNo x Hx) (from left to right).
rewrite the current goal using minus_SNo_invol x Hx (from left to right).
We will prove (- v + x) * w' + v * y 1.
Apply SNoLe_tra ((- v + x) * w' + v * y) ((- v + x) * w + v * y) 1 (SNo_add_SNo ((- v + x) * w') (v * y) (SNo_mul_SNo (- v + x) w' (SNo_add_SNo (- v) x (SNo_minus_SNo v Hv1) Hx) Hw') (SNo_mul_SNo v y Hv1 H1)) (SNo_add_SNo ((- v + x) * w) (v * y) (SNo_mul_SNo (- v + x) w (SNo_add_SNo (- v) x (SNo_minus_SNo v Hv1) Hx) Hw1) (SNo_mul_SNo v y Hv1 H1)) SNo_1 to the current goal.
We will prove (- v + x) * w' + v * y (- v + x) * w + v * y.
Apply add_SNo_Le1 ((- v + x) * w') (v * y) ((- v + x) * w) (SNo_mul_SNo (- v + x) w' (SNo_add_SNo (- v) x (SNo_minus_SNo v Hv1) Hx) Hw') (SNo_mul_SNo v y Hv1 H1) (SNo_mul_SNo (- v + x) w (SNo_add_SNo (- v) x (SNo_minus_SNo v Hv1) Hx) Hw1) to the current goal.
We will prove (- v + x) * w' (- v + x) * w.
An exact proof term for the current goal is H8.
We will prove (- v + x) * w + v * y 1.
rewrite the current goal using mul_SNo_distrR (- v) x w (SNo_minus_SNo v Hv1) Hx Hw1 (from left to right).
We will prove ((- v) * w + x * w) + v * y 1.
rewrite the current goal using mul_SNo_minus_distrL v w Hv1 Hw1 (from left to right).
We will prove (- v * w + x * w) + v * y 1.
rewrite the current goal using add_SNo_assoc (- v * w) (x * w) (v * y) (SNo_minus_SNo (v * w) (SNo_mul_SNo v w Hv1 Hw1)) (SNo_mul_SNo x w Hx Hw1) (SNo_mul_SNo v y Hv1 H1) (from right to left).
We will prove - v * w + x * w + v * y 1.
rewrite the current goal using add_SNo_com (- v * w) (x * w + v * y) (SNo_minus_SNo (v * w) (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo (x * w) (v * y) (SNo_mul_SNo x w Hx Hw1) (SNo_mul_SNo v y Hv1 H1)) (from left to right).
Apply add_SNo_minus_Le2 1 (- v * w) (x * w + v * y) SNo_1 (SNo_minus_SNo (v * w) (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo (x * w) (v * y) (SNo_mul_SNo x w Hx Hw1) (SNo_mul_SNo v y Hv1 H1)) to the current goal.
We will prove x * w + v * y 1 + - - v * w.
rewrite the current goal using minus_SNo_invol (v * w) (SNo_mul_SNo v w Hv1 Hw1) (from left to right).
We will prove x * w + v * y 1 + v * w.
rewrite the current goal using add_SNo_com (x * w) (v * y) (SNo_mul_SNo x w Hx Hw1) (SNo_mul_SNo v y Hv1 H1) (from left to right).
We will prove v * y + x * w 1 + v * w.
An exact proof term for the current goal is H7.
Apply mul_SNo_SNoR_interpolate_impred x y Hx H1 1 L8 to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Let w be given.
Assume Hw: w SNoR y.
Assume H7: v * y + x * w 1 + v * w.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: v < x.
Apply SNoR_E y H1 w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev y.
Assume Hw3: y < w.
We prove the intermediate claim LvS: v SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 v x Hv1 Hx Hv2.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
Apply L7 w Hw to the current goal.
Let w' be given.
Assume Hw'.
Apply Hw' to the current goal.
Assume Hw'1: w' R.
Assume Hw'2: w' w.
We prove the intermediate claim Lw': SNo w'.
An exact proof term for the current goal is HR w' Hw'1.
We prove the intermediate claim Lxw': SNo (x * w').
An exact proof term for the current goal is SNo_mul_SNo x w' Hx Lw'.
We prove the intermediate claim Lvpos: 0 < v.
Apply SNoLtLe_or 0 v SNo_0 Hv1 to the current goal.
Assume H8: 0 < v.
An exact proof term for the current goal is H8.
Assume H8: v 0.
We will prove False.
Apply SNoLt_irref 1 to the current goal.
We will prove 1 < 1.
Apply SNoLtLe_tra 1 (x * w') 1 SNo_1 Lxw' SNo_1 to the current goal.
We will prove 1 < x * w'.
An exact proof term for the current goal is L1R w' Hw'1.
We will prove x * w' 1.
Apply SNoLe_tra (x * w') (x * w) 1 Lxw' Lxw SNo_1 to the current goal.
We will prove x * w' x * w.
An exact proof term for the current goal is nonneg_mul_SNo_Le x w' w Hx (SNoLtLe 0 x Hxpos) Lw' Hw1 Hw'2.
We will prove x * w 1.
Apply SNoLe_tra (x * w) (v * (y + - w) + x * w) 1 Lxw (SNo_add_SNo (v * (y + - w)) (x * w) (SNo_mul_SNo v (y + - w) Hv1 (SNo_add_SNo y (- w) H1 (SNo_minus_SNo w Hw1))) Lxw) SNo_1 to the current goal.
We will prove x * w v * (y + - w) + x * w.
rewrite the current goal using add_SNo_0L (x * w) Lxw (from right to left) at position 1.
We will prove 0 + x * w v * (y + - w) + x * w.
Apply add_SNo_Le1 0 (x * w) (v * (y + - w)) SNo_0 Lxw (SNo_mul_SNo v (y + - w) Hv1 (SNo_add_SNo y (- w) H1 (SNo_minus_SNo w Hw1))) to the current goal.
We will prove 0 v * (y + - w).
Apply mul_SNo_nonpos_neg v (y + - w) Hv1 (SNo_add_SNo y (- w) H1 (SNo_minus_SNo w Hw1)) H8 to the current goal.
We will prove y + - w < 0.
Apply add_SNo_minus_Lt1b y w 0 H1 Hw1 SNo_0 to the current goal.
We will prove y < 0 + w.
rewrite the current goal using add_SNo_0L w Hw1 (from left to right).
We will prove y < w.
An exact proof term for the current goal is Hw3.
We will prove v * (y + - w) + x * w 1.
rewrite the current goal using mul_SNo_distrL v y (- w) Hv1 H1 (SNo_minus_SNo w Hw1) (from left to right).
We will prove (v * y + v * (- w)) + x * w 1.
rewrite the current goal using add_SNo_com_3b_1_2 (v * y) (v * (- w)) (x * w) (SNo_mul_SNo v y Hv1 H1) (SNo_mul_SNo v (- w) Hv1 (SNo_minus_SNo w Hw1)) Lxw (from left to right).
We will prove (v * y + x * w) + v * (- w) 1.
Apply add_SNo_minus_Le2 1 (v * (- w)) (v * y + x * w) SNo_1 (SNo_mul_SNo v (- w) Hv1 (SNo_minus_SNo w Hw1)) (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Hv1 H1) Lxw) to the current goal.
We will prove v * y + x * w 1 + - v * (- w).
rewrite the current goal using mul_SNo_minus_distrR v w Hv1 Hw1 (from left to right).
rewrite the current goal using minus_SNo_invol (v * w) (SNo_mul_SNo v w Hv1 Hw1) (from left to right).
An exact proof term for the current goal is H7.
Set w'' to be the term (1 + (v + - x) * w') * recip_SNo_pos v.
We prove the intermediate claim Lw'': w'' L.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 1) w' Hw'1 to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H9: w' SNo_recipaux x recip_SNo_pos k 1.
Apply famunionI ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 0) (ordsucc k) w'' (omega_ordsucc k Hk) to the current goal.
We will prove w'' SNo_recipaux x recip_SNo_pos (ordsucc k) 0.
rewrite the current goal using SNo_recipaux_S x recip_SNo_pos k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply binunionI2 to the current goal.
Apply SNo_recipauxset_I (SNo_recipaux x recip_SNo_pos k 1) x (SNoL_pos x) recip_SNo_pos to the current goal.
We will prove w' SNo_recipaux x recip_SNo_pos k 1.
An exact proof term for the current goal is H9.
We will prove v SNoL_pos x.
We will prove v {wSNoL x|0 < w}.
Apply SepI to the current goal.
An exact proof term for the current goal is Hv.
We will prove 0 < v.
An exact proof term for the current goal is Lvpos.
Apply L9 v w w' Hv1 Hw1 Lw' LvS Lvpos H7 Lw'' to the current goal.
We will prove (- v + x) * w' (- v + x) * w.
Apply nonneg_mul_SNo_Le (- v + x) w' w (SNo_add_SNo (- v) x (SNo_minus_SNo v Hv1) Hx) to the current goal.
We will prove 0 - v + x.
rewrite the current goal using add_SNo_com (- v) x (SNo_minus_SNo v Hv1) Hx (from left to right).
We will prove 0 x + - v.
Apply add_SNo_minus_Le2b x v 0 Hx Hv1 SNo_0 to the current goal.
We will prove 0 + v x.
rewrite the current goal using add_SNo_0L v Hv1 (from left to right).
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hv3.
An exact proof term for the current goal is Lw'.
An exact proof term for the current goal is Hw1.
An exact proof term for the current goal is Hw'2.
Let v be given.
Assume Hv: v SNoR x.
Let w be given.
Assume Hw: w SNoL y.
Assume H7: v * y + x * w 1 + v * w.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: x < v.
Apply SNoL_E y H1 w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev y.
Assume Hw3: w < y.
We prove the intermediate claim LvS: v SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 v x Hv1 Hx Hv2.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
Apply L6 w Hw to the current goal.
Let w' be given.
Assume Hw'.
Apply Hw' to the current goal.
Assume Hw'1: w' L.
Assume Hw'2: w w'.
We prove the intermediate claim Lw': SNo w'.
An exact proof term for the current goal is HL w' Hw'1.
We prove the intermediate claim Lxw': SNo (x * w').
An exact proof term for the current goal is SNo_mul_SNo x w' Hx Lw'.
We prove the intermediate claim Lvpos: 0 < v.
An exact proof term for the current goal is SNoLt_tra 0 x v SNo_0 Hx Hv1 Hxpos Hv3.
Set w'' to be the term (1 + (v + - x) * w') * recip_SNo_pos v.
We prove the intermediate claim Lw'': w'' L.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 0) w' Hw'1 to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H9: w' SNo_recipaux x recip_SNo_pos k 0.
Apply famunionI ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 0) (ordsucc k) w'' (omega_ordsucc k Hk) to the current goal.
We will prove w'' SNo_recipaux x recip_SNo_pos (ordsucc k) 0.
rewrite the current goal using SNo_recipaux_S x recip_SNo_pos k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply binunionI1 to the current goal.
Apply binunionI2 to the current goal.
Apply SNo_recipauxset_I (SNo_recipaux x recip_SNo_pos k 0) x (SNoR x) recip_SNo_pos to the current goal.
We will prove w' SNo_recipaux x recip_SNo_pos k 0.
An exact proof term for the current goal is H9.
We will prove v SNoR x.
An exact proof term for the current goal is Hv.
Apply L9 v w w' Hv1 Hw1 Lw' LvS Lvpos H7 Lw'' to the current goal.
We will prove (- v + x) * w' (- v + x) * w.
Apply nonpos_mul_SNo_Le (- v + x) w' w (SNo_add_SNo (- v) x (SNo_minus_SNo v Hv1) Hx) to the current goal.
We will prove - v + x 0.
rewrite the current goal using add_SNo_com (- v) x (SNo_minus_SNo v Hv1) Hx (from left to right).
We will prove x + - v 0.
Apply add_SNo_minus_Le2 0 (- v) x SNo_0 (SNo_minus_SNo v Hv1) Hx to the current goal.
rewrite the current goal using minus_SNo_invol v Hv1 (from left to right).
We will prove x 0 + v.
rewrite the current goal using add_SNo_0L v Hv1 (from left to right).
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hv3.
An exact proof term for the current goal is Lw'.
An exact proof term for the current goal is Hw1.
An exact proof term for the current goal is Hw'2.
Assume H6: x * y = 1.
Apply HC to the current goal.
An exact proof term for the current goal is H6.
Assume H6: 1 < x * y.
We prove the intermediate claim L10: 1 SNoL (x * y).
Apply SNoL_I to the current goal.
An exact proof term for the current goal is L3.
An exact proof term for the current goal is SNo_1.
We will prove SNoLev 1 SNoLev (x * y).
rewrite the current goal using ordinal_SNoLev 1 ordinal_1 (from left to right).
We will prove 1 SNoLev (x * y).
Apply ordinal_In_Or_Subq 1 (SNoLev (x * y)) ordinal_1 (SNoLev_ordinal (x * y) L3) to the current goal.
Assume H7: 1 SNoLev (x * y).
An exact proof term for the current goal is H7.
Assume H7: SNoLev (x * y) 1.
We will prove False.
Apply HC to the current goal.
We will prove x * y = 1.
An exact proof term for the current goal is pos_low_eq_one (x * y) L3 L5 H7.
An exact proof term for the current goal is H6.
We prove the intermediate claim L11: ∀v w w', SNo vSNo wSNo w'v SNoS_ (SNoLev x)0 < v1 + v * w v * y + x * w(1 + (v + - x) * w') * recip_SNo_pos v R(- v + x) * w (- v + x) * w'False.
Let v, w and w' be given.
Assume Hv1 Hw1 Hw' HvS Hvpos H7 Hw'' H8.
Set w'' to be the term (1 + (v + - x) * w') * recip_SNo_pos v.
We prove the intermediate claim Lw''1: SNo w''.
An exact proof term for the current goal is HR w'' Hw''.
Apply SNoLt_irref 1 to the current goal.
We will prove 1 < 1.
Apply SNoLeLt_tra 1 (1 + v * (y + - w'')) 1 SNo_1 (SNo_add_SNo 1 (v * (y + - w'')) SNo_1 (SNo_mul_SNo v (y + - w'') Hv1 (SNo_add_SNo y (- w'') H1 (SNo_minus_SNo w'' Lw''1)))) SNo_1 to the current goal.
We will prove 1 1 + v * (y + - w'').
rewrite the current goal using mul_SNo_distrL v y (- w'') Hv1 H1 (SNo_minus_SNo w'' Lw''1) (from left to right).
We will prove 1 1 + v * y + v * (- w'').
rewrite the current goal using mul_SNo_minus_distrR v w'' Hv1 Lw''1 (from left to right).
We will prove 1 1 + v * y + - v * w''.
We will prove 1 1 + v * y + - v * (1 + (v + - x) * w') * recip_SNo_pos v.
Apply IH v HvS Hvpos to the current goal.
Assume Hrv1: SNo (recip_SNo_pos v).
Assume Hrv2: v * recip_SNo_pos v = 1.
rewrite the current goal using mul_SNo_com (1 + (v + - x) * w') (recip_SNo_pos v) (SNo_add_SNo 1 ((v + - x) * w') SNo_1 (SNo_mul_SNo (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw')) Hrv1 (from left to right).
We will prove 1 1 + v * y + - v * recip_SNo_pos v * (1 + (v + - x) * w').
rewrite the current goal using mul_SNo_assoc v (recip_SNo_pos v) (1 + (v + - x) * w') Hv1 Hrv1 (SNo_add_SNo 1 ((v + - x) * w') SNo_1 (SNo_mul_SNo (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw')) (from left to right).
We will prove 1 1 + v * y + - (v * recip_SNo_pos v) * (1 + (v + - x) * w').
rewrite the current goal using Hrv2 (from left to right).
We will prove 1 1 + v * y + - 1 * (1 + (v + - x) * w').
rewrite the current goal using mul_SNo_oneL (1 + (v + - x) * w') (SNo_add_SNo 1 ((v + - x) * w') SNo_1 (SNo_mul_SNo (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw')) (from left to right).
We will prove 1 1 + v * y + - (1 + (v + - x) * w').
rewrite the current goal using minus_add_SNo_distr 1 ((v + - x) * w') SNo_1 (SNo_mul_SNo (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw') (from left to right).
We will prove 1 1 + v * y + - 1 + - (v + - x) * w'.
rewrite the current goal using add_SNo_rotate_3_1 (- 1) (- (v + - x) * w') (v * y) (SNo_minus_SNo 1 SNo_1) (SNo_minus_SNo ((v + - x) * w') (SNo_mul_SNo (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw')) (SNo_mul_SNo v y Hv1 H1) (from right to left).
We will prove 1 1 + - 1 + - (v + - x) * w' + v * y.
rewrite the current goal using add_SNo_minus_SNo_prop2 1 (- (v + - x) * w' + v * y) SNo_1 (SNo_add_SNo (- (v + - x) * w') (v * y) (SNo_minus_SNo ((v + - x) * w') (SNo_mul_SNo (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw')) (SNo_mul_SNo v y Hv1 H1)) (from left to right).
We will prove 1 - (v + - x) * w' + v * y.
rewrite the current goal using mul_SNo_minus_distrL (v + - x) w' (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx)) Hw' (from right to left).
We will prove 1 (- (v + - x)) * w' + v * y.
rewrite the current goal using minus_add_SNo_distr v (- x) Hv1 (SNo_minus_SNo x Hx) (from left to right).
rewrite the current goal using minus_SNo_invol x Hx (from left to right).
We will prove 1 (- v + x) * w' + v * y.
Apply SNoLe_tra 1 ((- v + x) * w + v * y) ((- v + x) * w' + v * y) SNo_1 (SNo_add_SNo ((- v + x) * w) (v * y) (SNo_mul_SNo (- v + x) w (SNo_add_SNo (- v) x (SNo_minus_SNo v Hv1) Hx) Hw1) (SNo_mul_SNo v y Hv1 H1)) (SNo_add_SNo ((- v + x) * w') (v * y) (SNo_mul_SNo (- v + x) w' (SNo_add_SNo (- v) x (SNo_minus_SNo v Hv1) Hx) Hw') (SNo_mul_SNo v y Hv1 H1)) to the current goal.
We will prove 1 (- v + x) * w + v * y.
rewrite the current goal using mul_SNo_distrR (- v) x w (SNo_minus_SNo v Hv1) Hx Hw1 (from left to right).
We will prove 1 ((- v) * w + x * w) + v * y.
rewrite the current goal using mul_SNo_minus_distrL v w Hv1 Hw1 (from left to right).
We will prove 1 (- v * w + x * w) + v * y.
rewrite the current goal using add_SNo_assoc (- v * w) (x * w) (v * y) (SNo_minus_SNo (v * w) (SNo_mul_SNo v w Hv1 Hw1)) (SNo_mul_SNo x w Hx Hw1) (SNo_mul_SNo v y Hv1 H1) (from right to left).
We will prove 1 - v * w + x * w + v * y.
rewrite the current goal using add_SNo_com (- v * w) (x * w + v * y) (SNo_minus_SNo (v * w) (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo (x * w) (v * y) (SNo_mul_SNo x w Hx Hw1) (SNo_mul_SNo v y Hv1 H1)) (from left to right).
We will prove 1 (x * w + v * y) + - v * w.
Apply add_SNo_minus_Le2b (x * w + v * y) (v * w) 1 (SNo_add_SNo (x * w) (v * y) (SNo_mul_SNo x w Hx Hw1) (SNo_mul_SNo v y Hv1 H1)) (SNo_mul_SNo v w Hv1 Hw1) SNo_1 to the current goal.
We will prove 1 + v * w x * w + v * y.
rewrite the current goal using add_SNo_com (x * w) (v * y) (SNo_mul_SNo x w Hx Hw1) (SNo_mul_SNo v y Hv1 H1) (from left to right).
We will prove 1 + v * w v * y + x * w.
An exact proof term for the current goal is H7.
We will prove (- v + x) * w + v * y (- v + x) * w' + v * y.
Apply add_SNo_Le1 ((- v + x) * w) (v * y) ((- v + x) * w') (SNo_mul_SNo (- v + x) w (SNo_add_SNo (- v) x (SNo_minus_SNo v Hv1) Hx) Hw1) (SNo_mul_SNo v y Hv1 H1) (SNo_mul_SNo (- v + x) w' (SNo_add_SNo (- v) x (SNo_minus_SNo v Hv1) Hx) Hw') to the current goal.
We will prove (- v + x) * w (- v + x) * w'.
An exact proof term for the current goal is H8.
We will prove 1 + v * (y + - w'') < 1.
rewrite the current goal using add_SNo_0R 1 SNo_1 (from right to left) at position 4.
We will prove 1 + v * (y + - w'') < 1 + 0.
Apply add_SNo_Lt2 1 (v * (y + - w'')) 0 SNo_1 (SNo_mul_SNo v (y + - w'') Hv1 (SNo_add_SNo y (- w'') H1 (SNo_minus_SNo w'' Lw''1))) SNo_0 to the current goal.
We will prove v * (y + - w'') < 0.
Apply mul_SNo_pos_neg v (y + - w'') Hv1 (SNo_add_SNo y (- w'') H1 (SNo_minus_SNo w'' Lw''1)) Hvpos to the current goal.
We will prove y + - w'' < 0.
Apply add_SNo_minus_Lt1b y w'' 0 H1 Lw''1 SNo_0 to the current goal.
We will prove y < 0 + w''.
rewrite the current goal using add_SNo_0L w'' Lw''1 (from left to right).
We will prove y < w''.
An exact proof term for the current goal is H4 w'' Hw''.
Apply mul_SNo_SNoL_interpolate_impred x y Hx H1 1 L10 to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Let w be given.
Assume Hw: w SNoL y.
Assume H7: 1 + v * w v * y + x * w.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: v < x.
Apply SNoL_E y H1 w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev y.
Assume Hw3: w < y.
We prove the intermediate claim LvS: v SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 v x Hv1 Hx Hv2.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
Apply L6 w Hw to the current goal.
Let w' be given.
Assume Hw'.
Apply Hw' to the current goal.
Assume Hw'1: w' L.
Assume Hw'2: w w'.
We prove the intermediate claim Lw': SNo w'.
An exact proof term for the current goal is HL w' Hw'1.
We prove the intermediate claim Lxw': SNo (x * w').
An exact proof term for the current goal is SNo_mul_SNo x w' Hx Lw'.
We prove the intermediate claim Lvpos: 0 < v.
Apply SNoLtLe_or 0 v SNo_0 Hv1 to the current goal.
Assume H8: 0 < v.
An exact proof term for the current goal is H8.
Assume H8: v 0.
We will prove False.
Apply SNoLt_irref 1 to the current goal.
We will prove 1 < 1.
Apply SNoLeLt_tra 1 (x * w') 1 SNo_1 Lxw' SNo_1 to the current goal.
We will prove 1 x * w'.
Apply SNoLe_tra 1 (x * w) (x * w') SNo_1 Lxw Lxw' to the current goal.
We will prove 1 x * w.
Apply SNoLe_tra 1 (v * (y + - w) + x * w) (x * w) SNo_1 (SNo_add_SNo (v * (y + - w)) (x * w) (SNo_mul_SNo v (y + - w) Hv1 (SNo_add_SNo y (- w) H1 (SNo_minus_SNo w Hw1))) Lxw) Lxw to the current goal.
We will prove 1 v * (y + - w) + x * w.
rewrite the current goal using mul_SNo_distrL v y (- w) Hv1 H1 (SNo_minus_SNo w Hw1) (from left to right).
We will prove 1 (v * y + v * (- w)) + x * w.
rewrite the current goal using add_SNo_com_3b_1_2 (v * y) (v * (- w)) (x * w) (SNo_mul_SNo v y Hv1 H1) (SNo_mul_SNo v (- w) Hv1 (SNo_minus_SNo w Hw1)) Lxw (from left to right).
We will prove 1 (v * y + x * w) + v * (- w).
rewrite the current goal using mul_SNo_minus_distrR v w Hv1 Hw1 (from left to right).
We will prove 1 (v * y + x * w) + - v * w.
Apply add_SNo_minus_Le2b (v * y + x * w) (v * w) 1 (SNo_add_SNo (v * y) (x * w) (SNo_mul_SNo v y Hv1 H1) Lxw) (SNo_mul_SNo v w Hv1 Hw1) SNo_1 to the current goal.
We will prove 1 + v * w v * y + x * w.
An exact proof term for the current goal is H7.
We will prove v * (y + - w) + x * w x * w.
rewrite the current goal using add_SNo_0L (x * w) Lxw (from right to left) at position 2.
We will prove v * (y + - w) + x * w 0 + x * w.
Apply add_SNo_Le1 (v * (y + - w)) (x * w) 0 (SNo_mul_SNo v (y + - w) Hv1 (SNo_add_SNo y (- w) H1 (SNo_minus_SNo w Hw1))) Lxw SNo_0 to the current goal.
We will prove v * (y + - w) 0.
Apply mul_SNo_nonpos_pos v (y + - w) Hv1 (SNo_add_SNo y (- w) H1 (SNo_minus_SNo w Hw1)) H8 to the current goal.
We will prove 0 < y + - w.
Apply add_SNo_minus_Lt2b y w 0 H1 Hw1 SNo_0 to the current goal.
We will prove 0 + w < y.
rewrite the current goal using add_SNo_0L w Hw1 (from left to right).
We will prove w < y.
An exact proof term for the current goal is Hw3.
We will prove x * w x * w'.
An exact proof term for the current goal is nonneg_mul_SNo_Le x w w' Hx (SNoLtLe 0 x Hxpos) Hw1 Lw' Hw'2.
We will prove x * w' < 1.
An exact proof term for the current goal is L1L w' Hw'1.
Set w'' to be the term (1 + (v + - x) * w') * recip_SNo_pos v.
We prove the intermediate claim Lw'': w'' R.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 0) w' Hw'1 to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H9: w' SNo_recipaux x recip_SNo_pos k 0.
Apply famunionI ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 1) (ordsucc k) w'' (omega_ordsucc k Hk) to the current goal.
We will prove w'' SNo_recipaux x recip_SNo_pos (ordsucc k) 1.
rewrite the current goal using SNo_recipaux_S x recip_SNo_pos k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply binunionI1 to the current goal.
Apply binunionI2 to the current goal.
Apply SNo_recipauxset_I (SNo_recipaux x recip_SNo_pos k 0) x (SNoL_pos x) recip_SNo_pos to the current goal.
We will prove w' SNo_recipaux x recip_SNo_pos k 0.
An exact proof term for the current goal is H9.
We will prove v SNoL_pos x.
We will prove v {wSNoL x|0 < w}.
Apply SepI to the current goal.
An exact proof term for the current goal is Hv.
We will prove 0 < v.
An exact proof term for the current goal is Lvpos.
Apply L11 v w w' Hv1 Hw1 Lw' LvS Lvpos H7 Lw'' to the current goal.
We will prove (- v + x) * w (- v + x) * w'.
Apply nonneg_mul_SNo_Le (- v + x) w w' (SNo_add_SNo (- v) x (SNo_minus_SNo v Hv1) Hx) to the current goal.
We will prove 0 - v + x.
rewrite the current goal using add_SNo_com (- v) x (SNo_minus_SNo v Hv1) Hx (from left to right).
We will prove 0 x + - v.
Apply add_SNo_minus_Le2b x v 0 Hx Hv1 SNo_0 to the current goal.
We will prove 0 + v x.
rewrite the current goal using add_SNo_0L v Hv1 (from left to right).
We will prove v x.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hv3.
An exact proof term for the current goal is Hw1.
An exact proof term for the current goal is Lw'.
An exact proof term for the current goal is Hw'2.
Let v be given.
Assume Hv: v SNoR x.
Let w be given.
Assume Hw: w SNoR y.
Assume H7: 1 + v * w v * y + x * w.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: x < v.
Apply SNoR_E y H1 w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev y.
Assume Hw3: y < w.
We prove the intermediate claim LvS: v SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 v x Hv1 Hx Hv2.
We prove the intermediate claim Lvpos: 0 < v.
An exact proof term for the current goal is SNoLt_tra 0 x v SNo_0 Hx Hv1 Hxpos Hv3.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Hw1.
Apply L7 w Hw to the current goal.
Let w' be given.
Assume Hw'.
Apply Hw' to the current goal.
Assume Hw'1: w' R.
Assume Hw'2: w' w.
We prove the intermediate claim Lw': SNo w'.
An exact proof term for the current goal is HR w' Hw'1.
We prove the intermediate claim Lxw': SNo (x * w').
An exact proof term for the current goal is SNo_mul_SNo x w' Hx Lw'.
Set w'' to be the term (1 + (v + - x) * w') * recip_SNo_pos v.
We prove the intermediate claim Lw'': w'' R.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 1) w' Hw'1 to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H9: w' SNo_recipaux x recip_SNo_pos k 1.
Apply famunionI ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 1) (ordsucc k) w'' (omega_ordsucc k Hk) to the current goal.
We will prove w'' SNo_recipaux x recip_SNo_pos (ordsucc k) 1.
rewrite the current goal using SNo_recipaux_S x recip_SNo_pos k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply binunionI2 to the current goal.
Apply SNo_recipauxset_I (SNo_recipaux x recip_SNo_pos k 1) x (SNoR x) recip_SNo_pos to the current goal.
We will prove w' SNo_recipaux x recip_SNo_pos k 1.
An exact proof term for the current goal is H9.
We will prove v SNoR x.
An exact proof term for the current goal is Hv.
Apply L11 v w w' Hv1 Hw1 Lw' LvS Lvpos H7 Lw'' to the current goal.
We will prove (- v + x) * w (- v + x) * w'.
Apply L11 v w w' Hv1 Hw1 Lw' LvS Lvpos H7 Lw'' to the current goal.
We will prove (- v + x) * w (- v + x) * w'.
Apply nonpos_mul_SNo_Le (- v + x) w w' (SNo_add_SNo (- v) x (SNo_minus_SNo v Hv1) Hx) to the current goal.
We will prove - v + x 0.
rewrite the current goal using add_SNo_com (- v) x (SNo_minus_SNo v Hv1) Hx (from left to right).
We will prove x + - v 0.
Apply add_SNo_minus_Le2 0 (- v) x SNo_0 (SNo_minus_SNo v Hv1) Hx to the current goal.
rewrite the current goal using minus_SNo_invol v Hv1 (from left to right).
We will prove x 0 + v.
rewrite the current goal using add_SNo_0L v Hv1 (from left to right).
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hv3.
An exact proof term for the current goal is Hw1.
An exact proof term for the current goal is Lw'.
An exact proof term for the current goal is Hw'2.
Theorem. (SNo_recip_SNo_pos) The following is provable:
∀x, SNo x0 < xSNo (recip_SNo_pos x)
Proof:
Let x be given.
Assume Hx Hxpos.
Apply recip_SNo_pos_prop1 x Hx Hxpos to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Theorem. (recip_SNo_pos_invR) The following is provable:
∀x, SNo x0 < xx * recip_SNo_pos x = 1
Proof:
Let x be given.
Assume Hx Hxpos.
Apply recip_SNo_pos_prop1 x Hx Hxpos to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
Theorem. (recip_SNo_pos_is_pos) The following is provable:
∀x, SNo x0 < x0 < recip_SNo_pos x
Proof:
Let x be given.
Assume Hx Hxpos.
We prove the intermediate claim Lrx: SNo (recip_SNo_pos x).
An exact proof term for the current goal is SNo_recip_SNo_pos x Hx Hxpos.
Apply SNoLt_trichotomy_or_impred (recip_SNo_pos x) 0 Lrx SNo_0 to the current goal.
Assume H1: recip_SNo_pos x < 0.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLt_tra 0 1 0 SNo_0 SNo_1 SNo_0 SNoLt_0_1 to the current goal.
We will prove 1 < 0.
rewrite the current goal using recip_SNo_pos_invR x Hx Hxpos (from right to left).
We will prove x * recip_SNo_pos x < 0.
An exact proof term for the current goal is mul_SNo_pos_neg x (recip_SNo_pos x) Hx Lrx Hxpos H1.
Assume H1: recip_SNo_pos x = 0.
We will prove False.
Apply neq_1_0 to the current goal.
We will prove 1 = 0.
rewrite the current goal using recip_SNo_pos_invR x Hx Hxpos (from right to left).
We will prove x * recip_SNo_pos x = 0.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is mul_SNo_zeroR x Hx.
Assume H1.
An exact proof term for the current goal is H1.
Theorem. (recip_SNo_pos_invol) The following is provable:
∀x, SNo x0 < xrecip_SNo_pos (recip_SNo_pos x) = x
Proof:
Let x be given.
Assume Hx Hxpos.
We prove the intermediate claim Lrx: SNo (recip_SNo_pos x).
An exact proof term for the current goal is SNo_recip_SNo_pos x Hx Hxpos.
We prove the intermediate claim Lrxpos: 0 < recip_SNo_pos x.
An exact proof term for the current goal is recip_SNo_pos_is_pos x Hx Hxpos.
We prove the intermediate claim Lrrx: SNo (recip_SNo_pos (recip_SNo_pos x)).
An exact proof term for the current goal is SNo_recip_SNo_pos (recip_SNo_pos x) Lrx Lrxpos.
We prove the intermediate claim Lrxn0: recip_SNo_pos x 0.
Assume Hrx0: recip_SNo_pos x = 0.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
rewrite the current goal using Hrx0 (from right to left) at position 2.
An exact proof term for the current goal is Lrxpos.
We will prove recip_SNo_pos (recip_SNo_pos x) = x.
Apply mul_SNo_nonzero_cancel (recip_SNo_pos x) (recip_SNo_pos (recip_SNo_pos x)) x Lrx Lrxn0 Lrrx Hx to the current goal.
rewrite the current goal using mul_SNo_com (recip_SNo_pos x) x Lrx Hx (from left to right).
rewrite the current goal using recip_SNo_pos_invR x Hx Hxpos (from left to right).
An exact proof term for the current goal is recip_SNo_pos_invR (recip_SNo_pos x) Lrx Lrxpos.
Theorem. (recip_SNo_pos_eps_) The following is provable:
∀n, nat_p nrecip_SNo_pos (eps_ n) = 2 ^ n
Proof:
Let n be given.
Assume Hn.
We prove the intermediate claim Len1: SNo (eps_ n).
An exact proof term for the current goal is SNo_eps_ n (nat_p_omega n Hn).
We prove the intermediate claim Len2: 0 < eps_ n.
An exact proof term for the current goal is SNo_eps_pos n (nat_p_omega n Hn).
We prove the intermediate claim Len3: eps_ n 0.
Assume H1: eps_ n = 0.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
rewrite the current goal using H1 (from right to left) at position 2.
We will prove 0 < eps_ n.
An exact proof term for the current goal is Len2.
Apply mul_SNo_nonzero_cancel (eps_ n) (recip_SNo_pos (eps_ n)) (2 ^ n) Len1 Len3 (SNo_recip_SNo_pos (eps_ n) Len1 Len2) (SNo_exp_SNo_nat 2 SNo_2 n Hn) to the current goal.
We will prove eps_ n * recip_SNo_pos (eps_ n) = eps_ n * 2 ^ n.
rewrite the current goal using mul_SNo_eps_power_2 n Hn (from left to right).
We will prove eps_ n * recip_SNo_pos (eps_ n) = 1.
An exact proof term for the current goal is recip_SNo_pos_invR (eps_ n) Len1 Len2.
Theorem. (recip_SNo_pos_pow_2) The following is provable:
∀n, nat_p nrecip_SNo_pos (2 ^ n) = eps_ n
Proof:
Let n be given.
Assume Hn.
rewrite the current goal using recip_SNo_pos_eps_ n Hn (from right to left).
An exact proof term for the current goal is recip_SNo_pos_invol (eps_ n) (SNo_eps_ n (nat_p_omega n Hn)) (SNo_eps_pos n (nat_p_omega n Hn)).
Theorem. (recip_SNo_pos_2) The following is provable:
Proof:
rewrite the current goal using exp_SNo_nat_1 2 SNo_2 (from right to left).
An exact proof term for the current goal is recip_SNo_pos_pow_2 1 nat_1.
End of Section recip_SNo_pos
Definition. We define recip_SNo to be λx ⇒ if 0 < x then recip_SNo_pos x else if x < 0 then - recip_SNo_pos (- x) else 0 of type setset.
Theorem. (recip_SNo_poscase) The following is provable:
∀x, 0 < xrecip_SNo x = recip_SNo_pos x
Proof:
Let x be given.
Assume Hxpos.
An exact proof term for the current goal is If_i_1 (0 < x) (recip_SNo_pos x) (if x < 0 then - recip_SNo_pos (- x) else 0) Hxpos.
Theorem. (recip_SNo_negcase) The following is provable:
∀x, SNo xx < 0recip_SNo x = - recip_SNo_pos (- x)
Proof:
Let x be given.
Assume Hx Hxneg.
We prove the intermediate claim L1: ¬ (0 < x).
Assume H1.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
An exact proof term for the current goal is SNoLt_tra 0 x 0 SNo_0 Hx SNo_0 H1 Hxneg.
rewrite the current goal using If_i_0 (0 < x) (recip_SNo_pos x) (if x < 0 then - recip_SNo_pos (- x) else 0) L1 (from left to right).
An exact proof term for the current goal is If_i_1 (x < 0) (- recip_SNo_pos (- x)) 0 Hxneg.
Theorem. (recip_SNo_0) The following is provable:
Proof:
rewrite the current goal using If_i_0 (0 < 0) (recip_SNo_pos 0) (if 0 < 0 then - recip_SNo_pos (- 0) else 0) (SNoLt_irref 0) (from left to right).
We will prove (if 0 < 0 then - recip_SNo_pos (- 0) else 0) = 0.
An exact proof term for the current goal is If_i_0 (0 < 0) (- recip_SNo_pos (- 0)) 0 (SNoLt_irref 0).
Theorem. (SNo_recip_SNo) The following is provable:
∀x, SNo xSNo (recip_SNo x)
Proof:
Let x be given.
Assume Hx.
Apply SNoLt_trichotomy_or_impred x 0 Hx SNo_0 to the current goal.
Assume H1: x < 0.
rewrite the current goal using recip_SNo_negcase x Hx H1 (from left to right).
We will prove SNo (- recip_SNo_pos (- x)).
Apply SNo_minus_SNo to the current goal.
We will prove SNo (recip_SNo_pos (- x)).
Apply SNo_recip_SNo_pos to the current goal.
An exact proof term for the current goal is SNo_minus_SNo x Hx.
We will prove 0 < - x.
Apply minus_SNo_Lt_contra2 x 0 Hx SNo_0 to the current goal.
We will prove x < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
We will prove x < 0.
An exact proof term for the current goal is H1.
Assume H1: x = 0.
rewrite the current goal using H1 (from left to right).
rewrite the current goal using recip_SNo_0 (from left to right).
An exact proof term for the current goal is SNo_0.
Assume H1: 0 < x.
rewrite the current goal using recip_SNo_poscase x H1 (from left to right).
An exact proof term for the current goal is SNo_recip_SNo_pos x Hx H1.
Theorem. (recip_SNo_invR) The following is provable:
∀x, SNo xx 0x * recip_SNo x = 1
Proof:
Let x be given.
Assume Hx Hx0.
Apply SNoLt_trichotomy_or_impred x 0 Hx SNo_0 to the current goal.
Assume H1: x < 0.
rewrite the current goal using recip_SNo_negcase x Hx H1 (from left to right).
We prove the intermediate claim L1: 0 < - x.
Apply minus_SNo_Lt_contra2 x 0 Hx SNo_0 to the current goal.
We will prove x < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
We will prove x < 0.
An exact proof term for the current goal is H1.
We will prove x * (- recip_SNo_pos (- x)) = 1.
rewrite the current goal using mul_SNo_minus_distrR x (recip_SNo_pos (- x)) Hx (SNo_recip_SNo_pos (- x) (SNo_minus_SNo x Hx) L1) (from left to right).
We will prove - (x * recip_SNo_pos (- x)) = 1.
rewrite the current goal using mul_SNo_minus_distrL x (recip_SNo_pos (- x)) Hx (SNo_recip_SNo_pos (- x) (SNo_minus_SNo x Hx) L1) (from right to left).
We will prove (- x) * recip_SNo_pos (- x) = 1.
An exact proof term for the current goal is recip_SNo_pos_invR (- x) (SNo_minus_SNo x Hx) L1.
Assume H1: x = 0.
We will prove False.
An exact proof term for the current goal is Hx0 H1.
Assume H1: 0 < x.
rewrite the current goal using recip_SNo_poscase x H1 (from left to right).
An exact proof term for the current goal is recip_SNo_pos_invR x Hx H1.
Theorem. (recip_SNo_invL) The following is provable:
∀x, SNo xx 0recip_SNo x * x = 1
Proof:
Let x be given.
Assume Hx Hx0.
rewrite the current goal using mul_SNo_com (recip_SNo x) x (SNo_recip_SNo x Hx) Hx (from left to right).
We will prove x * recip_SNo x = 1.
An exact proof term for the current goal is recip_SNo_invR x Hx Hx0.
Theorem. (mul_SNo_nonzero_cancel_L) The following is provable:
∀x y z, SNo xx 0SNo ySNo zx * y = x * zy = z
Proof:
Let x, y and z be given.
Assume Hx Hx0 Hy Hz.
Assume H1: x * y = x * z.
We will prove y = z.
rewrite the current goal using mul_SNo_oneL y Hy (from right to left).
rewrite the current goal using mul_SNo_oneL z Hz (from right to left).
We will prove 1 * y = 1 * z.
rewrite the current goal using recip_SNo_invL x Hx Hx0 (from right to left).
We will prove (recip_SNo x * x) * y = (recip_SNo x * x) * z.
rewrite the current goal using mul_SNo_assoc (recip_SNo x) x y (SNo_recip_SNo x Hx) Hx Hy (from right to left).
rewrite the current goal using mul_SNo_assoc (recip_SNo x) x z (SNo_recip_SNo x Hx) Hx Hz (from right to left).
We will prove recip_SNo x * (x * y) = recip_SNo x * (x * z).
Use f_equal.
An exact proof term for the current goal is H1.
Theorem. (recip_SNo_pow_2) The following is provable:
∀n, nat_p nrecip_SNo (2 ^ n) = eps_ n
Proof:
Let n be given.
Assume Hn.
We prove the intermediate claim L1: 0 < 2 ^ n.
An exact proof term for the current goal is exp_SNo_nat_pos 2 SNo_2 SNoLt_0_2 n Hn.
rewrite the current goal using recip_SNo_poscase (2 ^ n) L1 (from left to right).
An exact proof term for the current goal is recip_SNo_pos_pow_2 n Hn.
Theorem. (recip_SNo_of_pos_is_pos) The following is provable:
∀x, SNo x0 < x0 < recip_SNo x
Proof:
Let x be given.
Assume Hx Hxpos.
rewrite the current goal using recip_SNo_poscase x Hxpos (from left to right).
An exact proof term for the current goal is recip_SNo_pos_is_pos x Hx Hxpos.
Definition. We define div_SNo to be λx y ⇒ x * recip_SNo y of type setsetset.
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term div_SNo.
Theorem. (SNo_div_SNo) The following is provable:
∀x y, SNo xSNo ySNo (x :/: y)
Proof:
Let x and y be given.
Assume Hx Hy.
We will prove SNo (x * recip_SNo y).
An exact proof term for the current goal is SNo_mul_SNo x (recip_SNo y) Hx (SNo_recip_SNo y Hy).
Theorem. (div_SNo_0_num) The following is provable:
∀x, SNo x0 :/: x = 0
Proof:
Let x be given.
Assume Hx.
An exact proof term for the current goal is mul_SNo_zeroL (recip_SNo x) (SNo_recip_SNo x Hx).
Theorem. (div_SNo_0_denum) The following is provable:
∀x, SNo xx :/: 0 = 0
Proof:
Let x be given.
Assume Hx.
We will prove x * recip_SNo 0 = 0.
rewrite the current goal using recip_SNo_0 (from left to right).
An exact proof term for the current goal is mul_SNo_zeroR x Hx.
Theorem. (mul_div_SNo_invL) The following is provable:
∀x y, SNo xSNo yy 0(x :/: y) * y = x
Proof:
Let x and y be given.
Assume Hx Hy Hy0.
We will prove (x * recip_SNo y) * y = x.
rewrite the current goal using mul_SNo_assoc x (recip_SNo y) y Hx (SNo_recip_SNo y Hy) Hy (from right to left).
We will prove x * (recip_SNo y * y) = x.
rewrite the current goal using recip_SNo_invL y Hy Hy0 (from left to right).
We will prove x * 1 = x.
An exact proof term for the current goal is mul_SNo_oneR x Hx.
Theorem. (mul_div_SNo_invR) The following is provable:
∀x y, SNo xSNo yy 0y * (x :/: y) = x
Proof:
Let x and y be given.
Assume Hx Hy Hy0.
rewrite the current goal using mul_SNo_com y (x :/: y) Hy (SNo_div_SNo x y Hx Hy) (from left to right).
An exact proof term for the current goal is mul_div_SNo_invL x y Hx Hy Hy0.
Theorem. (mul_div_SNo_R) The following is provable:
∀x y z, SNo xSNo ySNo z(x :/: y) * z = (x * z) :/: y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
Apply xm (y = 0) to the current goal.
Assume H1: y = 0.
rewrite the current goal using H1 (from left to right).
rewrite the current goal using div_SNo_0_denum x Hx (from left to right).
rewrite the current goal using div_SNo_0_denum (x * z) (SNo_mul_SNo x z Hx Hz) (from left to right).
We will prove 0 * z = 0.
An exact proof term for the current goal is mul_SNo_zeroL z Hz.
Assume H1: y 0.
Apply mul_SNo_nonzero_cancel y ((x :/: y) * z) ((x * z) :/: y) Hy H1 (SNo_mul_SNo (x :/: y) z (SNo_div_SNo x y Hx Hy) Hz) (SNo_div_SNo (x * z) y (SNo_mul_SNo x z Hx Hz) Hy) to the current goal.
We will prove y * (x :/: y) * z = y * (x * z) :/: y.
rewrite the current goal using mul_div_SNo_invR (x * z) y (SNo_mul_SNo x z Hx Hz) Hy H1 (from left to right).
We will prove y * (x :/: y) * z = x * z.
rewrite the current goal using mul_SNo_assoc y (x :/: y) z Hy (SNo_div_SNo x y Hx Hy) Hz (from left to right).
We will prove (y * (x :/: y)) * z = x * z.
Use f_equal.
We will prove y * (x :/: y) = x.
An exact proof term for the current goal is mul_div_SNo_invR x y Hx Hy H1.
Theorem. (mul_div_SNo_L) The following is provable:
∀x y z, SNo xSNo ySNo zz * (x :/: y) = (z * x) :/: y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
Use transitivity with (x :/: y) * z, and (x * z) :/: y.
An exact proof term for the current goal is mul_SNo_com z (x :/: y) Hz (SNo_div_SNo x y Hx Hy).
An exact proof term for the current goal is mul_div_SNo_R x y z Hx Hy Hz.
Use f_equal.
An exact proof term for the current goal is mul_SNo_com x z Hx Hz.
Theorem. (div_mul_SNo_invL) The following is provable:
∀x y, SNo xSNo yy 0(x * y) :/: y = x
Proof:
Let x and y be given.
Assume Hx Hy Hy0.
rewrite the current goal using mul_div_SNo_R x y y Hx Hy Hy (from right to left).
We will prove (x :/: y) * y = x.
An exact proof term for the current goal is mul_div_SNo_invL x y Hx Hy Hy0.
Theorem. (div_div_SNo) The following is provable:
∀x y z, SNo xSNo ySNo z(x :/: y) :/: z = x :/: (y * z)
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
We prove the intermediate claim Lxdy: SNo (x :/: y).
An exact proof term for the current goal is SNo_div_SNo x y Hx Hy.
We prove the intermediate claim Lxdydz: SNo ((x :/: y) :/: z).
An exact proof term for the current goal is SNo_div_SNo (x :/: y) z Lxdy Hz.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Hx Hy.
We prove the intermediate claim Lyz: SNo (y * z).
An exact proof term for the current goal is SNo_mul_SNo y z Hy Hz.
We prove the intermediate claim Lxdyz: SNo (x :/: (y * z)).
An exact proof term for the current goal is SNo_div_SNo x (y * z) Hx Lyz.
Apply xm (y = 0) to the current goal.
Assume Hy0: y = 0.
rewrite the current goal using Hy0 (from left to right).
We will prove (x :/: 0) :/: z = x :/: (0 * z).
rewrite the current goal using mul_SNo_zeroL z Hz (from left to right).
rewrite the current goal using div_SNo_0_denum x Hx (from left to right).
We will prove 0 :/: z = 0.
An exact proof term for the current goal is div_SNo_0_num z Hz.
Assume Hy0: y 0.
Apply xm (z = 0) to the current goal.
Assume Hz0: z = 0.
rewrite the current goal using Hz0 (from left to right).
We will prove (x :/: y) :/: 0 = x :/: (y * 0).
rewrite the current goal using mul_SNo_zeroR y Hy (from left to right).
We will prove (x :/: y) :/: 0 = x :/: 0.
rewrite the current goal using div_SNo_0_denum x Hx (from left to right).
An exact proof term for the current goal is div_SNo_0_denum (x :/: y) Lxdy.
Assume Hz0: z 0.
We prove the intermediate claim Lyz0: y * z 0.
Assume H1: y * z = 0.
Apply Hz0 to the current goal.
We will prove z = 0.
Apply mul_SNo_nonzero_cancel y z 0 Hy Hy0 Hz SNo_0 to the current goal.
We will prove y * z = y * 0.
rewrite the current goal using mul_SNo_zeroR y Hy (from left to right).
An exact proof term for the current goal is H1.
Apply mul_SNo_nonzero_cancel z ((x :/: y) :/: z) (x :/: (y * z)) Hz Hz0 Lxdydz Lxdyz to the current goal.
rewrite the current goal using mul_div_SNo_invR (x :/: y) z Lxdy Hz Hz0 (from left to right).
We will prove x :/: y = z * (x :/: (y * z)).
Apply mul_SNo_nonzero_cancel y (x :/: y) (z * (x :/: (y * z))) Hy Hy0 Lxdy (SNo_mul_SNo z (x :/: (y * z)) Hz Lxdyz) to the current goal.
rewrite the current goal using mul_div_SNo_invR x y Hx Hy Hy0 (from left to right).
We will prove x = y * z * (x :/: (y * z)).
rewrite the current goal using mul_SNo_assoc y z (x :/: (y * z)) Hy Hz Lxdyz (from left to right).
Use symmetry.
An exact proof term for the current goal is mul_div_SNo_invR x (y * z) Hx Lyz Lyz0.
Theorem. (mul_div_SNo_both) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w(x :/: y) * (z :/: w) = (x * z) :/: (y * w)
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
rewrite the current goal using mul_div_SNo_L z w (x :/: y) Hz Hw (SNo_div_SNo x y Hx Hy) (from left to right).
We will prove ((x :/: y) * z) :/: w = (x * z) :/: (y * w).
rewrite the current goal using mul_div_SNo_R x y z Hx Hy Hz (from left to right).
We will prove ((x * z) :/: y) :/: w = (x * z) :/: (y * w).
An exact proof term for the current goal is div_div_SNo (x * z) y w (SNo_mul_SNo x z Hx Hz) Hy Hw.
Theorem. (recip_SNo_pos_pos) The following is provable:
∀x, SNo x0 < x0 < recip_SNo_pos x
Proof:
Let x be given.
Assume Hx Hxpos.
Apply SNoLtLe_or 0 (recip_SNo_pos x) SNo_0 (SNo_recip_SNo_pos x Hx Hxpos) to the current goal.
Assume H1: 0 < recip_SNo_pos x.
An exact proof term for the current goal is H1.
Assume H1: recip_SNo_pos x 0.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLtLe_tra 0 1 0 SNo_0 SNo_1 SNo_0 SNoLt_0_1 to the current goal.
We will prove 1 0.
rewrite the current goal using recip_SNo_pos_invR x Hx Hxpos (from right to left).
We will prove x * recip_SNo_pos x 0.
rewrite the current goal using mul_SNo_zeroR x Hx (from right to left).
We will prove x * recip_SNo_pos x x * 0.
An exact proof term for the current goal is nonneg_mul_SNo_Le x (recip_SNo_pos x) 0 Hx (SNoLtLe 0 x Hxpos) (SNo_recip_SNo_pos x Hx Hxpos) SNo_0 H1.
Theorem. (div_SNo_pos_pos) The following is provable:
∀x y, SNo xSNo y0 < x0 < y0 < x :/: y
Proof:
Let x and y be given.
Assume Hx Hy Hxpos Hypos.
We will prove 0 < x * recip_SNo y.
Apply mul_SNo_pos_pos x (recip_SNo y) Hx (SNo_recip_SNo y Hy) Hxpos to the current goal.
We will prove 0 < recip_SNo y.
An exact proof term for the current goal is recip_SNo_of_pos_is_pos y Hy Hypos.
Theorem. (div_SNo_neg_pos) The following is provable:
∀x y, SNo xSNo yx < 00 < yx :/: y < 0
Proof:
Let x and y be given.
Assume Hx Hy Hxneg Hypos.
We will prove x * recip_SNo y < 0.
Apply mul_SNo_neg_pos x (recip_SNo y) Hx (SNo_recip_SNo y Hy) Hxneg to the current goal.
We will prove 0 < recip_SNo y.
An exact proof term for the current goal is recip_SNo_of_pos_is_pos y Hy Hypos.
Theorem. (div_SNo_pos_LtL) The following is provable:
∀x y z, SNo xSNo ySNo z0 < yx < z * yx :/: y < z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz Hypos.
Assume H1: x < z * y.
We will prove x :/: y < z.
rewrite the current goal using mul_SNo_oneR z Hz (from right to left).
We will prove x :/: y < z * 1.
We prove the intermediate claim Ly0: y 0.
Assume H2: y = 0.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using H2 (from left to right) at position 1.
An exact proof term for the current goal is Hypos.
rewrite the current goal using recip_SNo_invR y Hy Ly0 (from right to left).
We will prove x * recip_SNo y < z * y * recip_SNo y.
rewrite the current goal using mul_SNo_assoc z y (recip_SNo y) Hz Hy (SNo_recip_SNo y Hy) (from left to right).
We will prove x * recip_SNo y < (z * y) * recip_SNo y.
Apply pos_mul_SNo_Lt' x (z * y) (recip_SNo y) Hx (SNo_mul_SNo z y Hz Hy) (SNo_recip_SNo y Hy) to the current goal.
We will prove 0 < recip_SNo y.
An exact proof term for the current goal is recip_SNo_of_pos_is_pos y Hy Hypos.
We will prove x < z * y.
An exact proof term for the current goal is H1.
Theorem. (div_SNo_pos_LtR) The following is provable:
∀x y z, SNo xSNo ySNo z0 < yz * y < xz < x :/: y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz Hypos.
Assume H1: z * y < x.
We will prove z < x :/: y.
rewrite the current goal using mul_SNo_oneR z Hz (from right to left).
We will prove z * 1 < x :/: y.
We prove the intermediate claim Ly0: y 0.
Assume H2: y = 0.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using H2 (from left to right) at position 1.
An exact proof term for the current goal is Hypos.
rewrite the current goal using recip_SNo_invR y Hy Ly0 (from right to left).
We will prove z * y * recip_SNo y < x * recip_SNo y.
rewrite the current goal using mul_SNo_assoc z y (recip_SNo y) Hz Hy (SNo_recip_SNo y Hy) (from left to right).
We will prove (z * y) * recip_SNo y < x * recip_SNo y.
Apply pos_mul_SNo_Lt' (z * y) x (recip_SNo y) (SNo_mul_SNo z y Hz Hy) Hx (SNo_recip_SNo y Hy) to the current goal.
We will prove 0 < recip_SNo y.
An exact proof term for the current goal is recip_SNo_of_pos_is_pos y Hy Hypos.
We will prove z * y < x.
An exact proof term for the current goal is H1.
Theorem. (div_SNo_pos_LtL') The following is provable:
∀x y z, SNo xSNo ySNo z0 < yx :/: y < zx < z * y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz Hypos.
Assume H1: x :/: y < z.
We will prove x < z * y.
rewrite the current goal using mul_SNo_oneR x Hx (from right to left).
We will prove x * 1 < z * y.
We prove the intermediate claim Ly0: y 0.
Assume H2: y = 0.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using H2 (from left to right) at position 1.
An exact proof term for the current goal is Hypos.
rewrite the current goal using recip_SNo_invL y Hy Ly0 (from right to left).
We will prove x * (recip_SNo y * y) < z * y.
rewrite the current goal using mul_SNo_assoc x (recip_SNo y) y Hx (SNo_recip_SNo y Hy) Hy (from left to right).
We will prove (x * recip_SNo y) * y < z * y.
We will prove (x :/: y) * y < z * y.
An exact proof term for the current goal is pos_mul_SNo_Lt' (x :/: y) z y (SNo_div_SNo x y Hx Hy) Hz Hy Hypos H1.
Theorem. (div_SNo_pos_LtR') The following is provable:
∀x y z, SNo xSNo ySNo z0 < yz < x :/: yz * y < x
Proof:
Let x, y and z be given.
Assume Hx Hy Hz Hypos.
Assume H1: z < x :/: y.
We will prove z * y < x.
rewrite the current goal using mul_SNo_oneR x Hx (from right to left).
We will prove z * y < x * 1.
We prove the intermediate claim Ly0: y 0.
Assume H2: y = 0.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using H2 (from left to right) at position 1.
An exact proof term for the current goal is Hypos.
rewrite the current goal using recip_SNo_invL y Hy Ly0 (from right to left).
We will prove z * y < x * (recip_SNo y * y).
rewrite the current goal using mul_SNo_assoc x (recip_SNo y) y Hx (SNo_recip_SNo y Hy) Hy (from left to right).
We will prove z * y < (x * recip_SNo y) * y.
We will prove z * y < (x :/: y) * y.
An exact proof term for the current goal is pos_mul_SNo_Lt' z (x :/: y) y Hz (SNo_div_SNo x y Hx Hy) Hy Hypos H1.
Theorem. (mul_div_SNo_nonzero_eq) The following is provable:
∀x y z, SNo xSNo ySNo zy 0x = y * zx :/: y = z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz Hy0 H1.
Apply mul_SNo_nonzero_cancel y (x :/: y) z Hy Hy0 (SNo_div_SNo x y Hx Hy) Hz to the current goal.
We will prove y * (x :/: y) = y * z.
rewrite the current goal using mul_div_SNo_invR x y Hx Hy Hy0 (from left to right).
An exact proof term for the current goal is H1.
End of Section SurrealDiv
Beginning of Section Reals
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term div_SNo.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Proof:
Let x be given.
Assume Hx.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume Hx1 Hx2 Hx3 Hx4.
Let k be given.
Assume Hk.
We will prove qSNoS_ ω, q < x x < q + eps_ k.
We prove the intermediate claim Lk1: SNo (eps_ (ordsucc k)).
An exact proof term for the current goal is SNo_eps_ (ordsucc k) (omega_ordsucc k Hk).
We use x + - eps_ (ordsucc k) to witness the existential quantifier.
Apply andI to the current goal.
We will prove x + - eps_ (ordsucc k) SNoS_ ω.
An exact proof term for the current goal is add_SNo_SNoS_omega x Hx (- eps_ (ordsucc k)) (minus_SNo_SNoS_omega (eps_ (ordsucc k)) (SNo_eps_SNoS_omega (ordsucc k) (omega_ordsucc k Hk))).
Apply andI to the current goal.
We will prove x + - eps_ (ordsucc k) < x.
Apply add_SNo_minus_Lt1b x (eps_ (ordsucc k)) x Hx3 Lk1 Hx3 to the current goal.
We will prove x < x + eps_ (ordsucc k).
An exact proof term for the current goal is add_SNo_eps_Lt x Hx3 (ordsucc k) (omega_ordsucc k Hk).
We will prove x < (x + - eps_ (ordsucc k)) + eps_ k.
rewrite the current goal using eps_ordsucc_half_add k (omega_nat_p k Hk) (from right to left).
We will prove x < (x + - eps_ (ordsucc k)) + (eps_ (ordsucc k) + eps_ (ordsucc k)).
rewrite the current goal using add_SNo_com_4_inner_mid x (- eps_ (ordsucc k)) (eps_ (ordsucc k)) (eps_ (ordsucc k)) Hx3 (SNo_minus_SNo (eps_ (ordsucc k)) Lk1) Lk1 Lk1 (from left to right).
We will prove x < (x + eps_ (ordsucc k)) + (- eps_ (ordsucc k) + eps_ (ordsucc k)).
rewrite the current goal using add_SNo_minus_SNo_linv (eps_ (ordsucc k)) Lk1 (from left to right).
rewrite the current goal using add_SNo_0R (x + eps_ (ordsucc k)) (SNo_add_SNo x (eps_ (ordsucc k)) Hx3 Lk1) (from left to right).
We will prove x < x + eps_ (ordsucc k).
An exact proof term for the current goal is add_SNo_eps_Lt x Hx3 (ordsucc k) (omega_ordsucc k Hk).
Proof:
Let x be given.
Assume Hx1 Hx2.
Apply SNoS_E2 (ordsucc ω) ordsucc_omega_ordinal x Hx1 to the current goal.
Assume Hx1a Hx1b Hx1c Hx1d.
Apply SNoLtE x ω Hx1c SNo_omega Hx2 to the current goal.
Let z be given.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev x SNoLev ω.
Assume Hz3: SNoEq_ (SNoLev z) z x.
Assume Hz4: SNoEq_ (SNoLev z) z ω.
Assume Hz5: x < z.
Assume Hz6: z < ω.
Assume Hz7: SNoLev z x.
Assume Hz8: SNoLev z ω.
We prove the intermediate claim Lz1: ordinal (SNoLev z).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hz1.
We prove the intermediate claim Lz2: SNo (SNoLev z).
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is Lz1.
We use (SNoLev z) to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz8.
We will prove x < SNoLev z.
Apply SNoLtLe_tra x z (SNoLev z) Hx1c Hz1 Lz2 Hz5 to the current goal.
We will prove z SNoLev z.
Apply ordinal_SNoLev_max_2 (SNoLev z) Lz1 z Hz1 to the current goal.
We will prove SNoLev z ordsucc (SNoLev z).
Apply ordsuccI2 to the current goal.
Assume H1: SNoLev x SNoLev ω.
Assume H2: SNoEq_ (SNoLev x) x ω.
Assume H3: SNoLev x ω.
We prove the intermediate claim Lx1: ordinal (SNoLev x).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hx1c.
We prove the intermediate claim Lx2: ordinal (ordsucc (SNoLev x)).
Apply ordinal_ordsucc to the current goal.
An exact proof term for the current goal is Lx1.
We use (ordsucc (SNoLev x)) to witness the existential quantifier.
Apply andI to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is H3.
We will prove x < ordsucc (SNoLev x).
Apply ordinal_SNoLev_max (ordsucc (SNoLev x)) Lx2 x Hx1c to the current goal.
We will prove SNoLev x ordsucc (SNoLev x).
Apply ordsuccI2 to the current goal.
rewrite the current goal using ordinal_SNoLev ω omega_ordinal (from left to right).
Assume H1: ω SNoLev x.
We will prove False.
Apply ordsuccE ω (SNoLev x) Hx1a to the current goal.
Assume H2: SNoLev x ω.
An exact proof term for the current goal is In_no2cycle (SNoLev x) ω H2 H1.
Assume H2: SNoLev x = ω.
Apply In_irref ω to the current goal.
rewrite the current goal using H2 (from right to left) at position 2.
An exact proof term for the current goal is H1.
Proof:
Let x be given.
Assume Hx1 Hx2.
Apply SNoS_E2 (ordsucc ω) ordsucc_omega_ordinal x Hx1 to the current goal.
Assume Hx1a Hx1b Hx1c Hx1d.
We prove the intermediate claim Lx1: - x SNoS_ (ordsucc ω).
An exact proof term for the current goal is minus_SNo_SNoS_ (ordsucc ω) ordsucc_omega_ordinal x Hx1.
We prove the intermediate claim Lx2: - x < ω.
Apply minus_SNo_Lt_contra1 ω x SNo_omega Hx1c to the current goal.
We will prove - ω < x.
An exact proof term for the current goal is Hx2.
Apply SNoS_ordsucc_omega_bdd_above (- x) Lx1 Lx2 to the current goal.
Let N be given.
Assume HN.
Apply HN to the current goal.
Assume HN1: N ω.
Assume HN2: - x < N.
We use N to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is HN1.
We will prove - N < x.
Apply minus_SNo_Lt_contra1 x N Hx1c (omega_SNo N HN1) to the current goal.
We will prove - x < N.
An exact proof term for the current goal is HN2.
Proof:
Let x be given.
Assume Hx1 Hx2 Hx3.
Apply SNoS_E2 (ordsucc ω) ordsucc_omega_ordinal x Hx1 to the current goal.
Assume Hx1a Hx1b Hx1c Hx1d.
Apply dneg to the current goal.
Assume HC: ¬ (kω, qSNoS_ ω, q < x x < q + eps_ k).
We prove the intermediate claim L1: x SNoS_ ω.
Assume H1: x SNoS_ ω.
Apply HC to the current goal.
An exact proof term for the current goal is SNoS_omega_drat_intvl x H1.
We prove the intermediate claim L2: ∀k, nat_p kqSNoS_ ω, q < x x < q + eps_ k.
Apply nat_ind to the current goal.
We will prove qSNoS_ ω, q < x x < q + eps_ 0.
rewrite the current goal using eps_0_1 (from left to right).
We will prove qSNoS_ ω, q < x x < q + 1.
We prove the intermediate claim L1a: ∀N, nat_p N- N < xx < NqSNoS_ ω, q < x x < q + 1.
Apply nat_ind to the current goal.
rewrite the current goal using minus_SNo_0 (from left to right).
Assume H1: 0 < x.
Assume H2: x < 0.
We will prove False.
Apply SNoLt_irref x to the current goal.
An exact proof term for the current goal is SNoLt_tra x 0 x Hx1c SNo_0 Hx1c H2 H1.
Let N be given.
Assume HN.
Assume IHN: - N < xx < NqSNoS_ ω, q < x x < q + 1.
Assume H1: - ordsucc N < x.
Assume H2: x < ordsucc N.
We will prove qSNoS_ ω, q < x x < q + 1.
We prove the intermediate claim LN1: SNo N.
An exact proof term for the current goal is nat_p_SNo N HN.
We prove the intermediate claim LN2: SNo (- N).
An exact proof term for the current goal is SNo_minus_SNo N LN1.
We prove the intermediate claim LN3: N SNoS_ ω.
Apply omega_SNoS_omega to the current goal.
An exact proof term for the current goal is nat_p_omega N HN.
Apply SNoLt_trichotomy_or_impred x N Hx1c LN1 to the current goal.
Assume H3: x < N.
Apply SNoLt_trichotomy_or_impred x (- N) Hx1c LN2 to the current goal.
Assume H4: x < - N.
We use (- ordsucc N) to witness the existential quantifier.
Apply andI to the current goal.
We will prove - ordsucc N SNoS_ ω.
Apply minus_SNo_SNoS_omega to the current goal.
We will prove ordsucc N SNoS_ ω.
Apply omega_SNoS_omega to the current goal.
Apply omega_ordsucc to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is HN.
Apply andI to the current goal.
We will prove - ordsucc N < x.
An exact proof term for the current goal is H1.
We will prove x < - ordsucc N + 1.
rewrite the current goal using add_SNo_1_ordsucc N (nat_p_omega N HN) (from right to left).
We will prove x < - (N + 1) + 1.
rewrite the current goal using minus_add_SNo_distr N 1 LN1 SNo_1 (from left to right).
We will prove x < (- N + - 1) + 1.
rewrite the current goal using add_SNo_minus_R2' (- N) 1 LN2 SNo_1 (from left to right).
We will prove x < - N.
An exact proof term for the current goal is H4.
Assume H4: x = - N.
We will prove False.
Apply L1 to the current goal.
We will prove x SNoS_ ω.
rewrite the current goal using H4 (from left to right).
Apply minus_SNo_SNoS_omega to the current goal.
We will prove N SNoS_ ω.
An exact proof term for the current goal is LN3.
Assume H4: - N < x.
An exact proof term for the current goal is IHN H4 H3.
Assume H3: x = N.
We will prove False.
Apply L1 to the current goal.
We will prove x SNoS_ ω.
rewrite the current goal using H3 (from left to right).
We will prove N SNoS_ ω.
An exact proof term for the current goal is LN3.
Assume H3: N < x.
We use N to witness the existential quantifier.
Apply andI to the current goal.
We will prove N SNoS_ ω.
An exact proof term for the current goal is LN3.
Apply andI to the current goal.
We will prove N < x.
An exact proof term for the current goal is H3.
We will prove x < N + 1.
rewrite the current goal using add_SNo_1_ordsucc N (nat_p_omega N HN) (from left to right).
We will prove x < ordsucc N.
An exact proof term for the current goal is H2.
Apply SNoS_ordsucc_omega_bdd_above x Hx1 Hx3 to the current goal.
Let N be given.
Assume HN.
Apply HN to the current goal.
Assume HN1: N ω.
Assume HN2: x < N.
Apply SNoS_ordsucc_omega_bdd_below x Hx1 Hx2 to the current goal.
Let N' be given.
Assume HN'.
Apply HN' to the current goal.
Assume HN'1: N' ω.
Assume HN'2: - N' < x.
Apply SNoLt_trichotomy_or_impred N N' (omega_SNo N HN1) (omega_SNo N' HN'1) to the current goal.
Assume H1: N < N'.
Apply L1a N' (omega_nat_p N' HN'1) HN'2 to the current goal.
We will prove x < N'.
An exact proof term for the current goal is SNoLt_tra x N N' Hx1c (omega_SNo N HN1) (omega_SNo N' HN'1) HN2 H1.
Assume H1: N = N'.
Apply L1a N' (omega_nat_p N' HN'1) HN'2 to the current goal.
We will prove x < N'.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is HN2.
Assume H1: N' < N.
Apply L1a N (omega_nat_p N HN1) to the current goal.
We will prove - N < x.
Apply SNoLt_tra (- N) (- N') x (SNo_minus_SNo N (omega_SNo N HN1)) (SNo_minus_SNo N' (omega_SNo N' HN'1)) Hx1c to the current goal.
We will prove - N < - N'.
Apply minus_SNo_Lt_contra N' N (omega_SNo N' HN'1) (omega_SNo N HN1) to the current goal.
An exact proof term for the current goal is H1.
We will prove - N' < x.
An exact proof term for the current goal is HN'2.
We will prove x < N.
An exact proof term for the current goal is HN2.
Let k be given.
Assume Hk.
Assume IHk.
Apply IHk to the current goal.
Let q be given.
Assume H.
Apply H to the current goal.
Assume Hq1: q SNoS_ ω.
Assume H.
Apply H to the current goal.
Assume Hq2: q < x.
Assume Hq3: x < q + eps_ k.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
We will prove qSNoS_ ω, q < x x < q + eps_ (ordsucc k).
Apply SNoLt_trichotomy_or_impred x (q + eps_ (ordsucc k)) Hx1c (SNo_add_SNo q (eps_ (ordsucc k)) Hq1c (SNo_eps_ (ordsucc k) (omega_ordsucc k (nat_p_omega k Hk)))) to the current goal.
Assume H1: x < q + eps_ (ordsucc k).
We use q to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hq1.
Apply andI to the current goal.
An exact proof term for the current goal is Hq2.
An exact proof term for the current goal is H1.
Assume H1: x = q + eps_ (ordsucc k).
We will prove False.
Apply L1 to the current goal.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is add_SNo_SNoS_omega q Hq1 (eps_ (ordsucc k)) (SNo_eps_SNoS_omega (ordsucc k) (omega_ordsucc k (nat_p_omega k Hk))).
Assume H1: q + eps_ (ordsucc k) < x.
We use (q + eps_ (ordsucc k)) to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is add_SNo_SNoS_omega q Hq1 (eps_ (ordsucc k)) (SNo_eps_SNoS_omega (ordsucc k) (omega_ordsucc k (nat_p_omega k Hk))).
Apply andI to the current goal.
An exact proof term for the current goal is H1.
We will prove x < (q + eps_ (ordsucc k)) + eps_ (ordsucc k).
rewrite the current goal using add_SNo_assoc q (eps_ (ordsucc k)) (eps_ (ordsucc k)) Hq1c (SNo_eps_ (ordsucc k) (omega_ordsucc k (nat_p_omega k Hk))) (SNo_eps_ (ordsucc k) (omega_ordsucc k (nat_p_omega k Hk))) (from right to left).
We will prove x < q + (eps_ (ordsucc k) + eps_ (ordsucc k)).
rewrite the current goal using eps_ordsucc_half_add k Hk (from left to right).
We will prove x < q + eps_ k.
An exact proof term for the current goal is Hq3.
Apply HC to the current goal.
Let k be given.
Assume Hk.
An exact proof term for the current goal is L2 k (omega_nat_p k Hk).
Definition. We define real to be {xSNoS_ (ordsucc ω)|x ω x - ω (qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)} of type set.
Theorem. (real_I) The following is provable:
xSNoS_ (ordsucc ω), x ωx - ω(qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)x real
Proof:
Let x be given.
Assume Hx H1 H2 H3.
We will prove x {xSNoS_ (ordsucc ω)|x ω x - ω (qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)}.
Apply SepI to the current goal.
An exact proof term for the current goal is Hx.
We will prove x ω x - ω (qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x).
Apply and3I to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
An exact proof term for the current goal is H3.
Theorem. (real_E) The following is provable:
xreal, ∀p : prop, (SNo xSNoLev x ordsucc ωx SNoS_ (ordsucc ω)- ω < xx < ω(qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)(kω, qSNoS_ ω, q < x x < q + eps_ k)p)p
Proof:
Let x be given.
Assume Hx.
Let p be given.
Assume Hp.
Apply SepE (SNoS_ (ordsucc ω)) (λx ⇒ x ω x - ω (qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)) x Hx to the current goal.
Assume H1 H2.
Apply H2 to the current goal.
Assume H2.
Apply H2 to the current goal.
Assume H2: x ω.
Assume H3: x - ω.
Assume H4.
Apply SNoS_E2 (ordsucc ω) ordsucc_omega_ordinal x H1 to the current goal.
Assume H1a H1b H1c H1d.
We prove the intermediate claim L1: x < ω.
We prove the intermediate claim L1a: x ω.
Apply ordinal_SNoLev_max_2 ω omega_ordinal x H1c to the current goal.
We will prove SNoLev x ordsucc ω.
An exact proof term for the current goal is H1a.
Apply SNoLeE x ω H1c SNo_omega L1a to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: x = ω.
We will prove False.
An exact proof term for the current goal is H2 H.
We prove the intermediate claim L2: - ω < x.
We prove the intermediate claim L2a: - ω x.
Apply mordinal_SNoLev_min_2 ω omega_ordinal x H1c to the current goal.
We will prove SNoLev x ordsucc ω.
An exact proof term for the current goal is H1a.
Apply SNoLeE (- ω) x (SNo_minus_SNo ω SNo_omega) H1c L2a to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: - ω = x.
We will prove False.
Apply H3 to the current goal.
Use symmetry.
An exact proof term for the current goal is H.
We prove the intermediate claim L3: kω, qSNoS_ ω, q < x x < q + eps_ k.
An exact proof term for the current goal is SNoS_ordsucc_omega_bdd_drat_intvl x H1 L2 L1.
An exact proof term for the current goal is Hp H1c H1a H1 L2 L1 H4 L3.
Theorem. (real_SNo) The following is provable:
Proof:
Let x be given.
Assume Hx.
Apply real_E x Hx to the current goal.
Assume Hx1 _ _ _ _ _ _.
An exact proof term for the current goal is Hx1.
Proof:
Let x be given.
Assume Hx.
Apply real_E x Hx to the current goal.
Assume _ _ _ _ _ Hx6 _.
An exact proof term for the current goal is Hx6.
Theorem. (SNoS_omega_real) The following is provable:
Proof:
Let x be given.
Assume Hx: x SNoS_ ω.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume Hx1 Hx2 Hx3 Hx4.
Apply real_I to the current goal.
We will prove x SNoS_ (ordsucc ω).
An exact proof term for the current goal is Hx.
We will prove x ω.
Assume H1: x = ω.
Apply In_irref (SNoLev x) to the current goal.
We will prove SNoLev x SNoLev x.
rewrite the current goal using H1 (from left to right) at position 2.
We will prove SNoLev x SNoLev ω.
rewrite the current goal using ordinal_SNoLev ω omega_ordinal (from left to right).
An exact proof term for the current goal is Hx1.
We will prove x - ω.
Assume H1: x = - ω.
Apply In_irref (SNoLev x) to the current goal.
We will prove SNoLev x SNoLev x.
rewrite the current goal using H1 (from left to right) at position 2.
We will prove SNoLev x SNoLev (- ω).
rewrite the current goal using minus_SNo_Lev ω SNo_omega (from left to right).
We will prove SNoLev x SNoLev ω.
rewrite the current goal using ordinal_SNoLev ω omega_ordinal (from left to right).
An exact proof term for the current goal is Hx1.
Let q be given.
Assume Hq: q SNoS_ ω.
Assume H1: kω, abs_SNo (q + - x) < eps_ k.
Apply SNoS_E2 ω omega_ordinal q Hq to the current goal.
Assume Hq1 Hq2 Hq3 Hq4.
We will prove q = x.
Apply SNoLt_trichotomy_or_impred q x Hq3 Hx3 to the current goal.
Assume Hqx: q < x.
We will prove False.
We prove the intermediate claim L1: 0 < x + - q.
Apply SNoLt_minus_pos q x Hq3 Hx3 to the current goal.
An exact proof term for the current goal is Hqx.
We prove the intermediate claim L2: x + - q SNoS_ ω.
An exact proof term for the current goal is add_SNo_SNoS_omega x Hx (- q) (minus_SNo_SNoS_omega q Hq).
Apply SNoS_E2 ω omega_ordinal (x + - q) L2 to the current goal.
Assume H2: SNoLev (x + - q) ω.
Assume H3: ordinal (SNoLev (x + - q)).
Assume H4: SNo (x + - q).
Assume H5: SNo_ (SNoLev (x + - q)) (x + - q).
Apply SNoLt_irref (x + - q) to the current goal.
Apply SNoLt_tra (x + - q) (eps_ (SNoLev (x + - q))) (x + - q) H4 (SNo_eps_ (SNoLev (x + - q)) H2) H4 to the current goal.
We will prove x + - q < eps_ (SNoLev (x + - q)).
We prove the intermediate claim L3: abs_SNo (q + - x) = x + - q.
rewrite the current goal using abs_SNo_dist_swap q x Hq3 Hx3 (from left to right).
An exact proof term for the current goal is pos_abs_SNo (x + - q) L1.
rewrite the current goal using L3 (from right to left) at position 1.
An exact proof term for the current goal is H1 (SNoLev (x + - q)) H2.
We will prove eps_ (SNoLev (x + - q)) < x + - q.
Apply SNo_pos_eps_Lt (SNoLev (x + - q)) (omega_nat_p (SNoLev (x + - q)) H2) (x + - q) to the current goal.
We will prove (x + - q) SNoS_ (ordsucc (SNoLev (x + - q))).
Apply SNoS_I (ordsucc (SNoLev (x + - q))) (ordinal_ordsucc (SNoLev (x + - q)) H3) (x + - q) (SNoLev (x + - q)) to the current goal.
Apply ordsuccI2 to the current goal.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is L1.
Assume Hqx: q = x.
An exact proof term for the current goal is Hqx.
Assume Hxq: x < q.
We will prove False.
We prove the intermediate claim L4: 0 < q + - x.
Apply SNoLt_minus_pos x q Hx3 Hq3 to the current goal.
An exact proof term for the current goal is Hxq.
We prove the intermediate claim L5: q + - x SNoS_ ω.
An exact proof term for the current goal is add_SNo_SNoS_omega q Hq (- x) (minus_SNo_SNoS_omega x Hx).
Apply SNoS_E2 ω omega_ordinal (q + - x) L5 to the current goal.
Assume H2: SNoLev (q + - x) ω.
Assume H3: ordinal (SNoLev (q + - x)).
Assume H4: SNo (q + - x).
Assume H5: SNo_ (SNoLev (q + - x)) (q + - x).
Apply SNoLt_irref (q + - x) to the current goal.
Apply SNoLt_tra (q + - x) (eps_ (SNoLev (q + - x))) (q + - x) H4 (SNo_eps_ (SNoLev (q + - x)) H2) H4 to the current goal.
We will prove q + - x < eps_ (SNoLev (q + - x)).
We prove the intermediate claim L6: abs_SNo (q + - x) = q + - x.
An exact proof term for the current goal is pos_abs_SNo (q + - x) L4.
rewrite the current goal using L6 (from right to left) at position 1.
An exact proof term for the current goal is H1 (SNoLev (q + - x)) H2.
We will prove eps_ (SNoLev (q + - x)) < q + - x.
Apply SNo_pos_eps_Lt (SNoLev (q + - x)) (omega_nat_p (SNoLev (q + - x)) H2) (q + - x) to the current goal.
We will prove (q + - x) SNoS_ (ordsucc (SNoLev (q + - x))).
Apply SNoS_I (ordsucc (SNoLev (q + - x))) (ordinal_ordsucc (SNoLev (q + - x)) H3) (q + - x) (SNoLev (q + - x)) to the current goal.
Apply ordsuccI2 to the current goal.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is L4.
Theorem. (real_0) The following is provable:
Proof:
An exact proof term for the current goal is SNoS_omega_real 0 (omega_SNoS_omega 0 (nat_p_omega 0 nat_0)).
Theorem. (real_1) The following is provable:
Proof:
An exact proof term for the current goal is SNoS_omega_real 1 (omega_SNoS_omega 1 (nat_p_omega 1 nat_1)).
Theorem. (SNoLev_In_real_SNoS_omega) The following is provable:
xreal, ∀w, SNo wSNoLev w SNoLev xw SNoS_ ω
Proof:
Let x be given.
Assume Hx.
Let w be given.
Assume Hw1 Hw2.
Apply real_E x Hx to the current goal.
Assume Hx1: SNo x.
Assume Hx2: SNoLev x ordsucc ω.
Assume _ _ _ _ _.
We prove the intermediate claim L1: SNoLev w ω.
Apply ordsuccE ω (SNoLev x) Hx2 to the current goal.
Assume H1: SNoLev x ω.
An exact proof term for the current goal is omega_TransSet (SNoLev x) H1 (SNoLev w) Hw2.
Assume H1: SNoLev x = ω.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hw2.
Apply SNoS_I ω omega_ordinal w (SNoLev w) L1 to the current goal.
We will prove SNo_ (SNoLev w) w.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hw1.
Theorem. (real_SNoCut_SNoS_omega) The following is provable:
L RSNoS_ ω, SNoCutP L RL 0R 0(wL, w'L, w < w')(zR, z'R, z' < z)SNoCut L R real
Proof:
Let L be given.
Assume HL.
Let R be given.
Assume HR.
Assume HLR.
Apply HLR to the current goal.
Assume H.
Apply H to the current goal.
Assume HLR1: wL, SNo w.
Assume HLR2: zR, SNo z.
Assume HLR3: wL, zR, w < z.
Assume HL0: L 0.
Assume HR0: R 0.
Assume HL1: wL, w'L, w < w'.
Assume HR1: zR, z'R, z' < z.
Set x to be the term SNoCut L R.
Apply SNoCutP_SNoCut_impred L R HLR to the current goal.
Assume H1: SNo x.
Assume H3: wL, w < x.
Assume H4: zR, x < z.
Assume H5: ∀u, SNo u(wL, w < u)(zR, u < z)SNoLev x SNoLev u SNoEq_ (SNoLev x) x u.
We prove the intermediate claim Lo: ordinal ((wLordsucc (SNoLev w)) (zRordsucc (SNoLev z))).
Apply ordinal_binunion to the current goal.
Apply ordinal_famunion to the current goal.
Let w be given.
Assume Hw.
We will prove ordinal (ordsucc (SNoLev w)).
Apply ordinal_ordsucc to the current goal.
We will prove ordinal (SNoLev w).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is HLR1 w Hw.
Apply ordinal_famunion to the current goal.
Let z be given.
Assume Hz.
We will prove ordinal (ordsucc (SNoLev z)).
Apply ordinal_ordsucc to the current goal.
We will prove ordinal (SNoLev z).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is HLR2 z Hz.
We prove the intermediate claim LLRsoo: ordsucc ((wLordsucc (SNoLev w)) (zRordsucc (SNoLev z))) ordsucc ω.
We will prove ((wLordsucc (SNoLev w)) (zRordsucc (SNoLev z))) ordsucc ω.
Assume H6.
An exact proof term for the current goal is H6.
We will prove False.
Apply binunionE (wLordsucc (SNoLev w)) (zRordsucc (SNoLev z)) ω (H6 ω (ordsuccI2 ω)) to the current goal.
Assume H7: ω wLordsucc (SNoLev w).
Apply famunionE_impred L (λw ⇒ ordsucc (SNoLev w)) ω H7 to the current goal.
Let w be given.
Assume Hw: w L.
Assume H8: ω ordsucc (SNoLev w).
Apply SNoS_E2 ω omega_ordinal w (HL w Hw) to the current goal.
Assume Hw1: SNoLev w ω.
We will prove False.
Apply ordsuccE (SNoLev w) ω H8 to the current goal.
Assume H9: ω SNoLev w.
An exact proof term for the current goal is In_no2cycle ω (SNoLev w) H9 Hw1.
Assume H9: ω = SNoLev w.
We will prove False.
Apply In_irref ω to the current goal.
rewrite the current goal using H9 (from left to right) at position 1.
An exact proof term for the current goal is Hw1.
Assume H7: ω zRordsucc (SNoLev z).
Apply famunionE_impred R (λz ⇒ ordsucc (SNoLev z)) ω H7 to the current goal.
Let z be given.
Assume Hz: z R.
Assume H8: ω ordsucc (SNoLev z).
Apply SNoS_E2 ω omega_ordinal z (HR z Hz) to the current goal.
Assume Hz1: SNoLev z ω.
We will prove False.
Apply ordsuccE (SNoLev z) ω H8 to the current goal.
Assume H9: ω SNoLev z.
An exact proof term for the current goal is In_no2cycle ω (SNoLev z) H9 Hz1.
Assume H9: ω = SNoLev z.
We will prove False.
Apply In_irref ω to the current goal.
rewrite the current goal using H9 (from left to right) at position 1.
An exact proof term for the current goal is Hz1.
Apply ordsuccE ω (SNoLev x) (LLRsoo (SNoLev x) H2) to the current goal.
Assume H6: SNoLev x ω.
We will prove x real.
Apply SNoS_omega_real to the current goal.
We will prove x SNoS_ ω.
Apply SNoS_I ω omega_ordinal x (SNoLev x) H6 to the current goal.
We will prove SNo_ (SNoLev x) x.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is H1.
Assume H6: SNoLev x = ω.
We will prove x real.
Apply real_I to the current goal.
We will prove x SNoS_ (ordsucc ω).
Apply SNoS_I (ordsucc ω) ordsucc_omega_ordinal x (SNoLev x) to the current goal.
We will prove SNoLev x ordsucc ω.
rewrite the current goal using H6 (from left to right).
Apply ordsuccI2 to the current goal.
We will prove SNo_ (SNoLev x) x.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is H1.
Assume H7: x = ω.
Apply HR0 to the current goal.
Apply Empty_eq to the current goal.
Let z be given.
Assume Hz: z R.
Apply SNoLt_irref z to the current goal.
We will prove z < z.
Apply SNoLt_tra z x z (HLR2 z Hz) H1 (HLR2 z Hz) to the current goal.
We will prove z < x.
rewrite the current goal using H7 (from left to right).
We will prove z < ω.
Apply ordinal_SNoLev_max ω omega_ordinal z (HLR2 z Hz) to the current goal.
We will prove SNoLev z ω.
Apply SNoS_E2 ω omega_ordinal z (HR z Hz) to the current goal.
Assume Hz1: SNoLev z ω.
Assume _ _ _.
An exact proof term for the current goal is Hz1.
We will prove x < z.
Apply H4 to the current goal.
An exact proof term for the current goal is Hz.
Assume H7: x = - ω.
Apply HL0 to the current goal.
Apply Empty_eq to the current goal.
Let w be given.
Assume Hw: w L.
Apply SNoLt_irref w to the current goal.
We will prove w < w.
Apply SNoLt_tra w x w (HLR1 w Hw) H1 (HLR1 w Hw) to the current goal.
We will prove w < x.
Apply H3 to the current goal.
An exact proof term for the current goal is Hw.
We will prove x < w.
rewrite the current goal using H7 (from left to right).
We will prove - ω < w.
Apply minus_SNo_Lt_contra1 w ω (HLR1 w Hw) SNo_omega to the current goal.
We will prove - w < ω.
Apply ordinal_SNoLev_max ω omega_ordinal (- w) (SNo_minus_SNo w (HLR1 w Hw)) to the current goal.
We will prove SNoLev (- w) ω.
rewrite the current goal using minus_SNo_Lev w (HLR1 w Hw) (from left to right).
Apply SNoS_E2 ω omega_ordinal w (HL w Hw) to the current goal.
Assume Hw1: SNoLev w ω.
Assume _ _ _.
An exact proof term for the current goal is Hw1.
Let q be given.
Assume Hq: q SNoS_ ω.
Assume H7: kω, abs_SNo (q + - x) < eps_ k.
We will prove False.
Apply SNoS_E2 ω omega_ordinal q Hq to the current goal.
Assume Hq1: SNoLev q ω.
Assume Hq2: ordinal (SNoLev q).
Assume Hq3: SNo q.
Assume Hq4: SNo_ (SNoLev q) q.
We prove the intermediate claim LqL: wL, w < q.
Let w be given.
Assume Hw: w L.
Apply SNoLtLe_or w q (HLR1 w Hw) Hq3 to the current goal.
Assume H8: w < q.
An exact proof term for the current goal is H8.
Assume H8: q w.
We will prove False.
Apply HL1 w Hw to the current goal.
Let w' be given.
Assume H.
Apply H to the current goal.
Assume H9: w' L.
Assume H10: w < w'.
We prove the intermediate claim LqL1: w' + - q SNoS_ ω.
Apply add_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is HL w' H9.
Apply minus_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is Hq.
Apply SNoS_E2 ω omega_ordinal (w' + - q) LqL1 to the current goal.
Assume Hw'q1: SNoLev (w' + - q) ω.
Assume Hw'q2: ordinal (SNoLev (w' + - q)).
Assume Hw'q3: SNo (w' + - q).
Assume Hw'q4: SNo_ (SNoLev (w' + - q)) (w' + - q).
We prove the intermediate claim LqL2: 0 < w' + - q.
Apply SNoLt_minus_pos q w' Hq3 (HLR1 w' H9) to the current goal.
We will prove q < w'.
An exact proof term for the current goal is SNoLeLt_tra q w w' Hq3 (HLR1 w Hw) (HLR1 w' H9) H8 H10.
Set k to be the term SNoLev (w' + - q).
We prove the intermediate claim LqL3: w' + - q SNoS_ (ordsucc k).
An exact proof term for the current goal is SNoS_I (ordsucc k) (ordinal_ordsucc k (nat_p_ordinal k (omega_nat_p k Hw'q1))) (w' + - q) k (ordsuccI2 k) Hw'q4.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hw'q1.
We prove the intermediate claim LqL4: eps_ k < w' + - q.
An exact proof term for the current goal is SNo_pos_eps_Lt k (omega_nat_p k Hw'q1) (w' + - q) LqL3 LqL2.
Apply SNoLt_irref (eps_ k) to the current goal.
Apply SNoLt_tra (eps_ k) (w' + - q) (eps_ k) Lek Hw'q3 Lek LqL4 to the current goal.
We will prove w' + - q < eps_ k.
We prove the intermediate claim Lxq: SNo (x + - q).
An exact proof term for the current goal is SNo_add_SNo x (- q) H1 (SNo_minus_SNo q Hq3).
Apply SNoLt_tra (w' + - q) (x + - q) (eps_ k) Hw'q3 Lxq Lek to the current goal.
We will prove w' + - q < x + - q.
Apply add_SNo_Lt1 w' (- q) x (HLR1 w' H9) (SNo_minus_SNo q Hq3) H1 to the current goal.
We will prove w' < x.
Apply H3 to the current goal.
We will prove w' L.
An exact proof term for the current goal is H9.
We will prove x + - q < eps_ k.
Apply SNoLtLe_or (x + - q) 0 Lxq SNo_0 to the current goal.
Assume H11: x + - q < 0.
An exact proof term for the current goal is SNoLt_tra (x + - q) 0 (eps_ k) Lxq SNo_0 Lek H11 (SNo_eps_pos k Hw'q1).
Assume H11: 0 x + - q.
rewrite the current goal using nonneg_abs_SNo (x + - q) H11 (from right to left).
We will prove abs_SNo (x + - q) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap x q H1 Hq3 (from left to right).
An exact proof term for the current goal is H7 k Hw'q1.
We prove the intermediate claim LqR: zR, q < z.
Let z be given.
Assume Hz: z R.
Apply SNoLtLe_or q z Hq3 (HLR2 z Hz) to the current goal.
Assume H8: q < z.
An exact proof term for the current goal is H8.
Assume H8: z q.
We will prove False.
Apply HR1 z Hz to the current goal.
Let z' be given.
Assume H.
Apply H to the current goal.
Assume H9: z' R.
Assume H10: z' < z.
We prove the intermediate claim LqR1: q + - z' SNoS_ ω.
Apply add_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is Hq.
Apply minus_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is HR z' H9.
Apply SNoS_E2 ω omega_ordinal (q + - z') LqR1 to the current goal.
Assume Hz'q1: SNoLev (q + - z') ω.
Assume Hz'q2: ordinal (SNoLev (q + - z')).
Assume Hz'q3: SNo (q + - z').
Assume Hz'q4: SNo_ (SNoLev (q + - z')) (q + - z').
We prove the intermediate claim LqR2: 0 < q + - z'.
Apply SNoLt_minus_pos z' q (HLR2 z' H9) Hq3 to the current goal.
We will prove z' < q.
An exact proof term for the current goal is SNoLtLe_tra z' z q (HLR2 z' H9) (HLR2 z Hz) Hq3 H10 H8.
Set k to be the term SNoLev (q + - z').
We prove the intermediate claim LqR3: q + - z' SNoS_ (ordsucc k).
An exact proof term for the current goal is SNoS_I (ordsucc k) (ordinal_ordsucc k (nat_p_ordinal k (omega_nat_p k Hz'q1))) (q + - z') k (ordsuccI2 k) Hz'q4.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hz'q1.
We prove the intermediate claim LqR4: eps_ k < q + - z'.
An exact proof term for the current goal is SNo_pos_eps_Lt k (omega_nat_p k Hz'q1) (q + - z') LqR3 LqR2.
Apply SNoLt_irref (eps_ k) to the current goal.
Apply SNoLt_tra (eps_ k) (q + - z') (eps_ k) Lek Hz'q3 Lek LqR4 to the current goal.
We will prove q + - z' < eps_ k.
We prove the intermediate claim Lxq: SNo (q + - x).
An exact proof term for the current goal is SNo_add_SNo q (- x) Hq3 (SNo_minus_SNo x H1).
Apply SNoLt_tra (q + - z') (q + - x) (eps_ k) Hz'q3 Lxq Lek to the current goal.
We will prove q + - z' < q + - x.
Apply add_SNo_Lt2 q (- z') (- x) Hq3 (SNo_minus_SNo z' (HLR2 z' H9)) (SNo_minus_SNo x H1) to the current goal.
We will prove - z' < - x.
Apply minus_SNo_Lt_contra x z' H1 (HLR2 z' H9) to the current goal.
We will prove x < z'.
Apply H4 to the current goal.
We will prove z' R.
An exact proof term for the current goal is H9.
We will prove q + - x < eps_ k.
Apply SNoLtLe_or (q + - x) 0 Lxq SNo_0 to the current goal.
Assume H11: q + - x < 0.
An exact proof term for the current goal is SNoLt_tra (q + - x) 0 (eps_ k) Lxq SNo_0 Lek H11 (SNo_eps_pos k Hz'q1).
Assume H11: 0 q + - x.
rewrite the current goal using nonneg_abs_SNo (q + - x) H11 (from right to left).
We will prove abs_SNo (q + - x) < eps_ k.
An exact proof term for the current goal is H7 k Hz'q1.
Apply H5 q Hq3 LqL LqR to the current goal.
Assume H10: SNoLev x SNoLev q.
We will prove False.
Apply In_irref (SNoLev q) to the current goal.
Apply H10 to the current goal.
We will prove SNoLev q SNoLev x.
rewrite the current goal using H6 (from left to right).
An exact proof term for the current goal is Hq1.
Theorem. (real_SNoCut) The following is provable:
L Rreal, SNoCutP L RL 0R 0(wL, w'L, w < w')(zR, z'R, z' < z)SNoCut L R real
Proof:
Let L be given.
Assume HL.
Let R be given.
Assume HR.
Assume HLR.
Apply HLR to the current goal.
Assume H.
Apply H to the current goal.
Assume HLR1: wL, SNo w.
Assume HLR2: zR, SNo z.
Assume HLR3: wL, zR, w < z.
Assume HL0: L 0.
Assume HR0: R 0.
Assume HL1: wL, w'L, w < w'.
Assume HR1: zR, z'R, z' < z.
Set x to be the term SNoCut L R.
Apply SNoCutP_SNoCut_impred L R HLR to the current goal.
Assume H1: SNo x.
Assume H3: wL, w < x.
Assume H4: zR, x < z.
Assume H5: ∀u, SNo u(wL, w < u)(zR, u < z)SNoLev x SNoLev u SNoEq_ (SNoLev x) x u.
Set L_ to be the term λn ⇒ {w'SNoS_ n|wL, w' w} of type setset.
Set R_ to be the term λn ⇒ {z'SNoS_ n|zR, z z'} of type setset.
Set L' to be the term nωL_ n.
Set R' to be the term nωR_ n.
Set x' to be the term SNoCut L' R'.
We prove the intermediate claim LL'L: w'L', wL, w' w.
Let w' be given.
Assume Hw'.
Apply famunionE_impred ω L_ w' Hw' to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hw'2: w' L_ n.
An exact proof term for the current goal is SepE2 (SNoS_ n) (λw' ⇒ wL, w' w) w' Hw'2.
We prove the intermediate claim LR'R: z'R', zR, z z'.
Let z' be given.
Assume Hz'.
Apply famunionE_impred ω R_ z' Hz' to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hz'2: z' R_ n.
An exact proof term for the current goal is SepE2 (SNoS_ n) (λz' ⇒ zR, z z') z' Hz'2.
We prove the intermediate claim LL'o: L' SNoS_ ω.
Let w' be given.
Assume Hw'.
Apply famunionE_impred ω L_ w' Hw' to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hw'2: w' L_ n.
Apply SNoS_E2 n (nat_p_ordinal n (omega_nat_p n Hn)) w' (SepE1 (SNoS_ n) (λw' ⇒ wL, w' w) w' Hw'2) to the current goal.
Assume Hw'3: SNoLev w' n.
Assume Hw'4: ordinal (SNoLev w').
Assume Hw'5: SNo w'.
Assume Hw'6: SNo_ (SNoLev w') w'.
Apply SNoS_I ω omega_ordinal w' (SNoLev w') to the current goal.
We will prove SNoLev w' ω.
An exact proof term for the current goal is omega_TransSet n Hn (SNoLev w') Hw'3.
An exact proof term for the current goal is Hw'6.
We prove the intermediate claim LR'o: R' SNoS_ ω.
Let z' be given.
Assume Hz'.
Apply famunionE_impred ω R_ z' Hz' to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hz'2: z' R_ n.
Apply SNoS_E2 n (nat_p_ordinal n (omega_nat_p n Hn)) z' (SepE1 (SNoS_ n) (λz' ⇒ zR, z z') z' Hz'2) to the current goal.
Assume Hz'3: SNoLev z' n.
Assume Hz'4: ordinal (SNoLev z').
Assume Hz'5: SNo z'.
Assume Hz'6: SNo_ (SNoLev z') z'.
Apply SNoS_I ω omega_ordinal z' (SNoLev z') to the current goal.
We will prove SNoLev z' ω.
An exact proof term for the current goal is omega_TransSet n Hn (SNoLev z') Hz'3.
An exact proof term for the current goal is Hz'6.
We prove the intermediate claim LL': w'L', SNo w'.
Let w' be given.
Assume Hw'.
Apply SNoS_E2 ω omega_ordinal w' (LL'o w' Hw') to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LR': zR', SNo z.
Let z' be given.
Assume Hz'.
Apply SNoS_E2 ω omega_ordinal z' (LR'o z' Hz') to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LLR': SNoCutP L' R'.
We will prove (wL', SNo w) (zR', SNo z) (wL', zR', w < z).
Apply and3I to the current goal.
An exact proof term for the current goal is LL'.
An exact proof term for the current goal is LR'.
Let w' be given.
Assume Hw'.
Let z' be given.
Assume Hz'.
Apply LL'L w' Hw' to the current goal.
Let w be given.
Assume H.
Apply H to the current goal.
Assume Hw: w L.
Assume Hw'w: w' w.
Apply LR'R z' Hz' to the current goal.
Let z be given.
Assume H.
Apply H to the current goal.
Assume Hz: z R.
Assume Hzz': z z'.
We will prove w' < z'.
Apply SNoLeLt_tra w' w z' (LL' w' Hw') (HLR1 w Hw) (LR' z' Hz') Hw'w to the current goal.
We will prove w < z'.
Apply SNoLtLe_tra w z z' (HLR1 w Hw) (HLR2 z Hz) (LR' z' Hz') to the current goal.
We will prove w < z.
Apply HLR3 to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is Hz.
We will prove z z'.
An exact proof term for the current goal is Hzz'.
Apply SNoCutP_SNoCut_impred L' R' LLR' to the current goal.
Assume H1': SNo x'.
Assume H2': SNoLev x' ordsucc ((xL'ordsucc (SNoLev x)) (yR'ordsucc (SNoLev y))).
Assume H3': wL', w < x'.
Assume H4': zR', x' < z.
Assume H5': ∀u, SNo u(wL', w < u)(zR', u < z)SNoLev x' SNoLev u SNoEq_ (SNoLev x') x' u.
We prove the intermediate claim L1: wL, w'L', w w'.
Let w be given.
Assume Hw.
Apply real_E w (HL w Hw) to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w ordsucc ω.
Assume _ _ _ _ _.
Apply ordsuccE ω (SNoLev w) Hw2 to the current goal.
Assume H6: SNoLev w ω.
We use w to witness the existential quantifier.
Apply andI to the current goal.
We will prove w L'.
We will prove w famunion ω L_.
Apply famunionI ω L_ (ordsucc (SNoLev w)) w to the current goal.
We will prove ordsucc (SNoLev w) ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is H6.
We will prove w {w'SNoS_ (ordsucc (SNoLev w))|wL, w' w}.
Apply SepI to the current goal.
Apply SNoS_SNoLev to the current goal.
An exact proof term for the current goal is Hw1.
We will prove uL, w u.
We use w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw.
Apply SNoLe_ref to the current goal.
Apply SNoLe_ref to the current goal.
Assume H6: SNoLev w = ω.
Apply HL1 w Hw to the current goal.
Let w' be given.
Assume H.
Apply H to the current goal.
Assume Hw': w' L.
Assume Hww': w < w'.
Apply real_E w' (HL w' Hw') to the current goal.
Assume Hw'1: SNo w'.
Assume Hw'2: SNoLev w' ordsucc ω.
Assume _ _ _ _ _.
Apply ordsuccE ω (SNoLev w') Hw'2 to the current goal.
Assume H7: SNoLev w' ω.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
We will prove w' L'.
We will prove w' famunion ω L_.
Apply famunionI ω L_ (ordsucc (SNoLev w')) w' to the current goal.
We will prove ordsucc (SNoLev w') ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is H7.
We will prove w' {w'SNoS_ (ordsucc (SNoLev w'))|wL, w' w}.
Apply SepI to the current goal.
Apply SNoS_SNoLev to the current goal.
An exact proof term for the current goal is Hw'1.
We will prove uL, w' u.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw'.
Apply SNoLe_ref to the current goal.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hww'.
Assume H7: SNoLev w' = ω.
Apply SNoLtE w w' Hw1 Hw'1 Hww' to the current goal.
Let w'' be given.
rewrite the current goal using H6 (from left to right).
Assume Hw''1: SNo w''.
Assume Hw''2: SNoLev w'' ω SNoLev w'.
Assume _ _.
Assume Hw''3: w < w''.
Assume Hw''4: w'' < w'.
Assume _ _.
We use w'' to witness the existential quantifier.
Apply andI to the current goal.
We will prove w'' L'.
We will prove w'' famunion ω L_.
Apply famunionI ω L_ (ordsucc (SNoLev w'')) w'' to the current goal.
We will prove ordsucc (SNoLev w'') ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is binintersectE1 ω (SNoLev w') (SNoLev w'') Hw''2.
We will prove w'' {w'SNoS_ (ordsucc (SNoLev w''))|wL, w' w}.
Apply SepI to the current goal.
Apply SNoS_SNoLev to the current goal.
An exact proof term for the current goal is Hw''1.
We will prove uL, w'' u.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw'.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hw''4.
We will prove w w''.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hw''3.
rewrite the current goal using H6 (from left to right).
rewrite the current goal using H7 (from left to right).
Assume H8: ω ω.
We will prove False.
An exact proof term for the current goal is In_irref ω H8.
rewrite the current goal using H6 (from left to right).
rewrite the current goal using H7 (from left to right).
Assume H8: ω ω.
We will prove False.
An exact proof term for the current goal is In_irref ω H8.
We prove the intermediate claim L2: zR, z'R', z' z.
Let z be given.
Assume Hz.
Apply real_E z (HR z Hz) to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z ordsucc ω.
Assume _ _ _ _ _.
Apply ordsuccE ω (SNoLev z) Hz2 to the current goal.
Assume H6: SNoLev z ω.
We use z to witness the existential quantifier.
Apply andI to the current goal.
We will prove z R'.
We will prove z famunion ω R_.
Apply famunionI ω R_ (ordsucc (SNoLev z)) z to the current goal.
We will prove ordsucc (SNoLev z) ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is H6.
We will prove z {z'SNoS_ (ordsucc (SNoLev z))|zR, z z'}.
Apply SepI to the current goal.
Apply SNoS_SNoLev to the current goal.
An exact proof term for the current goal is Hz1.
We will prove uR, u z.
We use z to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz.
Apply SNoLe_ref to the current goal.
Apply SNoLe_ref to the current goal.
Assume H6: SNoLev z = ω.
Apply HR1 z Hz to the current goal.
Let z' be given.
Assume H.
Apply H to the current goal.
Assume Hz': z' R.
Assume Hz'z: z' < z.
Apply real_E z' (HR z' Hz') to the current goal.
Assume Hz'1: SNo z'.
Assume Hz'2: SNoLev z' ordsucc ω.
Assume _ _ _ _ _.
Apply ordsuccE ω (SNoLev z') Hz'2 to the current goal.
Assume H7: SNoLev z' ω.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
We will prove z' R'.
We will prove z' famunion ω R_.
Apply famunionI ω R_ (ordsucc (SNoLev z')) z' to the current goal.
We will prove ordsucc (SNoLev z') ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is H7.
We will prove z' {z'SNoS_ (ordsucc (SNoLev z'))|zR, z z'}.
Apply SepI to the current goal.
Apply SNoS_SNoLev to the current goal.
An exact proof term for the current goal is Hz'1.
We will prove uR, u z'.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz'.
Apply SNoLe_ref to the current goal.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz'z.
Assume H7: SNoLev z' = ω.
Apply SNoLtE z' z Hz'1 Hz1 Hz'z to the current goal.
Let z'' be given.
rewrite the current goal using H7 (from left to right).
Assume Hz''1: SNo z''.
Assume Hz''2: SNoLev z'' ω SNoLev z.
Assume _ _.
Assume Hz''3: z' < z''.
Assume Hz''4: z'' < z.
Assume _ _.
We use z'' to witness the existential quantifier.
Apply andI to the current goal.
We will prove z'' R'.
We will prove z'' famunion ω R_.
Apply famunionI ω R_ (ordsucc (SNoLev z'')) z'' to the current goal.
We will prove ordsucc (SNoLev z'') ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is binintersectE1 ω (SNoLev z) (SNoLev z'') Hz''2.
We will prove z'' {z'SNoS_ (ordsucc (SNoLev z''))|zR, z z'}.
Apply SepI to the current goal.
Apply SNoS_SNoLev to the current goal.
An exact proof term for the current goal is Hz''1.
We will prove uR, u z''.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz'.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz''3.
We will prove z'' z.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz''4.
rewrite the current goal using H6 (from left to right).
rewrite the current goal using H7 (from left to right).
Assume H8: ω ω.
We will prove False.
An exact proof term for the current goal is In_irref ω H8.
rewrite the current goal using H6 (from left to right).
rewrite the current goal using H7 (from left to right).
Assume H8: ω ω.
We will prove False.
An exact proof term for the current goal is In_irref ω H8.
We prove the intermediate claim L3: L' 0.
Assume H6: L' = 0.
Apply HL0 to the current goal.
We will prove L = 0.
Apply Empty_eq to the current goal.
Let w be given.
Assume Hw: w L.
Apply L1 w Hw to the current goal.
Let w' be given.
Assume H.
Apply H to the current goal.
Assume Hw': w' L'.
We will prove False.
Apply EmptyE w' to the current goal.
We will prove w' 0.
rewrite the current goal using H6 (from right to left).
An exact proof term for the current goal is Hw'.
We prove the intermediate claim L4: R' 0.
Assume H6: R' = 0.
Apply HR0 to the current goal.
We will prove R = 0.
Apply Empty_eq to the current goal.
Let z be given.
Assume Hz: z R.
Apply L2 z Hz to the current goal.
Let z' be given.
Assume H.
Apply H to the current goal.
Assume Hz': z' R'.
We will prove False.
Apply EmptyE z' to the current goal.
We will prove z' 0.
rewrite the current goal using H6 (from right to left).
An exact proof term for the current goal is Hz'.
We prove the intermediate claim L5: wL', w'L', w < w'.
Let w be given.
Assume Hw.
Apply LL'L w Hw to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu: u L.
Assume Hwu: w u.
Apply HL1 u Hu to the current goal.
Let v be given.
Assume H.
Apply H to the current goal.
Assume Hv: v L.
Assume Huv: u < v.
Apply L1 v Hv to the current goal.
Let w' be given.
Assume H.
Apply H to the current goal.
Assume Hw': w' L'.
Assume Hvw': v w'.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw'.
We will prove w < w'.
Apply SNoLeLt_tra w u w' (LL' w Hw) (HLR1 u Hu) (LL' w' Hw') Hwu to the current goal.
We will prove u < w'.
An exact proof term for the current goal is SNoLtLe_tra u v w' (HLR1 u Hu) (HLR1 v Hv) (LL' w' Hw') Huv Hvw'.
We prove the intermediate claim L6: zR', z'R', z' < z.
Let z be given.
Assume Hz.
Apply LR'R z Hz to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu: u R.
Assume Huz: u z.
Apply HR1 u Hu to the current goal.
Let v be given.
Assume H.
Apply H to the current goal.
Assume Hv: v R.
Assume Hvu: v < u.
Apply L2 v Hv to the current goal.
Let z' be given.
Assume H.
Apply H to the current goal.
Assume Hz': z' R'.
Assume Hz'v: z' v.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz'.
We will prove z' < z.
Apply SNoLeLt_tra z' v z (LR' z' Hz') (HLR2 v Hv) (LR' z Hz) Hz'v to the current goal.
We will prove v < z.
An exact proof term for the current goal is SNoLtLe_tra v u z (HLR2 v Hv) (HLR2 u Hu) (LR' z Hz) Hvu Huz.
We prove the intermediate claim Lxx': x = x'.
Apply SNoCut_ext to the current goal.
An exact proof term for the current goal is HLR.
An exact proof term for the current goal is LLR'.
Let w be given.
Assume Hw: w L.
We will prove w < x'.
Apply L1 w Hw to the current goal.
Let w' be given.
Assume H.
Apply H to the current goal.
Assume Hw': w' L'.
Assume Hww': w w'.
Apply SNoLeLt_tra w w' x' to the current goal.
We will prove SNo w.
An exact proof term for the current goal is HLR1 w Hw.
We will prove SNo w'.
An exact proof term for the current goal is LL' w' Hw'.
We will prove SNo x'.
An exact proof term for the current goal is H1'.
An exact proof term for the current goal is Hww'.
We will prove w' < x'.
Apply H3' to the current goal.
We will prove w' L'.
An exact proof term for the current goal is Hw'.
Let z be given.
Assume Hz: z R.
We will prove x' < z.
Apply L2 z Hz to the current goal.
Let z' be given.
Assume H.
Apply H to the current goal.
Assume Hz': z' R'.
Assume Hz'z: z' z.
We will prove x' < z.
An exact proof term for the current goal is SNoLtLe_tra x' z' z H1' (LR' z' Hz') (HLR2 z Hz) (H4' z' Hz') Hz'z.
Let w be given.
Assume Hw: w L'.
We will prove w < x.
Apply LL'L w Hw to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu: u L.
Assume Hwu: w u.
An exact proof term for the current goal is SNoLeLt_tra w u x (LL' w Hw) (HLR1 u Hu) H1 Hwu (H3 u Hu).
Let z be given.
Assume Hz: z R'.
We will prove x < z.
Apply LR'R z Hz to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu: u R.
Assume Huz: u z.
An exact proof term for the current goal is SNoLtLe_tra x u z H1 (HLR2 u Hu) (LR' z Hz) (H4 u Hu) Huz.
We will prove x real.
rewrite the current goal using Lxx' (from left to right).
We will prove x' real.
An exact proof term for the current goal is real_SNoCut_SNoS_omega L' LL'o R' LR'o LLR' L3 L4 L5 L6.
Theorem. (minus_SNo_prereal_1) The following is provable:
∀x, SNo x(qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)(qSNoS_ ω, (kω, abs_SNo (q + - - x) < eps_ k)q = - x)
Proof:
Let x be given.
Assume Hx H1.
Let q be given.
Assume Hq1: q SNoS_ ω.
rewrite the current goal using minus_SNo_invol x Hx (from left to right).
Assume Hq2: kω, abs_SNo (q + x) < eps_ k.
We will prove q = - x.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
rewrite the current goal using minus_SNo_invol q Hq1c (from right to left).
We will prove - - q = - x.
Use f_equal.
We will prove - q = x.
Apply H1 (- q) (minus_SNo_SNoS_omega q Hq1) to the current goal.
Let k be given.
Assume Hk.
We will prove abs_SNo (- q + - x) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap (- q) x (SNo_minus_SNo q Hq1c) Hx (from left to right).
We will prove abs_SNo (x + - - q) < eps_ k.
rewrite the current goal using minus_SNo_invol q Hq1c (from left to right).
We will prove abs_SNo (x + q) < eps_ k.
rewrite the current goal using add_SNo_com x q Hx Hq1c (from left to right).
We will prove abs_SNo (q + x) < eps_ k.
An exact proof term for the current goal is Hq2 k Hk.
Theorem. (minus_SNo_prereal_2) The following is provable:
∀x, SNo x(kω, qSNoS_ ω, q < x x < q + eps_ k)(kω, qSNoS_ ω, q < - x - x < q + eps_ k)
Proof:
Let x be given.
Assume Hx H1.
Let k be given.
Assume Hk.
Apply H1 k Hk to the current goal.
Let q be given.
Assume Hq.
Apply Hq to the current goal.
Assume Hq1: q SNoS_ ω.
Assume Hq.
Apply Hq to the current goal.
Assume Hq2: q < x.
Assume Hq3: x < q + eps_ k.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
We prove the intermediate claim Lqk: SNo (q + eps_ k).
An exact proof term for the current goal is SNo_add_SNo q (eps_ k) Hq1c (SNo_eps_ k Hk).
We use (- (q + eps_ k)) to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is minus_SNo_SNoS_omega (q + eps_ k) (add_SNo_SNoS_omega q Hq1 (eps_ k) (SNo_eps_SNoS_omega k Hk)).
Apply andI to the current goal.
We will prove - (q + eps_ k) < - x.
Apply minus_SNo_Lt_contra x (q + eps_ k) Hx Lqk to the current goal.
We will prove x < q + eps_ k.
An exact proof term for the current goal is Hq3.
We will prove - x < - (q + eps_ k) + eps_ k.
rewrite the current goal using minus_add_SNo_distr q (eps_ k) Hq1c (SNo_eps_ k Hk) (from left to right).
We will prove - x < (- q + - eps_ k) + eps_ k.
rewrite the current goal using add_SNo_minus_R2' (- q) (eps_ k) (SNo_minus_SNo q Hq1c) (SNo_eps_ k Hk) (from left to right).
We will prove - x < - q.
Apply minus_SNo_Lt_contra q x Hq1c Hx to the current goal.
We will prove q < x.
An exact proof term for the current goal is Hq2.
Theorem. (SNo_prereal_incr_lower_pos) The following is provable:
∀x, SNo x0 < x(qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)(kω, qSNoS_ ω, q < x x < q + eps_ k)kω, ∀p : prop, (qSNoS_ ω, 0 < qq < xx < q + eps_ kp)p
Proof:
Let x be given.
Assume Hx Hx0 Hx2 Hx3.
Let k be given.
Assume Hk.
Let p be given.
Assume Hp.
Apply Hx3 k Hk to the current goal.
Let q be given.
Assume H.
Apply H to the current goal.
Assume Hq1: q SNoS_ ω.
Assume H.
Apply H to the current goal.
Assume Hq2: q < x.
Assume Hq3: x < q + eps_ k.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
Apply SNoLtLe_or 0 q SNo_0 Hq1c to the current goal.
Assume H1: 0 < q.
An exact proof term for the current goal is Hp q Hq1 H1 Hq2 Hq3.
Assume H1: q 0.
Apply xm (k'ω, x < eps_ k') to the current goal.
Assume H2: k'ω, x < eps_ k'.
We will prove False.
We prove the intermediate claim L1: 0 = x.
Apply Hx2 0 (omega_SNoS_omega 0 (nat_p_omega 0 nat_0)) to the current goal.
Let k' be given.
Assume Hk': k' ω.
We will prove abs_SNo (0 + - x) < eps_ k'.
rewrite the current goal using add_SNo_0L (- x) (SNo_minus_SNo x Hx) (from left to right).
We will prove abs_SNo (- x) < eps_ k'.
rewrite the current goal using abs_SNo_minus x Hx (from left to right).
We will prove abs_SNo x < eps_ k'.
rewrite the current goal using pos_abs_SNo x Hx0 (from left to right).
An exact proof term for the current goal is H2 k' Hk'.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using L1 (from right to left) at position 1.
An exact proof term for the current goal is Hx0.
Assume H2: ¬ (k'ω, x < eps_ k').
Apply dneg to the current goal.
Assume H3: ¬ p.
Apply H2 to the current goal.
Let k' be given.
Assume Hk': k' ω.
Apply SNoLtLe_or x (eps_ k') Hx (SNo_eps_ k' Hk') to the current goal.
Assume H4: x < eps_ k'.
An exact proof term for the current goal is H4.
Assume H4: eps_ k' x.
We prove the intermediate claim Lek': SNo (eps_ k').
Apply SNo_eps_ to the current goal.
An exact proof term for the current goal is Hk'.
We prove the intermediate claim LeSk': SNo (eps_ (ordsucc k')).
Apply SNo_eps_ to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Hk'.
We prove the intermediate claim LeSk'pos: 0 < eps_ (ordsucc k').
Apply SNo_eps_pos to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Hk'.
Apply H3 to the current goal.
Apply Hp (eps_ (ordsucc k')) to the current goal.
We will prove eps_ (ordsucc k') SNoS_ ω.
Apply SNo_eps_SNoS_omega to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Hk'.
We will prove 0 < eps_ (ordsucc k').
An exact proof term for the current goal is LeSk'pos.
We will prove eps_ (ordsucc k') < x.
Apply SNoLtLe_tra (eps_ (ordsucc k')) (eps_ k') x LeSk' Lek' Hx to the current goal.
We will prove eps_ (ordsucc k') < eps_ k'.
An exact proof term for the current goal is SNo_eps_decr (ordsucc k') (omega_ordsucc k' Hk') k' (ordsuccI2 k').
We will prove eps_ k' x.
An exact proof term for the current goal is H4.
We will prove x < eps_ (ordsucc k') + eps_ k.
We prove the intermediate claim L2: q < eps_ (ordsucc k').
Apply SNoLeLt_tra q 0 (eps_ (ordsucc k')) Hq1c SNo_0 LeSk' to the current goal.
We will prove q 0.
An exact proof term for the current goal is H1.
We will prove 0 < eps_ (ordsucc k').
An exact proof term for the current goal is LeSk'pos.
Apply SNoLt_tra x (q + eps_ k) (eps_ (ordsucc k') + eps_ k) Hx (SNo_add_SNo q (eps_ k) Hq1c (SNo_eps_ k Hk)) (SNo_add_SNo (eps_ (ordsucc k')) (eps_ k) LeSk' (SNo_eps_ k Hk)) to the current goal.
We will prove x < q + eps_ k.
An exact proof term for the current goal is Hq3.
We will prove q + eps_ k < eps_ (ordsucc k') + eps_ k.
Apply add_SNo_Lt1 q (eps_ k) (eps_ (ordsucc k')) Hq1c (SNo_eps_ k Hk) LeSk' to the current goal.
We will prove q < eps_ (ordsucc k').
An exact proof term for the current goal is L2.
Theorem. (real_minus_SNo) The following is provable:
Proof:
Let x be given.
Assume Hx.
Apply real_E x Hx to the current goal.
Assume Hx1 Hx2 Hx3 Hx4 Hx5 Hx6 Hx7.
Apply real_I to the current goal.
We will prove - x SNoS_ (ordsucc ω).
An exact proof term for the current goal is minus_SNo_SNoS_ (ordsucc ω) ordsucc_omega_ordinal x Hx3.
We will prove - x ω.
Assume H1: - x = ω.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using minus_SNo_invol x Hx1 (from right to left) at position 1.
We will prove - - x < x.
rewrite the current goal using H1 (from left to right).
We will prove - ω < x.
An exact proof term for the current goal is Hx4.
We will prove - x - ω.
Assume H1: - x = - ω.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using minus_SNo_invol x Hx1 (from right to left) at position 2.
We will prove x < - - x.
rewrite the current goal using H1 (from left to right).
We will prove x < - - ω.
rewrite the current goal using minus_SNo_invol ω SNo_omega (from left to right).
We will prove x < ω.
An exact proof term for the current goal is Hx5.
We will prove qSNoS_ ω, (kω, abs_SNo (q + - - x) < eps_ k)q = - x.
An exact proof term for the current goal is minus_SNo_prereal_1 x Hx1 Hx6.
Theorem. (SNo_prereal_incr_lower_approx) The following is provable:
∀x, SNo x(qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)(kω, qSNoS_ ω, q < x x < q + eps_ k)fSNoS_ ωω, nω, f n < x x < f n + eps_ n in, f i < f n
Proof:
Let x be given.
Assume H1 H2 H3.
Set f' to be the term nat_primrec (Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ 0)) (λn r ⇒ (Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ (ordsucc n) r < q))) of type setset.
Set f to be the term λn ∈ ωf' n.
We prove the intermediate claim Lf'0: f' 0 = Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ 0).
An exact proof term for the current goal is nat_primrec_0 (Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ 0)) (λn r ⇒ (Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ (ordsucc n) r < q))).
We prove the intermediate claim Lf'0b: f' 0 SNoS_ ω f' 0 < x x < f' 0 + eps_ 0.
rewrite the current goal using Lf'0 (from left to right).
Apply Eps_i_ex (λq ⇒ q SNoS_ ω q < x x < q + eps_ 0) to the current goal.
We will prove q, q SNoS_ ω q < x x < q + eps_ 0.
Apply H3 0 (nat_p_omega 0 nat_0) to the current goal.
Let q be given.
Assume Hq.
Apply Hq to the current goal.
Assume Hq1 Hq.
Apply Hq to the current goal.
Assume Hq2 Hq3.
We use q to witness the existential quantifier.
Apply and3I to the current goal.
An exact proof term for the current goal is Hq1.
An exact proof term for the current goal is Hq2.
An exact proof term for the current goal is Hq3.
We prove the intermediate claim Lf'S: ∀n, nat_p nf' (ordsucc n) = Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ (ordsucc n) f' n < q).
An exact proof term for the current goal is nat_primrec_S (Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ 0)) (λn r ⇒ (Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ (ordsucc n) r < q))).
We prove the intermediate claim L1: ∀n, nat_p nf' n SNoS_ ω f' n < x x < f' n + eps_ n in, SNo (f i)f i < f' n.
Apply nat_ind to the current goal.
We will prove f' 0 SNoS_ ω f' 0 < x x < f' 0 + eps_ 0 i0, SNo (f i)f i < f' 0.
Apply Lf'0b to the current goal.
Assume H H6.
Apply H to the current goal.
Assume H4 H5.
Apply and4I to the current goal.
An exact proof term for the current goal is H4.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is H6.
Let i be given.
Assume Hi.
We will prove False.
An exact proof term for the current goal is EmptyE i Hi.
Let n be given.
Assume Hn.
Assume IHn: f' n SNoS_ ω f' n < x x < f' n + eps_ n in, SNo (f i)f i < f' n.
We will prove f' (ordsucc n) SNoS_ ω f' (ordsucc n) < x x < f' (ordsucc n) + eps_ (ordsucc n) iordsucc n, SNo (f i)f i < f' (ordsucc n).
Apply IHn to the current goal.
Assume IHn123 IHn4.
Apply IHn123 to the current goal.
Assume IHn12 IHn3.
Apply IHn12 to the current goal.
Assume IHn1 IHn2.
Apply SNoS_E2 ω omega_ordinal (f' n) IHn1 to the current goal.
Assume _ _.
Assume IHn1c: SNo (f' n).
Assume _.
We prove the intermediate claim L1b: q, q SNoS_ ω q < x x < q + eps_ (ordsucc n) f' n < q.
Apply H3 (ordsucc n) (nat_p_omega (ordsucc n) (nat_ordsucc n Hn)) to the current goal.
Let q be given.
Assume Hq.
Apply Hq to the current goal.
Assume Hq1 Hq.
Apply Hq to the current goal.
Assume Hq2 Hq3.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
Apply SNoLtLe_or (f' n) q IHn1c Hq1c to the current goal.
Assume H4: f' n < q.
We use q to witness the existential quantifier.
Apply and4I to the current goal.
An exact proof term for the current goal is Hq1.
An exact proof term for the current goal is Hq2.
An exact proof term for the current goal is Hq3.
An exact proof term for the current goal is H4.
Assume H4: q f' n.
We prove the intermediate claim L1ba: SNo (- f' n).
An exact proof term for the current goal is SNo_minus_SNo (f' n) IHn1c.
We prove the intermediate claim L1bb: SNo (x + - f' n).
An exact proof term for the current goal is SNo_add_SNo x (- f' n) H1 L1ba.
We prove the intermediate claim L1bc: SNo (eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_eps_ (ordsucc n) (omega_ordsucc n (nat_p_omega n Hn)).
Apply xm (kω, eps_ k x + - f' n) to the current goal.
Assume H5.
Apply H5 to the current goal.
Let k be given.
Assume H5.
Apply H5 to the current goal.
Assume Hk1: k ω.
Assume Hk2: eps_ k x + - f' n.
We use (f' n + eps_ (ordsucc k)) to witness the existential quantifier.
We prove the intermediate claim Lk1: ordsucc k ω.
An exact proof term for the current goal is omega_ordsucc k Hk1.
We prove the intermediate claim Lk2: SNo (eps_ (ordsucc k)).
An exact proof term for the current goal is SNo_eps_ (ordsucc k) Lk1.
We prove the intermediate claim Lk3: f' n + eps_ (ordsucc k) SNoS_ ω.
An exact proof term for the current goal is add_SNo_SNoS_omega (f' n) IHn1 (eps_ (ordsucc k)) (SNo_eps_SNoS_omega (ordsucc k) (omega_ordsucc k Hk1)).
Apply SNoS_E2 ω omega_ordinal (f' n + eps_ (ordsucc k)) Lk3 to the current goal.
Assume _ _.
Assume H6: SNo (f' n + eps_ (ordsucc k)).
Assume _.
Apply and4I to the current goal.
An exact proof term for the current goal is Lk3.
We will prove f' n + eps_ (ordsucc k) < x.
Apply SNoLtLe_tra (f' n + eps_ (ordsucc k)) (f' n + eps_ k) x to the current goal.
An exact proof term for the current goal is H6.
An exact proof term for the current goal is SNo_add_SNo (f' n) (eps_ k) IHn1c (SNo_eps_ k Hk1).
An exact proof term for the current goal is H1.
We will prove f' n + eps_ (ordsucc k) < f' n + eps_ k.
Apply add_SNo_Lt2 (f' n) (eps_ (ordsucc k)) (eps_ k) IHn1c Lk2 (SNo_eps_ k Hk1) to the current goal.
We will prove eps_ (ordsucc k) < eps_ k.
Apply SNo_eps_decr to the current goal.
We will prove ordsucc k ω.
An exact proof term for the current goal is Lk1.
We will prove k ordsucc k.
Apply ordsuccI2 to the current goal.
We will prove f' n + eps_ k x.
Apply add_SNo_minus_L2' (f' n) x IHn1c H1 (λu v ⇒ f' n + eps_ k u) to the current goal.
We will prove f' n + eps_ k f' n + (- f' n + x).
rewrite the current goal using add_SNo_com (- f' n) x L1ba H1 (from left to right).
We will prove f' n + eps_ k f' n + (x + - f' n).
An exact proof term for the current goal is add_SNo_Le2 (f' n) (eps_ k) (x + - f' n) IHn1c (SNo_eps_ k Hk1) L1bb Hk2.
We will prove x < (f' n + eps_ (ordsucc k)) + eps_ (ordsucc n).
rewrite the current goal using add_SNo_com_3b_1_2 (f' n) (eps_ (ordsucc k)) (eps_ (ordsucc n)) IHn1c Lk2 L1bc (from left to right).
We will prove x < (f' n + eps_ (ordsucc n)) + eps_ (ordsucc k).
Apply add_SNo_eps_Lt' x (f' n + eps_ (ordsucc n)) H1 (SNo_add_SNo (f' n) (eps_ (ordsucc n)) IHn1c L1bc) (ordsucc k) Lk1 to the current goal.
We will prove x < f' n + eps_ (ordsucc n).
Apply SNoLtLe_tra x (q + (eps_ (ordsucc n))) to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is SNo_add_SNo q (eps_ (ordsucc n)) Hq1c L1bc.
An exact proof term for the current goal is SNo_add_SNo (f' n) (eps_ (ordsucc n)) IHn1c L1bc.
We will prove x < q + eps_ (ordsucc n).
An exact proof term for the current goal is Hq3.
We will prove q + eps_ (ordsucc n) f' n + eps_ (ordsucc n).
An exact proof term for the current goal is add_SNo_Le1 q (eps_ (ordsucc n)) (f' n) Hq1c L1bc IHn1c H4.
We will prove f' n < f' n + eps_ (ordsucc k).
An exact proof term for the current goal is add_SNo_eps_Lt (f' n) IHn1c (ordsucc k) (omega_ordsucc k Hk1).
Assume H5: ¬ (kω, eps_ k x + - f' n).
We will prove False.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
We prove the intermediate claim L1bd: 0 < x + - f' n.
Apply add_SNo_Lt1_cancel 0 (f' n) (x + - f' n) SNo_0 IHn1c L1bb to the current goal.
We will prove 0 + f' n < (x + - f' n) + f' n.
rewrite the current goal using add_SNo_0L (f' n) IHn1c (from left to right).
rewrite the current goal using add_SNo_minus_R2' x (f' n) H1 IHn1c (from left to right).
We will prove f' n < x.
An exact proof term for the current goal is IHn2.
We prove the intermediate claim L1be: f' n = x.
Apply H2 (f' n) IHn1 to the current goal.
Let k be given.
Assume Hk.
We will prove abs_SNo (f' n + - x) < eps_ k.
Apply SNoLtLe_or (x + - f' n) (eps_ k) L1bb (SNo_eps_ k Hk) to the current goal.
Assume H6: x + - f' n < eps_ k.
We will prove abs_SNo (f' n + - x) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap (f' n) x IHn1c H1 (from left to right).
We will prove abs_SNo (x + - f' n) < eps_ k.
rewrite the current goal using pos_abs_SNo (x + - f' n) L1bd (from left to right).
An exact proof term for the current goal is H6.
Assume H6: eps_ k x + - f' n.
Apply H5 to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
An exact proof term for the current goal is H6.
rewrite the current goal using L1be (from right to left) at position 1.
An exact proof term for the current goal is IHn2.
We prove the intermediate claim L1c: f' (ordsucc n) SNoS_ ω f' (ordsucc n) < x x < f' (ordsucc n) + eps_ (ordsucc n) f' n < f' (ordsucc n).
rewrite the current goal using Lf'S n Hn (from left to right).
An exact proof term for the current goal is Eps_i_ex (λq ⇒ q SNoS_ ω q < x x < q + eps_ (ordsucc n) f' n < q) L1b.
Apply L1c to the current goal.
Assume H H7.
Apply H to the current goal.
Assume H H6.
Apply H to the current goal.
Assume H4 H5.
Apply and4I to the current goal.
An exact proof term for the current goal is H4.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is H6.
Let i be given.
Assume Hi: i ordsucc n.
Assume Hfi: SNo (f i).
Apply ordsuccE n i Hi to the current goal.
Assume H8: i n.
We will prove f i < f' (ordsucc n).
Apply SNoLt_tra (f i) (f' n) (f' (ordsucc n)) to the current goal.
We will prove SNo (f i).
An exact proof term for the current goal is Hfi.
An exact proof term for the current goal is IHn1c.
Apply SNoS_E2 ω omega_ordinal (f' (ordsucc n)) H4 to the current goal.
Assume _ _ H9 _.
An exact proof term for the current goal is H9.
Apply IHn to the current goal.
Assume _.
Assume IHn4: in, SNo (f i)f i < f' n.
An exact proof term for the current goal is IHn4 i H8 Hfi.
An exact proof term for the current goal is H7.
Assume H8: i = n.
rewrite the current goal using H8 (from left to right).
We will prove f n < f' (ordsucc n).
rewrite the current goal using beta ω f' n (nat_p_omega n Hn) (from left to right).
An exact proof term for the current goal is H7.
We prove the intermediate claim L2: nω, f' n SNoS_ ω f n < x x < f n + eps_ n in, SNo (f i)f i < f n.
Let n be given.
Assume Hn.
An exact proof term for the current goal is beta ω f' n Hn (λu v ⇒ f' n SNoS_ ω v < x x < v + eps_ n in, SNo (f i)f i < v) (L1 n (omega_nat_p n Hn)).
We use f to witness the existential quantifier.
Apply andI to the current goal.
We will prove (λn ∈ ωf' n) nω, SNoS_ ω.
Apply lam_Pi to the current goal.
Let n be given.
Assume Hn.
Apply L2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Let n be given.
Assume Hn.
Apply L2 n Hn to the current goal.
Assume H H7.
Apply H to the current goal.
Assume H H6.
Apply H to the current goal.
Assume H4 H5.
Apply and3I to the current goal.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is H6.
Let i be given.
Assume Hi: i n.
Apply H7 i Hi to the current goal.
We will prove SNo (f i).
We prove the intermediate claim Li: i ω.
An exact proof term for the current goal is nat_p_omega i (nat_p_trans n (omega_nat_p n Hn) i Hi).
rewrite the current goal using beta ω f' i Li (from left to right).
We will prove SNo (f' i).
Apply L2 i Li to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
Apply H to the current goal.
Assume H8: f' i SNoS_ ω.
Assume _.
Apply SNoS_E2 ω omega_ordinal (f' i) H8 to the current goal.
Assume _ _ H9 _.
We will prove SNo (f' i).
An exact proof term for the current goal is H9.
Theorem. (SNo_prereal_decr_upper_approx) The following is provable:
∀x, SNo x(qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)(kω, qSNoS_ ω, q < x x < q + eps_ k)gSNoS_ ωω, nω, g n + - eps_ n < x x < g n in, g n < g i
Proof:
Let x be given.
Assume H1 H2 H3.
We prove the intermediate claim L1: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x H1.
Apply SNo_prereal_incr_lower_approx (- x) L1 (minus_SNo_prereal_1 x H1 H2) (minus_SNo_prereal_2 x H1 H3) to the current goal.
Let f be given.
Assume Hf.
Apply Hf to the current goal.
Assume Hf1: f SNoS_ ωω.
Assume Hf2: nω, f n < - x - x < f n + eps_ n in, f i < f n.
We prove the intermediate claim Lf: nω, SNo (f n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (f n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) f n Hf1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
Set g to be the term λn ∈ ω- f n.
We use g to witness the existential quantifier.
Apply andI to the current goal.
We will prove g SNoS_ ωω.
We will prove (λn ∈ ω- f n) _ω, SNoS_ ω.
Apply lam_Pi to the current goal.
Let n be given.
Assume Hn.
We will prove - f n SNoS_ ω.
Apply minus_SNo_SNoS_omega to the current goal.
We will prove f n SNoS_ ω.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) f n Hf1 Hn.
Let n be given.
Assume Hn.
We will prove g n + - eps_ n < x x < g n in, g n < g i.
We prove the intermediate claim L1: - f n + - eps_ n < x x < - f n in, - f n < g i.
Apply Hf2 n Hn to the current goal.
Assume H.
Apply H to the current goal.
Assume Hf2a: f n < - x.
Assume Hf2b: - x < f n + eps_ n.
Assume Hf2c: in, f i < f n.
Apply and3I to the current goal.
We will prove - f n + - eps_ n < x.
rewrite the current goal using minus_add_SNo_distr (f n) (eps_ n) (Lf n Hn) (SNo_eps_ n Hn) (from right to left).
We will prove - (f n + eps_ n) < x.
Apply minus_SNo_Lt_contra1 x (f n + eps_ n) H1 (SNo_add_SNo (f n) (eps_ n) (Lf n Hn) (SNo_eps_ n Hn)) to the current goal.
We will prove - x < f n + eps_ n.
An exact proof term for the current goal is Hf2b.
We will prove x < - f n.
Apply minus_SNo_Lt_contra2 (f n) x (Lf n Hn) H1 to the current goal.
We will prove f n < - x.
An exact proof term for the current goal is Hf2a.
Let i be given.
Assume Hi.
We prove the intermediate claim Li: i ω.
An exact proof term for the current goal is nat_p_omega i (nat_p_trans n (omega_nat_p n Hn) i Hi).
rewrite the current goal using beta ω (λn ⇒ - f n) i Li (from left to right).
We will prove - f n < - f i.
Apply minus_SNo_Lt_contra (f i) (f n) (Lf i Li) (Lf n Hn) to the current goal.
An exact proof term for the current goal is Hf2c i Hi.
We prove the intermediate claim L2: g n = - f n.
An exact proof term for the current goal is beta ω (λn ⇒ - f n) n Hn.
An exact proof term for the current goal is L2 (λu v ⇒ v + - eps_ n < x x < v in, v < g i) L1.
Theorem. (SNoCutP_SNoCut_lim) The following is provable:
∀lambda, ordinal lambda(αlambda, ordsucc α lambda)L RSNoS_ lambda, SNoCutP L RSNoLev (SNoCut L R) ordsucc lambda
Proof:
Let lambda be given.
Assume Hl1 Hl2.
Let L be given.
Assume HL.
Let R be given.
Assume HR HLR.
We prove the intermediate claim L1: xL, SNoLev x lambda.
Let x be given.
Assume Hx.
Apply SNoS_E2 lambda Hl1 x (HL x Hx) to the current goal.
Assume H _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim L2: yR, SNoLev y lambda.
Let y be given.
Assume Hy.
Apply SNoS_E2 lambda Hl1 y (HR y Hy) to the current goal.
Assume H _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim L3: ordinal ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))).
Apply ordinal_binunion to the current goal.
Apply ordinal_famunion to the current goal.
Let x be given.
Assume Hx.
Apply SNoS_E2 lambda Hl1 x (HL x Hx) to the current goal.
Assume _ H _ _.
We will prove ordinal (ordsucc (SNoLev x)).
Apply ordinal_ordsucc to the current goal.
We will prove ordinal (SNoLev x).
An exact proof term for the current goal is H.
Apply ordinal_famunion to the current goal.
Let y be given.
Assume Hy.
Apply SNoS_E2 lambda Hl1 y (HR y Hy) to the current goal.
Assume _ H _ _.
We will prove ordinal (ordsucc (SNoLev y)).
Apply ordinal_ordsucc to the current goal.
We will prove ordinal (SNoLev y).
An exact proof term for the current goal is H.
We prove the intermediate claim L4: ordinal (ordsucc lambda).
Apply ordinal_ordsucc to the current goal.
An exact proof term for the current goal is Hl1.
We prove the intermediate claim L5: ordsucc ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))) ordsucc lambda.
Apply ordinal_ordsucc_In_Subq to the current goal.
We will prove ordinal (ordsucc lambda).
An exact proof term for the current goal is L4.
We will prove ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))) ordsucc lambda.
Apply ordinal_In_Or_Subq ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))) (ordsucc lambda) L3 L4 to the current goal.
Assume H1.
An exact proof term for the current goal is H1.
Assume H1: ordsucc lambda ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))).
We will prove False.
Apply binunionE (xLordsucc (SNoLev x)) (yRordsucc (SNoLev y)) lambda (H1 lambda (ordsuccI2 lambda)) to the current goal.
Assume H2: lambda xLordsucc (SNoLev x).
Apply famunionE_impred L (λx ⇒ ordsucc (SNoLev x)) lambda H2 to the current goal.
Let x be given.
Assume Hx: x L.
Assume H3: lambda ordsucc (SNoLev x).
Apply In_no2cycle lambda (ordsucc (SNoLev x)) H3 to the current goal.
We will prove ordsucc (SNoLev x) lambda.
Apply Hl2 to the current goal.
An exact proof term for the current goal is L1 x Hx.
Assume H2: lambda yRordsucc (SNoLev y).
Apply famunionE_impred R (λy ⇒ ordsucc (SNoLev y)) lambda H2 to the current goal.
Let y be given.
Assume Hy: y R.
Assume H3: lambda ordsucc (SNoLev y).
Apply In_no2cycle lambda (ordsucc (SNoLev y)) H3 to the current goal.
We will prove ordsucc (SNoLev y) lambda.
Apply Hl2 to the current goal.
An exact proof term for the current goal is L2 y Hy.
Apply SNoCutP_SNoCut_impred L R HLR to the current goal.
Assume H1: SNo (SNoCut L R).
Assume _ _ _.
An exact proof term for the current goal is L5 (SNoLev (SNoCut L R)) H2.
Theorem. (SNoCutP_SNoCut_omega) The following is provable:
Proof:
An exact proof term for the current goal is SNoCutP_SNoCut_lim ω omega_ordinal omega_ordsucc.
Theorem. (SNo_approx_real_lem) The following is provable:
Proof:
Let f be given.
Assume Hf1.
Let g be given.
Assume Hg1 Hfg.
Let p be given.
Assume Hp.
Set L to be the term {f n|nω}.
Set R to be the term {g n|nω}.
Set x to be the term SNoCut L R.
We prove the intermediate claim Lf: nω, SNo (f n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (f n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) f n Hf1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lg: nω, SNo (g n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (g n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) g n Hg1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim L1: SNoCutP L R.
We will prove (wL, SNo w) (zR, SNo z) (wL, zR, w < z).
Apply and3I to the current goal.
Let w be given.
Assume Hw: w L.
Apply ReplE_impred ω (λn ⇒ f n) w Hw to the current goal.
Let n be given.
Assume Hn.
Assume Hwn: w = f n.
rewrite the current goal using Hwn (from left to right).
We will prove SNo (f n).
An exact proof term for the current goal is Lf n Hn.
Let z be given.
Assume Hz: z R.
Apply ReplE_impred ω (λn ⇒ g n) z Hz to the current goal.
Let m be given.
Assume Hm.
Assume Hzm: z = g m.
rewrite the current goal using Hzm (from left to right).
We will prove SNo (g m).
An exact proof term for the current goal is Lg m Hm.
Let w be given.
Assume Hw: w L.
Let z be given.
Assume Hz: z R.
Apply ReplE_impred ω (λn ⇒ f n) w Hw to the current goal.
Let n be given.
Assume Hn.
Assume Hwn: w = f n.
rewrite the current goal using Hwn (from left to right).
Apply ReplE_impred ω (λn ⇒ g n) z Hz to the current goal.
Let m be given.
Assume Hm.
Assume Hzm: z = g m.
rewrite the current goal using Hzm (from left to right).
We will prove f n < g m.
An exact proof term for the current goal is Hfg n Hn m Hm.
Apply SNoCutP_SNoCut_impred L R L1 to the current goal.
Assume HLR1: SNo x.
Assume HLR2: SNoLev x ordsucc ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))).
Assume HLR3: wL, w < x.
Assume HLR4: yR, x < y.
Assume HLR5: ∀z, SNo z(wL, w < z)(yR, z < y)SNoLev x SNoLev z SNoEq_ (SNoLev x) x z.
We prove the intermediate claim L2: L SNoS_ ω.
Let w be given.
Assume Hw.
Apply ReplE_impred ω (λn ⇒ f n) w Hw to the current goal.
Let n be given.
Assume Hn.
Assume Hwn: w = f n.
rewrite the current goal using Hwn (from left to right).
We will prove f n SNoS_ ω.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) f n Hf1 Hn.
We prove the intermediate claim L3: R SNoS_ ω.
Let z be given.
Assume Hz: z R.
Apply ReplE_impred ω (λn ⇒ g n) z Hz to the current goal.
Let m be given.
Assume Hm.
Assume Hzm: z = g m.
rewrite the current goal using Hzm (from left to right).
We will prove g m SNoS_ ω.
An exact proof term for the current goal is (ap_Pi ω (λ_ ⇒ SNoS_ ω) g m Hg1 Hm).
We prove the intermediate claim L4: SNoLev x ordsucc ω.
An exact proof term for the current goal is SNoCutP_SNoCut_omega L L2 R L3 L1.
We prove the intermediate claim L5: x SNoS_ (ordsucc ω).
Apply SNoS_I (ordsucc ω) ordsucc_omega_ordinal x (SNoLev x) to the current goal.
We will prove SNoLev x ordsucc ω.
An exact proof term for the current goal is L4.
We will prove SNo_ (SNoLev x) x.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is HLR1.
Apply Hp L1 HLR1 L4 L5 to the current goal.
Let n be given.
Assume Hn.
We will prove f n < x.
Apply HLR3 to the current goal.
An exact proof term for the current goal is ReplI ω (λn ⇒ f n) n Hn.
Let n be given.
Assume Hn.
We will prove x < g n.
Apply HLR4 to the current goal.
An exact proof term for the current goal is ReplI ω (λn ⇒ g n) n Hn.
Theorem. (SNo_approx_real) The following is provable:
∀x, SNo xf gSNoS_ ωω, (nω, f n < x)(nω, x < f n + eps_ n)(nω, in, f i < f n)(nω, x < g n)(nω, in, g n < g i)x = SNoCut {f n|nω} {g n|nω}x real
Proof:
Let x be given.
Assume Hx.
Let f be given.
Assume Hf1.
Let g be given.
Assume Hg1 Hf2 Hf3 Hf4 Hg3 Hg4.
Set L to be the term {f n|nω}.
Set R to be the term {g n|nω}.
Assume Hxfg: x = SNoCut L R.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Hx.
We prove the intermediate claim Lf: nω, SNo (f n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (f n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) f n Hf1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lg: nω, SNo (g n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (g n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) g n Hg1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lfg: n mω, f n < g m.
Let n be given.
Assume Hn.
Let m be given.
Assume Hm.
Apply SNoLt_tra (f n) x (g m) (Lf n Hn) Hx (Lg m Hm) to the current goal.
An exact proof term for the current goal is Hf2 n Hn.
An exact proof term for the current goal is Hg3 m Hm.
Apply SNo_approx_real_lem f Hf1 g Hg1 Lfg to the current goal.
rewrite the current goal using Hxfg (from right to left).
Assume H1: SNoCutP L R.
Assume H2: SNo x.
rewrite the current goal using Hxfg (from right to left).
Assume H3: SNoLev x ordsucc ω.
rewrite the current goal using Hxfg (from right to left).
Assume H4: x SNoS_ (ordsucc ω).
rewrite the current goal using Hxfg (from right to left).
Assume H5: nω, f n < x.
rewrite the current goal using Hxfg (from right to left).
Assume H6: nω, x < g n.
Apply SNoCutP_SNoCut_impred L R H1 to the current goal.
Assume _ _ _ _.
Assume H7: ∀z, SNo z(wL, w < z)(yR, z < y)SNoLev (SNoCut L R) SNoLev z SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) z.
Apply ordsuccE ω (SNoLev x) H3 to the current goal.
Assume H8: SNoLev x ω.
Apply SNoS_omega_real to the current goal.
We will prove x SNoS_ ω.
Apply SNoS_I ω omega_ordinal x (SNoLev x) H8 to the current goal.
We will prove SNo_ (SNoLev x) x.
An exact proof term for the current goal is SNoLev_ x Hx.
Assume H8: SNoLev x = ω.
Apply real_I to the current goal.
We will prove x SNoS_ (ordsucc ω).
An exact proof term for the current goal is H4.
We will prove x ω.
Assume H9: x = ω.
We prove the intermediate claim Lbd1: x < g 0.
An exact proof term for the current goal is Hg3 0 (nat_p_omega 0 nat_0).
Apply real_E (g 0) (SNoS_omega_real (g 0) (ap_Pi ω (λ_ ⇒ SNoS_ ω) g 0 Hg1 (nat_p_omega 0 nat_0))) to the current goal.
Assume Hg0a: SNo (g 0).
Assume _ _ _.
Assume Hg0b: g 0 < ω.
Assume _ _.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLt_tra x (g 0) x Hx Hg0a Hx Lbd1 to the current goal.
We will prove g 0 < x.
rewrite the current goal using H9 (from left to right).
We will prove g 0 < ω.
An exact proof term for the current goal is Hg0b.
We will prove x - ω.
Assume H9: x = - ω.
We prove the intermediate claim Lbd2: f 0 < x.
An exact proof term for the current goal is Hf2 0 (nat_p_omega 0 nat_0).
Apply real_E (f 0) (SNoS_omega_real (f 0) (ap_Pi ω (λ_ ⇒ SNoS_ ω) f 0 Hf1 (nat_p_omega 0 nat_0))) to the current goal.
Assume Hf0a: SNo (f 0).
Assume _ _.
Assume Hf0b: - ω < f 0.
Assume _ _ _.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLt_tra x (f 0) x Hx Hf0a Hx to the current goal.
We will prove x < f 0.
rewrite the current goal using H9 (from left to right).
An exact proof term for the current goal is Hf0b.
We will prove f 0 < x.
An exact proof term for the current goal is Lbd2.
We will prove qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x.
Let q be given.
Assume Hq1 Hq2.
We will prove q = x.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
We prove the intermediate claim Lmq: SNo (- q).
An exact proof term for the current goal is SNo_minus_SNo q Hq1c.
We prove the intermediate claim Lxmq: SNo (x + - q).
An exact proof term for the current goal is SNo_add_SNo x (- q) Hx Lmq.
We prove the intermediate claim Lqmx: SNo (q + - x).
An exact proof term for the current goal is SNo_add_SNo q (- x) Hq1c Lmx.
We prove the intermediate claim L5: wL, w < q.
Let w be given.
Assume Hw.
Apply ReplE_impred ω (λn ⇒ f n) w Hw to the current goal.
Let n be given.
Assume Hn.
Assume Hwn: w = f n.
rewrite the current goal using Hwn (from left to right).
We will prove f n < q.
Apply SNoLtLe_or (f n) q (Lf n Hn) Hq1c to the current goal.
Assume H9: f n < q.
An exact proof term for the current goal is H9.
Assume H9: q f n.
Apply real_E (f (ordsucc n)) (SNoS_omega_real (f (ordsucc n)) (ap_Pi ω (λ_ ⇒ SNoS_ ω) f (ordsucc n) Hf1 (omega_ordsucc n Hn))) to the current goal.
Assume _ _ _ _ _.
Assume Hfn2: q'SNoS_ ω, (kω, abs_SNo (q' + - f (ordsucc n)) < eps_ k)q' = f (ordsucc n).
Assume _.
We prove the intermediate claim L5a: SNo (f (ordsucc n)).
An exact proof term for the current goal is Lf (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim L5b: q < f (ordsucc n).
Apply SNoLeLt_tra q (f n) (f (ordsucc n)) Hq1c (Lf n Hn) L5a H9 to the current goal.
We will prove f n < f (ordsucc n).
Apply Hf4 (ordsucc n) (omega_ordsucc n Hn) to the current goal.
We will prove n ordsucc n.
Apply ordsuccI2 to the current goal.
We prove the intermediate claim L5c: 0 < f (ordsucc n) + - q.
An exact proof term for the current goal is SNoLt_minus_pos q (f (ordsucc n)) Hq1c L5a L5b.
We prove the intermediate claim L5d: SNo (f (ordsucc n) + - q).
An exact proof term for the current goal is SNo_add_SNo (f (ordsucc n)) (- q) L5a Lmq.
We prove the intermediate claim L5e: f (ordsucc n) < x.
An exact proof term for the current goal is Hf2 (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim L5f: q < x.
An exact proof term for the current goal is SNoLt_tra q (f (ordsucc n)) x Hq1c L5a Hx L5b L5e.
We prove the intermediate claim L5g: 0 < x + - q.
An exact proof term for the current goal is SNoLt_minus_pos q x Hq1c Hx L5f.
We prove the intermediate claim L5h: abs_SNo (q + - x) = x + - q.
rewrite the current goal using abs_SNo_dist_swap q x Hq1c Hx (from left to right).
An exact proof term for the current goal is pos_abs_SNo (x + - q) L5g.
We prove the intermediate claim L5i: q = f (ordsucc n).
Apply Hfn2 q Hq1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (q + - f (ordsucc n)) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap q (f (ordsucc n)) Hq1c (Lf (ordsucc n) (omega_ordsucc n Hn)) (from left to right).
We will prove abs_SNo (f (ordsucc n) + - q) < eps_ k.
rewrite the current goal using pos_abs_SNo (f (ordsucc n) + - q) L5c (from left to right).
We will prove f (ordsucc n) + - q < eps_ k.
Apply SNoLt_tra (f (ordsucc n) + - q) (x + - q) (eps_ k) L5d Lxmq (SNo_eps_ k Hk) to the current goal.
We will prove f (ordsucc n) + - q < x + - q.
Apply add_SNo_Lt1 (f (ordsucc n)) (- q) x L5a Lmq Hx to the current goal.
We will prove f (ordsucc n) < x.
An exact proof term for the current goal is L5e.
We will prove x + - q < eps_ k.
rewrite the current goal using L5h (from right to left).
We will prove abs_SNo (q + - x) < eps_ k.
An exact proof term for the current goal is Hq2 k Hk.
Apply SNoLt_irref q to the current goal.
rewrite the current goal using L5i (from left to right) at position 2.
An exact proof term for the current goal is L5b.
We prove the intermediate claim L6: zR, q < z.
Let z be given.
Assume Hz: z R.
Apply ReplE_impred ω (λn ⇒ g n) z Hz to the current goal.
Let m be given.
Assume Hm.
Assume Hzm: z = g m.
rewrite the current goal using Hzm (from left to right).
We will prove q < g m.
Apply SNoLtLe_or q (g m) Hq1c (Lg m Hm) to the current goal.
Assume H9: q < g m.
An exact proof term for the current goal is H9.
Assume H9: g m q.
Apply real_E (g (ordsucc m)) (SNoS_omega_real (g (ordsucc m)) (ap_Pi ω (λ_ ⇒ SNoS_ ω) g (ordsucc m) Hg1 (omega_ordsucc m Hm))) to the current goal.
Assume _ _ _ _ _.
Assume Hgm2: q'SNoS_ ω, (kω, abs_SNo (q' + - g (ordsucc m)) < eps_ k)q' = g (ordsucc m).
Assume _.
We prove the intermediate claim L6a: SNo (g (ordsucc m)).
An exact proof term for the current goal is Lg (ordsucc m) (omega_ordsucc m Hm).
We prove the intermediate claim L6b: g (ordsucc m) < q.
Apply SNoLtLe_tra (g (ordsucc m)) (g m) q L6a (Lg m Hm) Hq1c to the current goal.
We will prove g (ordsucc m) < g m.
Apply Hg4 (ordsucc m) (omega_ordsucc m Hm) to the current goal.
We will prove m ordsucc m.
Apply ordsuccI2 to the current goal.
An exact proof term for the current goal is H9.
We prove the intermediate claim L6c: 0 < q + - g (ordsucc m).
An exact proof term for the current goal is SNoLt_minus_pos (g (ordsucc m)) q L6a Hq1c L6b.
We prove the intermediate claim L6d: SNo (q + - g (ordsucc m)).
An exact proof term for the current goal is SNo_add_SNo q (- g (ordsucc m)) Hq1c (SNo_minus_SNo (g (ordsucc m)) L6a).
We prove the intermediate claim L6e: x < g (ordsucc m).
An exact proof term for the current goal is Hg3 (ordsucc m) (omega_ordsucc m Hm).
We prove the intermediate claim L6f: x < q.
An exact proof term for the current goal is SNoLt_tra x (g (ordsucc m)) q Hx L6a Hq1c L6e L6b.
We prove the intermediate claim L6g: 0 < q + - x.
An exact proof term for the current goal is SNoLt_minus_pos x q Hx Hq1c L6f.
We prove the intermediate claim L6h: abs_SNo (q + - x) = q + - x.
An exact proof term for the current goal is pos_abs_SNo (q + - x) L6g.
We prove the intermediate claim L6i: q = g (ordsucc m).
Apply Hgm2 q Hq1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (q + - g (ordsucc m)) < eps_ k.
rewrite the current goal using pos_abs_SNo (q + - g (ordsucc m)) L6c (from left to right).
We will prove q + - g (ordsucc m) < eps_ k.
Apply SNoLt_tra (q + - g (ordsucc m)) (q + - x) (eps_ k) L6d Lqmx (SNo_eps_ k Hk) to the current goal.
We will prove q + - g (ordsucc m) < q + - x.
Apply add_SNo_Lt2 q (- g (ordsucc m)) (- x) Hq1c (SNo_minus_SNo (g (ordsucc m)) L6a) Lmx to the current goal.
We will prove - g (ordsucc m) < - x.
Apply minus_SNo_Lt_contra x (g (ordsucc m)) Hx L6a to the current goal.
An exact proof term for the current goal is L6e.
We will prove q + - x < eps_ k.
rewrite the current goal using L6h (from right to left).
We will prove abs_SNo (q + - x) < eps_ k.
An exact proof term for the current goal is Hq2 k Hk.
Apply SNoLt_irref q to the current goal.
rewrite the current goal using L6i (from left to right) at position 1.
An exact proof term for the current goal is L6b.
Apply H7 q Hq1c L5 L6 to the current goal.
rewrite the current goal using Hxfg (from right to left).
rewrite the current goal using H8 (from left to right).
Assume H9: ω SNoLev q.
We will prove False.
Apply In_irref (SNoLev q) to the current goal.
We will prove SNoLev q SNoLev q.
Apply H9 to the current goal.
We will prove SNoLev q ω.
An exact proof term for the current goal is Hq1a.
Theorem. (SNo_approx_real_rep) The following is provable:
xreal, ∀p : prop, (f gSNoS_ ωω, (nω, f n < x)(nω, x < f n + eps_ n)(nω, in, f i < f n)(nω, g n + - eps_ n < x)(nω, x < g n)(nω, in, g n < g i)SNoCutP {f n|nω} {g n|nω}x = SNoCut {f n|nω} {g n|nω}p)p
Proof:
Let x be given.
Assume Hx.
Let p be given.
Assume Hp.
Apply real_E x Hx to the current goal.
Assume Hx1 Hx2 Hx3 _ _ Hx4 Hx5.
Apply SNo_prereal_incr_lower_approx x Hx1 Hx4 Hx5 to the current goal.
Let f be given.
Assume Hf.
Apply Hf to the current goal.
Assume Hf1 Hf2.
Apply SNo_prereal_decr_upper_approx x Hx1 Hx4 Hx5 to the current goal.
Let g be given.
Assume Hg.
Apply Hg to the current goal.
Assume Hg1 Hg2.
We prove the intermediate claim Lf: nω, SNo (f n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (f n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) f n Hf1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lg: nω, SNo (g n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (g n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) g n Hg1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lf1: nω, f n < x.
Let n be given.
Assume Hn.
Apply Hf2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lf2: nω, x < f n + eps_ n.
Let n be given.
Assume Hn.
Apply Hf2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim Lf3: nω, in, f i < f n.
Let n be given.
Assume Hn.
Apply Hf2 n Hn to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim Lg1: nω, g n + - eps_ n < x.
Let n be given.
Assume Hn.
Apply Hg2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lg2: nω, x < g n.
Let n be given.
Assume Hn.
Apply Hg2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim Lg3: nω, in, g n < g i.
Let n be given.
Assume Hn.
Apply Hg2 n Hn to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim Lfg: n mω, f n < g m.
Let n be given.
Assume Hn.
Let m be given.
Assume Hm.
Apply SNoLt_tra (f n) x (g m) (Lf n Hn) Hx1 (Lg m Hm) to the current goal.
We will prove f n < x.
An exact proof term for the current goal is Lf1 n Hn.
We will prove x < g m.
An exact proof term for the current goal is Lg2 m Hm.
Set L to be the term {f n|nω}.
Set R to be the term {g n|nω}.
Apply SNo_approx_real_lem f Hf1 g Hg1 Lfg to the current goal.
Assume H1: SNoCutP L R.
Assume H2: SNo (SNoCut L R).
Assume H3: SNoLev (SNoCut L R) ordsucc ω.
Assume H4: SNoCut L R SNoS_ (ordsucc ω).
Assume H5: nω, f n < SNoCut L R.
Assume H6: nω, SNoCut L R < g n.
We prove the intermediate claim Lxfg: x = SNoCut L R.
rewrite the current goal using SNo_eta x Hx1 (from left to right).
Apply SNoCut_ext (SNoL x) (SNoR x) L R (SNoCutP_SNoL_SNoR x Hx1) H1 to the current goal.
Let w be given.
Assume Hw: w SNoL x.
We will prove w < SNoCut L R.
Apply SNoL_E x Hx1 w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: w < x.
We prove the intermediate claim Lw1: w SNoS_ ω.
An exact proof term for the current goal is SNoLev_In_real_SNoS_omega x Hx w Hw1 Hw2.
We prove the intermediate claim Lw2: 0 < x + - w.
An exact proof term for the current goal is SNoLt_minus_pos w x Hw1 Hx1 Hw3.
We prove the intermediate claim Lw3: kω, w + eps_ k x.
Apply dneg to the current goal.
Assume H7: ¬ kω, w + eps_ k x.
We prove the intermediate claim Lw3a: w = x.
Apply Hx4 w Lw1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (w + - x) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap w x Hw1 Hx1 (from left to right).
We will prove abs_SNo (x + - w) < eps_ k.
rewrite the current goal using pos_abs_SNo (x + - w) Lw2 (from left to right).
We will prove x + - w < eps_ k.
Apply SNoLtLe_or (x + - w) (eps_ k) (SNo_add_SNo x (- w) Hx1 (SNo_minus_SNo w Hw1)) (SNo_eps_ k Hk) to the current goal.
Assume H8: x + - w < eps_ k.
An exact proof term for the current goal is H8.
Assume H8: eps_ k x + - w.
We will prove False.
Apply H7 to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We will prove w + eps_ k x.
rewrite the current goal using add_SNo_minus_R2' x w Hx1 Hw1 (from right to left).
We will prove w + eps_ k (x + - w) + w.
rewrite the current goal using add_SNo_com w (eps_ k) Hw1 (SNo_eps_ k Hk) (from left to right).
We will prove eps_ k + w (x + - w) + w.
An exact proof term for the current goal is add_SNo_Le1 (eps_ k) w (x + - w) (SNo_eps_ k Hk) Hw1 (SNo_add_SNo x (- w) Hx1 (SNo_minus_SNo w Hw1)) H8.
Apply SNoLt_irref x to the current goal.
rewrite the current goal using Lw3a (from right to left) at position 1.
An exact proof term for the current goal is Hw3.
Apply Lw3 to the current goal.
Let k be given.
Assume Hk.
Apply Hk to the current goal.
Assume Hk1: k ω.
Assume Hk2: w + eps_ k x.
We will prove w < SNoCut L R.
Apply SNoLt_tra w (f k) (SNoCut L R) Hw1 (Lf k Hk1) H2 to the current goal.
We will prove w < f k.
Apply add_SNo_Lt1_cancel w (eps_ k) (f k) Hw1 (SNo_eps_ k Hk1) (Lf k Hk1) to the current goal.
We will prove w + eps_ k < f k + eps_ k.
Apply SNoLeLt_tra (w + eps_ k) x (f k + eps_ k) (SNo_add_SNo w (eps_ k) Hw1 (SNo_eps_ k Hk1)) Hx1 (SNo_add_SNo (f k) (eps_ k) (Lf k Hk1) (SNo_eps_ k Hk1)) Hk2 to the current goal.
We will prove x < f k + eps_ k.
Apply Hf2 k Hk1 to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We will prove f k < SNoCut L R.
An exact proof term for the current goal is H5 k Hk1.
Let z be given.
Assume Hz: z SNoR x.
We will prove SNoCut L R < z.
Apply SNoR_E x Hx1 z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev x.
Assume Hz3: x < z.
We prove the intermediate claim Lz1: z SNoS_ ω.
An exact proof term for the current goal is SNoLev_In_real_SNoS_omega x Hx z Hz1 Hz2.
We prove the intermediate claim Lz2: 0 < z + - x.
An exact proof term for the current goal is SNoLt_minus_pos x z Hx1 Hz1 Hz3.
We prove the intermediate claim Lz3: kω, x + eps_ k z.
Apply dneg to the current goal.
Assume H7: ¬ kω, x + eps_ k z.
We prove the intermediate claim Lz3a: z = x.
Apply Hx4 z Lz1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (z + - x) < eps_ k.
rewrite the current goal using pos_abs_SNo (z + - x) Lz2 (from left to right).
We will prove z + - x < eps_ k.
Apply SNoLtLe_or (z + - x) (eps_ k) (SNo_add_SNo z (- x) Hz1 (SNo_minus_SNo x Hx1)) (SNo_eps_ k Hk) to the current goal.
Assume H8: z + - x < eps_ k.
An exact proof term for the current goal is H8.
Assume H8: eps_ k z + - x.
We will prove False.
Apply H7 to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We will prove x + eps_ k z.
rewrite the current goal using add_SNo_minus_R2' z x Hz1 Hx1 (from right to left).
We will prove x + eps_ k (z + - x) + x.
rewrite the current goal using add_SNo_com x (eps_ k) Hx1 (SNo_eps_ k Hk) (from left to right).
We will prove eps_ k + x (z + - x) + x.
An exact proof term for the current goal is add_SNo_Le1 (eps_ k) x (z + - x) (SNo_eps_ k Hk) Hx1 (SNo_add_SNo z (- x) Hz1 (SNo_minus_SNo x Hx1)) H8.
Apply SNoLt_irref x to the current goal.
rewrite the current goal using Lz3a (from right to left) at position 2.
An exact proof term for the current goal is Hz3.
Apply Lz3 to the current goal.
Let k be given.
Assume Hk.
Apply Hk to the current goal.
Assume Hk1: k ω.
Assume Hk2: x + eps_ k z.
We will prove SNoCut L R < z.
Apply SNoLt_tra (SNoCut L R) (g k) z H2 (Lg k Hk1) Hz1 to the current goal.
An exact proof term for the current goal is H6 k Hk1.
We will prove g k < z.
Apply SNoLtLe_tra (g k) (x + eps_ k) z (Lg k Hk1) (SNo_add_SNo x (eps_ k) Hx1 (SNo_eps_ k Hk1)) Hz1 to the current goal.
We will prove g k < x + eps_ k.
Apply add_SNo_minus_Lt1 (g k) (eps_ k) x (Lg k Hk1) (SNo_eps_ k Hk1) Hx1 to the current goal.
We will prove g k + - eps_ k < x.
An exact proof term for the current goal is Lg1 k Hk1.
We will prove x + eps_ k z.
An exact proof term for the current goal is Hk2.
Let w be given.
Assume Hw: w L.
rewrite the current goal using SNo_eta x Hx1 (from right to left).
We will prove w < x.
Apply ReplE_impred ω (λn ⇒ f n) w Hw to the current goal.
Let n be given.
Assume Hn.
Assume Hwn: w = f n.
rewrite the current goal using Hwn (from left to right).
We will prove f n < x.
An exact proof term for the current goal is Lf1 n Hn.
Let z be given.
Assume Hz: z R.
rewrite the current goal using SNo_eta x Hx1 (from right to left).
We will prove x < z.
Apply ReplE_impred ω (λn ⇒ g n) z Hz to the current goal.
Let m be given.
Assume Hm.
Assume Hzm: z = g m.
rewrite the current goal using Hzm (from left to right).
We will prove x < g m.
An exact proof term for the current goal is Lg2 m Hm.
An exact proof term for the current goal is Hp f Hf1 g Hg1 Lf1 Lf2 Lf3 Lg1 Lg2 Lg3 H1 Lxfg.
Theorem. (real_add_SNo) The following is provable:
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
Apply SNo_approx_real_rep x Hx to the current goal.
Let fL be given.
Assume HfL.
Let fR be given.
Assume HfR HfL1 HfL2 HfL3 HfR1 HfR2 HfR3 HfLR HxfLR.
Apply SNo_approx_real_rep y Hy to the current goal.
Let gL be given.
Assume HgL.
Let gR be given.
Assume HgR HgL1 HgL2 HgL3 HgR1 HgR2 HgR3 HgLR HygLR.
Set hL to be the term λn ∈ ωfL (ordsucc n) + gL (ordsucc n).
Set hR to be the term λn ∈ ωfR (ordsucc n) + gR (ordsucc n).
Set L to be the term {hL n|nω}.
Set R to be the term {hR n|nω}.
We prove the intermediate claim Lx: SNo x.
An exact proof term for the current goal is real_SNo x Hx.
We prove the intermediate claim Ly: SNo y.
An exact proof term for the current goal is real_SNo y Hy.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Lx Ly.
We prove the intermediate claim Lx2: qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x.
An exact proof term for the current goal is real_SNoS_omega_prop x Hx.
We prove the intermediate claim Ly2: qSNoS_ ω, (kω, abs_SNo (q + - y) < eps_ k)q = y.
An exact proof term for the current goal is real_SNoS_omega_prop y Hy.
We prove the intermediate claim LfLa: nω, fL (ordsucc n) SNoS_ ω.
Let n be given.
Assume Hn.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) fL (ordsucc n) HfL (omega_ordsucc n Hn).
We prove the intermediate claim LfLb: nω, SNo (fL (ordsucc n)).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (fL (ordsucc n)) (LfLa n Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LgLa: nω, gL (ordsucc n) SNoS_ ω.
Let n be given.
Assume Hn.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) gL (ordsucc n) HgL (omega_ordsucc n Hn).
We prove the intermediate claim LgLb: nω, SNo (gL (ordsucc n)).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (gL (ordsucc n)) (LgLa n Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LfRa: nω, fR (ordsucc n) SNoS_ ω.
Let n be given.
Assume Hn.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) fR (ordsucc n) HfR (omega_ordsucc n Hn).
We prove the intermediate claim LfRb: nω, SNo (fR (ordsucc n)).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (fR (ordsucc n)) (LfRa n Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LgRa: nω, gR (ordsucc n) SNoS_ ω.
Let n be given.
Assume Hn.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) gR (ordsucc n) HgR (omega_ordsucc n Hn).
We prove the intermediate claim LgRb: nω, SNo (gR (ordsucc n)).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (gR (ordsucc n)) (LgRa n Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LhL: nω, hL n = fL (ordsucc n) + gL (ordsucc n).
Let n be given.
Assume Hn.
An exact proof term for the current goal is beta ω (λn ⇒ fL (ordsucc n) + gL (ordsucc n)) n Hn.
We prove the intermediate claim LhR: nω, hR n = fR (ordsucc n) + gR (ordsucc n).
Let n be given.
Assume Hn.
An exact proof term for the current goal is beta ω (λn ⇒ fR (ordsucc n) + gR (ordsucc n)) n Hn.
We prove the intermediate claim LhLb: nω, SNo (hL n).
Let n be given.
Assume Hn.
rewrite the current goal using LhL n Hn (from left to right).
We will prove SNo (fL (ordsucc n) + gL (ordsucc n)).
An exact proof term for the current goal is SNo_add_SNo (fL (ordsucc n)) (gL (ordsucc n)) (LfLb n Hn) (LgLb n Hn).
We prove the intermediate claim LhRb: nω, SNo (hR n).
Let n be given.
Assume Hn.
rewrite the current goal using LhR n Hn (from left to right).
We will prove SNo (fR (ordsucc n) + gR (ordsucc n)).
An exact proof term for the current goal is SNo_add_SNo (fR (ordsucc n)) (gR (ordsucc n)) (LfRb n Hn) (LgRb n Hn).
We prove the intermediate claim L1: hL SNoS_ ωω.
We will prove (λn ∈ ωfL (ordsucc n) + gL (ordsucc n)) _ω, SNoS_ ω.
Apply lam_Pi to the current goal.
Let n be given.
Assume Hn.
We will prove fL (ordsucc n) + gL (ordsucc n) SNoS_ ω.
Apply add_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is LfLa n Hn.
An exact proof term for the current goal is LgLa n Hn.
We prove the intermediate claim L2: hR SNoS_ ωω.
We will prove (λn ∈ ωfR (ordsucc n) + gR (ordsucc n)) _ω, SNoS_ ω.
Apply lam_Pi to the current goal.
Let n be given.
Assume Hn.
We will prove fR (ordsucc n) + gR (ordsucc n) SNoS_ ω.
Apply add_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is LfRa n Hn.
An exact proof term for the current goal is LgRa n Hn.
We prove the intermediate claim L3: nω, hL n < x + y.
Let n be given.
Assume Hn.
rewrite the current goal using LhL n Hn (from left to right).
We will prove fL (ordsucc n) + gL (ordsucc n) < x + y.
Apply add_SNo_Lt3 (fL (ordsucc n)) (gL (ordsucc n)) x y (LfLb n Hn) (LgLb n Hn) Lx Ly to the current goal.
We will prove fL (ordsucc n) < x.
An exact proof term for the current goal is HfL1 (ordsucc n) (omega_ordsucc n Hn).
We will prove gL (ordsucc n) < y.
An exact proof term for the current goal is HgL1 (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim L4: nω, x + y < hL n + eps_ n.
Let n be given.
Assume Hn.
rewrite the current goal using LhL n Hn (from left to right).
We will prove x + y < (fL (ordsucc n) + gL (ordsucc n)) + eps_ n.
rewrite the current goal using eps_ordsucc_half_add n (omega_nat_p n Hn) (from right to left).
We will prove x + y < (fL (ordsucc n) + gL (ordsucc n)) + (eps_ (ordsucc n) + eps_ (ordsucc n)).
We prove the intermediate claim LeSn: SNo (eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_eps_ (ordsucc n) (omega_ordsucc n Hn).
rewrite the current goal using add_SNo_com_4_inner_mid (fL (ordsucc n)) (gL (ordsucc n)) (eps_ (ordsucc n)) (eps_ (ordsucc n)) (LfLb n Hn) (LgLb n Hn) LeSn LeSn (from left to right).
We will prove x + y < (fL (ordsucc n) + eps_ (ordsucc n)) + (gL (ordsucc n) + eps_ (ordsucc n)).
Apply add_SNo_Lt3 x y (fL (ordsucc n) + eps_ (ordsucc n)) (gL (ordsucc n) + eps_ (ordsucc n)) Lx Ly (SNo_add_SNo (fL (ordsucc n)) (eps_ (ordsucc n)) (LfLb n Hn) LeSn) (SNo_add_SNo (gL (ordsucc n)) (eps_ (ordsucc n)) (LgLb n Hn) LeSn) to the current goal.
An exact proof term for the current goal is HfL2 (ordsucc n) (omega_ordsucc n Hn).
An exact proof term for the current goal is HgL2 (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim L5: nω, in, hL i < hL n.
Let n be given.
Assume Hn.
Let i be given.
Assume Hi.
rewrite the current goal using LhL n Hn (from left to right).
We prove the intermediate claim Li: i ω.
An exact proof term for the current goal is nat_p_omega i (nat_p_trans n (omega_nat_p n Hn) i Hi).
rewrite the current goal using LhL i Li (from left to right).
We will prove fL (ordsucc i) + gL (ordsucc i) < fL (ordsucc n) + gL (ordsucc n).
Apply add_SNo_Lt3 (fL (ordsucc i)) (gL (ordsucc i)) (fL (ordsucc n)) (gL (ordsucc n)) (LfLb i Li) (LgLb i Li) (LfLb n Hn) (LgLb n Hn) to the current goal.
We will prove fL (ordsucc i) < fL (ordsucc n).
An exact proof term for the current goal is HfL3 (ordsucc n) (omega_ordsucc n Hn) (ordsucc i) (nat_ordsucc_in_ordsucc n (omega_nat_p n Hn) i Hi).
We will prove gL (ordsucc i) < gL (ordsucc n).
An exact proof term for the current goal is HgL3 (ordsucc n) (omega_ordsucc n Hn) (ordsucc i) (nat_ordsucc_in_ordsucc n (omega_nat_p n Hn) i Hi).
We prove the intermediate claim L6: nω, hR n + - eps_ n < x + y.
Let n be given.
Assume Hn.
rewrite the current goal using LhR n Hn (from left to right).
We will prove (fR (ordsucc n) + gR (ordsucc n)) + - eps_ n < x + y.
rewrite the current goal using eps_ordsucc_half_add n (omega_nat_p n Hn) (from right to left).
We will prove (fR (ordsucc n) + gR (ordsucc n)) + - (eps_ (ordsucc n) + eps_ (ordsucc n)) < x + y.
We prove the intermediate claim LeSn: SNo (eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_eps_ (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim LmeSn: SNo (- eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_minus_SNo (eps_ (ordsucc n)) LeSn.
rewrite the current goal using minus_add_SNo_distr (eps_ (ordsucc n)) (eps_ (ordsucc n)) LeSn LeSn (from left to right).
We will prove (fR (ordsucc n) + gR (ordsucc n)) + (- eps_ (ordsucc n) + - eps_ (ordsucc n)) < x + y.
rewrite the current goal using add_SNo_com_4_inner_mid (fR (ordsucc n)) (gR (ordsucc n)) (- eps_ (ordsucc n)) (- eps_ (ordsucc n)) (LfRb n Hn) (LgRb n Hn) LmeSn LmeSn (from left to right).
We will prove (fR (ordsucc n) + - eps_ (ordsucc n)) + (gR (ordsucc n) + - eps_ (ordsucc n)) < x + y.
Apply add_SNo_Lt3 (fR (ordsucc n) + - eps_ (ordsucc n)) (gR (ordsucc n) + - eps_ (ordsucc n)) x y (SNo_add_SNo (fR (ordsucc n)) (- eps_ (ordsucc n)) (LfRb n Hn) LmeSn) (SNo_add_SNo (gR (ordsucc n)) (- eps_ (ordsucc n)) (LgRb n Hn) LmeSn) Lx Ly to the current goal.
We will prove fR (ordsucc n) + - eps_ (ordsucc n) < x.
An exact proof term for the current goal is HfR1 (ordsucc n) (omega_ordsucc n Hn).
We will prove gR (ordsucc n) + - eps_ (ordsucc n) < y.
An exact proof term for the current goal is HgR1 (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim L7: nω, x + y < hR n.
Let n be given.
Assume Hn.
rewrite the current goal using LhR n Hn (from left to right).
We will prove x + y < fR (ordsucc n) + gR (ordsucc n).
Apply add_SNo_Lt3 x y (fR (ordsucc n)) (gR (ordsucc n)) Lx Ly (LfRb n Hn) (LgRb n Hn) to the current goal.
We will prove x < fR (ordsucc n).
An exact proof term for the current goal is HfR2 (ordsucc n) (omega_ordsucc n Hn).
We will prove y < gR (ordsucc n).
An exact proof term for the current goal is HgR2 (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim L8: nω, in, hR n < hR i.
Let n be given.
Assume Hn.
Let i be given.
Assume Hi.
rewrite the current goal using LhR n Hn (from left to right).
We prove the intermediate claim Li: i ω.
An exact proof term for the current goal is nat_p_omega i (nat_p_trans n (omega_nat_p n Hn) i Hi).
rewrite the current goal using LhR i Li (from left to right).
We will prove fR (ordsucc n) + gR (ordsucc n) < fR (ordsucc i) + gR (ordsucc i).
Apply add_SNo_Lt3 (fR (ordsucc n)) (gR (ordsucc n)) (fR (ordsucc i)) (gR (ordsucc i)) (LfRb n Hn) (LgRb n Hn) (LfRb i Li) (LgRb i Li) to the current goal.
We will prove fR (ordsucc n) < fR (ordsucc i).
An exact proof term for the current goal is HfR3 (ordsucc n) (omega_ordsucc n Hn) (ordsucc i) (nat_ordsucc_in_ordsucc n (omega_nat_p n Hn) i Hi).
We will prove gR (ordsucc n) < gR (ordsucc i).
An exact proof term for the current goal is HgR3 (ordsucc n) (omega_ordsucc n Hn) (ordsucc i) (nat_ordsucc_in_ordsucc n (omega_nat_p n Hn) i Hi).
We prove the intermediate claim LLR: SNoCutP L R.
We will prove (wL, SNo w) (zR, SNo z) (wL, zR, w < z).
Apply and3I to the current goal.
Let w be given.
Assume Hw.
Apply ReplE_impred ω (λn ⇒ hL n) w Hw to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hwn: w = hL n.
rewrite the current goal using Hwn (from left to right).
We will prove SNo (hL n).
An exact proof term for the current goal is LhLb n Hn.
Let z be given.
Assume Hz.
Apply ReplE_impred ω (λn ⇒ hR n) z Hz to the current goal.
Let m be given.
Assume Hm: m ω.
Assume Hzm: z = hR m.
rewrite the current goal using Hzm (from left to right).
We will prove SNo (hR m).
An exact proof term for the current goal is LhRb m Hm.
Let w be given.
Assume Hw.
Let z be given.
Assume Hz.
Apply ReplE_impred ω (λn ⇒ hL n) w Hw to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hwn: w = hL n.
rewrite the current goal using Hwn (from left to right).
Apply ReplE_impred ω (λn ⇒ hR n) z Hz to the current goal.
Let m be given.
Assume Hm: m ω.
Assume Hzm: z = hR m.
rewrite the current goal using Hzm (from left to right).
We will prove hL n < hR m.
Apply SNoLt_tra (hL n) (x + y) (hR m) (LhLb n Hn) (SNo_add_SNo x y Lx Ly) (LhRb m Hm) to the current goal.
We will prove hL n < x + y.
An exact proof term for the current goal is L3 n Hn.
We will prove x + y < hR m.
An exact proof term for the current goal is L7 m Hm.
Apply SNoCutP_SNoCut_impred L R LLR to the current goal.
Assume HLR1 HLR2 HLR3 HLR4 HLR5.
We prove the intermediate claim L9: x + y = SNoCut L R.
rewrite the current goal using add_SNo_eq x Lx y Ly (from left to right).
We will prove SNoCut ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y}) = SNoCut L R.
Apply SNoCut_ext ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y}) L R (add_SNo_SNoCutP x y Lx Ly) LLR to the current goal.
We will prove w{w + y|wSNoL x} {x + w|wSNoL y}, w < SNoCut L R.
Let w be given.
Assume Hw.
Apply binunionE {w + y|wSNoL x} {x + w|wSNoL y} w Hw to the current goal.
Assume Hw: w {w + y|wSNoL x}.
Apply ReplE_impred (SNoL x) (λw ⇒ w + y) w Hw to the current goal.
Let w' be given.
Assume Hw': w' SNoL x.
Assume Hww'.
rewrite the current goal using Hww' (from left to right).
We will prove w' + y < SNoCut L R.
Apply SNoL_E x Lx w' Hw' to the current goal.
Assume Hw'1 Hw'2 Hw'3.
We prove the intermediate claim Lw'1: w' SNoS_ ω.
An exact proof term for the current goal is SNoLev_In_real_SNoS_omega x Hx w' Hw'1 Hw'2.
We prove the intermediate claim Lw'2: nω, w' + y hL n.
Apply dneg to the current goal.
Assume HC: ¬ (nω, w' + y hL n).
We prove the intermediate claim Lw'2a: 0 < x + - w'.
Apply SNoLt_minus_pos w' x Hw'1 Lx Hw'3 to the current goal.
We prove the intermediate claim Lw'2b: w' = x.
Apply Lx2 w' Lw'1 to the current goal.
Let k be given.
Assume Hk.
We will prove abs_SNo (w' + - x) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap w' x Hw'1 Lx (from left to right).
We will prove abs_SNo (x + - w') < eps_ k.
rewrite the current goal using pos_abs_SNo (x + - w') Lw'2a (from left to right).
We will prove x + - w' < eps_ k.
Apply add_SNo_minus_Lt1b x w' (eps_ k) Lx Hw'1 (SNo_eps_ k Hk) to the current goal.
We will prove x < eps_ k + w'.
Apply SNoLtLe_or x (eps_ k + w') Lx (SNo_add_SNo (eps_ k) w' (SNo_eps_ k Hk) Hw'1) to the current goal.
Assume H2.
An exact proof term for the current goal is H2.
Assume H2: eps_ k + w' x.
We will prove False.
Apply HC to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We will prove w' + y hL k.
Apply SNoLtLe to the current goal.
We will prove w' + y < hL k.
Apply add_SNo_Lt1_cancel (w' + y) (eps_ k) (hL k) (SNo_add_SNo w' y Hw'1 Ly) (SNo_eps_ k Hk) (LhLb k Hk) to the current goal.
We will prove (w' + y) + eps_ k < hL k + eps_ k.
Apply SNoLeLt_tra ((w' + y) + eps_ k) (x + y) (hL k + eps_ k) (SNo_add_SNo (w' + y) (eps_ k) (SNo_add_SNo w' y Hw'1 Ly) (SNo_eps_ k Hk)) Lxy (SNo_add_SNo (hL k) (eps_ k) (LhLb k Hk) (SNo_eps_ k Hk)) to the current goal.
We will prove (w' + y) + eps_ k x + y.
rewrite the current goal using add_SNo_com_3b_1_2 w' y (eps_ k) Hw'1 Ly (SNo_eps_ k Hk) (from left to right).
We will prove (w' + eps_ k) + y x + y.
Apply add_SNo_Le1 (w' + eps_ k) y x (SNo_add_SNo w' (eps_ k) Hw'1 (SNo_eps_ k Hk)) Ly Lx to the current goal.
We will prove w' + eps_ k x.
rewrite the current goal using add_SNo_com w' (eps_ k) Hw'1 (SNo_eps_ k Hk) (from left to right).
We will prove eps_ k + w' x.
An exact proof term for the current goal is H2.
We will prove x + y < hL k + eps_ k.
An exact proof term for the current goal is L4 k Hk.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using Lw'2b (from right to left) at position 1.
An exact proof term for the current goal is Hw'3.
Apply Lw'2 to the current goal.
Let n be given.
Assume Hn.
Apply Hn to the current goal.
Assume Hn1 Hn2.
Apply SNoLeLt_tra (w' + y) (hL n) (SNoCut L R) (SNo_add_SNo w' y Hw'1 Ly) (LhLb n Hn1) HLR1 to the current goal.
We will prove w' + y hL n.
An exact proof term for the current goal is Hn2.
We will prove hL n < SNoCut L R.
Apply HLR3 to the current goal.
We will prove hL n L.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hn1.
Assume Hw: w {x + w|wSNoL y}.
Apply ReplE_impred (SNoL y) (λw ⇒ x + w) w Hw to the current goal.
Let w' be given.
Assume Hw': w' SNoL y.
Assume Hww'.
rewrite the current goal using Hww' (from left to right).
We will prove x + w' < SNoCut L R.
Apply SNoL_E y Ly w' Hw' to the current goal.
Assume Hw'1 Hw'2 Hw'3.
We prove the intermediate claim Lw'1: w' SNoS_ ω.
An exact proof term for the current goal is SNoLev_In_real_SNoS_omega y Hy w' Hw'1 Hw'2.
We prove the intermediate claim Lw'2: nω, x + w' hL n.
Apply dneg to the current goal.
Assume HC: ¬ (nω, x + w' hL n).
We prove the intermediate claim Lw'2a: 0 < y + - w'.
Apply SNoLt_minus_pos w' y Hw'1 Ly Hw'3 to the current goal.
We prove the intermediate claim Lw'2b: w' = y.
Apply Ly2 w' Lw'1 to the current goal.
Let k be given.
Assume Hk.
We will prove abs_SNo (w' + - y) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap w' y Hw'1 Ly (from left to right).
We will prove abs_SNo (y + - w') < eps_ k.
rewrite the current goal using pos_abs_SNo (y + - w') Lw'2a (from left to right).
We will prove y + - w' < eps_ k.
Apply add_SNo_minus_Lt1b y w' (eps_ k) Ly Hw'1 (SNo_eps_ k Hk) to the current goal.
We will prove y < eps_ k + w'.
Apply SNoLtLe_or y (eps_ k + w') Ly (SNo_add_SNo (eps_ k) w' (SNo_eps_ k Hk) Hw'1) to the current goal.
Assume H2.
An exact proof term for the current goal is H2.
Assume H2: eps_ k + w' y.
We will prove False.
Apply HC to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We will prove x + w' hL k.
Apply SNoLtLe to the current goal.
We will prove x + w' < hL k.
Apply add_SNo_Lt1_cancel (x + w') (eps_ k) (hL k) (SNo_add_SNo x w' Lx Hw'1) (SNo_eps_ k Hk) (LhLb k Hk) to the current goal.
We will prove (x + w') + eps_ k < hL k + eps_ k.
Apply SNoLeLt_tra ((x + w') + eps_ k) (x + y) (hL k + eps_ k) (SNo_add_SNo (x + w') (eps_ k) (SNo_add_SNo x w' Lx Hw'1) (SNo_eps_ k Hk)) Lxy (SNo_add_SNo (hL k) (eps_ k) (LhLb k Hk) (SNo_eps_ k Hk)) to the current goal.
We will prove (x + w') + eps_ k x + y.
rewrite the current goal using add_SNo_assoc x w' (eps_ k) Lx Hw'1 (SNo_eps_ k Hk) (from right to left).
We will prove x + (w' + eps_ k) x + y.
Apply add_SNo_Le2 x (w' + eps_ k) y Lx (SNo_add_SNo w' (eps_ k) Hw'1 (SNo_eps_ k Hk)) Ly to the current goal.
We will prove w' + eps_ k y.
rewrite the current goal using add_SNo_com w' (eps_ k) Hw'1 (SNo_eps_ k Hk) (from left to right).
We will prove eps_ k + w' y.
An exact proof term for the current goal is H2.
We will prove x + y < hL k + eps_ k.
An exact proof term for the current goal is L4 k Hk.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using Lw'2b (from right to left) at position 1.
An exact proof term for the current goal is Hw'3.
Apply Lw'2 to the current goal.
Let n be given.
Assume Hn.
Apply Hn to the current goal.
Assume Hn1 Hn2.
Apply SNoLeLt_tra (x + w') (hL n) (SNoCut L R) (SNo_add_SNo x w' Lx Hw'1) (LhLb n Hn1) HLR1 to the current goal.
We will prove x + w' hL n.
An exact proof term for the current goal is Hn2.
We will prove hL n < SNoCut L R.
Apply HLR3 to the current goal.
We will prove hL n L.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hn1.
We will prove z{z + y|zSNoR x} {x + z|zSNoR y}, SNoCut L R < z.
Let z be given.
Assume Hz.
Apply binunionE {z + y|zSNoR x} {x + z|zSNoR y} z Hz to the current goal.
Assume Hz: z {z + y|zSNoR x}.
Apply ReplE_impred (SNoR x) (λz ⇒ z + y) z Hz to the current goal.
Let z' be given.
Assume Hz': z' SNoR x.
Assume Hzz'.
rewrite the current goal using Hzz' (from left to right).
We will prove SNoCut L R < z' + y.
Apply SNoR_E x Lx z' Hz' to the current goal.
Assume Hz'1 Hz'2 Hz'3.
We prove the intermediate claim Lz'1: z' SNoS_ ω.
An exact proof term for the current goal is SNoLev_In_real_SNoS_omega x Hx z' Hz'1 Hz'2.
We prove the intermediate claim Lz'2: nω, hR n z' + y.
Apply dneg to the current goal.
Assume HC: ¬ (nω, hR n z' + y).
We prove the intermediate claim Lz'2a: 0 < z' + - x.
Apply SNoLt_minus_pos x z' Lx Hz'1 Hz'3 to the current goal.
We prove the intermediate claim Lz'2b: z' = x.
Apply Lx2 z' Lz'1 to the current goal.
Let k be given.
Assume Hk.
We will prove abs_SNo (z' + - x) < eps_ k.
rewrite the current goal using pos_abs_SNo (z' + - x) Lz'2a (from left to right).
We will prove z' + - x < eps_ k.
Apply add_SNo_minus_Lt1b z' x (eps_ k) Hz'1 Lx (SNo_eps_ k Hk) to the current goal.
We will prove z' < eps_ k + x.
Apply SNoLtLe_or z' (eps_ k + x) Hz'1 (SNo_add_SNo (eps_ k) x (SNo_eps_ k Hk) Lx) to the current goal.
Assume H2.
An exact proof term for the current goal is H2.
Assume H2: eps_ k + x z'.
We will prove False.
Apply HC to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We will prove hR k z' + y.
Apply SNoLtLe to the current goal.
Apply add_SNo_Lt1_cancel (hR k) (- eps_ k) (z' + y) (LhRb k Hk) (SNo_minus_SNo (eps_ k) (SNo_eps_ k Hk)) (SNo_add_SNo z' y Hz'1 Ly) to the current goal.
We will prove hR k + - eps_ k < (z' + y) + - eps_ k.
Apply SNoLtLe_tra (hR k + - eps_ k) (x + y) ((z' + y) + - eps_ k) (SNo_add_SNo (hR k) (- eps_ k) (LhRb k Hk) (SNo_minus_SNo (eps_ k) (SNo_eps_ k Hk))) Lxy (SNo_add_SNo (z' + y) (- eps_ k) (SNo_add_SNo z' y Hz'1 Ly) (SNo_minus_SNo (eps_ k) (SNo_eps_ k Hk))) to the current goal.
We will prove hR k + - eps_ k < x + y.
An exact proof term for the current goal is L6 k Hk.
We will prove x + y (z' + y) + - eps_ k.
Apply add_SNo_minus_Le2b (z' + y) (eps_ k) (x + y) (SNo_add_SNo z' y Hz'1 Ly) (SNo_eps_ k Hk) Lxy to the current goal.
We will prove (x + y) + eps_ k z' + y.
rewrite the current goal using add_SNo_com_3b_1_2 x y (eps_ k) Lx Ly (SNo_eps_ k Hk) (from left to right).
We will prove (x + eps_ k) + y z' + y.
Apply add_SNo_Le1 (x + eps_ k) y z' (SNo_add_SNo x (eps_ k) Lx (SNo_eps_ k Hk)) Ly Hz'1 to the current goal.
We will prove x + eps_ k z'.
rewrite the current goal using add_SNo_com x (eps_ k) Lx (SNo_eps_ k Hk) (from left to right).
An exact proof term for the current goal is H2.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using Lz'2b (from right to left) at position 2.
An exact proof term for the current goal is Hz'3.
Apply Lz'2 to the current goal.
Let n be given.
Assume Hn.
Apply Hn to the current goal.
Assume Hn1 Hn2.
Apply SNoLtLe_tra (SNoCut L R) (hR n) (z' + y) HLR1 (LhRb n Hn1) (SNo_add_SNo z' y Hz'1 Ly) to the current goal.
We will prove SNoCut L R < hR n.
Apply HLR4 to the current goal.
We will prove hR n R.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hn1.
We will prove hR n z' + y.
An exact proof term for the current goal is Hn2.
Assume Hz: z {x + z|zSNoR y}.
Apply ReplE_impred (SNoR y) (λz ⇒ x + z) z Hz to the current goal.
Let z' be given.
Assume Hz': z' SNoR y.
Assume Hzz'.
rewrite the current goal using Hzz' (from left to right).
We will prove SNoCut L R < x + z'.
Apply SNoR_E y Ly z' Hz' to the current goal.
Assume Hz'1 Hz'2 Hz'3.
We prove the intermediate claim Lz'1: z' SNoS_ ω.
An exact proof term for the current goal is SNoLev_In_real_SNoS_omega y Hy z' Hz'1 Hz'2.
We prove the intermediate claim Lz'2: nω, hR n x + z'.
Apply dneg to the current goal.
Assume HC: ¬ (nω, hR n x + z').
We prove the intermediate claim Lz'2a: 0 < z' + - y.
Apply SNoLt_minus_pos y z' Ly Hz'1 Hz'3 to the current goal.
We prove the intermediate claim Lz'2b: z' = y.
Apply Ly2 z' Lz'1 to the current goal.
Let k be given.
Assume Hk.
We will prove abs_SNo (z' + - y) < eps_ k.
rewrite the current goal using pos_abs_SNo (z' + - y) Lz'2a (from left to right).
We will prove z' + - y < eps_ k.
Apply add_SNo_minus_Lt1b z' y (eps_ k) Hz'1 Ly (SNo_eps_ k Hk) to the current goal.
We will prove z' < eps_ k + y.
Apply SNoLtLe_or z' (eps_ k + y) Hz'1 (SNo_add_SNo (eps_ k) y (SNo_eps_ k Hk) Ly) to the current goal.
Assume H2.
An exact proof term for the current goal is H2.
Assume H2: eps_ k + y z'.
We will prove False.
Apply HC to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We will prove hR k x + z'.
Apply SNoLtLe to the current goal.
Apply add_SNo_Lt1_cancel (hR k) (- eps_ k) (x + z') (LhRb k Hk) (SNo_minus_SNo (eps_ k) (SNo_eps_ k Hk)) (SNo_add_SNo x z' Lx Hz'1) to the current goal.
We will prove hR k + - eps_ k < (x + z') + - eps_ k.
Apply SNoLtLe_tra (hR k + - eps_ k) (x + y) ((x + z') + - eps_ k) (SNo_add_SNo (hR k) (- eps_ k) (LhRb k Hk) (SNo_minus_SNo (eps_ k) (SNo_eps_ k Hk))) Lxy (SNo_add_SNo (x + z') (- eps_ k) (SNo_add_SNo x z' Lx Hz'1) (SNo_minus_SNo (eps_ k) (SNo_eps_ k Hk))) to the current goal.
We will prove hR k + - eps_ k < x + y.
An exact proof term for the current goal is L6 k Hk.
We will prove x + y (x + z') + - eps_ k.
Apply add_SNo_minus_Le2b (x + z') (eps_ k) (x + y) (SNo_add_SNo x z' Lx Hz'1) (SNo_eps_ k Hk) Lxy to the current goal.
We will prove (x + y) + eps_ k x + z'.
rewrite the current goal using add_SNo_assoc x y (eps_ k) Lx Ly (SNo_eps_ k Hk) (from right to left).
We will prove x + (y + eps_ k) x + z'.
Apply add_SNo_Le2 x (y + eps_ k) z' Lx (SNo_add_SNo y (eps_ k) Ly (SNo_eps_ k Hk)) Hz'1 to the current goal.
We will prove y + eps_ k z'.
rewrite the current goal using add_SNo_com y (eps_ k) Ly (SNo_eps_ k Hk) (from left to right).
An exact proof term for the current goal is H2.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using Lz'2b (from right to left) at position 2.
An exact proof term for the current goal is Hz'3.
Apply Lz'2 to the current goal.
Let n be given.
Assume Hn.
Apply Hn to the current goal.
Assume Hn1 Hn2.
Apply SNoLtLe_tra (SNoCut L R) (hR n) (x + z') HLR1 (LhRb n Hn1) (SNo_add_SNo x z' Lx Hz'1) to the current goal.
We will prove SNoCut L R < hR n.
Apply HLR4 to the current goal.
We will prove hR n R.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hn1.
We will prove hR n x + z'.
An exact proof term for the current goal is Hn2.
Let w be given.
Assume Hw: w L.
rewrite the current goal using add_SNo_eq x Lx y Ly (from right to left).
We will prove w < x + y.
Apply ReplE_impred ω (λn ⇒ hL n) w Hw to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hwn: w = hL n.
rewrite the current goal using Hwn (from left to right).
We will prove hL n < x + y.
An exact proof term for the current goal is L3 n Hn.
Let z be given.
Assume Hz: z R.
rewrite the current goal using add_SNo_eq x Lx y Ly (from right to left).
We will prove x + y < z.
Apply ReplE_impred ω (λn ⇒ hR n) z Hz to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hzn: z = hR n.
rewrite the current goal using Hzn (from left to right).
We will prove x + y < hR n.
An exact proof term for the current goal is L7 n Hn.
An exact proof term for the current goal is SNo_approx_real (x + y) (SNo_add_SNo x y Lx Ly) hL L1 hR L2 L3 L4 L5 L7 L8 L9.
Proof:
Let x be given.
Assume Hx1 Hx2 Hx3.
Apply SNoS_E2 (ordsucc ω) ordsucc_omega_ordinal x Hx1 to the current goal.
Assume Hx1a Hx1b Hx1c Hx1d.
Apply SNoS_ordsucc_omega_bdd_above x Hx1 Hx3 to the current goal.
Let N be given.
Assume HN.
Apply HN to the current goal.
Assume HN1: N ω.
Assume HN2: x < N.
We prove the intermediate claim LN: SNo N.
An exact proof term for the current goal is omega_SNo N HN1.
We use N to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is HN1.
We will prove eps_ N * x < 1.
Apply SNoLt_tra (eps_ N * x) (eps_ N * N) 1 (SNo_mul_SNo (eps_ N) x (SNo_eps_ N HN1) Hx1c) (SNo_mul_SNo (eps_ N) N (SNo_eps_ N HN1) LN) SNo_1 to the current goal.
We will prove eps_ N * x < eps_ N * N.
Apply pos_mul_SNo_Lt (eps_ N) x N (SNo_eps_ N HN1) (SNo_eps_pos N HN1) Hx1c LN to the current goal.
We will prove x < N.
An exact proof term for the current goal is HN2.
We will prove eps_ N * N < 1.
Apply SNoLtLe_or (eps_ N * N) 1 (SNo_mul_SNo (eps_ N) N (SNo_eps_ N HN1) LN) SNo_1 to the current goal.
Assume H1: eps_ N * N < 1.
An exact proof term for the current goal is H1.
Assume H1: 1 eps_ N * N.
We will prove False.
We prove the intermediate claim L2N: SNo (2 ^ N).
An exact proof term for the current goal is SNo_exp_SNo_nat 2 SNo_2 N (omega_nat_p N HN1).
We prove the intermediate claim L1: 2 ^ N 2 ^ N * eps_ N * N.
rewrite the current goal using mul_SNo_oneR (2 ^ N) L2N (from right to left) at position 1.
We will prove 2 ^ N * 1 2 ^ N * eps_ N * N.
Apply nonneg_mul_SNo_Le (2 ^ N) 1 (eps_ N * N) L2N to the current goal.
We will prove 0 2 ^ N.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is exp_SNo_nat_pos 2 SNo_2 SNoLt_0_2 N (omega_nat_p N HN1).
An exact proof term for the current goal is SNo_1.
An exact proof term for the current goal is SNo_mul_SNo (eps_ N) N (SNo_eps_ N HN1) LN.
We will prove 1 eps_ N * N.
An exact proof term for the current goal is H1.
Apply SNoLt_irref (2 ^ N) to the current goal.
We will prove 2 ^ N < 2 ^ N.
Apply SNoLeLt_tra (2 ^ N) N (2 ^ N) L2N LN L2N to the current goal.
We will prove 2 ^ N N.
rewrite the current goal using mul_SNo_oneL N LN (from right to left) at position 2.
We will prove 2 ^ N 1 * N.
rewrite the current goal using mul_SNo_eps_power_2' N (omega_nat_p N HN1) (from right to left) at position 2.
We will prove 2 ^ N (2 ^ N * eps_ N) * N.
rewrite the current goal using mul_SNo_assoc (2 ^ N) (eps_ N) N L2N (SNo_eps_ N HN1) LN (from right to left).
An exact proof term for the current goal is L1.
We will prove N < 2 ^ N.
An exact proof term for the current goal is exp_SNo_2_bd N (omega_nat_p N HN1).
Theorem. (real_mul_SNo_pos) The following is provable:
x yreal, 0 < x0 < yx * y real
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy Hx0 Hy0.
Apply dneg to the current goal.
Assume HC: x * y real.
Apply real_E x Hx to the current goal.
Assume Hx1 Hx2 Hx3 Hx4 Hx5 Hx6 Hx7.
Apply real_E y Hy to the current goal.
Assume Hy1 Hy2 Hy3 Hy4 Hy5 Hy6 Hy7.
We prove the intermediate claim Lx7: kω, ∀p : prop, (qSNoS_ ω, 0 < qq < xx < q + eps_ kp)p.
An exact proof term for the current goal is SNo_prereal_incr_lower_pos x Hx1 Hx0 Hx6 Hx7.
We prove the intermediate claim Ly7: kω, ∀p : prop, (qSNoS_ ω, 0 < qq < yy < q + eps_ kp)p.
An exact proof term for the current goal is SNo_prereal_incr_lower_pos y Hy1 Hy0 Hy6 Hy7.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Hx1 Hy1.
We prove the intermediate claim Lmxy: SNo (- x * y).
An exact proof term for the current goal is SNo_minus_SNo (x * y) Lxy.
We prove the intermediate claim Lxy2: SNoLev (x * y) ω.
Assume H1: SNoLev (x * y) ω.
Apply HC to the current goal.
Apply SNoS_omega_real (x * y) to the current goal.
We will prove x * y SNoS_ ω.
Apply SNoS_I ω omega_ordinal (x * y) (SNoLev (x * y)) H1 to the current goal.
We will prove SNo_ (SNoLev (x * y)) (x * y).
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Lxy.
We prove the intermediate claim Lxy3: ∀q, SNo qSNoLev q ωSNoLev q SNoLev (x * y).
Let q be given.
Assume Hq1 Hq2.
Apply ordinal_trichotomy_or_impred (SNoLev q) (SNoLev (x * y)) (SNoLev_ordinal q Hq1) (SNoLev_ordinal (x * y) Lxy) to the current goal.
Assume H1.
An exact proof term for the current goal is H1.
Assume H1: SNoLev q = SNoLev (x * y).
We will prove False.
Apply Lxy2 to the current goal.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hq2.
Assume H1: SNoLev (x * y) SNoLev q.
We will prove False.
Apply Lxy2 to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_p_trans (SNoLev q) (omega_nat_p (SNoLev q) Hq2) (SNoLev (x * y)) H1.
We prove the intermediate claim LLx: SNoL x SNoS_ ω.
Let v be given.
Assume Hv.
Apply SNoL_E x Hx1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3.
Apply SNoS_I ω omega_ordinal v (SNoLev v) to the current goal.
We will prove SNoLev v ω.
Apply ordsuccE ω (SNoLev x) Hx2 to the current goal.
Assume H1: SNoLev x ω.
An exact proof term for the current goal is omega_TransSet (SNoLev x) H1 (SNoLev v) Hv2.
Assume H1: SNoLev x = ω.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hv2.
We will prove SNo_ (SNoLev v) v.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hv1.
We prove the intermediate claim LRx: SNoR x SNoS_ ω.
Let v be given.
Assume Hv.
Apply SNoR_E x Hx1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3.
Apply SNoS_I ω omega_ordinal v (SNoLev v) to the current goal.
We will prove SNoLev v ω.
Apply ordsuccE ω (SNoLev x) Hx2 to the current goal.
Assume H1: SNoLev x ω.
An exact proof term for the current goal is omega_TransSet (SNoLev x) H1 (SNoLev v) Hv2.
Assume H1: SNoLev x = ω.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hv2.
We will prove SNo_ (SNoLev v) v.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hv1.
We prove the intermediate claim LLy: SNoL y SNoS_ ω.
Let v be given.
Assume Hv.
Apply SNoL_E y Hy1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3.
Apply SNoS_I ω omega_ordinal v (SNoLev v) to the current goal.
We will prove SNoLev v ω.
Apply ordsuccE ω (SNoLev y) Hy2 to the current goal.
Assume H1: SNoLev y ω.
An exact proof term for the current goal is omega_TransSet (SNoLev y) H1 (SNoLev v) Hv2.
Assume H1: SNoLev y = ω.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hv2.
We will prove SNo_ (SNoLev v) v.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hv1.
We prove the intermediate claim LRy: SNoR y SNoS_ ω.
Let v be given.
Assume Hv.
Apply SNoR_E y Hy1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3.
Apply SNoS_I ω omega_ordinal v (SNoLev v) to the current goal.
We will prove SNoLev v ω.
Apply ordsuccE ω (SNoLev y) Hy2 to the current goal.
Assume H1: SNoLev y ω.
An exact proof term for the current goal is omega_TransSet (SNoLev y) H1 (SNoLev v) Hv2.
Assume H1: SNoLev y = ω.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hv2.
We will prove SNo_ (SNoLev v) v.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hv1.
We prove the intermediate claim LLx2: vSNoL x, ∀p : prop, (∀k, k ωeps_ k x + - vp)p.
Let v be given.
Assume Hv.
Let p be given.
Assume Hp.
Apply SNoL_E x Hx1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: v < x.
Apply xm (kω, abs_SNo (v + - x) < eps_ k) to the current goal.
Assume H1.
We will prove False.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using Hx6 v (LLx v Hv) H1 (from right to left) at position 1.
We will prove v < x.
An exact proof term for the current goal is Hv3.
Assume H1: ¬ (kω, abs_SNo (v + - x) < eps_ k).
Apply dneg to the current goal.
Assume H2: ¬ p.
Apply H1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (v + - x) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap v x Hv1 Hx1 (from left to right).
We will prove abs_SNo (x + - v) < eps_ k.
rewrite the current goal using pos_abs_SNo (x + - v) (SNoLt_minus_pos v x Hv1 Hx1 Hv3) (from left to right).
We will prove x + - v < eps_ k.
Apply SNoLtLe_or (x + - v) (eps_ k) (SNo_add_SNo x (- v) Hx1 (SNo_minus_SNo v Hv1)) (SNo_eps_ k Hk) to the current goal.
Assume H3: x + - v < eps_ k.
An exact proof term for the current goal is H3.
Assume H3: eps_ k x + - v.
We will prove False.
Apply H2 to the current goal.
Apply Hp k Hk to the current goal.
An exact proof term for the current goal is H3.
We prove the intermediate claim LRx2: vSNoR x, ∀p : prop, (∀k, k ωeps_ k v + - xp)p.
Let v be given.
Assume Hv.
Let p be given.
Assume Hp.
Apply SNoR_E x Hx1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: x < v.
Apply xm (kω, abs_SNo (v + - x) < eps_ k) to the current goal.
Assume H1.
We will prove False.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using Hx6 v (LRx v Hv) H1 (from right to left) at position 2.
We will prove x < v.
An exact proof term for the current goal is Hv3.
Assume H1: ¬ (kω, abs_SNo (v + - x) < eps_ k).
Apply dneg to the current goal.
Assume H2: ¬ p.
Apply H1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (v + - x) < eps_ k.
rewrite the current goal using pos_abs_SNo (v + - x) (SNoLt_minus_pos x v Hx1 Hv1 Hv3) (from left to right).
We will prove v + - x < eps_ k.
Apply SNoLtLe_or (v + - x) (eps_ k) (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx1)) (SNo_eps_ k Hk) to the current goal.
Assume H3: v + - x < eps_ k.
An exact proof term for the current goal is H3.
Assume H3: eps_ k v + - x.
We will prove False.
Apply H2 to the current goal.
Apply Hp k Hk to the current goal.
An exact proof term for the current goal is H3.
We prove the intermediate claim LLy2: vSNoL y, ∀p : prop, (∀k, k ωeps_ k y + - vp)p.
Let v be given.
Assume Hv.
Let p be given.
Assume Hp.
Apply SNoL_E y Hy1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: v < y.
Apply xm (kω, abs_SNo (v + - y) < eps_ k) to the current goal.
Assume H1.
We will prove False.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using Hy6 v (LLy v Hv) H1 (from right to left) at position 1.
We will prove v < y.
An exact proof term for the current goal is Hv3.
Assume H1: ¬ (kω, abs_SNo (v + - y) < eps_ k).
Apply dneg to the current goal.
Assume H2: ¬ p.
Apply H1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (v + - y) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap v y Hv1 Hy1 (from left to right).
We will prove abs_SNo (y + - v) < eps_ k.
rewrite the current goal using pos_abs_SNo (y + - v) (SNoLt_minus_pos v y Hv1 Hy1 Hv3) (from left to right).
We will prove y + - v < eps_ k.
Apply SNoLtLe_or (y + - v) (eps_ k) (SNo_add_SNo y (- v) Hy1 (SNo_minus_SNo v Hv1)) (SNo_eps_ k Hk) to the current goal.
Assume H3: y + - v < eps_ k.
An exact proof term for the current goal is H3.
Assume H3: eps_ k y + - v.
We will prove False.
Apply H2 to the current goal.
Apply Hp k Hk to the current goal.
An exact proof term for the current goal is H3.
We prove the intermediate claim LRy2: vSNoR y, ∀p : prop, (∀k, k ωeps_ k v + - yp)p.
Let v be given.
Assume Hv.
Let p be given.
Assume Hp.
Apply SNoR_E y Hy1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: y < v.
Apply xm (kω, abs_SNo (v + - y) < eps_ k) to the current goal.
Assume H1.
We will prove False.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using Hy6 v (LRy v Hv) H1 (from right to left) at position 2.
We will prove y < v.
An exact proof term for the current goal is Hv3.
Assume H1: ¬ (kω, abs_SNo (v + - y) < eps_ k).
Apply dneg to the current goal.
Assume H2: ¬ p.
Apply H1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (v + - y) < eps_ k.
rewrite the current goal using pos_abs_SNo (v + - y) (SNoLt_minus_pos y v Hy1 Hv1 Hv3) (from left to right).
We will prove v + - y < eps_ k.
Apply SNoLtLe_or (v + - y) (eps_ k) (SNo_add_SNo v (- y) Hv1 (SNo_minus_SNo y Hy1)) (SNo_eps_ k Hk) to the current goal.
Assume H3: v + - y < eps_ k.
An exact proof term for the current goal is H3.
Assume H3: eps_ k v + - y.
We will prove False.
Apply H2 to the current goal.
Apply Hp k Hk to the current goal.
An exact proof term for the current goal is H3.
Apply mul_SNo_eq_3 x y Hx1 Hy1 to the current goal.
Let L and R be given.
Assume HLR: SNoCutP L R.
Assume HLE: ∀u, u L∀q : prop, (w0SNoL x, w1SNoL y, u = w0 * y + x * w1 + - w0 * w1q)(z0SNoR x, z1SNoR y, u = z0 * y + x * z1 + - z0 * z1q)q.
Assume HLI1: w0SNoL x, w1SNoL y, w0 * y + x * w1 + - w0 * w1 L.
Assume HLI2: z0SNoR x, z1SNoR y, z0 * y + x * z1 + - z0 * z1 L.
Assume HRE: ∀u, u R∀q : prop, (w0SNoL x, z1SNoR y, u = w0 * y + x * z1 + - w0 * z1q)(z0SNoR x, w1SNoL y, u = z0 * y + x * w1 + - z0 * w1q)q.
Assume HRI1: w0SNoL x, z1SNoR y, w0 * y + x * z1 + - w0 * z1 R.
Assume HRI2: z0SNoR x, w1SNoL y, z0 * y + x * w1 + - z0 * w1 R.
Assume HxyLR: x * y = SNoCut L R.
We prove the intermediate claim L1: qSNoS_ ω, (kω, abs_SNo (q + - (x * y)) < eps_ k)q = x * y.
Let q be given.
Assume Hq1 Hq2.
We will prove q = x * y.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
Apply SNoLt_trichotomy_or_impred q (x * y) Hq1c Lxy to the current goal.
Assume H1: q < x * y.
We will prove False.
We prove the intermediate claim Lq1: q SNoL (x * y).
Apply SNoL_I to the current goal.
An exact proof term for the current goal is Lxy.
An exact proof term for the current goal is Hq1c.
We will prove SNoLev q SNoLev (x * y).
An exact proof term for the current goal is Lxy3 q Hq1c Hq1a.
We will prove q < x * y.
An exact proof term for the current goal is H1.
Apply mul_SNo_SNoL_interpolate_impred x y Hx1 Hy1 q Lq1 to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Let w be given.
Assume Hw: w SNoL y.
Apply SNoL_E x Hx1 v Hv to the current goal.
Assume Hv1 _ _.
Apply SNoL_E y Hy1 w Hw to the current goal.
Assume Hw1 _ _.
Assume H2: q + v * w v * y + x * w.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w ?? Hw1.
We prove the intermediate claim Lmxw: SNo (- x * w).
An exact proof term for the current goal is SNo_minus_SNo (x * w) Lxw.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_mul_SNo v y Hv1 ??.
We prove the intermediate claim Lmvy: SNo (- v * y).
An exact proof term for the current goal is SNo_minus_SNo (v * y) Lvy.
We prove the intermediate claim Lxmv: SNo (x + - v).
An exact proof term for the current goal is SNo_add_SNo x (- v) ?? (SNo_minus_SNo v ??).
We prove the intermediate claim Lymw: SNo (y + - w).
An exact proof term for the current goal is SNo_add_SNo y (- w) ?? (SNo_minus_SNo w ??).
Apply LLx2 v Hv to the current goal.
Let k be given.
Assume Hk1: k ω.
Assume Hk2: eps_ k x + - v.
Apply LLy2 w Hw to the current goal.
Let k' be given.
Assume Hk'1: k' ω.
Assume Hk'2: eps_ k' y + - w.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk1.
We prove the intermediate claim Lek': SNo (eps_ k').
An exact proof term for the current goal is SNo_eps_ k' Hk'1.
We prove the intermediate claim Lkk': k + k' ω.
An exact proof term for the current goal is add_SNo_In_omega k Hk1 k' Hk'1.
We prove the intermediate claim Lekk': SNo (eps_ (k + k')).
An exact proof term for the current goal is SNo_eps_ (k + k') Lkk'.
We prove the intermediate claim Lekek': SNo (eps_ k * eps_ k').
An exact proof term for the current goal is SNo_mul_SNo (eps_ k) (eps_ k') Lek Lek'.
We prove the intermediate claim L1a: abs_SNo (q + - (x * y)) < eps_ (k + k').
An exact proof term for the current goal is Hq2 (k + k') (add_SNo_In_omega k Hk1 k' Hk'1).
We prove the intermediate claim L1b: eps_ (k + k') abs_SNo (q + - (x * y)).
rewrite the current goal using abs_SNo_dist_swap q (x * y) Hq1c Lxy (from left to right).
We will prove eps_ (k + k') abs_SNo (x * y + - q).
rewrite the current goal using pos_abs_SNo (x * y + - q) (SNoLt_minus_pos q (x * y) Hq1c Lxy H1) (from left to right).
We will prove eps_ (k + k') x * y + - q.
Apply add_SNo_minus_Le2b (x * y) q (eps_ (k + k')) Lxy Hq1c Lekk' to the current goal.
We will prove eps_ (k + k') + q x * y.
rewrite the current goal using mul_SNo_eps_eps_add_SNo k Hk1 k' Hk'1 (from right to left).
We will prove eps_ k * eps_ k' + q x * y.
Apply SNoLe_tra (eps_ k * eps_ k' + q) ((x + - v) * (y + - w) + q) (x * y) (SNo_add_SNo (eps_ k * eps_ k') q ?? ??) (SNo_add_SNo ((x + - v) * (y + - w)) q (SNo_mul_SNo (x + - v) (y + - w) Lxmv Lymw) Hq1c) Lxy to the current goal.
We will prove eps_ k * eps_ k' + q (x + - v) * (y + - w) + q.
Apply add_SNo_Le1 (eps_ k * eps_ k') q ((x + - v) * (y + - w)) Lekek' Hq1c (SNo_mul_SNo (x + - v) (y + - w) Lxmv Lymw) to the current goal.
We will prove eps_ k * eps_ k' (x + - v) * (y + - w).
Apply nonneg_mul_SNo_Le2 (eps_ k) (eps_ k') (x + - v) (y + - w) Lek Lek' Lxmv Lymw to the current goal.
We will prove 0 eps_ k.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k Hk1.
We will prove 0 eps_ k'.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k' Hk'1.
We will prove eps_ k x + - v.
An exact proof term for the current goal is Hk2.
We will prove eps_ k' y + - w.
An exact proof term for the current goal is Hk'2.
We will prove (x + - v) * (y + - w) + q x * y.
rewrite the current goal using SNo_foil_mm x v y w Hx1 Hv1 Hy1 Hw1 (from left to right).
We will prove (x * y + - x * w + - v * y + v * w) + q x * y.
rewrite the current goal using add_SNo_assoc_4 (x * y) (- x * w) (- v * y) (v * w) ?? ?? ?? ?? (from left to right).
We will prove ((x * y + - x * w + - v * y) + v * w) + q x * y.
rewrite the current goal using add_SNo_assoc (x * y + - x * w + - v * y) (v * w) q (SNo_add_SNo_3 (x * y) (- x * w) (- v * y) ?? ?? ??) ?? Hq1c (from right to left).
We will prove (x * y + - x * w + - v * y) + (v * w + q) x * y.
rewrite the current goal using add_SNo_com (v * w) q ?? Hq1c (from left to right).
We will prove (x * y + - x * w + - v * y) + (q + v * w) x * y.
Apply SNoLe_tra ((x * y + - x * w + - v * y) + (q + v * w)) ((x * y + - x * w + - v * y) + (v * y + x * w)) (x * y) (SNo_add_SNo (x * y + - x * w + - v * y) (q + v * w) (SNo_add_SNo_3 (x * y) (- x * w) (- v * y) ?? ?? ??) (SNo_add_SNo q (v * w) Hq1c ??)) (SNo_add_SNo (x * y + - x * w + - v * y) (v * y + x * w) (SNo_add_SNo_3 (x * y) (- x * w) (- v * y) ?? ?? ??) (SNo_add_SNo (v * y) (x * w) ?? ??)) (SNo_mul_SNo x y Hx1 Hy1) to the current goal.
We will prove (x * y + - x * w + - v * y) + (q + v * w) (x * y + - x * w + - v * y) + (v * y + x * w).
An exact proof term for the current goal is add_SNo_Le2 (x * y + - x * w + - v * y) (q + v * w) (v * y + x * w) (SNo_add_SNo_3 (x * y) (- x * w) (- v * y) ?? ?? ??) (SNo_add_SNo q (v * w) Hq1c ??) (SNo_add_SNo (v * y) (x * w) ?? ??) H2.
We will prove (x * y + - x * w + - v * y) + (v * y + x * w) x * y.
rewrite the current goal using add_SNo_minus_SNo_prop5 (x * y) (- x * w) (v * y) (x * w) ?? ?? ?? ?? (from left to right).
We will prove x * y + - x * w + x * w x * y.
rewrite the current goal using add_SNo_minus_SNo_linv (x * w) ?? (from left to right).
We will prove x * y + 0 x * y.
rewrite the current goal using add_SNo_0R (x * y) ?? (from left to right).
We will prove x * y x * y.
Apply SNoLe_ref to the current goal.
Apply SNoLt_irref (eps_ (k + k')) to the current goal.
We will prove eps_ (k + k') < eps_ (k + k').
An exact proof term for the current goal is SNoLeLt_tra (eps_ (k + k')) (abs_SNo (q + - (x * y))) (eps_ (k + k')) Lekk' (SNo_abs_SNo (q + - (x * y)) (SNo_add_SNo q (- (x * y)) Hq1c ??)) Lekk' L1b L1a.
Let v be given.
Assume Hv: v SNoR x.
Let w be given.
Assume Hw: w SNoR y.
Apply SNoR_E x Hx1 v Hv to the current goal.
Assume Hv1 _ _.
Apply SNoR_E y Hy1 w Hw to the current goal.
Assume Hw1 _ _.
Assume H2: q + v * w v * y + x * w.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w ?? Hw1.
We prove the intermediate claim Lmxw: SNo (- x * w).
An exact proof term for the current goal is SNo_minus_SNo (x * w) Lxw.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_mul_SNo v y Hv1 ??.
We prove the intermediate claim Lmvy: SNo (- v * y).
An exact proof term for the current goal is SNo_minus_SNo (v * y) Lvy.
We prove the intermediate claim Lvmx: SNo (v + - x).
An exact proof term for the current goal is SNo_add_SNo v (- x) ?? (SNo_minus_SNo x ??).
We prove the intermediate claim Lwmy: SNo (w + - y).
An exact proof term for the current goal is SNo_add_SNo w (- y) ?? (SNo_minus_SNo y ??).
Apply LRx2 v Hv to the current goal.
Let k be given.
Assume Hk1: k ω.
Assume Hk2: eps_ k v + - x.
Apply LRy2 w Hw to the current goal.
Let k' be given.
Assume Hk'1: k' ω.
Assume Hk'2: eps_ k' w + - y.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk1.
We prove the intermediate claim Lek': SNo (eps_ k').
An exact proof term for the current goal is SNo_eps_ k' Hk'1.
We prove the intermediate claim Lkk': k + k' ω.
An exact proof term for the current goal is add_SNo_In_omega k Hk1 k' Hk'1.
We prove the intermediate claim Lekk': SNo (eps_ (k + k')).
An exact proof term for the current goal is SNo_eps_ (k + k') Lkk'.
We prove the intermediate claim Lekek': SNo (eps_ k * eps_ k').
An exact proof term for the current goal is SNo_mul_SNo (eps_ k) (eps_ k') Lek Lek'.
We prove the intermediate claim L1c: abs_SNo (q + - (x * y)) < eps_ (k + k').
An exact proof term for the current goal is Hq2 (k + k') (add_SNo_In_omega k Hk1 k' Hk'1).
We prove the intermediate claim L1d: eps_ (k + k') abs_SNo (q + - (x * y)).
rewrite the current goal using abs_SNo_dist_swap q (x * y) Hq1c Lxy (from left to right).
We will prove eps_ (k + k') abs_SNo (x * y + - q).
rewrite the current goal using pos_abs_SNo (x * y + - q) (SNoLt_minus_pos q (x * y) Hq1c Lxy H1) (from left to right).
We will prove eps_ (k + k') x * y + - q.
Apply add_SNo_minus_Le2b (x * y) q (eps_ (k + k')) Lxy Hq1c Lekk' to the current goal.
We will prove eps_ (k + k') + q x * y.
rewrite the current goal using mul_SNo_eps_eps_add_SNo k Hk1 k' Hk'1 (from right to left).
We will prove eps_ k * eps_ k' + q x * y.
Apply SNoLe_tra (eps_ k * eps_ k' + q) ((v + - x) * (w + - y) + q) (x * y) (SNo_add_SNo (eps_ k * eps_ k') q ?? Hq1c) (SNo_add_SNo ((v + - x) * (w + - y)) q (SNo_mul_SNo (v + - x) (w + - y) ?? ??) Hq1c) Lxy to the current goal.
We will prove eps_ k * eps_ k' + q (v + - x) * (w + - y) + q.
Apply add_SNo_Le1 (eps_ k * eps_ k') q ((v + - x) * (w + - y)) Lekek' Hq1c (SNo_mul_SNo (v + - x) (w + - y) ?? ??) to the current goal.
We will prove eps_ k * eps_ k' (v + - x) * (w + - y).
Apply nonneg_mul_SNo_Le2 (eps_ k) (eps_ k') (v + - x) (w + - y) Lek Lek' ?? ?? to the current goal.
We will prove 0 eps_ k.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k Hk1.
We will prove 0 eps_ k'.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k' Hk'1.
We will prove eps_ k v + - x.
An exact proof term for the current goal is Hk2.
We will prove eps_ k' w + - y.
An exact proof term for the current goal is Hk'2.
We will prove (v + - x) * (w + - y) + q x * y.
rewrite the current goal using SNo_foil_mm v x w y Hv1 Hx1 Hw1 Hy1 (from left to right).
We will prove (v * w + - v * y + - x * w + x * y) + q x * y.
rewrite the current goal using add_SNo_assoc_4 (v * w) (- v * y) (- x * w) (x * y) ?? ?? ?? ?? (from left to right).
We will prove ((v * w + - v * y + - x * w) + x * y) + q x * y.
rewrite the current goal using add_SNo_assoc (v * w + - v * y + - x * w) (x * y) q (SNo_add_SNo_3 (v * w) (- v * y) (- x * w) ?? ?? ??) ?? Hq1c (from right to left).
We will prove (v * w + - v * y + - x * w) + (x * y + q) x * y.
rewrite the current goal using add_SNo_com (x * y) q ?? Hq1c (from left to right).
We will prove (v * w + - v * y + - x * w) + (q + x * y) x * y.
rewrite the current goal using add_SNo_3a_2b (v * w) (- v * y) (- x * w) q (x * y) ?? ?? ?? ?? ?? (from left to right).
We will prove (x * y + - v * y + - x * w) + (q + v * w) x * y.
Apply SNoLe_tra ((x * y + - v * y + - x * w) + (q + v * w)) ((x * y + - v * y + - x * w) + (v * y + x * w)) (x * y) (SNo_add_SNo (x * y + - v * y + - x * w) (q + v * w) (SNo_add_SNo_3 (x * y) (- v * y) (- x * w) ?? ?? ??) (SNo_add_SNo q (v * w) ?? ??)) (SNo_add_SNo (x * y + - v * y + - x * w) (v * y + x * w) (SNo_add_SNo_3 (x * y) (- v * y) (- x * w) ?? ?? ??) (SNo_add_SNo (v * y) (x * w) ?? ??)) ?? to the current goal.
We will prove (x * y + - v * y + - x * w) + (q + v * w) (x * y + - v * y + - x * w) + (v * y + x * w).
Apply add_SNo_Le2 (x * y + - v * y + - x * w) (q + v * w) (v * y + x * w) (SNo_add_SNo_3 (x * y) (- v * y) (- x * w) ?? ?? ??) (SNo_add_SNo q (v * w) ?? ??) (SNo_add_SNo (v * y) (x * w) ?? ??) to the current goal.
We will prove q + v * w v * y + x * w.
An exact proof term for the current goal is H2.
We will prove (x * y + - v * y + - x * w) + (v * y + x * w) x * y.
rewrite the current goal using add_SNo_com (v * y) (x * w) ?? ?? (from left to right).
We will prove (x * y + - v * y + - x * w) + (x * w + v * y) x * y.
rewrite the current goal using add_SNo_minus_SNo_prop5 (x * y) (- v * y) (x * w) (v * y) ?? ?? ?? ?? (from left to right).
We will prove x * y + - v * y + v * y x * y.
rewrite the current goal using add_SNo_minus_SNo_linv (v * y) ?? (from left to right).
We will prove x * y + 0 x * y.
rewrite the current goal using add_SNo_0R (x * y) ?? (from left to right).
Apply SNoLe_ref to the current goal.
Apply SNoLt_irref (eps_ (k + k')) to the current goal.
We will prove eps_ (k + k') < eps_ (k + k').
An exact proof term for the current goal is SNoLeLt_tra (eps_ (k + k')) (abs_SNo (q + - (x * y))) (eps_ (k + k')) Lekk' (SNo_abs_SNo (q + - (x * y)) (SNo_add_SNo q (- (x * y)) Hq1c (SNo_minus_SNo (x * y) Lxy))) Lekk' L1d L1c.
Assume H1: q = x * y.
An exact proof term for the current goal is H1.
Assume H1: x * y < q.
We will prove False.
We prove the intermediate claim Lq2: q SNoR (x * y).
Apply SNoR_I to the current goal.
An exact proof term for the current goal is Lxy.
An exact proof term for the current goal is Hq1c.
We will prove SNoLev q SNoLev (x * y).
An exact proof term for the current goal is Lxy3 q Hq1c Hq1a.
We will prove x * y < q.
An exact proof term for the current goal is H1.
Apply mul_SNo_SNoR_interpolate_impred x y Hx1 Hy1 q Lq2 to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Let w be given.
Assume Hw: w SNoR y.
Apply SNoL_E x Hx1 v Hv to the current goal.
Assume Hv1 _ _.
Apply SNoR_E y Hy1 w Hw to the current goal.
Assume Hw1 _ _.
Assume H2: v * y + x * w q + v * w.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_mul_SNo v y Hv1 Hy1.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w ?? Hw1.
We prove the intermediate claim Lmxw: SNo (- x * w).
An exact proof term for the current goal is SNo_minus_SNo (x * w) Lxw.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 ??.
We prove the intermediate claim Lmvw: SNo (- v * w).
An exact proof term for the current goal is SNo_minus_SNo (v * w) Lvw.
We prove the intermediate claim Lxmv: SNo (x + - v).
An exact proof term for the current goal is SNo_add_SNo x (- v) ?? (SNo_minus_SNo v ??).
We prove the intermediate claim Lwmy: SNo (w + - y).
An exact proof term for the current goal is SNo_add_SNo w (- y) ?? (SNo_minus_SNo y ??).
Apply LLx2 v Hv to the current goal.
Let k be given.
Assume Hk1: k ω.
Assume Hk2: eps_ k x + - v.
Apply LRy2 w Hw to the current goal.
Let k' be given.
Assume Hk'1: k' ω.
Assume Hk'2: eps_ k' w + - y.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk1.
We prove the intermediate claim Lek': SNo (eps_ k').
An exact proof term for the current goal is SNo_eps_ k' Hk'1.
We prove the intermediate claim Lkk': k + k' ω.
An exact proof term for the current goal is add_SNo_In_omega k Hk1 k' Hk'1.
We prove the intermediate claim Lekk': SNo (eps_ (k + k')).
An exact proof term for the current goal is SNo_eps_ (k + k') Lkk'.
We prove the intermediate claim Lekek': SNo (eps_ k * eps_ k').
An exact proof term for the current goal is SNo_mul_SNo (eps_ k) (eps_ k') Lek Lek'.
We prove the intermediate claim L1e: abs_SNo (q + - (x * y)) < eps_ (k + k').
An exact proof term for the current goal is Hq2 (k + k') (add_SNo_In_omega k Hk1 k' Hk'1).
We prove the intermediate claim L1f: eps_ (k + k') abs_SNo (q + - (x * y)).
rewrite the current goal using pos_abs_SNo (q + - x * y) (SNoLt_minus_pos (x * y) q Lxy Hq1c H1) (from left to right).
We will prove eps_ (k + k') q + - x * y.
Apply add_SNo_minus_Le2b q (x * y) (eps_ (k + k')) Hq1c Lxy Lekk' to the current goal.
We will prove eps_ (k + k') + x * y q.
rewrite the current goal using mul_SNo_eps_eps_add_SNo k Hk1 k' Hk'1 (from right to left).
We will prove eps_ k * eps_ k' + x * y q.
Apply SNoLe_tra (eps_ k * eps_ k' + x * y) ((x + - v) * (w + - y) + x * y) q (SNo_add_SNo (eps_ k * eps_ k') (x * y) ?? ??) (SNo_add_SNo ((x + - v) * (w + - y)) (x * y) (SNo_mul_SNo (x + - v) (w + - y) Lxmv Lwmy) Lxy) Hq1c to the current goal.
We will prove eps_ k * eps_ k' + x * y (x + - v) * (w + - y) + x * y.
Apply add_SNo_Le1 (eps_ k * eps_ k') (x * y) ((x + - v) * (w + - y)) Lekek' Lxy (SNo_mul_SNo (x + - v) (w + - y) Lxmv Lwmy) to the current goal.
We will prove eps_ k * eps_ k' (x + - v) * (w + - y).
Apply nonneg_mul_SNo_Le2 (eps_ k) (eps_ k') (x + - v) (w + - y) Lek Lek' Lxmv Lwmy to the current goal.
We will prove 0 eps_ k.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k Hk1.
We will prove 0 eps_ k'.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k' Hk'1.
We will prove eps_ k x + - v.
An exact proof term for the current goal is Hk2.
We will prove eps_ k' w + - y.
An exact proof term for the current goal is Hk'2.
We will prove (x + - v) * (w + - y) + x * y q.
rewrite the current goal using SNo_foil_mm x v w y Hx1 Hv1 Hw1 Hy1 (from left to right).
We will prove (x * w + - x * y + - v * w + v * y) + x * y q.
rewrite the current goal using add_SNo_rotate_4_1 (- x * y) (- v * w) (v * y) (x * w) ?? ?? ?? ?? (from right to left).
We will prove (- x * y + - v * w + v * y + x * w) + x * y q.
rewrite the current goal using add_SNo_com (- x * y + - v * w + v * y + x * w) (x * y) (SNo_add_SNo_4 (- x * y) (- v * w) (v * y) (x * w) ?? ?? ?? ??) ?? (from left to right).
rewrite the current goal using add_SNo_minus_L2' (x * y) (- v * w + v * y + x * w) ?? (SNo_add_SNo_3 (- v * w) (v * y) (x * w) ?? ?? ??) (from left to right).
We will prove - v * w + v * y + x * w q.
Apply SNoLe_tra (- v * w + v * y + x * w) (- v * w + q + v * w) q (SNo_add_SNo_3 (- v * w) (v * y) (x * w) ?? ?? ??) (SNo_add_SNo_3 (- v * w) q (v * w) ?? ?? ??) Hq1c to the current goal.
We will prove - v * w + v * y + x * w - v * w + q + v * w.
An exact proof term for the current goal is add_SNo_Le2 (- v * w) (v * y + x * w) (q + v * w) ?? (SNo_add_SNo (v * y) (x * w) ?? ??) (SNo_add_SNo q (v * w) Hq1c ??) H2.
We will prove - v * w + q + v * w q.
rewrite the current goal using add_SNo_com q (v * w) ?? ?? (from left to right).
rewrite the current goal using add_SNo_minus_L2 (v * w) q ?? ?? (from left to right).
We will prove q q.
Apply SNoLe_ref to the current goal.
Apply SNoLt_irref (eps_ (k + k')) to the current goal.
We will prove eps_ (k + k') < eps_ (k + k').
An exact proof term for the current goal is SNoLeLt_tra (eps_ (k + k')) (abs_SNo (q + - (x * y))) (eps_ (k + k')) Lekk' (SNo_abs_SNo (q + - (x * y)) (SNo_add_SNo q (- (x * y)) Hq1c ??)) Lekk' L1f L1e.
Let v be given.
Assume Hv: v SNoR x.
Let w be given.
Assume Hw: w SNoL y.
Apply SNoR_E x Hx1 v Hv to the current goal.
Assume Hv1 _ _.
Apply SNoL_E y Hy1 w Hw to the current goal.
Assume Hw1 _ _.
Assume H2: v * y + x * w q + v * w.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_mul_SNo v y Hv1 Hy1.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w ?? Hw1.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 ??.
We prove the intermediate claim Lmvw: SNo (- v * w).
An exact proof term for the current goal is SNo_minus_SNo (v * w) Lvw.
We prove the intermediate claim Lvmx: SNo (v + - x).
An exact proof term for the current goal is SNo_add_SNo v (- x) ?? (SNo_minus_SNo x ??).
We prove the intermediate claim Lymw: SNo (y + - w).
An exact proof term for the current goal is SNo_add_SNo y (- w) ?? (SNo_minus_SNo w ??).
Apply LRx2 v Hv to the current goal.
Let k be given.
Assume Hk1: k ω.
Assume Hk2: eps_ k v + - x.
Apply LLy2 w Hw to the current goal.
Let k' be given.
Assume Hk'1: k' ω.
Assume Hk'2: eps_ k' y + - w.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk1.
We prove the intermediate claim Lek': SNo (eps_ k').
An exact proof term for the current goal is SNo_eps_ k' Hk'1.
We prove the intermediate claim Lkk': k + k' ω.
An exact proof term for the current goal is add_SNo_In_omega k Hk1 k' Hk'1.
We prove the intermediate claim Lekk': SNo (eps_ (k + k')).
An exact proof term for the current goal is SNo_eps_ (k + k') Lkk'.
We prove the intermediate claim Lekek': SNo (eps_ k * eps_ k').
An exact proof term for the current goal is SNo_mul_SNo (eps_ k) (eps_ k') Lek Lek'.
We prove the intermediate claim L1g: abs_SNo (q + - (x * y)) < eps_ (k + k').
An exact proof term for the current goal is Hq2 (k + k') (add_SNo_In_omega k Hk1 k' Hk'1).
We prove the intermediate claim L1h: eps_ (k + k') abs_SNo (q + - (x * y)).
rewrite the current goal using pos_abs_SNo (q + - x * y) (SNoLt_minus_pos (x * y) q Lxy Hq1c H1) (from left to right).
We will prove eps_ (k + k') q + - x * y.
Apply add_SNo_minus_Le2b q (x * y) (eps_ (k + k')) Hq1c Lxy Lekk' to the current goal.
We will prove eps_ (k + k') + x * y q.
rewrite the current goal using mul_SNo_eps_eps_add_SNo k Hk1 k' Hk'1 (from right to left).
We will prove eps_ k * eps_ k' + x * y q.
Apply SNoLe_tra (eps_ k * eps_ k' + x * y) ((v + - x) * (y + - w) + x * y) q (SNo_add_SNo (eps_ k * eps_ k') (x * y) ?? Lxy) (SNo_add_SNo ((v + - x) * (y + - w)) (x * y) (SNo_mul_SNo (v + - x) (y + - w) ?? ??) Lxy) Hq1c to the current goal.
We will prove eps_ k * eps_ k' + x * y (v + - x) * (y + - w) + x * y.
Apply add_SNo_Le1 (eps_ k * eps_ k') (x * y) ((v + - x) * (y + - w)) Lekek' Lxy (SNo_mul_SNo (v + - x) (y + - w) ?? ??) to the current goal.
We will prove eps_ k * eps_ k' (v + - x) * (y + - w).
Apply nonneg_mul_SNo_Le2 (eps_ k) (eps_ k') (v + - x) (y + - w) Lek Lek' ?? ?? to the current goal.
We will prove 0 eps_ k.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k Hk1.
We will prove 0 eps_ k'.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k' Hk'1.
We will prove eps_ k v + - x.
An exact proof term for the current goal is Hk2.
We will prove eps_ k' y + - w.
An exact proof term for the current goal is Hk'2.
We will prove (v + - x) * (y + - w) + x * y q.
rewrite the current goal using SNo_foil_mm v x y w Hv1 Hx1 Hy1 Hw1 (from left to right).
We will prove (v * y + - v * w + - x * y + x * w) + x * y q.
rewrite the current goal using add_SNo_rotate_4_1 (v * y) (- v * w) (- x * y) (x * w) ?? ?? ?? ?? (from left to right).
rewrite the current goal using add_SNo_rotate_4_1 (x * w) (v * y) (- v * w) (- x * y) ?? ?? ?? ?? (from left to right).
We will prove (- x * y + x * w + v * y + - v * w) + x * y q.
rewrite the current goal using add_SNo_com (- x * y + x * w + v * y + - v * w) (x * y) (SNo_add_SNo_4 (- x * y) (x * w) (v * y) (- v * w) ?? ?? ?? ??) ?? (from left to right).
We will prove x * y + - x * y + x * w + v * y + - v * w q.
rewrite the current goal using add_SNo_minus_L2' (x * y) (x * w + v * y + - v * w) ?? (SNo_add_SNo_3 (x * w) (v * y) (- v * w) ?? ?? ??) (from left to right).
We will prove x * w + v * y + - v * w q.
rewrite the current goal using add_SNo_rotate_3_1 (x * w) (v * y) (- v * w) ?? ?? ?? (from left to right).
We will prove - v * w + x * w + v * y q.
Apply SNoLe_tra (- v * w + x * w + v * y) (- v * w + q + v * w) q (SNo_add_SNo_3 (- v * w) (x * w) (v * y) ?? ?? ??) (SNo_add_SNo_3 (- v * w) q (v * w) ?? ?? ??) ?? to the current goal.
We will prove - v * w + x * w + v * y - v * w + q + v * w.
Apply add_SNo_Le2 (- v * w) (x * w + v * y) (q + v * w) ?? (SNo_add_SNo (x * w) (v * y) ?? ??) (SNo_add_SNo q (v * w) ?? ??) to the current goal.
We will prove x * w + v * y q + v * w.
rewrite the current goal using add_SNo_com (x * w) (v * y) ?? ?? (from left to right).
An exact proof term for the current goal is H2.
We will prove - v * w + q + v * w q.
rewrite the current goal using add_SNo_com q (v * w) ?? ?? (from left to right).
We will prove - v * w + v * w + q q.
rewrite the current goal using add_SNo_minus_L2 (v * w) q ?? ?? (from left to right).
We will prove q q.
Apply SNoLe_ref to the current goal.
Apply SNoLt_irref (eps_ (k + k')) to the current goal.
We will prove eps_ (k + k') < eps_ (k + k').
An exact proof term for the current goal is SNoLeLt_tra (eps_ (k + k')) (abs_SNo (q + - (x * y))) (eps_ (k + k')) Lekk' (SNo_abs_SNo (q + - (x * y)) (SNo_add_SNo q (- (x * y)) Hq1c (SNo_minus_SNo (x * y) Lxy))) Lekk' L1h L1g.
We prove the intermediate claim LNex: Nω, eps_ N * x < 1 eps_ N * y < 1.
Apply SNoS_ordsucc_omega_bdd_eps_pos x Hx3 Hx0 Hx5 to the current goal.
Let N be given.
Assume HN.
Apply HN to the current goal.
Assume HN1: N ω.
Assume HN2: eps_ N * x < 1.
Apply SNoS_ordsucc_omega_bdd_eps_pos y Hy3 Hy0 Hy5 to the current goal.
Let N' be given.
Assume HN'.
Apply HN' to the current goal.
Assume HN'1: N' ω.
Assume HN'2: eps_ N' * y < 1.
Apply ordinal_trichotomy_or_impred N N' (nat_p_ordinal N (omega_nat_p N HN1)) (nat_p_ordinal N' (omega_nat_p N' HN'1)) to the current goal.
Assume H1: N N'.
We use N' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is HN'1.
Apply andI to the current goal.
We will prove eps_ N' * x < 1.
Apply SNoLt_tra (eps_ N' * x) (eps_ N * x) 1 (SNo_mul_SNo (eps_ N') x (SNo_eps_ N' HN'1) Hx1) (SNo_mul_SNo (eps_ N) x (SNo_eps_ N HN1) Hx1) SNo_1 to the current goal.
We will prove eps_ N' * x < eps_ N * x.
Apply pos_mul_SNo_Lt' (eps_ N') (eps_ N) x (SNo_eps_ N' HN'1) (SNo_eps_ N HN1) Hx1 Hx0 to the current goal.
We will prove eps_ N' < eps_ N.
An exact proof term for the current goal is SNo_eps_decr N' HN'1 N H1.
An exact proof term for the current goal is HN2.
An exact proof term for the current goal is HN'2.
Assume H1: N = N'.
We use N to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is HN1.
Apply andI to the current goal.
An exact proof term for the current goal is HN2.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is HN'2.
Assume H1: N' N.
We use N to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is HN1.
Apply andI to the current goal.
An exact proof term for the current goal is HN2.
We will prove eps_ N * y < 1.
Apply SNoLt_tra (eps_ N * y) (eps_ N' * y) 1 (SNo_mul_SNo (eps_ N) y (SNo_eps_ N HN1) Hy1) (SNo_mul_SNo (eps_ N') y (SNo_eps_ N' HN'1) Hy1) SNo_1 to the current goal.
We will prove eps_ N * y < eps_ N' * y.
Apply pos_mul_SNo_Lt' (eps_ N) (eps_ N') y (SNo_eps_ N HN1) (SNo_eps_ N' HN'1) Hy1 Hy0 to the current goal.
We will prove eps_ N < eps_ N'.
An exact proof term for the current goal is SNo_eps_decr N HN1 N' H1.
An exact proof term for the current goal is HN'2.
Apply LNex to the current goal.
Let N be given.
Assume HN.
Apply HN to the current goal.
Assume HN1: N ω.
Assume HN.
Apply HN to the current goal.
Assume HN2: eps_ N * x < 1.
Assume HN3: eps_ N * y < 1.
We prove the intermediate claim L2: kω, qSNoS_ ω, q < x * y x * y < q + eps_ k.
Let k be given.
Assume Hk.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk.
We prove the intermediate claim Lk1: k + 1 ω.
An exact proof term for the current goal is add_SNo_In_omega k Hk 1 (nat_p_omega 1 nat_1).
We prove the intermediate claim Lk2: k + 2 ω.
An exact proof term for the current goal is add_SNo_In_omega k Hk 2 (nat_p_omega 2 nat_2).
Set k' to be the term N + k + 2.
We prove the intermediate claim Lk': k' ω.
An exact proof term for the current goal is add_SNo_In_omega N HN1 (k + 2) Lk2.
We prove the intermediate claim Lek': SNo (eps_ k').
An exact proof term for the current goal is SNo_eps_ k' Lk'.
Apply Lx7 k' Lk' to the current goal.
Let q be given.
Assume Hq1: q SNoS_ ω.
Assume Hqpos: 0 < q.
Assume Hq2: q < x.
Assume Hq3: x < q + eps_ k'.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
Apply Ly7 k' Lk' to the current goal.
Let q' be given.
Assume Hq'1: q' SNoS_ ω.
Assume Hq'pos: 0 < q'.
Assume Hq'2: q' < y.
Assume Hq'3: y < q' + eps_ k'.
Apply SNoS_E2 ω omega_ordinal q' Hq'1 to the current goal.
Assume Hq'1a Hq'1b Hq'1c Hq'1d.
We prove the intermediate claim Lqq': SNo (q * q').
An exact proof term for the current goal is SNo_mul_SNo q q' Hq1c Hq'1c.
We use (q * q') to witness the existential quantifier.
Apply andI to the current goal.
We will prove q * q' SNoS_ ω.
An exact proof term for the current goal is mul_SNo_SNoS_omega q Hq1 q' Hq'1.
Apply andI to the current goal.
We will prove q * q' < x * y.
An exact proof term for the current goal is pos_mul_SNo_Lt2 q q' x y Hq1c Hq'1c Hx1 Hy1 Hqpos Hq'pos Hq2 Hq'2.
We will prove x * y < q * q' + eps_ k.
Apply SNoLt_tra (x * y) ((q + eps_ k') * (q' + eps_ k')) (q * q' + eps_ k) Lxy (SNo_mul_SNo (q + eps_ k') (q' + eps_ k') (SNo_add_SNo q (eps_ k') Hq1c Lek') (SNo_add_SNo q' (eps_ k') Hq'1c Lek')) (SNo_add_SNo (q * q') (eps_ k) (SNo_mul_SNo q q' Hq1c Hq'1c) Lek) to the current goal.
We will prove x * y < (q + eps_ k') * (q' + eps_ k').
An exact proof term for the current goal is pos_mul_SNo_Lt2 x y (q + eps_ k') (q' + eps_ k') Hx1 Hy1 (SNo_add_SNo q (eps_ k') Hq1c Lek') (SNo_add_SNo q' (eps_ k') Hq'1c Lek') Hx0 Hy0 Hq3 Hq'3.
We will prove (q + eps_ k') * (q' + eps_ k') < q * q' + eps_ k.
rewrite the current goal using SNo_foil q (eps_ k') q' (eps_ k') Hq1c Lek' Hq'1c Lek' (from left to right).
We will prove q * q' + q * eps_ k' + eps_ k' * q' + eps_ k' * eps_ k' < q * q' + eps_ k.
Apply add_SNo_Lt2 (q * q') (q * eps_ k' + eps_ k' * q' + eps_ k' * eps_ k') (eps_ k) Lqq' (SNo_add_SNo_3 (q * eps_ k') (eps_ k' * q') (eps_ k' * eps_ k') (SNo_mul_SNo q (eps_ k') Hq1c Lek') (SNo_mul_SNo (eps_ k') q' Lek' Hq'1c) (SNo_mul_SNo (eps_ k') (eps_ k') Lek' Lek')) Lek to the current goal.
We will prove q * eps_ k' + eps_ k' * q' + eps_ k' * eps_ k' < eps_ k.
We will prove q * eps_ (N + k + 2) + eps_ (N + k + 2) * q' + eps_ (N + k + 2) * eps_ (N + k + 2) < eps_ k.
rewrite the current goal using mul_SNo_eps_eps_add_SNo N HN1 (k + 2) Lk2 (from right to left).
We will prove q * eps_ N * eps_ (k + 2) + (eps_ N * eps_ (k + 2)) * q' + (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < eps_ k.
rewrite the current goal using eps_ordsucc_half_add k (omega_nat_p k Hk) (from right to left).
We will prove q * eps_ N * eps_ (k + 2) + (eps_ N * eps_ (k + 2)) * q' + (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < eps_ (ordsucc k) + eps_ (ordsucc k).
rewrite the current goal using eps_ordsucc_half_add (ordsucc k) (nat_ordsucc k (omega_nat_p k Hk)) (from right to left) at position 1.
We will prove q * eps_ N * eps_ (k + 2) + (eps_ N * eps_ (k + 2)) * q' + (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < (eps_ (ordsucc (ordsucc k)) + eps_ (ordsucc (ordsucc k))) + eps_ (ordsucc k).
rewrite the current goal using add_SNo_1_ordsucc k Hk (from right to left).
We will prove q * eps_ N * eps_ (k + 2) + (eps_ N * eps_ (k + 2)) * q' + (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < (eps_ (ordsucc (k + 1)) + eps_ (ordsucc (k + 1))) + eps_ (k + 1).
rewrite the current goal using add_SNo_1_ordsucc (k + 1) (add_SNo_In_omega k Hk 1 (nat_p_omega 1 nat_1)) (from right to left).
We will prove q * eps_ N * eps_ (k + 2) + (eps_ N * eps_ (k + 2)) * q' + (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < (eps_ (((k + 1) + 1)) + eps_ (((k + 1) + 1))) + eps_ (k + 1).
rewrite the current goal using add_SNo_assoc k 1 1 (omega_SNo k Hk) SNo_1 SNo_1 (from right to left).
rewrite the current goal using add_SNo_1_1_2 (from left to right).
We will prove q * eps_ N * eps_ (k + 2) + (eps_ N * eps_ (k + 2)) * q' + (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < (eps_ (k + 2) + eps_ (k + 2)) + eps_ (k + 1).
We prove the intermediate claim LeN: SNo (eps_ N).
An exact proof term for the current goal is SNo_eps_ N HN1.
We prove the intermediate claim Lek1: SNo (eps_ (k + 1)).
An exact proof term for the current goal is SNo_eps_ (k + 1) Lk1.
We prove the intermediate claim Lek2: SNo (eps_ (k + 2)).
An exact proof term for the current goal is SNo_eps_ (k + 2) Lk2.
We prove the intermediate claim LeNek2: SNo (eps_ N * eps_ (k + 2)).
An exact proof term for the current goal is SNo_mul_SNo (eps_ N) (eps_ (k + 2)) LeN Lek2.
We prove the intermediate claim LeNek2sq: SNo ((eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2))).
An exact proof term for the current goal is SNo_mul_SNo (eps_ N * eps_ (k + 2)) (eps_ N * eps_ (k + 2)) LeNek2 LeNek2.
rewrite the current goal using add_SNo_assoc (eps_ (k + 2)) (eps_ (k + 2)) (eps_ (k + 1)) Lek2 Lek2 Lek1 (from right to left).
Apply add_SNo_Lt4 (q * eps_ N * eps_ (k + 2)) ((eps_ N * eps_ (k + 2)) * q') ((eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2))) (eps_ (k + 2)) (eps_ (k + 2)) (eps_ (k + 1)) (SNo_mul_SNo q (eps_ N * eps_ (k + 2)) Hq1c LeNek2) (SNo_mul_SNo (eps_ N * eps_ (k + 2)) q' LeNek2 Hq'1c) LeNek2sq Lek2 Lek2 Lek1 to the current goal.
We will prove q * eps_ N * eps_ (k + 2) < eps_ (k + 2).
rewrite the current goal using mul_SNo_assoc q (eps_ N) (eps_ (k + 2)) Hq1c LeN Lek2 (from left to right).
We will prove (q * eps_ N) * eps_ (k + 2) < eps_ (k + 2).
Apply mul_SNo_Lt1_pos_Lt (q * eps_ N) (eps_ (k + 2)) (SNo_mul_SNo q (eps_ N) Hq1c LeN) Lek2 to the current goal.
We will prove q * eps_ N < 1.
Apply SNoLt_tra (q * eps_ N) (x * eps_ N) 1 (SNo_mul_SNo q (eps_ N) Hq1c LeN) (SNo_mul_SNo x (eps_ N) Hx1 LeN) SNo_1 to the current goal.
We will prove q * eps_ N < x * eps_ N.
Apply pos_mul_SNo_Lt' q x (eps_ N) Hq1c Hx1 (SNo_eps_ N HN1) to the current goal.
We will prove 0 < eps_ N.
An exact proof term for the current goal is SNo_eps_pos N HN1.
We will prove q < x.
An exact proof term for the current goal is Hq2.
We will prove x * eps_ N < 1.
rewrite the current goal using mul_SNo_com x (eps_ N) Hx1 LeN (from left to right).
An exact proof term for the current goal is HN2.
We will prove 0 < eps_ (k + 2).
An exact proof term for the current goal is SNo_eps_pos (k + 2) Lk2.
We will prove (eps_ N * eps_ (k + 2)) * q' < eps_ (k + 2).
rewrite the current goal using mul_SNo_com (eps_ N * eps_ (k + 2)) q' (SNo_mul_SNo (eps_ N) (eps_ (k + 2)) LeN Lek2) Hq'1c (from left to right).
We will prove q' * (eps_ N * eps_ (k + 2)) < eps_ (k + 2).
rewrite the current goal using mul_SNo_assoc q' (eps_ N) (eps_ (k + 2)) Hq'1c LeN Lek2 (from left to right).
We will prove (q' * eps_ N) * eps_ (k + 2) < eps_ (k + 2).
Apply mul_SNo_Lt1_pos_Lt (q' * eps_ N) (eps_ (k + 2)) (SNo_mul_SNo q' (eps_ N) Hq'1c LeN) Lek2 to the current goal.
We will prove q' * eps_ N < 1.
Apply SNoLt_tra (q' * eps_ N) (y * eps_ N) 1 (SNo_mul_SNo q' (eps_ N) Hq'1c LeN) (SNo_mul_SNo y (eps_ N) Hy1 LeN) SNo_1 to the current goal.
We will prove q' * eps_ N < y * eps_ N.
Apply pos_mul_SNo_Lt' q' y (eps_ N) Hq'1c Hy1 (SNo_eps_ N HN1) to the current goal.
We will prove 0 < eps_ N.
An exact proof term for the current goal is SNo_eps_pos N HN1.
We will prove q' < y.
An exact proof term for the current goal is Hq'2.
We will prove y * eps_ N < 1.
rewrite the current goal using mul_SNo_com y (eps_ N) Hy1 LeN (from left to right).
An exact proof term for the current goal is HN3.
We will prove 0 < eps_ (k + 2).
An exact proof term for the current goal is SNo_eps_pos (k + 2) Lk2.
We will prove (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < eps_ (k + 1).
Apply SNoLeLt_tra ((eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2))) (eps_ (k + 2)) (eps_ (k + 1)) LeNek2sq Lek2 Lek1 to the current goal.
We will prove (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) eps_ (k + 2).
Apply SNoLe_tra ((eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2))) (eps_ N * eps_ (k + 2)) (eps_ (k + 2)) LeNek2sq LeNek2 Lek2 to the current goal.
We will prove (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) eps_ N * eps_ (k + 2).
Apply mul_SNo_Le1_nonneg_Le (eps_ N * eps_ (k + 2)) (eps_ N * eps_ (k + 2)) LeNek2 LeNek2 to the current goal.
We will prove eps_ N * eps_ (k + 2) 1.
rewrite the current goal using mul_SNo_oneL 1 SNo_1 (from right to left) at position 2.
We will prove eps_ N * eps_ (k + 2) 1 * 1.
Apply nonneg_mul_SNo_Le2 (eps_ N) (eps_ (k + 2)) 1 1 LeN Lek2 SNo_1 SNo_1 to the current goal.
We will prove 0 eps_ N.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos N HN1.
We will prove 0 eps_ (k + 2).
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos (k + 2) Lk2.
We will prove eps_ N 1.
Apply eps_bd_1 to the current goal.
An exact proof term for the current goal is HN1.
We will prove eps_ (k + 2) 1.
Apply eps_bd_1 to the current goal.
An exact proof term for the current goal is Lk2.
We will prove 0 eps_ N * eps_ (k + 2).
Apply SNoLtLe to the current goal.
Apply mul_SNo_pos_pos (eps_ N) (eps_ (k + 2)) LeN Lek2 to the current goal.
An exact proof term for the current goal is SNo_eps_pos N HN1.
An exact proof term for the current goal is SNo_eps_pos (k + 2) Lk2.
We will prove eps_ N * eps_ (k + 2) eps_ (k + 2).
Apply mul_SNo_Le1_nonneg_Le (eps_ N) (eps_ (k + 2)) LeN Lek2 to the current goal.
We will prove eps_ N 1.
Apply eps_bd_1 to the current goal.
An exact proof term for the current goal is HN1.
We will prove 0 eps_ (k + 2).
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos (k + 2) Lk2.
We will prove eps_ (k + 2) < eps_ (k + 1).
Apply SNo_eps_decr (k + 2) Lk2 (k + 1) to the current goal.
We will prove k + 1 k + 2.
Apply ordinal_SNoLt_In (k + 1) (k + 2) (nat_p_ordinal (k + 1) (omega_nat_p (k + 1) Lk1)) (nat_p_ordinal (k + 2) (omega_nat_p (k + 2) Lk2)) to the current goal.
We will prove k + 1 < k + 2.
Apply add_SNo_Lt2 k 1 2 (omega_SNo k Hk) SNo_1 SNo_2 to the current goal.
We will prove 1 < 2.
An exact proof term for the current goal is SNoLt_1_2.
Apply SNo_prereal_incr_lower_approx (x * y) Lxy L1 L2 to the current goal.
Let hL be given.
Assume HhL.
Apply HhL to the current goal.
Assume HhL1: hL SNoS_ ωω.
Assume HhL2: nω, hL n < x * y x * y < hL n + eps_ n in, hL i < hL n.
Apply SNo_prereal_decr_upper_approx (x * y) Lxy L1 L2 to the current goal.
Let hR be given.
Assume HhR.
Apply HhR to the current goal.
Assume HhR1: hR SNoS_ ωω.
Assume HhR2: nω, hR n + - eps_ n < x * y x * y < hR n in, hR n < hR i.
We prove the intermediate claim LhL: nω, SNo (hL n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (hL n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) hL n HhL1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LhR: nω, SNo (hR n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (hR n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) hR n HhR1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim L3: nω, hL n < x * y.
Let n be given.
Assume Hn.
Apply HhL2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim L4: nω, x * y < hR n.
Let n be given.
Assume Hn.
Apply HhR2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim L5: n mω, hL n < hR m.
Let n be given.
Assume Hn.
Let m be given.
Assume Hm.
Apply SNoLt_tra (hL n) (x * y) (hR m) (LhL n Hn) Lxy (LhR m Hm) to the current goal.
We will prove hL n < x * y.
An exact proof term for the current goal is L3 n Hn.
We will prove x * y < hR m.
An exact proof term for the current goal is L4 m Hm.
Apply SNo_approx_real_lem hL HhL1 hR HhR1 L5 to the current goal.
Assume HhLR1: SNoCutP {hL n|nω} {hR n|nω}.
Assume HhLR2: SNo (SNoCut {hL n|nω} {hR n|nω}).
Assume _ _.
Assume HhLR5: nω, hL n < SNoCut {hL n|nω} {hR n|nω}.
Assume HhLR6: nω, SNoCut {hL n|nω} {hR n|nω} < hR n.
We prove the intermediate claim L6: nω, x * y < hL n + eps_ n.
Let n be given.
Assume Hn.
Apply HhL2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim L7: nω, in, hL i < hL n.
Let n be given.
Assume Hn.
Apply HhL2 n Hn to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim L8: nω, hR n + - eps_ n < x * y.
Let n be given.
Assume Hn.
Apply HhR2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim L9: nω, in, hR n < hR i.
Let n be given.
Assume Hn.
Apply HhR2 n Hn to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim L10: x * y = SNoCut {hL n|nω} {hR n|nω}.
rewrite the current goal using HxyLR (from left to right).
We will prove SNoCut L R = SNoCut {hL n|nω} {hR n|nω}.
Apply SNoCut_ext L R {hL n|nω} {hR n|nω} HLR HhLR1 to the current goal.
Let w be given.
Assume Hw: w L.
We will prove w < SNoCut {hL n|nω} {hR n|nω}.
Apply HLE w Hw to the current goal.
Let w0 be given.
Assume Hw0: w0 SNoL x.
Let w1 be given.
Assume Hw1: w1 SNoL y.
Assume Hwe: w = w0 * y + x * w1 + - w0 * w1.
Apply LLx2 w0 Hw0 to the current goal.
Let k0 be given.
Assume Hk0: k0 ω.
Assume Hk0b: eps_ k0 x + - w0.
Apply LLy2 w1 Hw1 to the current goal.
Let k1 be given.
Assume Hk1: k1 ω.
Assume Hk1b: eps_ k1 y + - w1.
Apply SNoL_E x Hx1 w0 Hw0 to the current goal.
Assume Hw01: SNo w0.
Assume Hw02: SNoLev w0 SNoLev x.
Assume Hw03: w0 < x.
Apply SNoL_E y Hy1 w1 Hw1 to the current goal.
Assume Hw11: SNo w1.
Assume Hw12: SNoLev w1 SNoLev y.
Assume Hw13: w1 < y.
We prove the intermediate claim Lek0: SNo (eps_ k0).
An exact proof term for the current goal is SNo_eps_ k0 Hk0.
We prove the intermediate claim Lek1: SNo (eps_ k1).
An exact proof term for the current goal is SNo_eps_ k1 Hk1.
We prove the intermediate claim Lk0k1: k0 + k1 ω.
An exact proof term for the current goal is add_SNo_In_omega k0 Hk0 k1 Hk1.
We prove the intermediate claim Lek0k1: SNo (eps_ (k0 + k1)).
An exact proof term for the current goal is SNo_eps_ (k0 + k1) Lk0k1.
We prove the intermediate claim LhLk0k1: SNo (hL (k0 + k1)).
An exact proof term for the current goal is LhL (k0 + k1) Lk0k1.
We prove the intermediate claim Lw0y: SNo (w0 * y).
An exact proof term for the current goal is SNo_mul_SNo w0 y Hw01 Hy1.
We prove the intermediate claim Lxw1: SNo (x * w1).
An exact proof term for the current goal is SNo_mul_SNo x w1 Hx1 Hw11.
We prove the intermediate claim Lw0w1: SNo (w0 * w1).
An exact proof term for the current goal is SNo_mul_SNo w0 w1 Hw01 Hw11.
We prove the intermediate claim Lmw0w1: SNo (- w0 * w1).
An exact proof term for the current goal is SNo_minus_SNo (w0 * w1) Lw0w1.
We prove the intermediate claim Lw0yxw1mw0w1: SNo (w0 * y + x * w1 + - w0 * w1).
An exact proof term for the current goal is SNo_add_SNo_3 (w0 * y) (x * w1) (- w0 * w1) Lw0y Lxw1 Lmw0w1.
rewrite the current goal using Hwe (from left to right).
Apply SNoLeLt_tra (w0 * y + x * w1 + - w0 * w1) (hL (k0 + k1)) (SNoCut {hL n|nω} {hR n|nω}) Lw0yxw1mw0w1 LhLk0k1 HhLR2 to the current goal.
We will prove w0 * y + x * w1 + - w0 * w1 hL (k0 + k1).
Apply SNoLtLe_or (hL (k0 + k1)) (w0 * y + x * w1 + - w0 * w1) LhLk0k1 Lw0yxw1mw0w1 to the current goal.
Assume H1: hL (k0 + k1) < w0 * y + x * w1 + - w0 * w1.
We will prove False.
Apply SNoLt_irref (x * y) to the current goal.
We will prove x * y < x * y.
Apply SNoLt_tra (x * y) (hL (k0 + k1) + eps_ (k0 + k1)) (x * y) Lxy (SNo_add_SNo (hL (k0 + k1)) (eps_ (k0 + k1)) LhLk0k1 Lek0k1) Lxy (L6 (k0 + k1) Lk0k1) to the current goal.
We will prove hL (k0 + k1) + eps_ (k0 + k1) < x * y.
Apply SNoLtLe_tra (hL (k0 + k1) + eps_ (k0 + k1)) ((w0 * y + x * w1 + - w0 * w1) + eps_ (k0 + k1)) (x * y) (SNo_add_SNo (hL (k0 + k1)) (eps_ (k0 + k1)) LhLk0k1 Lek0k1) (SNo_add_SNo (w0 * y + x * w1 + - w0 * w1) (eps_ (k0 + k1)) Lw0yxw1mw0w1 Lek0k1) Lxy to the current goal.
We will prove hL (k0 + k1) + eps_ (k0 + k1) < (w0 * y + x * w1 + - w0 * w1) + eps_ (k0 + k1).
Apply add_SNo_Lt1 (hL (k0 + k1)) (eps_ (k0 + k1)) (w0 * y + x * w1 + - w0 * w1) LhLk0k1 Lek0k1 Lw0yxw1mw0w1 to the current goal.
An exact proof term for the current goal is H1.
We will prove (w0 * y + x * w1 + - w0 * w1) + eps_ (k0 + k1) x * y.
rewrite the current goal using add_SNo_com (w0 * y + x * w1 + - w0 * w1) (eps_ (k0 + k1)) Lw0yxw1mw0w1 Lek0k1 (from left to right).
Apply add_SNo_minus_Le2 (x * y) (w0 * y + x * w1 + - w0 * w1) (eps_ (k0 + k1)) Lxy Lw0yxw1mw0w1 Lek0k1 to the current goal.
We will prove eps_ (k0 + k1) x * y + - (w0 * y + x * w1 + - w0 * w1).
rewrite the current goal using add_SNo_com_3_0_1 (w0 * y) (x * w1) (- w0 * w1) Lw0y Lxw1 Lmw0w1 (from left to right).
We will prove eps_ (k0 + k1) x * y + - (x * w1 + w0 * y + - w0 * w1).
rewrite the current goal using minus_add_SNo_distr_3 (x * w1) (w0 * y) (- w0 * w1) Lxw1 Lw0y Lmw0w1 (from left to right).
We will prove eps_ (k0 + k1) x * y + - x * w1 + - w0 * y + - - w0 * w1.
rewrite the current goal using mul_SNo_minus_distrL w0 y Hw01 Hy1 (from right to left).
rewrite the current goal using mul_SNo_minus_distrL w0 w1 Hw01 Hw11 (from right to left).
We will prove eps_ (k0 + k1) x * y + - x * w1 + (- w0) * y + - (- w0) * w1.
rewrite the current goal using mul_SNo_minus_distrR x w1 Hx1 Hw11 (from right to left).
rewrite the current goal using mul_SNo_minus_distrR (- w0) w1 (SNo_minus_SNo w0 Hw01) Hw11 (from right to left).
We will prove eps_ (k0 + k1) x * y + x * (- w1) + (- w0) * y + (- w0) * (- w1).
rewrite the current goal using SNo_foil x (- w0) y (- w1) Hx1 (SNo_minus_SNo w0 Hw01) Hy1 (SNo_minus_SNo w1 Hw11) (from right to left).
We will prove eps_ (k0 + k1) (x + - w0) * (y + - w1).
rewrite the current goal using mul_SNo_eps_eps_add_SNo k0 Hk0 k1 Hk1 (from right to left).
We will prove eps_ k0 * eps_ k1 (x + - w0) * (y + - w1).
Apply nonneg_mul_SNo_Le2 (eps_ k0) (eps_ k1) (x + - w0) (y + - w1) Lek0 Lek1 (SNo_add_SNo x (- w0) Hx1 (SNo_minus_SNo w0 Hw01)) (SNo_add_SNo y (- w1) Hy1 (SNo_minus_SNo w1 Hw11)) to the current goal.
We will prove 0 eps_ k0.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k0 Hk0.
We will prove 0 eps_ k1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k1 Hk1.
We will prove eps_ k0 x + - w0.
An exact proof term for the current goal is Hk0b.
We will prove eps_ k1 y + - w1.
An exact proof term for the current goal is Hk1b.
Assume H1: w0 * y + x * w1 + - w0 * w1 hL (k0 + k1).
An exact proof term for the current goal is H1.
We will prove hL (k0 + k1) < SNoCut {hL n|nω} {hR n|nω}.
An exact proof term for the current goal is HhLR5 (k0 + k1) Lk0k1.
Let z0 be given.
Assume Hz0: z0 SNoR x.
Let z1 be given.
Assume Hz1: z1 SNoR y.
Assume Hwe: w = z0 * y + x * z1 + - z0 * z1.
Apply LRx2 z0 Hz0 to the current goal.
Let k0 be given.
Assume Hk0: k0 ω.
Assume Hk0b: eps_ k0 z0 + - x.
Apply LRy2 z1 Hz1 to the current goal.
Let k1 be given.
Assume Hk1: k1 ω.
Assume Hk1b: eps_ k1 z1 + - y.
Apply SNoR_E x Hx1 z0 Hz0 to the current goal.
Assume Hz01: SNo z0.
Assume Hz02: SNoLev z0 SNoLev x.
Assume Hz03: x < z0.
Apply SNoR_E y Hy1 z1 Hz1 to the current goal.
Assume Hz11: SNo z1.
Assume Hz12: SNoLev z1 SNoLev y.
Assume Hz13: y < z1.
We prove the intermediate claim Lek0: SNo (eps_ k0).
An exact proof term for the current goal is SNo_eps_ k0 Hk0.
We prove the intermediate claim Lek1: SNo (eps_ k1).
An exact proof term for the current goal is SNo_eps_ k1 Hk1.
We prove the intermediate claim Lk0k1: k0 + k1 ω.
An exact proof term for the current goal is add_SNo_In_omega k0 Hk0 k1 Hk1.
We prove the intermediate claim Lek0k1: SNo (eps_ (k0 + k1)).
An exact proof term for the current goal is SNo_eps_ (k0 + k1) Lk0k1.
We prove the intermediate claim LhLk0k1: SNo (hL (k0 + k1)).
An exact proof term for the current goal is LhL (k0 + k1) Lk0k1.
We prove the intermediate claim Lz0y: SNo (z0 * y).
An exact proof term for the current goal is SNo_mul_SNo z0 y Hz01 Hy1.
We prove the intermediate claim Lxz1: SNo (x * z1).
An exact proof term for the current goal is SNo_mul_SNo x z1 Hx1 Hz11.
We prove the intermediate claim Lz0z1: SNo (z0 * z1).
An exact proof term for the current goal is SNo_mul_SNo z0 z1 Hz01 Hz11.
We prove the intermediate claim Lmz0z1: SNo (- z0 * z1).
An exact proof term for the current goal is SNo_minus_SNo (z0 * z1) Lz0z1.
We prove the intermediate claim Lz0yxz1mz0z1: SNo (z0 * y + x * z1 + - z0 * z1).
An exact proof term for the current goal is SNo_add_SNo_3 (z0 * y) (x * z1) (- z0 * z1) Lz0y Lxz1 Lmz0z1.
rewrite the current goal using Hwe (from left to right).
Apply SNoLeLt_tra (z0 * y + x * z1 + - z0 * z1) (hL (k0 + k1)) (SNoCut {hL n|nω} {hR n|nω}) Lz0yxz1mz0z1 LhLk0k1 HhLR2 to the current goal.
We will prove z0 * y + x * z1 + - z0 * z1 hL (k0 + k1).
Apply SNoLtLe_or (hL (k0 + k1)) (z0 * y + x * z1 + - z0 * z1) LhLk0k1 Lz0yxz1mz0z1 to the current goal.
Assume H1: hL (k0 + k1) < z0 * y + x * z1 + - z0 * z1.
We will prove False.
Apply SNoLt_irref (x * y) to the current goal.
We will prove x * y < x * y.
Apply SNoLt_tra (x * y) (hL (k0 + k1) + eps_ (k0 + k1)) (x * y) Lxy (SNo_add_SNo (hL (k0 + k1)) (eps_ (k0 + k1)) LhLk0k1 Lek0k1) Lxy (L6 (k0 + k1) Lk0k1) to the current goal.
We will prove hL (k0 + k1) + eps_ (k0 + k1) < x * y.
Apply SNoLtLe_tra (hL (k0 + k1) + eps_ (k0 + k1)) ((z0 * y + x * z1 + - z0 * z1) + eps_ (k0 + k1)) (x * y) (SNo_add_SNo (hL (k0 + k1)) (eps_ (k0 + k1)) LhLk0k1 Lek0k1) (SNo_add_SNo (z0 * y + x * z1 + - z0 * z1) (eps_ (k0 + k1)) Lz0yxz1mz0z1 Lek0k1) Lxy to the current goal.
We will prove hL (k0 + k1) + eps_ (k0 + k1) < (z0 * y + x * z1 + - z0 * z1) + eps_ (k0 + k1).
Apply add_SNo_Lt1 (hL (k0 + k1)) (eps_ (k0 + k1)) (z0 * y + x * z1 + - z0 * z1) LhLk0k1 Lek0k1 Lz0yxz1mz0z1 to the current goal.
An exact proof term for the current goal is H1.
We will prove (z0 * y + x * z1 + - z0 * z1) + eps_ (k0 + k1) x * y.
rewrite the current goal using add_SNo_com (z0 * y + x * z1 + - z0 * z1) (eps_ (k0 + k1)) Lz0yxz1mz0z1 Lek0k1 (from left to right).
Apply add_SNo_minus_Le2 (x * y) (z0 * y + x * z1 + - z0 * z1) (eps_ (k0 + k1)) Lxy Lz0yxz1mz0z1 Lek0k1 to the current goal.
We will prove eps_ (k0 + k1) x * y + - (z0 * y + x * z1 + - z0 * z1).
rewrite the current goal using add_SNo_com (x * y) (- (z0 * y + x * z1 + - z0 * z1)) Lxy (SNo_minus_SNo (z0 * y + x * z1 + - z0 * z1) Lz0yxz1mz0z1) (from left to right).
rewrite the current goal using add_SNo_rotate_3_1 (z0 * y) (x * z1) (- z0 * z1) Lz0y Lxz1 Lmz0z1 (from left to right).
rewrite the current goal using minus_add_SNo_distr_3 (- z0 * z1) (z0 * y) (x * z1) Lmz0z1 Lz0y Lxz1 (from left to right).
rewrite the current goal using minus_SNo_invol (z0 * z1) Lz0z1 (from left to right).
We will prove eps_ (k0 + k1) (z0 * z1 + - z0 * y + - x * z1) + x * y.
rewrite the current goal using add_SNo_assoc_4 (z0 * z1) (- z0 * y) (- x * z1) (x * y) Lz0z1 (SNo_minus_SNo (z0 * y) Lz0y) (SNo_minus_SNo (x * z1) Lxz1) Lxy (from right to left).
We will prove eps_ (k0 + k1) z0 * z1 + - z0 * y + - x * z1 + x * y.
rewrite the current goal using mul_SNo_minus_distrR z0 y Hz01 Hy1 (from right to left).
rewrite the current goal using mul_SNo_minus_distrL x z1 Hx1 Hz11 (from right to left).
We will prove eps_ (k0 + k1) z0 * z1 + z0 * (- y) + (- x) * z1 + x * y.
rewrite the current goal using mul_SNo_minus_minus x y Hx1 Hy1 (from right to left).
We will prove eps_ (k0 + k1) z0 * z1 + z0 * (- y) + (- x) * z1 + (- x) * (- y).
rewrite the current goal using SNo_foil z0 (- x) z1 (- y) Hz01 (SNo_minus_SNo x Hx1) Hz11 (SNo_minus_SNo y Hy1) (from right to left).
We will prove eps_ (k0 + k1) (z0 + - x) * (z1 + - y).
rewrite the current goal using mul_SNo_eps_eps_add_SNo k0 Hk0 k1 Hk1 (from right to left).
We will prove eps_ k0 * eps_ k1 (z0 + - x) * (z1 + - y).
Apply nonneg_mul_SNo_Le2 (eps_ k0) (eps_ k1) (z0 + - x) (z1 + - y) Lek0 Lek1 (SNo_add_SNo z0 (- x) Hz01 (SNo_minus_SNo x Hx1)) (SNo_add_SNo z1 (- y) Hz11 (SNo_minus_SNo y Hy1)) to the current goal.
We will prove 0 eps_ k0.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k0 Hk0.
We will prove 0 eps_ k1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k1 Hk1.
We will prove eps_ k0 z0 + - x.
An exact proof term for the current goal is Hk0b.
We will prove eps_ k1 z1 + - y.
An exact proof term for the current goal is Hk1b.
Assume H1: z0 * y + x * z1 + - z0 * z1 hL (k0 + k1).
An exact proof term for the current goal is H1.
We will prove hL (k0 + k1) < SNoCut {hL n|nω} {hR n|nω}.
An exact proof term for the current goal is HhLR5 (k0 + k1) Lk0k1.
Let z be given.
Assume Hz: z R.
We will prove SNoCut {hL n|nω} {hR n|nω} < z.
Apply HRE z Hz to the current goal.
Let w0 be given.
Assume Hw0: w0 SNoL x.
Let z1 be given.
Assume Hz1: z1 SNoR y.
Assume Hze: z = w0 * y + x * z1 + - w0 * z1.
Apply LLx2 w0 Hw0 to the current goal.
Let k0 be given.
Assume Hk0: k0 ω.
Assume Hk0b: eps_ k0 x + - w0.
Apply LRy2 z1 Hz1 to the current goal.
Let k1 be given.
Assume Hk1: k1 ω.
Assume Hk1b: eps_ k1 z1 + - y.
Apply SNoL_E x Hx1 w0 Hw0 to the current goal.
Assume Hw01: SNo w0.
Assume Hw02: SNoLev w0 SNoLev x.
Assume Hw03: w0 < x.
Apply SNoR_E y Hy1 z1 Hz1 to the current goal.
Assume Hz11: SNo z1.
Assume Hz12: SNoLev z1 SNoLev y.
Assume Hz13: y < z1.
We prove the intermediate claim Lek0: SNo (eps_ k0).
An exact proof term for the current goal is SNo_eps_ k0 Hk0.
We prove the intermediate claim Lek1: SNo (eps_ k1).
An exact proof term for the current goal is SNo_eps_ k1 Hk1.
We prove the intermediate claim Lk0k1: k0 + k1 ω.
An exact proof term for the current goal is add_SNo_In_omega k0 Hk0 k1 Hk1.
We prove the intermediate claim Lek0k1: SNo (eps_ (k0 + k1)).
An exact proof term for the current goal is SNo_eps_ (k0 + k1) Lk0k1.
We prove the intermediate claim Lmek0k1: SNo (- eps_ (k0 + k1)).
An exact proof term for the current goal is SNo_minus_SNo (eps_ (k0 + k1)) Lek0k1.
We prove the intermediate claim LhRk0k1: SNo (hR (k0 + k1)).
An exact proof term for the current goal is LhR (k0 + k1) Lk0k1.
We prove the intermediate claim Lw0y: SNo (w0 * y).
An exact proof term for the current goal is SNo_mul_SNo w0 y Hw01 Hy1.
We prove the intermediate claim Lxz1: SNo (x * z1).
An exact proof term for the current goal is SNo_mul_SNo x z1 Hx1 Hz11.
We prove the intermediate claim Lw0z1: SNo (w0 * z1).
An exact proof term for the current goal is SNo_mul_SNo w0 z1 Hw01 Hz11.
We prove the intermediate claim Lmw0z1: SNo (- w0 * z1).
An exact proof term for the current goal is SNo_minus_SNo (w0 * z1) Lw0z1.
We prove the intermediate claim Lw0yxz1mw0z1: SNo (w0 * y + x * z1 + - w0 * z1).
An exact proof term for the current goal is SNo_add_SNo_3 (w0 * y) (x * z1) (- w0 * z1) Lw0y Lxz1 Lmw0z1.
rewrite the current goal using Hze (from left to right).
Apply SNoLtLe_tra (SNoCut {hL n|nω} {hR n|nω}) (hR (k0 + k1)) (w0 * y + x * z1 + - w0 * z1) HhLR2 LhRk0k1 Lw0yxz1mw0z1 to the current goal.
We will prove SNoCut {hL n|nω} {hR n|nω} < hR (k0 + k1).
An exact proof term for the current goal is HhLR6 (k0 + k1) Lk0k1.
We will prove hR (k0 + k1) w0 * y + x * z1 + - w0 * z1.
Apply SNoLtLe_or (w0 * y + x * z1 + - w0 * z1) (hR (k0 + k1)) Lw0yxz1mw0z1 LhRk0k1 to the current goal.
Assume H1: w0 * y + x * z1 + - w0 * z1 < hR (k0 + k1).
We will prove False.
Apply SNoLt_irref (x * y) to the current goal.
We will prove x * y < x * y.
Apply SNoLt_tra (x * y) (hR (k0 + k1) + - eps_ (k0 + k1)) (x * y) Lxy (SNo_add_SNo (hR (k0 + k1)) (- eps_ (k0 + k1)) LhRk0k1 Lmek0k1) Lxy to the current goal.
We will prove x * y < hR (k0 + k1) + - eps_ (k0 + k1).
Apply SNoLeLt_tra (x * y) ((w0 * y + x * z1 + - w0 * z1) + - eps_ (k0 + k1)) (hR (k0 + k1) + - eps_ (k0 + k1)) Lxy (SNo_add_SNo (w0 * y + x * z1 + - w0 * z1) (- eps_ (k0 + k1)) Lw0yxz1mw0z1 Lmek0k1) (SNo_add_SNo (hR (k0 + k1)) (- eps_ (k0 + k1)) LhRk0k1 Lmek0k1) to the current goal.
We will prove x * y (w0 * y + x * z1 + - w0 * z1) + - eps_ (k0 + k1).
Apply add_SNo_minus_Le2b (w0 * y + x * z1 + - w0 * z1) (eps_ (k0 + k1)) (x * y) Lw0yxz1mw0z1 Lek0k1 Lxy to the current goal.
We will prove x * y + eps_ (k0 + k1) w0 * y + x * z1 + - w0 * z1.
rewrite the current goal using add_SNo_com (x * y) (eps_ (k0 + k1)) Lxy Lek0k1 (from left to right).
Apply add_SNo_minus_Le2 (w0 * y + x * z1 + - w0 * z1) (x * y) (eps_ (k0 + k1)) Lw0yxz1mw0z1 Lxy Lek0k1 to the current goal.
We will prove eps_ (k0 + k1) (w0 * y + x * z1 + - w0 * z1) + - x * y.
rewrite the current goal using add_SNo_rotate_3_1 (w0 * y) (x * z1) (- w0 * z1) Lw0y Lxz1 Lmw0z1 (from left to right).
We will prove eps_ (k0 + k1) (- w0 * z1 + w0 * y + x * z1) + - x * y.
rewrite the current goal using add_SNo_assoc_4 (- w0 * z1) (w0 * y) (x * z1) (- x * y) Lmw0z1 Lw0y Lxz1 Lmxy (from right to left).
We will prove eps_ (k0 + k1) - w0 * z1 + w0 * y + x * z1 + - x * y.
rewrite the current goal using add_SNo_rotate_4_1 (- w0 * z1) (w0 * y) (x * z1) (- x * y) Lmw0z1 Lw0y Lxz1 Lmxy (from left to right).
We will prove eps_ (k0 + k1) - x * y + - w0 * z1 + w0 * y + x * z1.
rewrite the current goal using add_SNo_rotate_4_1 (- x * y) (- w0 * z1) (w0 * y) (x * z1) Lmxy Lmw0z1 Lw0y Lxz1 (from left to right).
We will prove eps_ (k0 + k1) x * z1 + - x * y + - w0 * z1 + w0 * y.
rewrite the current goal using mul_SNo_minus_distrR x y Hx1 Hy1 (from right to left).
rewrite the current goal using mul_SNo_minus_distrL w0 z1 Hw01 Hz11 (from right to left).
rewrite the current goal using mul_SNo_minus_minus w0 y Hw01 Hy1 (from right to left).
We will prove eps_ (k0 + k1) x * z1 + x * (- y) + (- w0) * z1 + (- w0) * (- y).
rewrite the current goal using SNo_foil x (- w0) z1 (- y) Hx1 (SNo_minus_SNo w0 Hw01) Hz11 (SNo_minus_SNo y Hy1) (from right to left).
rewrite the current goal using mul_SNo_eps_eps_add_SNo k0 Hk0 k1 Hk1 (from right to left).
We will prove eps_ k0 * eps_ k1 (x + - w0) * (z1 + - y).
Apply nonneg_mul_SNo_Le2 (eps_ k0) (eps_ k1) (x + - w0) (z1 + - y) Lek0 Lek1 (SNo_add_SNo x (- w0) Hx1 (SNo_minus_SNo w0 Hw01)) (SNo_add_SNo z1 (- y) Hz11 (SNo_minus_SNo y Hy1)) to the current goal.
We will prove 0 eps_ k0.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k0 Hk0.
We will prove 0 eps_ k1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k1 Hk1.
We will prove eps_ k0 x + - w0.
An exact proof term for the current goal is Hk0b.
We will prove eps_ k1 z1 + - y.
An exact proof term for the current goal is Hk1b.
We will prove (w0 * y + x * z1 + - w0 * z1) + - eps_ (k0 + k1) < hR (k0 + k1) + - eps_ (k0 + k1).
Apply add_SNo_Lt1 (w0 * y + x * z1 + - w0 * z1) (- eps_ (k0 + k1)) (hR (k0 + k1)) Lw0yxz1mw0z1 Lmek0k1 LhRk0k1 to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is L8 (k0 + k1) Lk0k1.
Assume H1: hR (k0 + k1) w0 * y + x * z1 + - w0 * z1.
An exact proof term for the current goal is H1.
Let z0 be given.
Assume Hz0: z0 SNoR x.
Let w1 be given.
Assume Hw1: w1 SNoL y.
Assume Hze: z = z0 * y + x * w1 + - z0 * w1.
Apply LRx2 z0 Hz0 to the current goal.
Let k0 be given.
Assume Hk0: k0 ω.
Assume Hk0b: eps_ k0 z0 + - x.
Apply LLy2 w1 Hw1 to the current goal.
Let k1 be given.
Assume Hk1: k1 ω.
Assume Hk1b: eps_ k1 y + - w1.
Apply SNoR_E x Hx1 z0 Hz0 to the current goal.
Assume Hz01: SNo z0.
Assume Hz02: SNoLev z0 SNoLev x.
Assume Hz03: x < z0.
Apply SNoL_E y Hy1 w1 Hw1 to the current goal.
Assume Hw11: SNo w1.
Assume Hw12: SNoLev w1 SNoLev y.
Assume Hw13: w1 < y.
We prove the intermediate claim Lek0: SNo (eps_ k0).
An exact proof term for the current goal is SNo_eps_ k0 Hk0.
We prove the intermediate claim Lek1: SNo (eps_ k1).
An exact proof term for the current goal is SNo_eps_ k1 Hk1.
We prove the intermediate claim Lk0k1: k0 + k1 ω.
An exact proof term for the current goal is add_SNo_In_omega k0 Hk0 k1 Hk1.
We prove the intermediate claim Lek0k1: SNo (eps_ (k0 + k1)).
An exact proof term for the current goal is SNo_eps_ (k0 + k1) Lk0k1.
We prove the intermediate claim Lmek0k1: SNo (- eps_ (k0 + k1)).
An exact proof term for the current goal is SNo_minus_SNo (eps_ (k0 + k1)) Lek0k1.
We prove the intermediate claim LhRk0k1: SNo (hR (k0 + k1)).
An exact proof term for the current goal is LhR (k0 + k1) Lk0k1.
We prove the intermediate claim Lz0y: SNo (z0 * y).
An exact proof term for the current goal is SNo_mul_SNo z0 y Hz01 Hy1.
We prove the intermediate claim Lxw1: SNo (x * w1).
An exact proof term for the current goal is SNo_mul_SNo x w1 Hx1 Hw11.
We prove the intermediate claim Lz0w1: SNo (z0 * w1).
An exact proof term for the current goal is SNo_mul_SNo z0 w1 Hz01 Hw11.
We prove the intermediate claim Lmz0w1: SNo (- z0 * w1).
An exact proof term for the current goal is SNo_minus_SNo (z0 * w1) Lz0w1.
We prove the intermediate claim Lz0yxw1mz0w1: SNo (z0 * y + x * w1 + - z0 * w1).
An exact proof term for the current goal is SNo_add_SNo_3 (z0 * y) (x * w1) (- z0 * w1) Lz0y Lxw1 Lmz0w1.
rewrite the current goal using Hze (from left to right).
Apply SNoLtLe_tra (SNoCut {hL n|nω} {hR n|nω}) (hR (k0 + k1)) (z0 * y + x * w1 + - z0 * w1) HhLR2 LhRk0k1 Lz0yxw1mz0w1 to the current goal.
We will prove SNoCut {hL n|nω} {hR n|nω} < hR (k0 + k1).
An exact proof term for the current goal is HhLR6 (k0 + k1) Lk0k1.
We will prove hR (k0 + k1) z0 * y + x * w1 + - z0 * w1.
Apply SNoLtLe_or (z0 * y + x * w1 + - z0 * w1) (hR (k0 + k1)) Lz0yxw1mz0w1 LhRk0k1 to the current goal.
Assume H1: z0 * y + x * w1 + - z0 * w1 < hR (k0 + k1).
We will prove False.
Apply SNoLt_irref (x * y) to the current goal.
We will prove x * y < x * y.
Apply SNoLt_tra (x * y) (hR (k0 + k1) + - eps_ (k0 + k1)) (x * y) Lxy (SNo_add_SNo (hR (k0 + k1)) (- eps_ (k0 + k1)) LhRk0k1 Lmek0k1) Lxy to the current goal.
We will prove x * y < hR (k0 + k1) + - eps_ (k0 + k1).
Apply SNoLeLt_tra (x * y) ((z0 * y + x * w1 + - z0 * w1) + - eps_ (k0 + k1)) (hR (k0 + k1) + - eps_ (k0 + k1)) Lxy (SNo_add_SNo (z0 * y + x * w1 + - z0 * w1) (- eps_ (k0 + k1)) Lz0yxw1mz0w1 Lmek0k1) (SNo_add_SNo (hR (k0 + k1)) (- eps_ (k0 + k1)) LhRk0k1 Lmek0k1) to the current goal.
We will prove x * y (z0 * y + x * w1 + - z0 * w1) + - eps_ (k0 + k1).
Apply add_SNo_minus_Le2b (z0 * y + x * w1 + - z0 * w1) (eps_ (k0 + k1)) (x * y) Lz0yxw1mz0w1 Lek0k1 Lxy to the current goal.
We will prove x * y + eps_ (k0 + k1) z0 * y + x * w1 + - z0 * w1.
rewrite the current goal using add_SNo_com (x * y) (eps_ (k0 + k1)) Lxy Lek0k1 (from left to right).
Apply add_SNo_minus_Le2 (z0 * y + x * w1 + - z0 * w1) (x * y) (eps_ (k0 + k1)) Lz0yxw1mz0w1 Lxy Lek0k1 to the current goal.
We will prove eps_ (k0 + k1) (z0 * y + x * w1 + - z0 * w1) + - x * y.
rewrite the current goal using add_SNo_assoc_4 (z0 * y) (x * w1) (- z0 * w1) (- x * y) Lz0y Lxw1 Lmz0w1 Lmxy (from right to left).
We will prove eps_ (k0 + k1) z0 * y + x * w1 + - z0 * w1 + - x * y.
rewrite the current goal using add_SNo_rotate_3_1 (- z0 * w1) (- x * y) (x * w1) Lmz0w1 Lmxy Lxw1 (from right to left).
We will prove eps_ (k0 + k1) z0 * y + - z0 * w1 + - x * y + x * w1.
rewrite the current goal using mul_SNo_minus_distrR z0 w1 Hz01 Hw11 (from right to left).
rewrite the current goal using mul_SNo_minus_distrL x y Hx1 Hy1 (from right to left).
rewrite the current goal using mul_SNo_minus_minus x w1 Hx1 Hw11 (from right to left).
We will prove eps_ (k0 + k1) z0 * y + z0 * (- w1) + (- x) * y + (- x) * (- w1).
rewrite the current goal using SNo_foil z0 (- x) y (- w1) Hz01 (SNo_minus_SNo x Hx1) Hy1 (SNo_minus_SNo w1 Hw11) (from right to left).
rewrite the current goal using mul_SNo_eps_eps_add_SNo k0 Hk0 k1 Hk1 (from right to left).
We will prove eps_ k0 * eps_ k1 (z0 + - x) * (y + - w1).
Apply nonneg_mul_SNo_Le2 (eps_ k0) (eps_ k1) (z0 + - x) (y + - w1) Lek0 Lek1 (SNo_add_SNo z0 (- x) Hz01 (SNo_minus_SNo x Hx1)) (SNo_add_SNo y (- w1) Hy1 (SNo_minus_SNo w1 Hw11)) to the current goal.
We will prove 0 eps_ k0.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k0 Hk0.
We will prove 0 eps_ k1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k1 Hk1.
We will prove eps_ k0 z0 + - x.
An exact proof term for the current goal is Hk0b.
We will prove eps_ k1 y + - w1.
An exact proof term for the current goal is Hk1b.
We will prove (z0 * y + x * w1 + - z0 * w1) + - eps_ (k0 + k1) < hR (k0 + k1) + - eps_ (k0 + k1).
Apply add_SNo_Lt1 (z0 * y + x * w1 + - z0 * w1) (- eps_ (k0 + k1)) (hR (k0 + k1)) Lz0yxw1mz0w1 Lmek0k1 LhRk0k1 to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is L8 (k0 + k1) Lk0k1.
Assume H1: hR (k0 + k1) z0 * y + x * w1 + - z0 * w1.
An exact proof term for the current goal is H1.
Let w be given.
Assume Hw: w {hL n|nω}.
rewrite the current goal using HxyLR (from right to left).
We will prove w < x * y.
Apply ReplE_impred ω (λn ⇒ hL n) w Hw to the current goal.
Let n be given.
Assume Hn Hwn.
rewrite the current goal using Hwn (from left to right).
We will prove hL n < x * y.
An exact proof term for the current goal is L3 n Hn.
Let z be given.
Assume Hz: z {hR n|nω}.
rewrite the current goal using HxyLR (from right to left).
We will prove x * y < z.
Apply ReplE_impred ω (λn ⇒ hR n) z Hz to the current goal.
Let n be given.
Assume Hn Hzn.
rewrite the current goal using Hzn (from left to right).
We will prove x * y < hR n.
An exact proof term for the current goal is L4 n Hn.
Apply HC to the current goal.
An exact proof term for the current goal is SNo_approx_real (x * y) Lxy hL HhL1 hR HhR1 L3 L6 L7 L4 L9 L10.
Theorem. (real_mul_SNo) The following is provable:
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
We prove the intermediate claim Lx: SNo x.
An exact proof term for the current goal is real_SNo x Hx.
We prove the intermediate claim Ly: SNo y.
An exact proof term for the current goal is real_SNo y Hy.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Lx Ly.
Apply SNoLt_trichotomy_or_impred x 0 Lx SNo_0 to the current goal.
Assume H1: x < 0.
We prove the intermediate claim Lmx: 0 < - x.
Apply minus_SNo_Lt_contra2 x 0 Lx SNo_0 to the current goal.
We will prove x < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H1.
Apply SNoLt_trichotomy_or_impred y 0 Ly SNo_0 to the current goal.
Assume H2: y < 0.
We will prove x * y real.
rewrite the current goal using mul_SNo_minus_minus x y Lx Ly (from right to left).
We will prove (- x) * (- y) real.
Apply real_mul_SNo_pos (- x) (real_minus_SNo x Hx) (- y) (real_minus_SNo y Hy) Lmx to the current goal.
We will prove 0 < - y.
Apply minus_SNo_Lt_contra2 y 0 Ly SNo_0 to the current goal.
We will prove y < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H2.
Assume H2: y = 0.
rewrite the current goal using H2 (from left to right).
rewrite the current goal using mul_SNo_zeroR x Lx (from left to right).
An exact proof term for the current goal is real_0.
Assume H2: 0 < y.
We will prove x * y real.
rewrite the current goal using minus_SNo_invol (x * y) Lxy (from right to left).
We will prove - - (x * y) real.
rewrite the current goal using mul_SNo_minus_distrL x y Lx Ly (from right to left).
We will prove - ((- x) * y) real.
Apply real_minus_SNo to the current goal.
We will prove (- x) * y real.
An exact proof term for the current goal is real_mul_SNo_pos (- x) (real_minus_SNo x Hx) y Hy Lmx H2.
Assume H1: x = 0.
We will prove x * y real.
rewrite the current goal using H1 (from left to right).
rewrite the current goal using mul_SNo_zeroL y Ly (from left to right).
An exact proof term for the current goal is real_0.
Assume H1: 0 < x.
Apply SNoLt_trichotomy_or_impred y 0 Ly SNo_0 to the current goal.
Assume H2: y < 0.
rewrite the current goal using minus_SNo_invol (x * y) Lxy (from right to left).
We will prove - - (x * y) real.
rewrite the current goal using mul_SNo_minus_distrR x y Lx Ly (from right to left).
We will prove - (x * (- y)) real.
Apply real_minus_SNo to the current goal.
We will prove x * (- y) real.
Apply real_mul_SNo_pos x Hx (- y) (real_minus_SNo y Hy) H1 to the current goal.
We will prove 0 < - y.
Apply minus_SNo_Lt_contra2 y 0 Ly SNo_0 to the current goal.
We will prove y < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H2.
Assume H2: y = 0.
rewrite the current goal using H2 (from left to right).
rewrite the current goal using mul_SNo_zeroR x Lx (from left to right).
An exact proof term for the current goal is real_0.
Assume H2: 0 < y.
An exact proof term for the current goal is real_mul_SNo_pos x Hx y Hy H1 H2.
Proof:
Let x be given.
Assume HxR Hxnn.
Apply real_E x HxR to the current goal.
Assume Hx1: SNo x.
Assume Hx2: SNoLev x ordsucc ω.
Assume Hx3: x SNoS_ (ordsucc ω).
Assume Hx4: - ω < x.
Assume Hx5: x < ω.
Assume Hx6: qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x.
Assume Hx7: kω, qSNoS_ ω, q < x x < q + eps_ k.
We prove the intermediate claim L1: ∀m, nat_p mx < mnω, n x x < ordsucc n.
Apply nat_ind to the current goal.
Assume H1: x < 0.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
An exact proof term for the current goal is SNoLeLt_tra 0 x 0 SNo_0 Hx1 SNo_0 Hxnn H1.
Let m be given.
Assume Hm.
Assume IHm: x < mnω, n x x < ordsucc n.
Assume H2: x < ordsucc m.
Apply SNoLtLe_or x m Hx1 (nat_p_SNo m Hm) to the current goal.
Assume H3: x < m.
Apply IHm to the current goal.
We will prove x < m.
An exact proof term for the current goal is H3.
Assume H3: m x.
We use m to witness the existential quantifier.
Apply andI to the current goal.
We will prove m ω.
An exact proof term for the current goal is nat_p_omega m Hm.
Apply andI to the current goal.
We will prove m x.
An exact proof term for the current goal is H3.
We will prove x < ordsucc m.
An exact proof term for the current goal is H2.
Apply Hx7 0 (nat_p_omega 0 nat_0) to the current goal.
Let q be given.
Assume H.
Apply H to the current goal.
Assume Hq: q SNoS_ ω.
Assume H.
Apply H to the current goal.
Assume Hqx: q < x.
rewrite the current goal using eps_0_1 (from left to right).
Assume Hxq1: x < q + 1.
Apply SNoS_E ω omega_ordinal q Hq to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m ω.
Assume H1: SNo_ m q.
We prove the intermediate claim Lq: SNo q.
An exact proof term for the current goal is SNo_SNo m (nat_p_ordinal m (omega_nat_p m Hm)) q H1.
Apply L1 (ordsucc m) to the current goal.
We will prove nat_p (ordsucc m).
Apply nat_ordsucc to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hm.
We will prove x < ordsucc m.
Apply SNoLtLe_tra x (q + 1) (ordsucc m) Hx1 (SNo_add_SNo q 1 Lq SNo_1) (nat_p_SNo (ordsucc m) (nat_ordsucc m (omega_nat_p m Hm))) Hxq1 to the current goal.
We will prove q + 1 ordsucc m.
We prove the intermediate claim Lq1: SNo (q + 1).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Lq.
An exact proof term for the current goal is SNo_1.
Apply ordinal_SNoLev_max_2 (ordsucc m) (nat_p_ordinal (ordsucc m) (nat_ordsucc m (omega_nat_p m Hm))) (q + 1) to the current goal.
We will prove SNo (q + 1).
An exact proof term for the current goal is Lq1.
We will prove SNoLev (q + 1) ordsucc (ordsucc m).
Apply ordinal_In_Or_Subq (SNoLev (q + 1)) (ordsucc m) (SNoLev_ordinal (q + 1) Lq1) (nat_p_ordinal (ordsucc m) (nat_ordsucc m (omega_nat_p m Hm))) to the current goal.
Assume H2: SNoLev (q + 1) ordsucc m.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is H2.
Assume H2: ordsucc m SNoLev (q + 1).
We prove the intermediate claim L2: SNoLev (q + 1) ordsucc m.
Apply Subq_tra (SNoLev (q + 1)) (SNoLev q + SNoLev 1) to the current goal.
We will prove SNoLev (q + 1) SNoLev q + SNoLev 1.
Apply add_SNo_Lev_bd to the current goal.
An exact proof term for the current goal is Lq.
An exact proof term for the current goal is SNo_1.
We will prove SNoLev q + SNoLev 1 ordsucc m.
rewrite the current goal using SNoLev_uniq2 m (nat_p_ordinal m (omega_nat_p m Hm)) q H1 (from left to right).
rewrite the current goal using ordinal_SNoLev 1 (nat_p_ordinal 1 nat_1) (from left to right).
We will prove m + 1 ordsucc m.
rewrite the current goal using add_SNo_1_ordsucc m Hm (from left to right).
Apply Subq_ref to the current goal.
We prove the intermediate claim L3: SNoLev (q + 1) = ordsucc m.
Apply set_ext to the current goal.
An exact proof term for the current goal is L2.
An exact proof term for the current goal is H2.
rewrite the current goal using L3 (from left to right).
Apply ordsuccI2 to the current goal.
Theorem. (pos_real_left_approx_double) The following is provable:
Proof:
Let x be given.
Assume HxR Hxpos Hxn2 Hxne.
Apply real_E x HxR to the current goal.
Assume Hx1: SNo x.
Assume Hx2: SNoLev x ordsucc ω.
Assume Hx3: x SNoS_ (ordsucc ω).
Assume Hx4: - ω < x.
Assume Hx5: x < ω.
Assume Hx6: qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x.
Assume Hx7: kω, qSNoS_ ω, q < x x < q + eps_ k.
We prove the intermediate claim L1: ∀m, nat_p meps_ m < xwSNoL_pos x, x < 2 * w.
Apply nat_ind to the current goal.
We will prove eps_ 0 < xwSNoL_pos x, x < 2 * w.
rewrite the current goal using eps_0_1 (from left to right).
Assume H1: 1 < x.
Apply SNoLt_trichotomy_or_impred x 2 Hx1 SNo_2 to the current goal.
Assume H2: x < 2.
We use 1 to witness the existential quantifier.
Apply andI to the current goal.
We will prove 1 SNoL_pos x.
We will prove 1 {wSNoL x|0 < w}.
Apply SepI to the current goal.
We will prove 1 SNoL x.
Apply SNoL_I x Hx1 1 SNo_1 to the current goal.
We will prove SNoLev 1 SNoLev x.
rewrite the current goal using ordinal_SNoLev 1 (nat_p_ordinal 1 nat_1) (from left to right).
We will prove 1 SNoLev x.
Apply ordinal_In_Or_Subq 1 (SNoLev x) (nat_p_ordinal 1 nat_1) (SNoLev_ordinal x Hx1) to the current goal.
Assume H3: 1 SNoLev x.
An exact proof term for the current goal is H3.
Assume H3: SNoLev x 1.
We will prove False.
Apply Hxne 0 (nat_p_omega 0 nat_0) to the current goal.
We will prove x = eps_ 0.
rewrite the current goal using eps_0_1 (from left to right).
An exact proof term for the current goal is pos_low_eq_one x Hx1 Hxpos H3.
We will prove 1 < x.
An exact proof term for the current goal is H1.
We will prove 0 < 1.
An exact proof term for the current goal is SNoLt_0_1.
We will prove x < 2 * 1.
rewrite the current goal using mul_SNo_oneR 2 SNo_2 (from left to right).
An exact proof term for the current goal is H2.
Assume H2: x = 2.
We will prove False.
Apply Hxn2 to the current goal.
An exact proof term for the current goal is H2.
Assume H2: 2 < x.
Apply nonneg_real_nat_interval x HxR (SNoLtLe 0 x Hxpos) to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m ω.
Assume H.
Apply H to the current goal.
Assume Hmx: m x.
Assume Hxm1: x < ordsucc m.
We prove the intermediate claim Lm: nat_p m.
An exact proof term for the current goal is omega_nat_p m Hm.
Apply nat_inv m Lm to the current goal.
Assume Hm0: m = 0.
We will prove False.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLt_tra x 1 x Hx1 SNo_1 Hx1 to the current goal.
We will prove x < ordsucc 0.
rewrite the current goal using Hm0 (from right to left).
An exact proof term for the current goal is Hxm1.
We will prove 1 < x.
An exact proof term for the current goal is H1.
Assume H.
Apply H to the current goal.
Let m' be given.
Assume H.
Apply H to the current goal.
Assume Hm': nat_p m'.
Assume Hmm': m = ordsucc m'.
Apply nat_inv m' Hm' to the current goal.
Assume Hm'0: m' = 0.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLt_tra x 2 x Hx1 SNo_2 Hx1 to the current goal.
We will prove x < ordsucc (ordsucc 0).
rewrite the current goal using Hm'0 (from right to left).
rewrite the current goal using Hmm' (from right to left).
An exact proof term for the current goal is Hxm1.
We will prove 2 < x.
An exact proof term for the current goal is H2.
Assume H.
Apply H to the current goal.
Let m'' be given.
Assume H.
Apply H to the current goal.
Assume Hm'': nat_p m''.
Assume Hm'm'': m' = ordsucc m''.
We prove the intermediate claim L1a: kω, 2 k k < x x ordsucc k.
Apply SNoLeE m x (nat_p_SNo m Lm) Hx1 Hmx to the current goal.
Assume H4: m < x.
We use m to witness the existential quantifier.
Apply andI to the current goal.
We will prove m ω.
An exact proof term for the current goal is Hm.
Apply and3I to the current goal.
We will prove 2 m.
Apply SNoLtLe_or m 2 (nat_p_SNo m Lm) SNo_2 to the current goal.
Assume H5: m < 2.
We will prove False.
We prove the intermediate claim L1aa: m 2.
Apply ordinal_SNoLt_In to the current goal.
An exact proof term for the current goal is nat_p_ordinal m Lm.
An exact proof term for the current goal is nat_p_ordinal 2 nat_2.
An exact proof term for the current goal is H5.
Apply cases_2 m L1aa (λi ⇒ m i) to the current goal.
rewrite the current goal using Hmm' (from left to right).
An exact proof term for the current goal is neq_ordsucc_0 m'.
rewrite the current goal using Hmm' (from left to right).
rewrite the current goal using Hm'm'' (from left to right).
Assume H6: ordsucc (ordsucc m'') = 1.
An exact proof term for the current goal is neq_ordsucc_0 m'' (ordsucc_inj (ordsucc m'') 0 H6).
Use reflexivity.
Assume H5: 2 m.
An exact proof term for the current goal is H5.
We will prove m < x.
An exact proof term for the current goal is H4.
We will prove x ordsucc m.
Apply SNoLtLe to the current goal.
We will prove x < ordsucc m.
An exact proof term for the current goal is Hxm1.
Assume H4: m = x.
Apply nat_inv m'' Hm'' to the current goal.
Assume Hm''0: m'' = 0.
We will prove False.
Apply Hxn2 to the current goal.
We will prove x = 2.
rewrite the current goal using H4 (from right to left).
rewrite the current goal using Hmm' (from left to right).
rewrite the current goal using Hm'm'' (from left to right).
rewrite the current goal using Hm''0 (from left to right).
Use reflexivity.
Assume H.
Apply H to the current goal.
Let m''' be given.
Assume H.
Apply H to the current goal.
Assume Hm''': nat_p m'''.
Assume Hm''m''': m'' = ordsucc m'''.
We will prove kω, 2 k k < x x ordsucc k.
We use m' to witness the existential quantifier.
Apply andI to the current goal.
We will prove m' ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is Hm'.
We will prove 2 m' m' < x x ordsucc m'.
Apply and3I to the current goal.
We will prove 2 m'.
rewrite the current goal using Hm'm'' (from left to right).
We will prove 2 ordsucc m''.
rewrite the current goal using ordinal_ordsucc_SNo_eq m'' (nat_p_ordinal m'' Hm'') (from left to right).
We will prove 2 1 + m''.
rewrite the current goal using Hm''m''' (from left to right).
We will prove 2 1 + ordsucc m'''.
rewrite the current goal using ordinal_ordsucc_SNo_eq m''' (nat_p_ordinal m''' Hm''') (from left to right).
We will prove 2 1 + 1 + m'''.
rewrite the current goal using add_SNo_assoc 1 1 m''' SNo_1 SNo_1 (nat_p_SNo m''' Hm''') (from left to right).
We will prove 2 (1 + 1) + m'''.
rewrite the current goal using add_SNo_1_1_2 (from left to right).
We will prove 2 2 + m'''.
rewrite the current goal using add_SNo_0R 2 SNo_2 (from right to left) at position 1.
We will prove 2 + 0 2 + m'''.
Apply add_SNo_Le2 2 0 m''' SNo_2 SNo_0 (nat_p_SNo m''' Hm''') to the current goal.
We will prove 0 m'''.
Apply ordinal_Subq_SNoLe 0 m''' ordinal_Empty (nat_p_ordinal m''' Hm''') to the current goal.
We will prove 0 m'''.
Apply Subq_Empty to the current goal.
We will prove m' < x.
rewrite the current goal using H4 (from right to left).
We will prove m' < m.
Apply ordinal_In_SNoLt to the current goal.
An exact proof term for the current goal is nat_p_ordinal m Lm.
rewrite the current goal using Hmm' (from left to right).
Apply ordsuccI2 to the current goal.
We will prove x ordsucc m'.
rewrite the current goal using H4 (from right to left).
rewrite the current goal using Hmm' (from left to right).
We will prove ordsucc m' ordsucc m'.
Apply SNoLe_ref to the current goal.
Apply L1a to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k ω.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H2k: 2 k.
Assume Hkx: k < x.
Assume HxSk: x ordsucc k.
We prove the intermediate claim Lk: nat_p k.
An exact proof term for the current goal is omega_nat_p k Hk.
We prove the intermediate claim LkS: SNo k.
An exact proof term for the current goal is nat_p_SNo k Lk.
We use k to witness the existential quantifier.
Apply andI to the current goal.
We will prove k SNoL_pos x.
We will prove k {wSNoL x|0 < w}.
Apply SepI to the current goal.
We will prove k SNoL x.
Apply SNoL_I to the current goal.
An exact proof term for the current goal is Hx1.
An exact proof term for the current goal is LkS.
We will prove SNoLev k SNoLev x.
rewrite the current goal using ordinal_SNoLev k (nat_p_ordinal k Lk) (from left to right).
We will prove k SNoLev x.
Apply ordinal_trichotomy_or_impred k (SNoLev x) (nat_p_ordinal k Lk) (SNoLev_ordinal x Hx1) to the current goal.
Assume H4: k SNoLev x.
An exact proof term for the current goal is H4.
Assume H4: k = SNoLev x.
We will prove False.
Apply SNoLt_irref k to the current goal.
Apply SNoLtLe_tra k x k LkS Hx1 LkS Hkx to the current goal.
We will prove x k.
Apply ordinal_SNoLev_max_2 k (nat_p_ordinal k Lk) x Hx1 to the current goal.
rewrite the current goal using H4 (from right to left).
Apply ordsuccI2 to the current goal.
Assume H4: SNoLev x k.
We will prove False.
Apply SNoLt_irref k to the current goal.
Apply SNoLt_tra k x k LkS Hx1 LkS Hkx to the current goal.
We will prove x < k.
An exact proof term for the current goal is ordinal_SNoLev_max k (nat_p_ordinal k Lk) x Hx1 H4.
We will prove k < x.
An exact proof term for the current goal is Hkx.
We will prove 0 < k.
Apply SNoLtLe_tra 0 2 k SNo_0 SNo_2 LkS SNoLt_0_2 to the current goal.
We will prove 2 k.
An exact proof term for the current goal is H2k.
We will prove x < 2 * k.
rewrite the current goal using add_SNo_1_1_2 (from right to left).
rewrite the current goal using mul_SNo_distrR 1 1 k SNo_1 SNo_1 LkS (from left to right).
rewrite the current goal using mul_SNo_oneL k LkS (from left to right).
We will prove x < k + k.
Apply SNoLeLt_tra x (ordsucc k) (k + k) Hx1 (nat_p_SNo (ordsucc k) (nat_ordsucc k Lk)) (SNo_add_SNo k k LkS LkS) HxSk to the current goal.
We will prove ordsucc k < k + k.
rewrite the current goal using ordinal_ordsucc_SNo_eq k (nat_p_ordinal k Lk) (from left to right).
We will prove 1 + k < k + k.
Apply add_SNo_Lt1 1 k k SNo_1 LkS LkS to the current goal.
We will prove 1 < k.
Apply SNoLtLe_tra 1 2 k SNo_1 SNo_2 LkS SNoLt_1_2 to the current goal.
We will prove 2 k.
An exact proof term for the current goal is H2k.
Let m be given.
Assume Hm.
Assume IHm: eps_ m < xwSNoL_pos x, x < 2 * w.
Assume H1: eps_ (ordsucc m) < x.
We prove the intermediate claim Lm: m ω.
An exact proof term for the current goal is nat_p_omega m Hm.
We prove the intermediate claim Lem: SNo (eps_ m).
An exact proof term for the current goal is SNo_eps_ m Lm.
Apply SNoLt_trichotomy_or_impred x (eps_ m) Hx1 Lem to the current goal.
Assume H2: x < eps_ m.
We prove the intermediate claim LSm: ordsucc m ω.
An exact proof term for the current goal is omega_ordsucc m Lm.
We prove the intermediate claim LeSm: SNo (eps_ (ordsucc m)).
An exact proof term for the current goal is SNo_eps_ (ordsucc m) LSm.
We use (eps_ (ordsucc m)) to witness the existential quantifier.
Apply andI to the current goal.
We will prove eps_ (ordsucc m) SNoL_pos x.
We will prove eps_ (ordsucc m) {wSNoL x|0 < w}.
Apply SepI to the current goal.
We will prove eps_ (ordsucc m) SNoL x.
Apply SNoL_I x Hx1 (eps_ (ordsucc m)) LeSm to the current goal.
We will prove SNoLev (eps_ (ordsucc m)) SNoLev x.
Apply SNoLtE x (eps_ m) Hx1 Lem H2 to the current goal.
Let z be given.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev x SNoLev (eps_ m).
Assume Hz3: SNoEq_ (SNoLev z) z x.
Assume Hz4: SNoEq_ (SNoLev z) z (eps_ m).
Assume Hz5: x < z.
Assume Hz6: z < eps_ m.
Assume Hz7: SNoLev z x.
Assume Hz8: SNoLev z eps_ m.
We will prove False.
We prove the intermediate claim Lz0: z = 0.
Apply SNoLev_0_eq_0 z Hz1 to the current goal.
We will prove SNoLev z = 0.
Apply eps_ordinal_In_eq_0 m to the current goal.
We will prove ordinal (SNoLev z).
An exact proof term for the current goal is SNoLev_ordinal z Hz1.
We will prove SNoLev z eps_ m.
An exact proof term for the current goal is Hz8.
Apply SNoLt_irref x to the current goal.
Apply SNoLt_tra x z x Hx1 Hz1 Hx1 Hz5 to the current goal.
We will prove z < x.
rewrite the current goal using Lz0 (from left to right).
An exact proof term for the current goal is Hxpos.
Assume H3: SNoLev x SNoLev (eps_ m).
Assume H4: SNoEq_ (SNoLev x) x (eps_ m).
Assume H5: SNoLev x eps_ m.
We will prove False.
We prove the intermediate claim Lx0: x = 0.
Apply SNoLev_0_eq_0 x Hx1 to the current goal.
We will prove SNoLev x = 0.
Apply eps_ordinal_In_eq_0 m to the current goal.
We will prove ordinal (SNoLev x).
An exact proof term for the current goal is SNoLev_ordinal x Hx1.
We will prove SNoLev x eps_ m.
An exact proof term for the current goal is H5.
Apply SNoLt_irref x to the current goal.
rewrite the current goal using Lx0 (from left to right) at position 1.
An exact proof term for the current goal is Hxpos.
rewrite the current goal using SNoLev_eps_ m Lm (from left to right).
Assume H3: ordsucc m SNoLev x.
Assume H4: SNoEq_ (ordsucc m) x (eps_ m).
Assume H5: ordsucc m x.
Apply SNoLtE (eps_ (ordsucc m)) x LeSm Hx1 H1 to the current goal.
Let z be given.
Assume Hz1: SNo z.
rewrite the current goal using SNoLev_eps_ (ordsucc m) LSm (from left to right).
Assume Hz2: SNoLev z ordsucc (ordsucc m) SNoLev x.
Assume Hz3: SNoEq_ (SNoLev z) z (eps_ (ordsucc m)).
Assume Hz4: SNoEq_ (SNoLev z) z x.
Assume Hz5: eps_ (ordsucc m) < z.
Assume Hz6: z < x.
Assume Hz7: SNoLev z eps_ (ordsucc m).
Assume Hz8: SNoLev z x.
We will prove False.
Apply ordsuccE (ordsucc m) (SNoLev z) (binintersectE1 (ordsucc (ordsucc m)) (SNoLev x) (SNoLev z) Hz2) to the current goal.
Assume H6: SNoLev z ordsucc m.
We prove the intermediate claim Lz0: z = 0.
Apply SNoLev_0_eq_0 z Hz1 to the current goal.
We will prove SNoLev z = 0.
Apply eps_ordinal_In_eq_0 m to the current goal.
We will prove ordinal (SNoLev z).
An exact proof term for the current goal is SNoLev_ordinal z Hz1.
We will prove SNoLev z eps_ m.
Apply H4 (SNoLev z) H6 to the current goal.
Assume H7 _.
Apply H7 to the current goal.
We will prove SNoLev z x.
An exact proof term for the current goal is Hz8.
Apply SNoLt_irref (eps_ (ordsucc m)) to the current goal.
Apply SNoLt_tra (eps_ (ordsucc m)) z (eps_ (ordsucc m)) LeSm Hz1 LeSm Hz5 to the current goal.
We will prove z < eps_ (ordsucc m).
rewrite the current goal using Lz0 (from left to right).
An exact proof term for the current goal is SNo_eps_pos (ordsucc m) LSm.
Assume H6: SNoLev z = ordsucc m.
Apply H5 to the current goal.
rewrite the current goal using H6 (from right to left).
An exact proof term for the current goal is Hz8.
Assume H6: SNoLev (eps_ (ordsucc m)) SNoLev x.
Assume H7: SNoEq_ (SNoLev (eps_ (ordsucc m))) (eps_ (ordsucc m)) x.
Assume H8: SNoLev (eps_ (ordsucc m)) x.
An exact proof term for the current goal is H6.
rewrite the current goal using SNoLev_eps_ (ordsucc m) LSm (from left to right).
Assume H6: SNoLev x ordsucc (ordsucc m).
Assume H7: SNoEq_ (SNoLev x) (eps_ (ordsucc m)) x.
Assume H8: SNoLev x eps_ (ordsucc m).
We will prove False.
Apply ordsuccE (ordsucc m) (SNoLev x) H6 to the current goal.
Assume H9: SNoLev x ordsucc m.
An exact proof term for the current goal is In_no2cycle (SNoLev x) (ordsucc m) H9 H3.
Assume H9: SNoLev x = ordsucc m.
Apply In_irref (SNoLev x) to the current goal.
rewrite the current goal using H9 (from left to right) at position 1.
An exact proof term for the current goal is H3.
We will prove eps_ (ordsucc m) < x.
An exact proof term for the current goal is H1.
We will prove 0 < eps_ (ordsucc m).
An exact proof term for the current goal is SNo_eps_pos (ordsucc m) LSm.
We will prove x < 2 * eps_ (ordsucc m).
rewrite the current goal using add_SNo_1_1_2 (from right to left).
rewrite the current goal using mul_SNo_distrR 1 1 (eps_ (ordsucc m)) SNo_1 SNo_1 LeSm (from left to right).
rewrite the current goal using mul_SNo_oneL (eps_ (ordsucc m)) LeSm (from left to right).
rewrite the current goal using eps_ordsucc_half_add m Hm (from left to right).
An exact proof term for the current goal is H2.
Assume H2: x = eps_ m.
We will prove False.
An exact proof term for the current goal is Hxne m (nat_p_omega m Hm) H2.
Assume H2: eps_ m < x.
An exact proof term for the current goal is IHm H2.
We prove the intermediate claim L2: kω, eps_ k < x.
Apply dneg to the current goal.
Assume H1: ¬ kω, eps_ k < x.
We prove the intermediate claim Lx0: 0 = x.
Apply Hx6 0 to the current goal.
We will prove 0 SNoS_ ω.
Apply SNoS_I ω omega_ordinal 0 0 to the current goal.
We will prove 0 ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_0.
We will prove SNo_ 0 0.
Apply ordinal_SNo_ to the current goal.
An exact proof term for the current goal is ordinal_Empty.
We will prove kω, abs_SNo (0 + - x) < eps_ k.
Let k be given.
Assume Hk.
rewrite the current goal using add_SNo_0L (- x) (SNo_minus_SNo x Hx1) (from left to right).
rewrite the current goal using abs_SNo_minus x Hx1 (from left to right).
rewrite the current goal using pos_abs_SNo x Hxpos (from left to right).
We will prove x < eps_ k.
Apply SNoLt_trichotomy_or_impred x (eps_ k) Hx1 (SNo_eps_ k Hk) to the current goal.
Assume H2: x < eps_ k.
An exact proof term for the current goal is H2.
Assume H2: x = eps_ k.
We will prove False.
An exact proof term for the current goal is Hxne k Hk H2.
Assume H2: eps_ k < x.
We will prove False.
Apply H1 to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
An exact proof term for the current goal is H2.
Apply SNoLt_irref x to the current goal.
rewrite the current goal using Lx0 (from right to left) at position 1.
An exact proof term for the current goal is Hxpos.
Apply L2 to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k ω.
Assume H1: eps_ k < x.
An exact proof term for the current goal is L1 k (omega_nat_p k Hk) H1.
Theorem. (real_recip_SNo_lem1) The following is provable:
Proof:
Apply SNoLev_ind to the current goal.
Let x be given.
Assume Hx: SNo x.
Assume HxR: x real.
Assume Hxpos: 0 < x.
Apply real_E x HxR to the current goal.
Assume _.
Assume HxR2: SNoLev x ordsucc ω.
Assume _ _ _ _ _.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Hx.
We prove the intermediate claim L1: yreal, zSNoS_ (SNoLev x), 0 < z(1 + (z + - x) * y) * recip_SNo_pos z real.
Let y be given.
Assume Hy.
Let z be given.
Assume Hz Hzpos.
Apply SNoS_E2 (SNoLev x) (SNoLev_ordinal x Hx) z Hz to the current goal.
Assume Hz1: SNoLev z SNoLev x.
Assume Hz2: ordinal (SNoLev z).
Assume Hz3: SNo z.
Assume Hz4: SNo_ (SNoLev z) z.
We prove the intermediate claim LzR: z real.
Apply SNoS_omega_real to the current goal.
Apply SNoS_I ω omega_ordinal z (SNoLev z) to the current goal.
We will prove SNoLev z ω.
Apply ordsuccE ω (SNoLev x) HxR2 to the current goal.
Assume H1: SNoLev x ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_p_trans (SNoLev x) (omega_nat_p (SNoLev x) H1) (SNoLev z) Hz1.
Assume H1: SNoLev x = ω.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hz1.
An exact proof term for the current goal is Hz4.
Apply IHx z Hz LzR Hzpos to the current goal.
Assume IH1: recip_SNo_pos z real.
Assume _.
Apply real_mul_SNo to the current goal.
Apply real_add_SNo to the current goal.
An exact proof term for the current goal is real_1.
Apply real_mul_SNo to the current goal.
Apply real_add_SNo to the current goal.
An exact proof term for the current goal is LzR.
Apply real_minus_SNo to the current goal.
An exact proof term for the current goal is HxR.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is IH1.
We prove the intermediate claim L2: ∀k, nat_p k(SNo_recipaux x recip_SNo_pos k 0 real) (SNo_recipaux x recip_SNo_pos k 1 real).
Apply nat_ind to the current goal.
rewrite the current goal using SNo_recipaux_0 (from left to right).
Apply andI to the current goal.
rewrite the current goal using tuple_2_0_eq (from left to right).
Let y be given.
Assume Hy: y {0}.
rewrite the current goal using SingE 0 y Hy (from left to right).
We will prove 0 real.
An exact proof term for the current goal is real_0.
rewrite the current goal using tuple_2_1_eq (from left to right).
Let y be given.
Assume Hy: y 0.
We will prove False.
An exact proof term for the current goal is EmptyE y Hy.
Let k be given.
Assume Hk: nat_p k.
Apply IHk to the current goal.
Assume IHk0 IHk1.
rewrite the current goal using SNo_recipaux_S x recip_SNo_pos k Hk (from left to right).
Apply andI to the current goal.
rewrite the current goal using tuple_2_0_eq (from left to right).
Let y be given.
Apply binunionE' to the current goal.
Apply binunionE' to the current goal.
An exact proof term for the current goal is IHk0 y.
Apply SNo_recipauxset_E (SNo_recipaux x recip_SNo_pos k 0) x (SNoR x) recip_SNo_pos y Hy to the current goal.
Let u be given.
Assume Hu: u SNo_recipaux x recip_SNo_pos k 0.
Let z be given.
Assume Hz: z SNoR x.
Assume Hye: y = (1 + (z + - x) * u) * recip_SNo_pos z.
Apply SNoR_E x Hx z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev x.
Assume Hz3: x < z.
rewrite the current goal using Hye (from left to right).
Apply L1 to the current goal.
We will prove u real.
An exact proof term for the current goal is IHk0 u Hu.
We will prove z SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 z x Hz1 Hx Hz2.
We will prove 0 < z.
An exact proof term for the current goal is SNoLt_tra 0 x z SNo_0 Hx Hz1 Hxpos Hz3.
Apply SNo_recipauxset_E (SNo_recipaux x recip_SNo_pos k 1) x (SNoL_pos x) recip_SNo_pos y Hy to the current goal.
Let u be given.
Assume Hu: u SNo_recipaux x recip_SNo_pos k 1.
Let w be given.
Assume Hw: w SNoL_pos x.
Assume Hye: y = (1 + (w + - x) * u) * recip_SNo_pos w.
Apply SepE (SNoL x) (λw ⇒ 0 < w) w Hw to the current goal.
Assume Hw0: w SNoL x.
Assume Hwpos: 0 < w.
Apply SNoL_E x Hx w Hw0 to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: w < x.
rewrite the current goal using Hye (from left to right).
Apply L1 to the current goal.
We will prove u real.
An exact proof term for the current goal is IHk1 u Hu.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
We will prove 0 < w.
An exact proof term for the current goal is Hwpos.
rewrite the current goal using tuple_2_1_eq (from left to right).
Let y be given.
Apply binunionE' to the current goal.
Apply binunionE' to the current goal.
An exact proof term for the current goal is IHk1 y.
Apply SNo_recipauxset_E (SNo_recipaux x recip_SNo_pos k 0) x (SNoL_pos x) recip_SNo_pos y Hy to the current goal.
Let u be given.
Assume Hu: u SNo_recipaux x recip_SNo_pos k 0.
Let w be given.
Assume Hw: w SNoL_pos x.
Assume Hye: y = (1 + (w + - x) * u) * recip_SNo_pos w.
Apply SepE (SNoL x) (λw ⇒ 0 < w) w Hw to the current goal.
Assume Hw0: w SNoL x.
Assume Hwpos: 0 < w.
Apply SNoL_E x Hx w Hw0 to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: w < x.
rewrite the current goal using Hye (from left to right).
Apply L1 to the current goal.
We will prove u real.
An exact proof term for the current goal is IHk0 u Hu.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
We will prove 0 < w.
An exact proof term for the current goal is Hwpos.
Apply SNo_recipauxset_E (SNo_recipaux x recip_SNo_pos k 1) x (SNoR x) recip_SNo_pos y Hy to the current goal.
Let u be given.
Assume Hu: u SNo_recipaux x recip_SNo_pos k 1.
Let z be given.
Assume Hz: z SNoR x.
Assume Hye: y = (1 + (z + - x) * u) * recip_SNo_pos z.
Apply SNoR_E x Hx z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev x.
Assume Hz3: x < z.
rewrite the current goal using Hye (from left to right).
Apply L1 to the current goal.
We will prove u real.
An exact proof term for the current goal is IHk1 u Hu.
We will prove z SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 z x Hz1 Hx Hz2.
We will prove 0 < z.
An exact proof term for the current goal is SNoLt_tra 0 x z SNo_0 Hx Hz1 Hxpos Hz3.
Apply andI to the current goal.
We will prove recip_SNo_pos x real.
We prove the intermediate claim L3: uSNoS_ (SNoLev x), 0 < uSNo (recip_SNo_pos u) u * recip_SNo_pos u = 1.
Let u be given.
Assume Hu Hupos.
Apply SNoS_E2 (SNoLev x) (SNoLev_ordinal x Hx) u Hu to the current goal.
Assume _ _.
Assume Hu1: SNo u.
Assume _.
An exact proof term for the current goal is recip_SNo_pos_prop1 u Hu1 Hupos.
Set L to be the term (kωSNo_recipaux x recip_SNo_pos k 0).
Set R to be the term (kωSNo_recipaux x recip_SNo_pos k 1).
We prove the intermediate claim LrxLR: recip_SNo_pos x = SNoCut L R.
An exact proof term for the current goal is recip_SNo_pos_eq x Hx.
We prove the intermediate claim LLR: SNoCutP L R.
An exact proof term for the current goal is SNo_recipaux_lem2 x Hx Hxpos recip_SNo_pos L3.
Apply SNoCutP_SNoCut_impred L R LLR to the current goal.
Set y to be the term SNoCut L R.
Assume HLR1: SNo y.
Assume HLR2: SNoLev y ordsucc ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))).
Assume HLR3: wL, w < y.
Assume HLR4: zR, y < z.
Assume HLR5: ∀u, SNo u(wL, w < u)(zR, u < z)SNoLev y SNoLev u SNoEq_ (SNoLev y) y u.
We prove the intermediate claim LLI: kω, SNo_recipaux x recip_SNo_pos k 0 L.
Let k be given.
Assume Hk.
Let w be given.
Assume Hw.
An exact proof term for the current goal is famunionI ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 0) k w Hk Hw.
We prove the intermediate claim LRI: kω, SNo_recipaux x recip_SNo_pos k 1 R.
Let k be given.
Assume Hk.
Let z be given.
Assume Hz.
An exact proof term for the current goal is famunionI ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 1) k z Hk Hz.
We prove the intermediate claim LLE: wL, ∀p : prop, (kω, w SNo_recipaux x recip_SNo_pos k 0p)p.
Let w be given.
Assume Hw: w L.
Let p be given.
Assume Hp.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 0) w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hwk: w SNo_recipaux x recip_SNo_pos k 0.
An exact proof term for the current goal is Hp k Hk Hwk.
We prove the intermediate claim LRE: zR, ∀p : prop, (kω, z SNo_recipaux x recip_SNo_pos k 1p)p.
Let z be given.
Assume Hz: z R.
Let p be given.
Assume Hp.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 1) z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hzk: z SNo_recipaux x recip_SNo_pos k 1.
An exact proof term for the current goal is Hp k Hk Hzk.
We prove the intermediate claim LLreal: L real.
Let w be given.
Assume Hw: w L.
Apply LLE w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hwk: w SNo_recipaux x recip_SNo_pos k 0.
Apply L2 k (omega_nat_p k Hk) to the current goal.
Assume _.
An exact proof term for the current goal is H2 w Hwk.
We prove the intermediate claim LRreal: R real.
Let z be given.
Assume Hz: z R.
Apply LRE z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hzk: z SNo_recipaux x recip_SNo_pos k 1.
Apply L2 k (omega_nat_p k Hk) to the current goal.
Assume _.
An exact proof term for the current goal is H2 z Hzk.
We prove the intermediate claim LL0: L 0.
Assume H1: L = 0.
Apply EmptyE 0 to the current goal.
We will prove 0 0.
rewrite the current goal using H1 (from right to left) at position 2.
We will prove 0 L.
Apply LLI 0 (nat_p_omega 0 nat_0) to the current goal.
We will prove 0 SNo_recipaux x recip_SNo_pos 0 0.
rewrite the current goal using SNo_recipaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
We will prove 0 {0}.
Apply SingI to the current goal.
Apply xm (mω, x = eps_ m) to the current goal.
Assume H.
Apply H to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m ω.
Assume H1: x = eps_ m.
We will prove recip_SNo_pos x real.
rewrite the current goal using H1 (from left to right).
We will prove recip_SNo_pos (eps_ m) real.
rewrite the current goal using recip_SNo_pos_eps_ m (omega_nat_p m Hm) (from left to right).
We will prove 2 ^ m real.
Apply SNoS_omega_real to the current goal.
Apply omega_SNoS_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_exp_SNo_nat 2 nat_2 m (omega_nat_p m Hm).
Assume H1: ¬ (mω, x = eps_ m).
Apply xm (x = 2) to the current goal.
Assume H2: x = 2.
rewrite the current goal using H2 (from left to right).
We will prove recip_SNo_pos 2 real.
rewrite the current goal using recip_SNo_pos_2 (from left to right).
We will prove eps_ 1 real.
Apply SNoS_omega_real to the current goal.
Apply SNo_eps_SNoS_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
Assume H2: x 2.
We prove the intermediate claim L4: mω, x eps_ m.
Let m be given.
Assume Hm H3.
Apply H1 to the current goal.
We use m to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hm.
An exact proof term for the current goal is H3.
Apply pos_real_left_approx_double x HxR Hxpos H2 L4 to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu: u SNoL_pos x.
Apply SepE (SNoL x) (λw ⇒ 0 < w) u Hu to the current goal.
Assume Hua: u SNoL x.
Assume Hub: 0 < u.
Apply SNoL_E x Hx u Hua to the current goal.
Assume Hua1: SNo u.
Assume Hua2: SNoLev u SNoLev x.
Assume Hua3: u < x.
Assume H3: x < 2 * u.
We prove the intermediate claim Lru: SNo (recip_SNo_pos u).
An exact proof term for the current goal is SNo_recip_SNo_pos u Hua1 Hub.
We prove the intermediate claim Lumx: SNo (u + - x).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hua1.
An exact proof term for the current goal is Lmx.
Set f to be the term λv ⇒ (1 + (u + - x) * v) * recip_SNo_pos u of type setset.
We prove the intermediate claim L5: wL, f w R.
Let w be given.
Assume Hw.
Apply LLE w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hwk: w SNo_recipaux x recip_SNo_pos k 0.
Apply LRI (ordsucc k) (omega_ordsucc k Hk) to the current goal.
We will prove f w SNo_recipaux x recip_SNo_pos (ordsucc k) 1.
rewrite the current goal using SNo_recipaux_S x recip_SNo_pos k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply binunionI1 to the current goal.
Apply binunionI2 to the current goal.
Apply SNo_recipauxset_I (SNo_recipaux x recip_SNo_pos k 0) x (SNoL_pos x) recip_SNo_pos w to the current goal.
We will prove w SNo_recipaux x recip_SNo_pos k 0.
An exact proof term for the current goal is Hwk.
An exact proof term for the current goal is Hu.
We prove the intermediate claim L6: zR, f z L.
Let z be given.
Assume Hz.
Apply LRE z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hzk: z SNo_recipaux x recip_SNo_pos k 1.
Apply LLI (ordsucc k) (omega_ordsucc k Hk) to the current goal.
We will prove (1 + (u + - x) * z) * recip_SNo_pos u SNo_recipaux x recip_SNo_pos (ordsucc k) 0.
rewrite the current goal using SNo_recipaux_S x recip_SNo_pos k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply binunionI2 to the current goal.
Apply SNo_recipauxset_I (SNo_recipaux x recip_SNo_pos k 1) x (SNoL_pos x) recip_SNo_pos z to the current goal.
We will prove z SNo_recipaux x recip_SNo_pos k 1.
An exact proof term for the current goal is Hzk.
An exact proof term for the current goal is Hu.
We prove the intermediate claim Luu: SNo (u * u).
An exact proof term for the current goal is SNo_mul_SNo u u Hua1 Hua1.
We prove the intermediate claim Luupos: 0 < u * u.
An exact proof term for the current goal is mul_SNo_pos_pos u u Hua1 Hua1 Hub Hub.
We prove the intermediate claim Luun0: u * u 0.
Assume H.
Apply SNoLt_irref 0 to the current goal.
rewrite the current goal using H (from right to left) at position 2.
An exact proof term for the current goal is Luupos.
We prove the intermediate claim L2u: SNo (2 * u).
An exact proof term for the current goal is SNo_mul_SNo 2 u SNo_2 Hua1.
We prove the intermediate claim Lf: ∀v, SNo v∀p : prop, (SNo ((u + - x) * v)SNo (1 + ((u + - x) * v))SNo (f v)p)p.
Let v be given.
Assume Hv.
Let p be given.
Assume Hp.
We prove the intermediate claim Lf1: SNo ((u + - x) * v).
Apply SNo_mul_SNo to the current goal.
An exact proof term for the current goal is Lumx.
An exact proof term for the current goal is Hv.
We prove the intermediate claim Lf2: SNo (1 + (u + - x) * v).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is SNo_1.
An exact proof term for the current goal is Lf1.
We prove the intermediate claim Lf3: SNo ((1 + (u + - x) * v) * recip_SNo_pos u).
Apply SNo_mul_SNo to the current goal.
An exact proof term for the current goal is Lf2.
An exact proof term for the current goal is Lru.
An exact proof term for the current goal is Hp Lf1 Lf2 Lf3.
We prove the intermediate claim Luf: ∀v, SNo vu * f v = 1 + (u + - x) * v.
Let v be given.
Assume Hv.
Apply Lf v Hv to the current goal.
Assume Humxv: SNo ((u + - x) * v).
Assume H1umxv: SNo (1 + (u + - x) * v).
Assume Hfv: SNo (f v).
We will prove u * ((1 + (u + - x) * v) * recip_SNo_pos u) = 1 + (u + - x) * v.
rewrite the current goal using mul_SNo_com (1 + (u + - x) * v) (recip_SNo_pos u) H1umxv Lru (from left to right).
rewrite the current goal using mul_SNo_assoc u (recip_SNo_pos u) (1 + (u + - x) * v) Hua1 Lru H1umxv (from left to right).
rewrite the current goal using recip_SNo_pos_invR u Hua1 Hub (from left to right).
An exact proof term for the current goal is mul_SNo_oneL (1 + (u + - x) * v) H1umxv.
We prove the intermediate claim L7: ∀v, SNo vf (f v) = (v * u * u + x * x * v + 2 * u + - ((2 * u) * x * v + x)) :/: (u * u).
Let v be given.
Assume Hv.
Set v' to be the term f v.
Apply Lf v Hv to the current goal.
Assume Humxv: SNo ((u + - x) * v).
Assume H1umxv: SNo (1 + (u + - x) * v).
Assume Hv': SNo v'.
Apply Lf v' Hv' to the current goal.
Assume Humxv': SNo ((u + - x) * v').
Assume H1umxv': SNo (1 + (u + - x) * v').
Assume Hfv': SNo (f v').
We prove the intermediate claim Lxv: SNo (x * v).
An exact proof term for the current goal is SNo_mul_SNo x v Hx Hv.
We prove the intermediate claim Lxxv: SNo (x * x * v).
An exact proof term for the current goal is SNo_mul_SNo x (x * v) Hx Lxv.
We prove the intermediate claim L2uxv: SNo ((2 * u) * x * v).
An exact proof term for the current goal is SNo_mul_SNo (2 * u) (x * v) L2u Lxv.
We prove the intermediate claim Lvuu: SNo (v * u * u).
An exact proof term for the current goal is SNo_mul_SNo v (u * u) Hv Luu.
We prove the intermediate claim Luxv: SNo (u * x * v).
An exact proof term for the current goal is SNo_mul_SNo u (x * v) Hua1 Lxv.
We prove the intermediate claim Luv: SNo (u * v).
An exact proof term for the current goal is SNo_mul_SNo u v Hua1 Hv.
We prove the intermediate claim Lxuv: SNo (x * u * v).
An exact proof term for the current goal is SNo_mul_SNo x (u * v) Hx Luv.
We prove the intermediate claim Lmuxv: SNo (- u * x * v).
An exact proof term for the current goal is SNo_minus_SNo (u * x * v) Luxv.
We prove the intermediate claim Lmxuv: SNo (- x * u * v).
An exact proof term for the current goal is SNo_minus_SNo (x * u * v) Lxuv.
We prove the intermediate claim Lmxmxuv: SNo (- x + - x * u * v).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Lmx.
An exact proof term for the current goal is Lmxuv.
We prove the intermediate claim Lmxmxuvxxv: SNo (- x + - x * u * v + x * x * v).
Apply SNo_add_SNo_3 to the current goal.
An exact proof term for the current goal is Lmx.
An exact proof term for the current goal is Lmxuv.
An exact proof term for the current goal is Lxxv.
We will prove f v' = (v * u * u + x * x * v + 2 * u + - ((2 * u) * x * v + x)) :/: (u * u).
Use symmetry.
Apply mul_div_SNo_nonzero_eq (v * u * u + x * x * v + 2 * u + - ((2 * u) * x * v + x)) (u * u) (f v') (SNo_add_SNo_4 (v * u * u) (x * x * v) (2 * u) (- ((2 * u) * x * v + x)) Lvuu Lxxv L2u (SNo_minus_SNo ((2 * u) * x * v + x) (SNo_add_SNo ((2 * u) * x * v) x L2uxv Hx))) Luu Hfv' Luun0 to the current goal.
We will prove v * u * u + x * x * v + 2 * u + - ((2 * u) * x * v + x) = (u * u) * f v'.
Use transitivity with u + u * (1 + (u + - x) * v) + - x * (1 + (u + - x) * v), u + u * u * v' + - x * u * v', u * (1 + (u + - x) * v'), and u * (u * f v').
We will prove v * u * u + x * x * v + 2 * u + - ((2 * u) * x * v + x) = u + u * (1 + (u + - x) * v) + - x * (1 + (u + - x) * v).
Use transitivity with v * u * u + u + u + - u * x * v + (- x + - x * u * v + x * x * v), and u + (v * u * u + u + - u * x * v) + (- x + - x * u * v + x * x * v).
We will prove v * u * u + x * x * v + 2 * u + - ((2 * u) * x * v + x) = v * u * u + u + u + - u * x * v + (- x + - x * u * v + x * x * v).
Use f_equal.
We will prove x * x * v + 2 * u + - ((2 * u) * x * v + x) = u + u + - u * x * v + (- x + - x * u * v + x * x * v).
rewrite the current goal using add_SNo_com_3_0_1 (x * x * v) (2 * u) (- ((2 * u) * x * v + x)) Lxxv L2u (SNo_minus_SNo ((2 * u) * x * v + x) (SNo_add_SNo ((2 * u) * x * v) x L2uxv Hx)) (from left to right).
We will prove 2 * u + x * x * v + - ((2 * u) * x * v + x) = u + u + - u * x * v + (- x + - x * u * v + x * x * v).
rewrite the current goal using add_SNo_1_1_2 (from right to left) at position 1.
rewrite the current goal using mul_SNo_distrR 1 1 u SNo_1 SNo_1 Hua1 (from left to right).
rewrite the current goal using mul_SNo_oneL u Hua1 (from left to right).
We will prove (u + u) + x * x * v + - ((2 * u) * x * v + x) = u + u + - u * x * v + (- x + - x * u * v + x * x * v).
Use transitivity with and u + u + x * x * v + - ((2 * u) * x * v + x).
Use symmetry.
Apply add_SNo_assoc u u (x * x * v + - ((2 * u) * x * v + x)) Hua1 Hua1 to the current goal.
We will prove SNo (x * x * v + - ((2 * u) * x * v + x)).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Lxxv.
Apply SNo_minus_SNo to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is L2uxv.
An exact proof term for the current goal is Hx.
Use f_equal.
Use f_equal.
We will prove x * x * v + - ((2 * u) * x * v + x) = - u * x * v + (- x + - x * u * v + x * x * v).
Use transitivity with and x * x * v + - u * x * v + - x + - x * u * v.
We will prove x * x * v + - ((2 * u) * x * v + x) = x * x * v + - u * x * v + - x + - x * u * v.
Use f_equal.
We will prove - ((2 * u) * x * v + x) = - u * x * v + - x + - x * u * v.
rewrite the current goal using minus_add_SNo_distr_3 (u * x * v) x (x * u * v) Luxv Hx Lxuv (from right to left).
We will prove - ((2 * u) * x * v + x) = - (u * x * v + x + x * u * v).
Use f_equal.
We will prove (2 * u) * x * v + x = u * x * v + x + x * u * v.
rewrite the current goal using mul_SNo_com_3_0_1 x u v Hx Hua1 Hv (from left to right).
We will prove (2 * u) * x * v + x = u * x * v + x + u * x * v.
rewrite the current goal using add_SNo_com x (u * x * v) Hx Luxv (from left to right).
rewrite the current goal using add_SNo_assoc (u * x * v) (u * x * v) x Luxv Luxv Hx (from left to right).
Use f_equal.
We will prove (2 * u) * x * v = u * x * v + u * x * v.
rewrite the current goal using add_SNo_1_1_2 (from right to left) at position 1.
rewrite the current goal using mul_SNo_distrR 1 1 u SNo_1 SNo_1 Hua1 (from left to right).
rewrite the current goal using mul_SNo_oneL u Hua1 (from left to right).
We will prove (u + u) * x * v = u * x * v + u * x * v.
An exact proof term for the current goal is mul_SNo_distrR u u (x * v) Hua1 Hua1 Lxv.
We will prove x * x * v + - u * x * v + - x + - x * u * v = - u * x * v + (- x + - x * u * v + x * x * v).
rewrite the current goal using add_SNo_com_3_0_1 (x * x * v) (- u * x * v) (- x + - x * u * v) Lxxv Lmuxv Lmxmxuv (from left to right).
Use f_equal.
We will prove x * x * v + - x + - x * u * v = - x + - x * u * v + x * x * v.
rewrite the current goal using add_SNo_com_3_0_1 (x * x * v) (- x) (- x * u * v) Lxxv Lmx Lmxuv (from left to right).
Use f_equal.
We will prove x * x * v + - x * u * v = - x * u * v + x * x * v.
An exact proof term for the current goal is add_SNo_com (x * x * v) (- x * u * v) Lxxv Lmxuv.
We will prove v * u * u + u + u + - u * x * v + (- x + - x * u * v + x * x * v) = u + (v * u * u + u + - u * x * v) + (- x + - x * u * v + x * x * v).
rewrite the current goal using add_SNo_com_3_0_1 (v * u * u) u (u + - u * x * v + (- x + - x * u * v + x * x * v)) Lvuu Hua1 (from left to right).
We will prove u + v * u * u + u + - u * x * v + (- x + - x * u * v + x * x * v) = u + (v * u * u + u + - u * x * v) + (- x + - x * u * v + x * x * v).
Use f_equal.
We will prove v * u * u + u + - u * x * v + (- x + - x * u * v + x * x * v) = (v * u * u + u + - u * x * v) + (- x + - x * u * v + x * x * v).
Apply add_SNo_assoc_4 to the current goal.
An exact proof term for the current goal is Lvuu.
An exact proof term for the current goal is Hua1.
An exact proof term for the current goal is Lmuxv.
An exact proof term for the current goal is Lmxmxuvxxv.
Apply SNo_add_SNo_3 to the current goal.
An exact proof term for the current goal is Hua1.
An exact proof term for the current goal is Lmuxv.
An exact proof term for the current goal is Lmxmxuvxxv.
We will prove u + (v * u * u + u + - u * x * v) + (- x + - x * u * v + x * x * v) = u + u * (1 + (u + - x) * v) + - x * (1 + (u + - x) * v).
Use f_equal.
Use f_equal.
We will prove v * u * u + u + - u * x * v = u * (1 + (u + - x) * v).
rewrite the current goal using mul_SNo_distrL u 1 ((u + - x) * v) Hua1 SNo_1 Humxv (from left to right).
We will prove v * u * u + u + - u * x * v = u * 1 + u * (u + - x) * v.
rewrite the current goal using mul_SNo_oneR u Hua1 (from left to right).
We will prove v * u * u + u + - u * x * v = u + u * (u + - x) * v.
rewrite the current goal using add_SNo_com_3_0_1 (v * u * u) u (- u * x * v) Lvuu Hua1 (SNo_minus_SNo (u * x * v) Luxv) (from left to right).
We will prove u + v * u * u + - u * x * v = u + u * (u + - x) * v.
Use f_equal.
We will prove v * u * u + - u * x * v = u * (u + - x) * v.
rewrite the current goal using mul_SNo_distrR u (- x) v Hua1 Lmx Hv (from left to right).
We will prove v * u * u + - u * x * v = u * (u * v + (- x) * v).
rewrite the current goal using mul_SNo_distrL u (u * v) ((- x) * v) Hua1 Luv (SNo_mul_SNo (- x) v Lmx Hv) (from left to right).
We will prove v * u * u + - u * x * v = u * u * v + u * (- x) * v.
Use f_equal.
We will prove v * u * u = u * u * v.
rewrite the current goal using mul_SNo_com u v Hua1 Hv (from left to right).
An exact proof term for the current goal is mul_SNo_com_3_0_1 v u u Hv Hua1 Hua1.
We will prove - u * x * v = u * (- x) * v.
rewrite the current goal using mul_SNo_minus_distrL x v Hx Hv (from left to right).
Use symmetry.
An exact proof term for the current goal is mul_SNo_minus_distrR u (x * v) Hua1 Lxv.
We will prove - x + - x * u * v + x * x * v = - x * (1 + (u + - x) * v).
rewrite the current goal using mul_SNo_minus_distrL x (1 + (u + - x) * v) Hx H1umxv (from right to left).
We will prove - x + - x * u * v + x * x * v = (- x) * (1 + (u + - x) * v).
Apply mul_SNo_distrL (- x) 1 ((u + - x) * v) Lmx SNo_1 Humxv (λw z ⇒ - x + - x * u * v + x * x * v = z) to the current goal.
We will prove - x + - x * u * v + x * x * v = (- x) * 1 + (- x) * (u + - x) * v.
rewrite the current goal using mul_SNo_oneR (- x) Lmx (from left to right).
We will prove - x + - x * u * v + x * x * v = - x + (- x) * (u + - x) * v.
Use f_equal.
We will prove - x * u * v + x * x * v = (- x) * (u + - x) * v.
rewrite the current goal using mul_SNo_distrR u (- x) v Hua1 Lmx Hv (from left to right).
rewrite the current goal using mul_SNo_distrL (- x) (u * v) ((- x) * v) Lmx Luv (SNo_mul_SNo (- x) v Lmx Hv) (from left to right).
We will prove - x * u * v + x * x * v = (- x) * u * v + (- x) * (- x) * v.
rewrite the current goal using mul_SNo_minus_distrL x (u * v) Hx Luv (from left to right).
We will prove - x * u * v + x * x * v = - x * u * v + (- x) * (- x) * v.
Use f_equal.
We will prove x * x * v = (- x) * (- x) * v.
rewrite the current goal using mul_SNo_assoc (- x) (- x) v Lmx Lmx Hv (from left to right).
rewrite the current goal using mul_SNo_minus_minus x x Hx Hx (from left to right).
An exact proof term for the current goal is mul_SNo_assoc x x v Hx Hx Hv.
We will prove u + u * (1 + (u + - x) * v) + - x * (1 + (u + - x) * v) = u + u * u * v' + - x * u * v'.
An exact proof term for the current goal is Luf v Hv (λw z ⇒ u + u * w + - x * w = u + u * u * v' + - x * u * v') (λq H ⇒ H).
We will prove u + u * u * v' + - x * u * v' = u * (1 + (u + - x) * v').
Apply mul_SNo_distrL u 1 ((u + - x) * v') Hua1 SNo_1 Humxv' (λw z ⇒ u + u * u * v' + - x * u * v' = z) to the current goal.
We will prove u + u * u * v' + - x * u * v' = u * 1 + u * (u + - x) * v'.
rewrite the current goal using mul_SNo_oneR u Hua1 (from left to right).
Use f_equal.
We will prove u * u * v' + - x * u * v' = u * (u + - x) * v'.
Apply mul_SNo_distrR u (- x) v' Hua1 Lmx Hv' (λw z ⇒ u * u * v' + - x * u * v' = u * z) to the current goal.
We will prove u * u * v' + - x * u * v' = u * (u * v' + (- x) * v').
Apply mul_SNo_distrL u (u * v') ((- x) * v') Hua1 (SNo_mul_SNo u v' Hua1 Hv') (SNo_mul_SNo (- x) v' Lmx Hv') (λw z ⇒ u * u * v' + - x * u * v' = z) to the current goal.
We will prove u * u * v' + - x * u * v' = u * u * v' + u * (- x) * v'.
Use f_equal.
We will prove - x * u * v' = u * (- x) * v'.
Apply mul_SNo_com_3_0_1 u (- x) v' Hua1 Lmx Hv' (λw z ⇒ - x * u * v' = z) to the current goal.
We will prove - x * u * v' = (- x) * u * v'.
Use symmetry.
An exact proof term for the current goal is mul_SNo_minus_distrL x (u * v') Hx (SNo_mul_SNo u v' Hua1 Hv').
Use f_equal.
Use symmetry.
An exact proof term for the current goal is Luf v' Hv'.
An exact proof term for the current goal is mul_SNo_assoc u u (f v') Hua1 Hua1 Hfv'.
We prove the intermediate claim L8: wL, w'L, w < w'.
Let w be given.
Assume Hw.
We prove the intermediate claim Lw: SNo w.
Apply real_SNo to the current goal.
An exact proof term for the current goal is LLreal w Hw.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Lw.
We prove the intermediate claim Lxxw: SNo (x * x * w).
An exact proof term for the current goal is SNo_mul_SNo x (x * w) Hx Lxw.
We prove the intermediate claim L2uxw: SNo ((2 * u) * x * w).
An exact proof term for the current goal is SNo_mul_SNo (2 * u) (x * w) L2u Lxw.
We prove the intermediate claim Lwuu: SNo (w * u * u).
An exact proof term for the current goal is SNo_mul_SNo w (u * u) Lw Luu.
We use f (f w) to witness the existential quantifier.
Apply andI to the current goal.
Apply L6 to the current goal.
Apply L5 to the current goal.
An exact proof term for the current goal is Hw.
We will prove w < f (f w).
We prove the intermediate claim L8a: w < (w * u * u + x * x * w + 2 * u + - ((2 * u) * x * w + x)) :/: (u * u).
We will prove w < (w * u * u + x * x * w + 2 * u + - ((2 * u) * x * w + x)) :/: (u * u).
Apply div_SNo_pos_LtR (w * u * u + x * x * w + 2 * u + - ((2 * u) * x * w + x)) (u * u) w to the current goal.
An exact proof term for the current goal is SNo_add_SNo_4 (w * u * u) (x * x * w) (2 * u) (- ((2 * u) * x * w + x)) Lwuu Lxxw L2u (SNo_minus_SNo ((2 * u) * x * w + x) (SNo_add_SNo ((2 * u) * x * w) x L2uxw Hx)).
An exact proof term for the current goal is Luu.
An exact proof term for the current goal is Lw.
We will prove 0 < u * u.
An exact proof term for the current goal is Luupos.
We will prove w * u * u < w * u * u + x * x * w + 2 * u + - ((2 * u) * x * w + x).
rewrite the current goal using add_SNo_0R (w * u * u) (from right to left) at position 1.
We will prove w * u * u + 0 < w * u * u + x * x * w + 2 * u + - ((2 * u) * x * w + x).
Apply add_SNo_Lt2 to the current goal.
An exact proof term for the current goal is Lwuu.
An exact proof term for the current goal is SNo_0.
An exact proof term for the current goal is SNo_add_SNo_3 (x * x * w) (2 * u) (- ((2 * u) * x * w + x)) Lxxw L2u (SNo_minus_SNo ((2 * u) * x * w + x) (SNo_add_SNo ((2 * u) * x * w) x L2uxw Hx)).
We will prove 0 < x * x * w + 2 * u + - ((2 * u) * x * w + x).
Apply add_SNo_minus_Lt2b3 to the current goal.
An exact proof term for the current goal is Lxxw.
An exact proof term for the current goal is L2u.
An exact proof term for the current goal is SNo_add_SNo ((2 * u) * x * w) x L2uxw Hx.
An exact proof term for the current goal is SNo_0.
We will prove 0 + (2 * u) * x * w + x < x * x * w + 2 * u.
rewrite the current goal using add_SNo_0L (from left to right).
We will prove (2 * u) * x * w + x < x * x * w + 2 * u.
rewrite the current goal using add_SNo_com ((2 * u) * x * w) x (SNo_mul_SNo (2 * u) (x * w) L2u Lxw) Hx (from left to right).
rewrite the current goal using add_SNo_com (x * x * w) (2 * u) Lxxw L2u (from left to right).
rewrite the current goal using mul_SNo_oneR x Hx (from right to left) at position 1.
We will prove x * 1 + (2 * u) * x * w < 2 * u + x * x * w.
rewrite the current goal using mul_SNo_oneR (2 * u) L2u (from right to left) at position 2.
We will prove x * 1 + (2 * u) * x * w < (2 * u) * 1 + x * x * w.
Apply mul_SNo_Lt to the current goal.
An exact proof term for the current goal is L2u.
An exact proof term for the current goal is SNo_1.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Lxw.
We will prove x < 2 * u.
An exact proof term for the current goal is H3.
We will prove x * w < 1.
rewrite the current goal using mul_SNo_com x w Hx Lw (from left to right).
Apply div_SNo_pos_LtR' to the current goal.
An exact proof term for the current goal is SNo_1.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Lw.
We will prove 0 < x.
An exact proof term for the current goal is Hxpos.
We will prove w < 1 :/: x.
We will prove w < 1 * recip_SNo x.
rewrite the current goal using mul_SNo_oneL (recip_SNo x) (SNo_recip_SNo x Hx) (from left to right).
rewrite the current goal using recip_SNo_poscase x Hxpos (from left to right).
We will prove w < recip_SNo_pos x.
rewrite the current goal using LrxLR (from left to right).
We will prove w < y.
Apply HLR3 to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is SNo_add_SNo ((2 * u) * x * w) x (SNo_mul_SNo (2 * u) (x * w) L2u Lxw) Hx.
An exact proof term for the current goal is Lwuu.
An exact proof term for the current goal is L7 w Lw (λu v ⇒ w < v) L8a.
We prove the intermediate claim L9: zR, z'R, z' < z.
Let z be given.
Assume Hz.
We prove the intermediate claim Lz: SNo z.
Apply real_SNo to the current goal.
An exact proof term for the current goal is LRreal z Hz.
We prove the intermediate claim Lxz: SNo (x * z).
An exact proof term for the current goal is SNo_mul_SNo x z Hx Lz.
We prove the intermediate claim Lxxz: SNo (x * x * z).
An exact proof term for the current goal is SNo_mul_SNo x (x * z) Hx Lxz.
We prove the intermediate claim L2uxz: SNo ((2 * u) * x * z).
An exact proof term for the current goal is SNo_mul_SNo (2 * u) (x * z) L2u Lxz.
We prove the intermediate claim Lzuu: SNo (z * u * u).
An exact proof term for the current goal is SNo_mul_SNo z (u * u) Lz Luu.
We use f (f z) to witness the existential quantifier.
Apply andI to the current goal.
Apply L5 to the current goal.
Apply L6 to the current goal.
An exact proof term for the current goal is Hz.
We will prove f (f z) < z.
We prove the intermediate claim L9a: (z * u * u + x * x * z + 2 * u + - ((2 * u) * x * z + x)) :/: (u * u) < z.
Apply div_SNo_pos_LtL (z * u * u + x * x * z + 2 * u + - ((2 * u) * x * z + x)) (u * u) z to the current goal.
An exact proof term for the current goal is SNo_add_SNo_4 (z * u * u) (x * x * z) (2 * u) (- ((2 * u) * x * z + x)) Lzuu Lxxz L2u (SNo_minus_SNo ((2 * u) * x * z + x) (SNo_add_SNo ((2 * u) * x * z) x L2uxz Hx)).
An exact proof term for the current goal is Luu.
An exact proof term for the current goal is Lz.
We will prove 0 < u * u.
An exact proof term for the current goal is Luupos.
We will prove z * u * u + x * x * z + 2 * u + - ((2 * u) * x * z + x) < z * u * u.
rewrite the current goal using add_SNo_0R (z * u * u) (from right to left) at position 2.
We will prove z * u * u + x * x * z + 2 * u + - ((2 * u) * x * z + x) < z * u * u + 0.
Apply add_SNo_Lt2 to the current goal.
An exact proof term for the current goal is Lzuu.
An exact proof term for the current goal is SNo_add_SNo_3 (x * x * z) (2 * u) (- ((2 * u) * x * z + x)) Lxxz L2u (SNo_minus_SNo ((2 * u) * x * z + x) (SNo_add_SNo ((2 * u) * x * z) x L2uxz Hx)).
An exact proof term for the current goal is SNo_0.
We will prove x * x * z + 2 * u + - ((2 * u) * x * z + x) < 0.
Apply add_SNo_minus_Lt1b3 to the current goal.
An exact proof term for the current goal is Lxxz.
An exact proof term for the current goal is L2u.
An exact proof term for the current goal is SNo_add_SNo ((2 * u) * x * z) x L2uxz Hx.
An exact proof term for the current goal is SNo_0.
We will prove x * x * z + 2 * u < 0 + (2 * u) * x * z + x.
rewrite the current goal using add_SNo_0L (from left to right).
We will prove x * x * z + 2 * u < (2 * u) * x * z + x.
rewrite the current goal using mul_SNo_oneR x Hx (from right to left) at position 4.
We will prove x * x * z + 2 * u < (2 * u) * x * z + x * 1.
rewrite the current goal using mul_SNo_oneR (2 * u) L2u (from right to left) at position 1.
We will prove x * x * z + (2 * u) * 1 < (2 * u) * x * z + x * 1.
Apply mul_SNo_Lt to the current goal.
An exact proof term for the current goal is L2u.
An exact proof term for the current goal is Lxz.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is SNo_1.
We will prove x < 2 * u.
An exact proof term for the current goal is H3.
We will prove 1 < x * z.
rewrite the current goal using mul_SNo_com x z Hx Lz (from left to right).
We will prove 1 < z * x.
Apply div_SNo_pos_LtL' to the current goal.
An exact proof term for the current goal is SNo_1.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Lz.
We will prove 0 < x.
An exact proof term for the current goal is Hxpos.
We will prove 1 :/: x < z.
We will prove 1 * recip_SNo x < z.
rewrite the current goal using mul_SNo_oneL (recip_SNo x) (SNo_recip_SNo x Hx) (from left to right).
rewrite the current goal using recip_SNo_poscase x Hxpos (from left to right).
We will prove recip_SNo_pos x < z.
rewrite the current goal using LrxLR (from left to right).
We will prove y < z.
Apply HLR4 to the current goal.
An exact proof term for the current goal is Hz.
An exact proof term for the current goal is SNo_add_SNo ((2 * u) * x * z) x (SNo_mul_SNo (2 * u) (x * z) L2u Lxz) Hx.
An exact proof term for the current goal is Lzuu.
An exact proof term for the current goal is L7 z Lz (λu v ⇒ v < z) L9a.
We will prove recip_SNo_pos x real.
rewrite the current goal using recip_SNo_pos_eq x Hx (from left to right).
We will prove SNoCut L R real.
Apply real_SNoCut to the current goal.
An exact proof term for the current goal is LLreal.
An exact proof term for the current goal is LRreal.
An exact proof term for the current goal is LLR.
An exact proof term for the current goal is LL0.
We will prove R 0.
Assume H4: R = 0.
Apply EmptyE ((1 + (u + - x) * 0) * recip_SNo_pos u) to the current goal.
We will prove (1 + (u + - x) * 0) * recip_SNo_pos u 0.
rewrite the current goal using H4 (from right to left) at position 3.
We will prove (1 + (u + - x) * 0) * recip_SNo_pos u R.
Apply L5 0 to the current goal.
We will prove 0 L.
Apply LLI 0 (nat_p_omega 0 nat_0) to the current goal.
We will prove 0 SNo_recipaux x recip_SNo_pos 0 0.
rewrite the current goal using SNo_recipaux_0 x recip_SNo_pos (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
We will prove 0 {0}.
Apply SingI to the current goal.
We will prove wL, w'L, w < w'.
An exact proof term for the current goal is L8.
We will prove zR, z'R, z' < z.
An exact proof term for the current goal is L9.
An exact proof term for the current goal is L2.
Proof:
Let x be given.
Assume Hx Hxpos.
Apply real_recip_SNo_lem1 x (real_SNo x Hx) Hx Hxpos to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Proof:
Let x be given.
Assume Hx.
We prove the intermediate claim Lx: SNo x.
An exact proof term for the current goal is real_SNo x Hx.
Apply SNoLt_trichotomy_or_impred x 0 Lx SNo_0 to the current goal.
Assume H1: x < 0.
rewrite the current goal using recip_SNo_negcase x Lx H1 (from left to right).
We will prove - recip_SNo_pos (- x) real.
Apply real_minus_SNo (recip_SNo_pos (- x)) to the current goal.
We will prove recip_SNo_pos (- x) real.
Apply real_recip_SNo_pos (- x) to the current goal.
We will prove - x real.
An exact proof term for the current goal is real_minus_SNo x Hx.
We will prove 0 < - x.
Apply minus_SNo_Lt_contra2 x 0 Lx SNo_0 to the current goal.
We will prove x < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H1.
Assume H1: x = 0.
rewrite the current goal using H1 (from left to right).
rewrite the current goal using recip_SNo_0 (from left to right).
We will prove 0 real.
An exact proof term for the current goal is real_0.
Assume H1: 0 < x.
rewrite the current goal using recip_SNo_poscase x H1 (from left to right).
An exact proof term for the current goal is real_recip_SNo_pos x Hx H1.
Theorem. (real_div_SNo) The following is provable:
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
We will prove x * recip_SNo y real.
Apply real_mul_SNo to the current goal.
An exact proof term for the current goal is Hx.
Apply real_recip_SNo to the current goal.
An exact proof term for the current goal is Hy.
End of Section Reals
Beginning of Section even_odd
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_nat.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_nat.
Theorem. (nat_le2_cases) The following is provable:
∀m, nat_p mm 2m = 0 m = 1 m = 2
Proof:
Apply nat_inv_impred to the current goal.
Assume _.
Apply orIL to the current goal.
Apply orIL to the current goal.
Use reflexivity.
Apply nat_inv_impred to the current goal.
Assume _.
Apply orIL to the current goal.
Apply orIR to the current goal.
Use reflexivity.
Apply nat_inv_impred to the current goal.
Assume _.
Apply orIR to the current goal.
Use reflexivity.
Let m be given.
Assume Hm.
Assume H1: ordsucc (ordsucc (ordsucc m)) 2.
We will prove False.
Apply In_irref 2 to the current goal.
We will prove 2 2.
Apply H1 to the current goal.
We will prove 2 ordsucc (ordsucc (ordsucc m)).
Apply nat_ordsucc_in_ordsucc (ordsucc (ordsucc m)) (nat_ordsucc (ordsucc m) (nat_ordsucc m Hm)) to the current goal.
We will prove 1 ordsucc (ordsucc m).
Apply nat_ordsucc_in_ordsucc (ordsucc m) (nat_ordsucc m Hm) to the current goal.
We will prove 0 ordsucc m.
An exact proof term for the current goal is nat_0_in_ordsucc m Hm.
Theorem. (prime_nat_2_lem) The following is provable:
∀m, nat_p m∀n, nat_p nm * n = 2m = 1 m = 2
Proof:
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
Assume H1: m * n = 2.
We prove the intermediate claim L1: m 2.
Apply mul_nat_0_or_Subq m Hm n Hn to the current goal.
Assume H2: n = 0.
We will prove False.
Apply neq_2_0 to the current goal.
We will prove 2 = 0.
rewrite the current goal using H1 (from right to left).
We will prove m * n = 0.
rewrite the current goal using H2 (from left to right).
We will prove m * 0 = 0.
Apply mul_nat_0R to the current goal.
Assume H2: m m * n.
We will prove m 2.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is H2.
Apply nat_le2_cases m Hm L1 to the current goal.
Assume H.
Apply H to the current goal.
Assume H2: m = 0.
We will prove False.
Apply neq_2_0 to the current goal.
We will prove 2 = 0.
rewrite the current goal using H1 (from right to left).
We will prove m * n = 0.
rewrite the current goal using H2 (from left to right).
We will prove 0 * n = 0.
An exact proof term for the current goal is mul_nat_0L n Hn.
Assume H2: m = 1.
Apply orIL to the current goal.
An exact proof term for the current goal is H2.
Assume H2: m = 2.
Apply orIR to the current goal.
An exact proof term for the current goal is H2.
Theorem. (prime_nat_2) The following is provable:
Proof:
We will prove 2 ω 1 2 kω, divides_nat k 2k = 1 k = 2.
Apply and3I to the current goal.
We will prove 2 ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_2.
An exact proof term for the current goal is In_1_2.
Let k be given.
Assume Hk: k ω.
Assume Hk2: divides_nat k 2.
We will prove k = 1 k = 2.
Apply Hk2 to the current goal.
Assume _.
Assume H.
Apply H to the current goal.
Let n be given.
Assume H.
Apply H to the current goal.
Assume Hn: n ω.
Assume Hkn: k * n = 2.
An exact proof term for the current goal is prime_nat_2_lem k (omega_nat_p k Hk) n (omega_nat_p n Hn) Hkn.
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Theorem. (not_eq_2m_2n1) The following is provable:
Proof:
Let m be given.
Assume Hm: m int.
Let n be given.
Assume Hn: n int.
Assume H1: 2 * m = 2 * n + 1.
Apply prime_not_divides_int_1 2 prime_nat_2 to the current goal.
We will prove divides_int 2 1.
We prove the intermediate claim LmS: SNo m.
An exact proof term for the current goal is int_SNo m Hm.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is int_SNo n Hn.
We prove the intermediate claim L2nS: SNo (2 * n).
An exact proof term for the current goal is SNo_mul_SNo 2 n SNo_2 LnS.
We prove the intermediate claim L2mS: SNo (2 * m).
An exact proof term for the current goal is SNo_mul_SNo 2 m SNo_2 LmS.
We prove the intermediate claim Lm2nS: SNo (- 2 * n).
An exact proof term for the current goal is SNo_minus_SNo (2 * n) L2nS.
We prove the intermediate claim L1: 2 * n + 2 * m + - 2 * n = 2 * n + 1.
rewrite the current goal using H1 (from right to left).
We will prove 2 * n + 2 * m + - 2 * n = 2 * m.
rewrite the current goal using add_SNo_rotate_3_1 (2 * n) (2 * m) (- 2 * n) L2nS L2mS Lm2nS (from left to right).
We will prove - 2 * n + 2 * n + 2 * m = 2 * m.
An exact proof term for the current goal is add_SNo_minus_L2 (2 * n) (2 * m) L2nS L2mS.
We prove the intermediate claim L2: 2 * (m + - n) = 1.
rewrite the current goal using mul_SNo_distrL 2 m (- n) SNo_2 LmS (SNo_minus_SNo n LnS) (from left to right).
rewrite the current goal using mul_SNo_minus_distrR 2 n SNo_2 LnS (from left to right).
We will prove 2 * m + - 2 * n = 1.
An exact proof term for the current goal is add_SNo_cancel_L (2 * n) (2 * m + - 2 * n) 1 L2nS (SNo_add_SNo (2 * m) (- 2 * n) L2mS Lm2nS) SNo_1 L1.
rewrite the current goal using L2 (from right to left) at position 2.
We will prove divides_int 2 (2 * (m + - n)).
Apply divides_int_mul_SNo_L 2 2 (m + - n) (int_add_SNo m Hm (- n) (int_minus_SNo n Hn)) to the current goal.
We will prove divides_int 2 2.
Apply divides_int_ref 2 to the current goal.
We will prove 2 int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_2.
End of Section even_odd
Beginning of Section form100_22b
Let tag : setsetλα ⇒ SetAdjoin α {1}
Notation. We use ' as a postfix operator with priority 100 corresponding to applying term tag.
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Proof:
Set f to be the term λu ⇒ {2 * n|nω, n u} {2 * n + 1|nω, n ' u} of type setset.
We prove the intermediate claim L1: ∀u v, SNoLev u ωu SNoElts_ (SNoLev u)f u = f vu v.
Let u and v be given.
Assume HLuo: SNoLev u ω.
Assume HuELu: u SNoElts_ (SNoLev u).
Assume Huv: f u = f v.
Let x be given.
Assume Hx: x u.
We will prove x v.
Apply binunionE (SNoLev u) {n '|nSNoLev u} x (HuELu x Hx) to the current goal.
Assume H1: x SNoLev u.
We prove the intermediate claim Lx: x ω.
An exact proof term for the current goal is HLuo x H1.
We prove the intermediate claim L2x: 2 * x f v.
rewrite the current goal using Huv (from right to left).
We will prove 2 * x f u.
We will prove 2 * x {2 * n|nω, n u} {2 * n + 1|nω, n ' u}.
Apply binunionI1 to the current goal.
Apply ReplSepI to the current goal.
We will prove x ω.
An exact proof term for the current goal is Lx.
We will prove x u.
An exact proof term for the current goal is Hx.
Apply binunionE {2 * n|nω, n v} {2 * n + 1|nω, n ' v} (2 * x) L2x to the current goal.
Assume H2: 2 * x {2 * n|nω, n v}.
Apply ReplSepE_impred ω (λn ⇒ n v) (λn ⇒ 2 * n) (2 * x) H2 to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hnv: n v.
Assume H2x2n: 2 * x = 2 * n.
We prove the intermediate claim Lxn: x = n.
An exact proof term for the current goal is mul_SNo_nonzero_cancel_L 2 x n SNo_2 neq_2_0 (omega_SNo x Lx) (omega_SNo n Hn) H2x2n.
We will prove x v.
rewrite the current goal using Lxn (from left to right).
An exact proof term for the current goal is Hnv.
Assume H2: 2 * x {2 * n + 1|nω, n ' v}.
We will prove False.
Apply ReplSepE_impred ω (λn ⇒ n ' v) (λn ⇒ 2 * n + 1) (2 * x) H2 to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hnv: n ' v.
Assume H2x2n1: 2 * x = 2 * n + 1.
We prove the intermediate claim L2nomega: 2 * n ω.
An exact proof term for the current goal is mul_SNo_In_omega 2 (nat_p_omega 2 nat_2) n Hn.
We prove the intermediate claim L2no: ordinal (2 * n).
Apply nat_p_ordinal to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is L2nomega.
We will prove False.
An exact proof term for the current goal is not_eq_2m_2n1 x (Subq_omega_int x Lx) n (Subq_omega_int n Hn) H2x2n1.
Assume H1: x {n '|nSNoLev u}.
Apply ReplE_impred (SNoLev u) (λn ⇒ n ') x H1 to the current goal.
Let n be given.
Assume Hn: n SNoLev u.
Assume Hxn: x = n '.
We prove the intermediate claim Lnomega: n ω.
An exact proof term for the current goal is HLuo n Hn.
We prove the intermediate claim L2nomega: 2 * n ω.
An exact proof term for the current goal is mul_SNo_In_omega 2 (nat_p_omega 2 nat_2) n Lnomega.
We prove the intermediate claim L2no: ordinal (2 * n).
Apply nat_p_ordinal to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is L2nomega.
We prove the intermediate claim Ln'u: n ' u.
rewrite the current goal using Hxn (from right to left).
An exact proof term for the current goal is Hx.
We prove the intermediate claim L2x1: 2 * n + 1 f v.
rewrite the current goal using Huv (from right to left).
We will prove 2 * n + 1 {2 * n|nω, n u} {2 * n + 1|nω, n ' u}.
Apply binunionI2 to the current goal.
We will prove 2 * n + 1 {2 * n + 1|nω, n ' u}.
An exact proof term for the current goal is ReplSepI ω (λn ⇒ n ' u) (λn ⇒ 2 * n + 1) n Lnomega Ln'u.
Apply binunionE {2 * n|nω, n v} {2 * n + 1|nω, n ' v} (2 * n + 1) L2x1 to the current goal.
Assume H2: 2 * n + 1 {2 * n|nω, n v}.
We will prove False.
Apply ReplSepE_impred ω (λn ⇒ n v) (λn ⇒ 2 * n) (2 * n + 1) H2 to the current goal.
Let m be given.
Assume Hm: m ω.
Assume Hmv: m v.
Assume H2n12m: 2 * n + 1 = 2 * m.
We will prove False.
Apply not_eq_2m_2n1 m (Subq_omega_int m Hm) n (Subq_omega_int n Lnomega) to the current goal.
We will prove 2 * m = 2 * n + 1.
Use symmetry.
An exact proof term for the current goal is H2n12m.
Assume H2: 2 * n + 1 {2 * n + 1|nω, n ' v}.
Apply ReplSepE_impred ω (λn ⇒ n ' v) (λn ⇒ 2 * n + 1) (2 * n + 1) H2 to the current goal.
Let m be given.
Assume Hm: m ω.
Assume Hmv: m ' v.
Assume H2n12m1: 2 * n + 1 = 2 * m + 1.
We prove the intermediate claim Lnm: n = m.
Apply mul_SNo_nonzero_cancel_L 2 n m SNo_2 neq_2_0 (omega_SNo n Lnomega) (omega_SNo m Hm) to the current goal.
We will prove 2 * n = 2 * m.
An exact proof term for the current goal is add_SNo_cancel_R (2 * n) 1 (2 * m) (omega_SNo (2 * n) L2nomega) SNo_1 (SNo_mul_SNo 2 m SNo_2 (omega_SNo m Hm)) H2n12m1.
We will prove x v.
rewrite the current goal using Hxn (from left to right).
We will prove n ' v.
An exact proof term for the current goal is Lnm (λ_ u ⇒ u ' v) Hmv.
We will prove f : setset, inj (SNoS_ (ordsucc ω)) (𝒫 ω) f.
We use f to witness the existential quantifier.
We will prove (uSNoS_ (ordsucc ω), f u 𝒫 ω) (u vSNoS_ (ordsucc ω), f u = f vu = v).
Apply andI to the current goal.
Let u be given.
Assume Hu: u SNoS_ (ordsucc ω).
We will prove f u 𝒫 ω.
Apply PowerI to the current goal.
We will prove {2 * n|nω, n u} {2 * n + 1|nω, n ' u} ω.
Apply binunion_Subq_min to the current goal.
We will prove {2 * n|nω, n u} ω.
Let x be given.
Assume Hx.
Apply ReplSepE_impred ω (λn ⇒ n u) (λn ⇒ 2 * n) x Hx to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hnu: n u.
Assume Hx2n: x = 2 * n.
We will prove x ω.
rewrite the current goal using Hx2n (from left to right).
Apply mul_SNo_In_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_2.
An exact proof term for the current goal is Hn.
We will prove {2 * n + 1|nω, n ' u} ω.
Let x be given.
Assume Hx.
Apply ReplSepE_impred ω (λn ⇒ n ' u) (λn ⇒ 2 * n + 1) x Hx to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hnu: n ' u.
Assume Hx2n1: x = 2 * n + 1.
We will prove x ω.
rewrite the current goal using Hx2n1 (from left to right).
Apply add_SNo_In_omega to the current goal.
We will prove 2 * n ω.
Apply mul_SNo_In_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_2.
An exact proof term for the current goal is Hn.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
Let u be given.
Assume Hu: u SNoS_ (ordsucc ω).
Let v be given.
Assume Hv: v SNoS_ (ordsucc ω).
Assume Huv: f u = f v.
Apply SNoS_E2 (ordsucc ω) ordsucc_omega_ordinal u Hu to the current goal.
Assume Hu1: SNoLev u ordsucc ω.
Assume Hu2: ordinal (SNoLev u).
Assume Hu3: SNo u.
Assume Hu4: SNo_ (SNoLev u) u.
Apply Hu4 to the current goal.
Assume Hu4a: u SNoElts_ (SNoLev u).
Assume _.
Apply SNoS_E2 (ordsucc ω) ordsucc_omega_ordinal v Hv to the current goal.
Assume Hv1: SNoLev v ordsucc ω.
Assume Hv2: ordinal (SNoLev v).
Assume Hv3: SNo v.
Assume Hv4: SNo_ (SNoLev v) v.
Apply Hv4 to the current goal.
Assume Hv4a: v SNoElts_ (SNoLev v).
Assume _.
We prove the intermediate claim LLuo: SNoLev u ω.
Apply TransSet_In_ordsucc_Subq to the current goal.
We will prove TransSet ω.
An exact proof term for the current goal is omega_TransSet.
We will prove SNoLev u ordsucc ω.
An exact proof term for the current goal is Hu1.
We prove the intermediate claim LLvo: SNoLev v ω.
Apply TransSet_In_ordsucc_Subq to the current goal.
We will prove TransSet ω.
An exact proof term for the current goal is omega_TransSet.
We will prove SNoLev v ordsucc ω.
An exact proof term for the current goal is Hv1.
We will prove u = v.
Apply set_ext to the current goal.
We will prove u v.
An exact proof term for the current goal is L1 u v LLuo Hu4a Huv.
We will prove v u.
An exact proof term for the current goal is L1 v u LLvo Hv4a (λq ⇒ Huv (λx y ⇒ q y x)).
Theorem. (Repl_finite) The following is provable:
∀f : setset, ∀X, finite Xfinite {f x|xX}
Proof:
Let f be given.
Apply finite_ind to the current goal.
We will prove finite {f x|x0}.
rewrite the current goal using Repl_Empty f (from left to right).
An exact proof term for the current goal is finite_Empty.
Let X and y be given.
Assume HX: finite X.
Assume Hy: y X.
Assume IH: finite {f x|xX}.
We will prove finite {f x|xX {y}}.
We prove the intermediate claim L1: {f x|xX {y}} = {f x|xX} {f y}.
Apply set_ext to the current goal.
Let z be given.
Assume Hz: z {f x|xX {y}}.
Apply ReplE_impred (X {y}) f z Hz to the current goal.
Let x be given.
Assume Hx: x X {y}.
Assume Hzx: z = f x.
We will prove z {f x|xX} {f y}.
Apply binunionE X {y} x Hx to the current goal.
Assume H1: x X.
Apply binunionI1 to the current goal.
rewrite the current goal using Hzx (from left to right).
An exact proof term for the current goal is ReplI X f x H1.
Assume H1: x {y}.
Apply binunionI2 to the current goal.
rewrite the current goal using Hzx (from left to right).
rewrite the current goal using SingE y x H1 (from left to right).
Apply SingI to the current goal.
Let z be given.
Assume Hz: z {f x|xX} {f y}.
Apply binunionE {f x|xX} {f y} z Hz to the current goal.
Assume H1: z {f x|xX}.
Apply ReplE_impred X f z H1 to the current goal.
Let x be given.
Assume Hx: x X.
Assume Hzx: z = f x.
rewrite the current goal using Hzx (from left to right).
Apply ReplI to the current goal.
We will prove x X {y}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hx.
Assume H1: z {f y}.
rewrite the current goal using SingE (f y) z H1 (from left to right).
We will prove f y {f x|xX {y}}.
Apply ReplI to the current goal.
Apply binunionI2 to the current goal.
We will prove y {y}.
Apply SingI to the current goal.
rewrite the current goal using L1 (from left to right).
Apply binunion_finite to the current goal.
An exact proof term for the current goal is IH.
Apply Sing_finite to the current goal.
Proof:
Let X be given.
Assume HX1 HX2.
Let m be given.
Assume Hm: m ω.
Apply dneg to the current goal.
Assume H1: ¬ (nX, m n).
We prove the intermediate claim L1: X ordsucc m.
Let n be given.
Assume Hn: n X.
Apply ordinal_trichotomy_or_impred m n (nat_p_ordinal m (omega_nat_p m Hm)) (nat_p_ordinal n (omega_nat_p n (HX1 n Hn))) to the current goal.
Assume H2: m n.
We will prove False.
Apply H1 to the current goal.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is H2.
Assume H2: m = n.
We will prove n ordsucc m.
rewrite the current goal using H2 (from right to left).
Apply ordsuccI2 to the current goal.
Assume H2: n m.
We will prove n ordsucc m.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is H2.
Apply HX2 to the current goal.
We will prove finite X.
An exact proof term for the current goal is Subq_finite (ordsucc m) (nat_finite (ordsucc m) (nat_ordsucc m (omega_nat_p m Hm))) X L1.
Theorem. (equip_real_Power_omega) The following is provable:
Proof:
Apply atleastp_antisym_equip to the current goal.
We will prove atleastp real (𝒫 ω).
Apply atleastp_tra real (SNoS_ (ordsucc ω)) (𝒫 ω) to the current goal.
We will prove atleastp real (SNoS_ (ordsucc ω)).
Apply Subq_atleastp to the current goal.
We will prove real SNoS_ (ordsucc ω).
Let u be given.
Assume Hu: u real.
Apply real_E u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u ordsucc ω.
Assume Hu3: u SNoS_ (ordsucc ω).
Assume Hu4: - ω < u.
Assume Hu5: u < ω.
Assume Hu6: qSNoS_ ω, (kω, abs_SNo (q + - u) < eps_ k)q = u.
Assume Hu7: kω, qSNoS_ ω, q < u u < q + eps_ k.
We will prove u SNoS_ (ordsucc ω).
Apply SNoS_I (ordsucc ω) ordsucc_omega_ordinal u (SNoLev u) Hu2 to the current goal.
We will prove SNo_ (SNoLev u) u.
An exact proof term for the current goal is SNoLev_ u Hu1.
An exact proof term for the current goal is atleastp_SNoS_ordsucc_omega_Power_omega.
We will prove atleastp (𝒫 ω) real.
Set L_ to be the term λX n ⇒ nat_primrec {0} (λn r ⇒ if n X then r {x + eps_ (ordsucc n)|xr} else r) n of type setsetset.
Set R_ to be the term λX n ⇒ nat_primrec {1} (λn r ⇒ if n X then r else r {x + - eps_ (ordsucc n)|xr}) n of type setsetset.
We prove the intermediate claim L_0: ∀X, L_ X 0 = {0}.
Let X be given.
An exact proof term for the current goal is nat_primrec_0 {0} (λn r ⇒ if n X then r {x + eps_ (ordsucc n)|xr} else r).
We prove the intermediate claim R_0: ∀X, R_ X 0 = {1}.
Let X be given.
An exact proof term for the current goal is nat_primrec_0 {1} (λn r ⇒ if n X then r else r {x + - eps_ (ordsucc n)|xr}).
We prove the intermediate claim L_ordsucc: ∀X, nω, L_ X (ordsucc n) = if n X then L_ X n {x + eps_ (ordsucc n)|xL_ X n} else L_ X n.
Let X and n be given.
Assume Hn.
An exact proof term for the current goal is nat_primrec_S {0} (λn r ⇒ if n X then r {x + eps_ (ordsucc n)|xr} else r) n (omega_nat_p n Hn).
We prove the intermediate claim R_ordsucc: ∀X, nω, R_ X (ordsucc n) = if n X then R_ X n else R_ X n {x + - eps_ (ordsucc n)|xR_ X n}.
Let X and n be given.
Assume Hn.
An exact proof term for the current goal is nat_primrec_S {1} (λn r ⇒ if n X then r else r {x + - eps_ (ordsucc n)|xr}) n (omega_nat_p n Hn).
We prove the intermediate claim L_ordsucc_pos: ∀X, nω, n XL_ X (ordsucc n) = L_ X n {x + eps_ (ordsucc n)|xL_ X n}.
Let X and n be given.
Assume Hn HnX.
An exact proof term for the current goal is If_i_1 (n X) (L_ X n {x + eps_ (ordsucc n)|xL_ X n}) (L_ X n) HnX (λu _ ⇒ L_ X (ordsucc n) = u) (L_ordsucc X n Hn).
We prove the intermediate claim L_ordsucc_neg: ∀X, nω, n XL_ X (ordsucc n) = L_ X n.
Let X and n be given.
Assume Hn HnX.
An exact proof term for the current goal is If_i_0 (n X) (L_ X n {x + eps_ (ordsucc n)|xL_ X n}) (L_ X n) HnX (λu _ ⇒ L_ X (ordsucc n) = u) (L_ordsucc X n Hn).
We prove the intermediate claim R_ordsucc_pos: ∀X, nω, n XR_ X (ordsucc n) = R_ X n.
Let X and n be given.
Assume Hn HnX.
An exact proof term for the current goal is If_i_1 (n X) (R_ X n) (R_ X n {x + - eps_ (ordsucc n)|xR_ X n}) HnX (λu _ ⇒ R_ X (ordsucc n) = u) (R_ordsucc X n Hn).
We prove the intermediate claim R_ordsucc_neg: ∀X, nω, n XR_ X (ordsucc n) = R_ X n {x + - eps_ (ordsucc n)|xR_ X n}.
Let X and n be given.
Assume Hn HnX.
An exact proof term for the current goal is If_i_0 (n X) (R_ X n) (R_ X n {x + - eps_ (ordsucc n)|xR_ X n}) HnX (λu _ ⇒ R_ X (ordsucc n) = u) (R_ordsucc X n Hn).
We prove the intermediate claim L_SNo1: ∀X, ∀n, nat_p nuL_ X n, SNo u.
Let X be given.
Apply nat_ind to the current goal.
We will prove uL_ X 0, SNo u.
Apply L_0 X (λ_ v ⇒ uv, SNo u) to the current goal.
Let u be given.
Assume Hu: u {0}.
rewrite the current goal using SingE 0 u Hu (from left to right).
We will prove SNo 0.
An exact proof term for the current goal is SNo_0.
Let n be given.
Assume Hn.
Assume IHn: uL_ X n, SNo u.
We will prove uL_ X (ordsucc n), SNo u.
Apply xm (n X) to the current goal.
Assume H1: n X.
Apply L_ordsucc_pos X n (nat_p_omega n Hn) H1 (λ_ v ⇒ uv, SNo u) to the current goal.
Let u be given.
Assume Hu: u L_ X n {w + eps_ (ordsucc n)|wL_ X n}.
Apply binunionE (L_ X n) {w + eps_ (ordsucc n)|wL_ X n} u Hu to the current goal.
An exact proof term for the current goal is IHn u.
Assume H2: u {w + eps_ (ordsucc n)|wL_ X n}.
Apply ReplE_impred (L_ X n) (λw ⇒ w + eps_ (ordsucc n)) u H2 to the current goal.
Let w be given.
Assume Hw: w L_ X n.
Assume Huw: u = w + eps_ (ordsucc n).
We will prove SNo u.
rewrite the current goal using Huw (from left to right).
We will prove SNo (w + eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_add_SNo w (eps_ (ordsucc n)) (IHn w Hw) (SNo_eps_ (ordsucc n) (omega_ordsucc n (nat_p_omega n Hn))).
Assume H1: n X.
Apply L_ordsucc_neg X n (nat_p_omega n Hn) H1 (λ_ v ⇒ uv, SNo u) to the current goal.
An exact proof term for the current goal is IHn.
We prove the intermediate claim R_SNo1: ∀X, ∀n, nat_p nuR_ X n, SNo u.
Let X be given.
Apply nat_ind to the current goal.
We will prove uR_ X 0, SNo u.
Apply R_0 X (λ_ v ⇒ uv, SNo u) to the current goal.
Let u be given.
Assume Hu: u {1}.
rewrite the current goal using SingE 1 u Hu (from left to right).
An exact proof term for the current goal is SNo_1.
Let n be given.
Assume Hn.
Assume IHn: uR_ X n, SNo u.
We will prove uR_ X (ordsucc n), SNo u.
Apply xm (n X) to the current goal.
Assume H1: n X.
Apply R_ordsucc_pos X n (nat_p_omega n Hn) H1 (λ_ v ⇒ uv, SNo u) to the current goal.
An exact proof term for the current goal is IHn.
Assume H1: n X.
Apply R_ordsucc_neg X n (nat_p_omega n Hn) H1 (λ_ v ⇒ uv, SNo u) to the current goal.
Let u be given.
Assume Hu: u R_ X n {w + - eps_ (ordsucc n)|wR_ X n}.
Apply binunionE (R_ X n) {w + - eps_ (ordsucc n)|wR_ X n} u Hu to the current goal.
An exact proof term for the current goal is IHn u.
Assume H2: u {w + - eps_ (ordsucc n)|wR_ X n}.
Apply ReplE_impred (R_ X n) (λw ⇒ w + - eps_ (ordsucc n)) u H2 to the current goal.
Let w be given.
Assume Hw: w R_ X n.
Assume Huw: u = w + - eps_ (ordsucc n).
We will prove SNo u.
rewrite the current goal using Huw (from left to right).
We will prove SNo (w + - eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_add_SNo w (- eps_ (ordsucc n)) (IHn w Hw) (SNo_minus_SNo (eps_ (ordsucc n)) (SNo_eps_ (ordsucc n) (omega_ordsucc n (nat_p_omega n Hn)))).
We prove the intermediate claim L_fin: ∀X, ∀n, nat_p nfinite (L_ X n).
Let X be given.
Apply nat_ind to the current goal.
We will prove finite (L_ X 0).
Apply L_0 X (λ_ v ⇒ finite v) to the current goal.
We will prove finite {0}.
Apply Sing_finite to the current goal.
Let n be given.
Assume Hn.
Assume IHn: finite (L_ X n).
We will prove finite (L_ X (ordsucc n)).
Apply xm (n X) to the current goal.
Assume H1: n X.
Apply L_ordsucc_pos X n (nat_p_omega n Hn) H1 (λ_ v ⇒ finite v) to the current goal.
We will prove finite (L_ X n {x + eps_ (ordsucc n)|xL_ X n}).
Apply binunion_finite to the current goal.
An exact proof term for the current goal is IHn.
We will prove finite {x + eps_ (ordsucc n)|xL_ X n}.
Apply Repl_finite to the current goal.
An exact proof term for the current goal is IHn.
Assume H1: n X.
Apply L_ordsucc_neg X n (nat_p_omega n Hn) H1 (λ_ v ⇒ finite v) to the current goal.
An exact proof term for the current goal is IHn.
We prove the intermediate claim R_fin: ∀X, ∀n, nat_p nfinite (R_ X n).
Let X be given.
Apply nat_ind to the current goal.
We will prove finite (R_ X 0).
Apply R_0 X (λ_ v ⇒ finite v) to the current goal.
We will prove finite {1}.
Apply Sing_finite to the current goal.
Let n be given.
Assume Hn.
Assume IHn: finite (R_ X n).
We will prove finite (R_ X (ordsucc n)).
Apply xm (n X) to the current goal.
Assume H1: n X.
Apply R_ordsucc_pos X n (nat_p_omega n Hn) H1 (λ_ v ⇒ finite v) to the current goal.
An exact proof term for the current goal is IHn.
Assume H1: n X.
Apply R_ordsucc_neg X n (nat_p_omega n Hn) H1 (λ_ v ⇒ finite v) to the current goal.
We will prove finite (R_ X n {x + - eps_ (ordsucc n)|xR_ X n}).
Apply binunion_finite to the current goal.
An exact proof term for the current goal is IHn.
We will prove finite {x + - eps_ (ordsucc n)|xR_ X n}.
Apply Repl_finite to the current goal.
An exact proof term for the current goal is IHn.
We prove the intermediate claim L_ordsucc_Subq: ∀X, ∀n, nat_p nL_ X n L_ X (ordsucc n).
Let X and n be given.
Assume Hn.
Apply xm (n X) to the current goal.
Assume H1: n X.
Apply L_ordsucc_pos X n (nat_p_omega n Hn) H1 (λ_ v ⇒ L_ X n v) to the current goal.
We will prove L_ X n L_ X n {x + eps_ (ordsucc n)|xL_ X n}.
Apply binunion_Subq_1 to the current goal.
Assume H1: n X.
Apply L_ordsucc_neg X n (nat_p_omega n Hn) H1 (λ_ v ⇒ L_ X n v) to the current goal.
We will prove L_ X n L_ X n.
Apply Subq_ref to the current goal.
We prove the intermediate claim R_ordsucc_Subq: ∀X, ∀n, nat_p nR_ X n R_ X (ordsucc n).
Let X and n be given.
Assume Hn.
Apply xm (n X) to the current goal.
Assume H1: n X.
Apply R_ordsucc_pos X n (nat_p_omega n Hn) H1 (λ_ v ⇒ R_ X n v) to the current goal.
We will prove R_ X n R_ X n.
Apply Subq_ref to the current goal.
Assume H1: n X.
Apply R_ordsucc_neg X n (nat_p_omega n Hn) H1 (λ_ v ⇒ R_ X n v) to the current goal.
We will prove R_ X n R_ X n {x + - eps_ (ordsucc n)|xR_ X n}.
Apply binunion_Subq_1 to the current goal.
We prove the intermediate claim L_Subq: ∀X, ∀n, nat_p nmn, L_ X m L_ X n.
Let X be given.
Apply nat_ind to the current goal.
Let m be given.
Assume Hm: m 0.
We will prove False.
An exact proof term for the current goal is EmptyE m Hm.
Let n be given.
Assume Hn.
Assume IHn: mn, L_ X m L_ X n.
Let m be given.
Assume Hm: m ordsucc n.
Apply ordsuccE n m Hm to the current goal.
Assume H1: m n.
We will prove L_ X m L_ X (ordsucc n).
Apply Subq_tra (L_ X m) (L_ X n) (L_ X (ordsucc n)) to the current goal.
An exact proof term for the current goal is IHn m H1.
An exact proof term for the current goal is L_ordsucc_Subq X n Hn.
Assume H1: m = n.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is L_ordsucc_Subq X n Hn.
We prove the intermediate claim R_Subq: ∀X, ∀n, nat_p nmn, R_ X m R_ X n.
Let X be given.
Apply nat_ind to the current goal.
Let m be given.
Assume Hm: m 0.
We will prove False.
An exact proof term for the current goal is EmptyE m Hm.
Let n be given.
Assume Hn.
Assume IHn: mn, R_ X m R_ X n.
Let m be given.
Assume Hm: m ordsucc n.
Apply ordsuccE n m Hm to the current goal.
Assume H1: m n.
We will prove R_ X m R_ X (ordsucc n).
Apply Subq_tra (R_ X m) (R_ X n) (R_ X (ordsucc n)) to the current goal.
An exact proof term for the current goal is IHn m H1.
An exact proof term for the current goal is R_ordsucc_Subq X n Hn.
Assume H1: m = n.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is R_ordsucc_Subq X n Hn.
We prove the intermediate claim L_0_In: ∀X, ∀n, nat_p n0 L_ X n.
Let X be given.
We prove the intermediate claim L_0_In_0: 0 L_ X 0.
An exact proof term for the current goal is L_0 X (λ_ v ⇒ 0 v) (SingI 0).
Apply nat_inv_impred to the current goal.
An exact proof term for the current goal is L_0_In_0.
Let n be given.
Assume Hn.
We will prove 0 L_ X (ordsucc n).
An exact proof term for the current goal is L_Subq X (ordsucc n) (nat_ordsucc n Hn) 0 (nat_0_in_ordsucc n Hn) 0 L_0_In_0.
We prove the intermediate claim R_1_In: ∀X, ∀n, nat_p n1 R_ X n.
Let X be given.
We prove the intermediate claim R_1_In_0: 1 R_ X 0.
An exact proof term for the current goal is R_0 X (λ_ v ⇒ 1 v) (SingI 1).
Apply nat_inv_impred to the current goal.
An exact proof term for the current goal is R_1_In_0.
Let n be given.
Assume Hn.
We will prove 1 R_ X (ordsucc n).
An exact proof term for the current goal is R_Subq X (ordsucc n) (nat_ordsucc n Hn) 0 (nat_0_in_ordsucc n Hn) 1 R_1_In_0.
We prove the intermediate claim L_ne: ∀X, ∀n, nat_p nL_ X n 0.
Let X and n be given.
Assume Hn.
Assume H1: L_ X n = 0.
Apply EmptyE 0 to the current goal.
We will prove 0 0.
rewrite the current goal using H1 (from right to left) at position 2.
An exact proof term for the current goal is L_0_In X n Hn.
We prove the intermediate claim R_ne: ∀X, ∀n, nat_p nR_ X n 0.
Let X and n be given.
Assume Hn.
Assume H1: R_ X n = 0.
Apply EmptyE 1 to the current goal.
We will prove 1 0.
rewrite the current goal using H1 (from right to left) at position 2.
An exact proof term for the current goal is R_1_In X n Hn.
We prove the intermediate claim L_R_dist: ∀X, ∀n, nat_p n∀w z, SNo_max_of (L_ X n) wSNo_min_of (R_ X n) zz = w + eps_ n.
Let X be given.
Apply nat_ind to the current goal.
Let w and z be given.
We will prove SNo_max_of (L_ X 0) wSNo_min_of (R_ X 0) zz = w + eps_ 0.
Apply L_0 X (λ_ v ⇒ SNo_max_of v wSNo_min_of (R_ X 0) zz = w + eps_ 0) to the current goal.
Assume Hw: SNo_max_of {0} w.
Apply R_0 X (λ_ v ⇒ SNo_min_of v zz = w + eps_ 0) to the current goal.
Assume Hz: SNo_min_of {1} z.
Apply Hw to the current goal.
Assume H.
Apply H to the current goal.
Assume Hw1: w {0}.
Assume _ _.
Apply Hz to the current goal.
Assume H.
Apply H to the current goal.
Assume Hz1: z {1}.
Assume _ _.
rewrite the current goal using SingE 0 w Hw1 (from left to right).
rewrite the current goal using SingE 1 z Hz1 (from left to right).
We will prove 1 = 0 + eps_ 0.
rewrite the current goal using eps_0_1 (from left to right).
Use symmetry.
An exact proof term for the current goal is add_SNo_0L 1 SNo_1.
Let n be given.
Assume Hn.
Assume IHn: ∀w z, SNo_max_of (L_ X n) wSNo_min_of (R_ X n) zz = w + eps_ n.
We prove the intermediate claim LSn: ordsucc n ω.
An exact proof term for the current goal is omega_ordsucc n (nat_p_omega n Hn).
We prove the intermediate claim Len: SNo (eps_ n).
An exact proof term for the current goal is SNo_eps_ n (nat_p_omega n Hn).
We prove the intermediate claim LeSn: SNo (eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_eps_ (ordsucc n) LSn.
We prove the intermediate claim LmeSn: SNo (- eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_minus_SNo (eps_ (ordsucc n)) LeSn.
Let w and z be given.
Apply xm (n X) to the current goal.
Assume H1: n X.
Apply L_ordsucc_pos X n (nat_p_omega n Hn) H1 (λ_ v ⇒ SNo_max_of v wSNo_min_of (R_ X (ordsucc n)) zz = w + eps_ (ordsucc n)) to the current goal.
Assume Hw: SNo_max_of (L_ X n {w + eps_ (ordsucc n)|wL_ X n}) w.
Apply R_ordsucc_pos X n (nat_p_omega n Hn) H1 (λ_ v ⇒ SNo_min_of v zz = w + eps_ (ordsucc n)) to the current goal.
Assume Hz: SNo_min_of (R_ X n) z.
Apply finite_max_exists (L_ X n) (L_SNo1 X n Hn) (L_fin X n Hn) (L_ne X n Hn) to the current goal.
Let w' be given.
Assume Hw': SNo_max_of (L_ X n) w'.
Apply Hw' to the current goal.
Assume H.
Apply H to the current goal.
Assume Hw'1: w' L_ X n.
Assume Hw'2: SNo w'.
Assume Hw'3: yL_ X n, SNo yy w'.
We prove the intermediate claim Lww': w = w' + eps_ (ordsucc n).
Apply Hw to the current goal.
Assume H.
Apply H to the current goal.
Assume Hw1: w L_ X n {w + eps_ (ordsucc n)|wL_ X n}.
Assume Hw2: SNo w.
Assume Hw3: yL_ X n {w + eps_ (ordsucc n)|wL_ X n}, SNo yy w.
Apply binunionE (L_ X n) {w + eps_ (ordsucc n)|wL_ X n} w Hw1 to the current goal.
Assume H2: w L_ X n.
We will prove False.
Apply SNoLt_irref w to the current goal.
We will prove w < w.
Apply SNoLtLe_tra w (w + eps_ (ordsucc n)) w Hw2 (SNo_add_SNo w (eps_ (ordsucc n)) Hw2 LeSn) Hw2 to the current goal.
We will prove w < w + eps_ (ordsucc n).
An exact proof term for the current goal is add_SNo_eps_Lt w Hw2 (ordsucc n) LSn.
We will prove w + eps_ (ordsucc n) w.
Apply Hw3 to the current goal.
We will prove w + eps_ (ordsucc n) L_ X n {w + eps_ (ordsucc n)|wL_ X n}.
Apply binunionI2 to the current goal.
We will prove w + eps_ (ordsucc n) {w + eps_ (ordsucc n)|wL_ X n}.
An exact proof term for the current goal is ReplI (L_ X n) (λw ⇒ w + eps_ (ordsucc n)) w H2.
We will prove SNo (w + eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_add_SNo w (eps_ (ordsucc n)) Hw2 LeSn.
Assume H2: w {w + eps_ (ordsucc n)|wL_ X n}.
Apply ReplE_impred (L_ X n) (λw ⇒ w + eps_ (ordsucc n)) w H2 to the current goal.
Let w'' be given.
Assume Hw'': w'' L_ X n.
Assume Hww'': w = w'' + eps_ (ordsucc n).
We will prove w = w' + eps_ (ordsucc n).
We prove the intermediate claim Lw'': SNo w''.
An exact proof term for the current goal is L_SNo1 X n Hn w'' Hw''.
Apply SNoLe_antisym w (w' + eps_ (ordsucc n)) Hw2 (SNo_add_SNo w' (eps_ (ordsucc n)) Hw'2 LeSn) to the current goal.
We will prove w w' + eps_ (ordsucc n).
rewrite the current goal using Hww'' (from left to right).
We will prove w'' + eps_ (ordsucc n) w' + eps_ (ordsucc n).
Apply add_SNo_Le1 w'' (eps_ (ordsucc n)) w' Lw'' LeSn Hw'2 to the current goal.
We will prove w'' w'.
Apply Hw'3 to the current goal.
We will prove w'' L_ X n.
An exact proof term for the current goal is Hw''.
We will prove SNo w''.
An exact proof term for the current goal is Lw''.
We will prove w' + eps_ (ordsucc n) w.
Apply Hw3 to the current goal.
We will prove w' + eps_ (ordsucc n) L_ X n {w + eps_ (ordsucc n)|wL_ X n}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is ReplI (L_ X n) (λw ⇒ w + eps_ (ordsucc n)) w' Hw'1.
We will prove SNo (w' + eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_add_SNo w' (eps_ (ordsucc n)) Hw'2 LeSn.
We will prove z = w + eps_ (ordsucc n).
Use transitivity with w' + eps_ n, w' + eps_ (ordsucc n) + eps_ (ordsucc n), and (w' + eps_ (ordsucc n)) + eps_ (ordsucc n).
We will prove z = w' + eps_ n.
An exact proof term for the current goal is IHn w' z Hw' Hz.
We will prove w' + eps_ n = w' + eps_ (ordsucc n) + eps_ (ordsucc n).
Use f_equal.
Use symmetry.
An exact proof term for the current goal is eps_ordsucc_half_add n Hn.
We will prove w' + eps_ (ordsucc n) + eps_ (ordsucc n) = (w' + eps_ (ordsucc n)) + eps_ (ordsucc n).
An exact proof term for the current goal is add_SNo_assoc w' (eps_ (ordsucc n)) (eps_ (ordsucc n)) Hw'2 LeSn LeSn.
We will prove (w' + eps_ (ordsucc n)) + eps_ (ordsucc n) = w + eps_ (ordsucc n).
Use f_equal.
Use symmetry.
An exact proof term for the current goal is Lww'.
Assume H1: n X.
Apply L_ordsucc_neg X n (nat_p_omega n Hn) H1 (λ_ v ⇒ SNo_max_of v wSNo_min_of (R_ X (ordsucc n)) zz = w + eps_ (ordsucc n)) to the current goal.
Assume Hw: SNo_max_of (L_ X n) w.
Apply R_ordsucc_neg X n (nat_p_omega n Hn) H1 (λ_ v ⇒ SNo_min_of v zz = w + eps_ (ordsucc n)) to the current goal.
Assume Hz: SNo_min_of (R_ X n {w + - eps_ (ordsucc n)|wR_ X n}) z.
Apply finite_min_exists (R_ X n) (R_SNo1 X n Hn) (R_fin X n Hn) (R_ne X n Hn) to the current goal.
Let z' be given.
Assume Hz': SNo_min_of (R_ X n) z'.
Apply Hz' to the current goal.
Assume H.
Apply H to the current goal.
Assume Hz'1: z' R_ X n.
Assume Hz'2: SNo z'.
Assume Hz'3: yR_ X n, SNo yz' y.
We prove the intermediate claim Lzz': z = z' + - eps_ (ordsucc n).
Apply Hz to the current goal.
Assume H.
Apply H to the current goal.
Assume Hz1: z R_ X n {z + - eps_ (ordsucc n)|zR_ X n}.
Assume Hz2: SNo z.
Assume Hz3: yR_ X n {z + - eps_ (ordsucc n)|zR_ X n}, SNo yz y.
Apply binunionE (R_ X n) {z + - eps_ (ordsucc n)|zR_ X n} z Hz1 to the current goal.
Assume H2: z R_ X n.
We will prove False.
Apply SNoLt_irref z to the current goal.
We will prove z < z.
Apply SNoLeLt_tra z (z + - eps_ (ordsucc n)) z Hz2 (SNo_add_SNo z (- eps_ (ordsucc n)) Hz2 LmeSn) Hz2 to the current goal.
We will prove z z + - eps_ (ordsucc n).
Apply Hz3 to the current goal.
We will prove z + - eps_ (ordsucc n) R_ X n {z + - eps_ (ordsucc n)|zR_ X n}.
Apply binunionI2 to the current goal.
We will prove z + - eps_ (ordsucc n) {z + - eps_ (ordsucc n)|zR_ X n}.
An exact proof term for the current goal is ReplI (R_ X n) (λz ⇒ z + - eps_ (ordsucc n)) z H2.
We will prove SNo (z + - eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_add_SNo z (- eps_ (ordsucc n)) Hz2 LmeSn.
We will prove z + - eps_ (ordsucc n) < z.
rewrite the current goal using add_SNo_0R z Hz2 (from right to left) at position 2.
We will prove z + - eps_ (ordsucc n) < z + 0.
Apply add_SNo_Lt2 z (- eps_ (ordsucc n)) 0 Hz2 LmeSn SNo_0 to the current goal.
We will prove - eps_ (ordsucc n) < 0.
rewrite the current goal using minus_SNo_0 (from right to left).
We will prove - eps_ (ordsucc n) < - 0.
An exact proof term for the current goal is minus_SNo_Lt_contra 0 (eps_ (ordsucc n)) SNo_0 LeSn (SNo_eps_pos (ordsucc n) (omega_ordsucc n (nat_p_omega n Hn))).
Assume H2: z {z + - eps_ (ordsucc n)|zR_ X n}.
Apply ReplE_impred (R_ X n) (λz ⇒ z + - eps_ (ordsucc n)) z H2 to the current goal.
Let z'' be given.
Assume Hz'': z'' R_ X n.
Assume Hzz'': z = z'' + - eps_ (ordsucc n).
We will prove z = z' + - eps_ (ordsucc n).
We prove the intermediate claim Lz'': SNo z''.
An exact proof term for the current goal is R_SNo1 X n Hn z'' Hz''.
Apply SNoLe_antisym z (z' + - eps_ (ordsucc n)) Hz2 (SNo_add_SNo z' (- eps_ (ordsucc n)) Hz'2 LmeSn) to the current goal.
We will prove z z' + - eps_ (ordsucc n).
Apply Hz3 to the current goal.
We will prove z' + - eps_ (ordsucc n) R_ X n {z + - eps_ (ordsucc n)|zR_ X n}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is ReplI (R_ X n) (λz ⇒ z + - eps_ (ordsucc n)) z' Hz'1.
We will prove SNo (z' + - eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_add_SNo z' (- eps_ (ordsucc n)) Hz'2 LmeSn.
We will prove z' + - eps_ (ordsucc n) z.
rewrite the current goal using Hzz'' (from left to right).
We will prove z' + - eps_ (ordsucc n) z'' + - eps_ (ordsucc n).
Apply add_SNo_Le1 z' (- eps_ (ordsucc n)) z'' Hz'2 LmeSn Lz'' to the current goal.
We will prove z' z''.
Apply Hz'3 to the current goal.
We will prove z'' R_ X n.
An exact proof term for the current goal is Hz''.
We will prove SNo z''.
An exact proof term for the current goal is Lz''.
Apply Hw to the current goal.
Assume H.
Apply H to the current goal.
Assume Hw1: w L_ X n.
Assume Hw2: SNo w.
Assume Hw3: yL_ X n, SNo yy w.
We will prove z = w + eps_ (ordsucc n).
Use transitivity with z' + - eps_ (ordsucc n), (w + eps_ n) + - eps_ (ordsucc n), and w + (eps_ n + - eps_ (ordsucc n)).
An exact proof term for the current goal is Lzz'.
Use f_equal.
An exact proof term for the current goal is IHn w z' Hw Hz'.
We will prove (w + eps_ n) + - eps_ (ordsucc n) = w + (eps_ n + - eps_ (ordsucc n)).
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc w (eps_ n) (- eps_ (ordsucc n)) Hw2 Len LmeSn.
Use f_equal.
We will prove eps_ n + - eps_ (ordsucc n) = eps_ (ordsucc n).
rewrite the current goal using eps_ordsucc_half_add n Hn (from right to left).
An exact proof term for the current goal is add_SNo_minus_R2 (eps_ (ordsucc n)) (eps_ (ordsucc n)) LeSn LeSn.
We prove the intermediate claim L_SNo: ∀X, ∀n, nat_p nL_ X n SNoS_ ω.
Let X be given.
Apply nat_ind to the current goal.
We will prove L_ X 0 SNoS_ ω.
Apply L_0 X (λ_ v ⇒ v SNoS_ ω) to the current goal.
We will prove {0} SNoS_ ω.
Let u be given.
Assume Hu.
rewrite the current goal using SingE 0 u Hu (from left to right).
We will prove 0 SNoS_ ω.
Apply SNoS_I ω omega_ordinal 0 0 (nat_p_omega 0 nat_0) to the current goal.
We will prove SNo_ 0 0.
An exact proof term for the current goal is ordinal_SNo_ Empty ordinal_Empty.
Let n be given.
Assume Hn.
Assume IHn: L_ X n SNoS_ ω.
We will prove L_ X (ordsucc n) SNoS_ ω.
Apply xm (n X) to the current goal.
Assume H1: n X.
Apply L_ordsucc_pos X n (nat_p_omega n Hn) H1 (λ_ v ⇒ v SNoS_ ω) to the current goal.
We will prove L_ X n {w + eps_ (ordsucc n)|wL_ X n} SNoS_ ω.
Apply binunion_Subq_min to the current goal.
An exact proof term for the current goal is IHn.
We will prove {w + eps_ (ordsucc n)|wL_ X n} SNoS_ ω.
Let u be given.
Assume Hu.
Apply ReplE_impred (L_ X n) (λw ⇒ w + eps_ (ordsucc n)) u Hu to the current goal.
Let w be given.
Assume Hw: w L_ X n.
Assume Huw: u = w + eps_ (ordsucc n).
rewrite the current goal using Huw (from left to right).
We will prove w + eps_ (ordsucc n) SNoS_ ω.
Apply add_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is IHn w Hw.
We will prove eps_ (ordsucc n) SNoS_ ω.
An exact proof term for the current goal is SNo_eps_SNoS_omega (ordsucc n) (omega_ordsucc n (nat_p_omega n Hn)).
Assume H1: n X.
Apply L_ordsucc_neg X n (nat_p_omega n Hn) H1 (λ_ v ⇒ v SNoS_ ω) to the current goal.
An exact proof term for the current goal is IHn.
We prove the intermediate claim R_SNo: ∀X, ∀n, nat_p nR_ X n SNoS_ ω.
Let X be given.
Apply nat_ind to the current goal.
We will prove R_ X 0 SNoS_ ω.
Apply R_0 X (λ_ v ⇒ v SNoS_ ω) to the current goal.
We will prove {1} SNoS_ ω.
Let u be given.
Assume Hu.
rewrite the current goal using SingE 1 u Hu (from left to right).
We will prove 1 SNoS_ ω.
Apply SNoS_I ω omega_ordinal 1 1 (nat_p_omega 1 nat_1) to the current goal.
We will prove SNo_ 1 1.
An exact proof term for the current goal is ordinal_SNo_ 1 (nat_p_ordinal 1 nat_1).
Let n be given.
Assume Hn.
Assume IHn: R_ X n SNoS_ ω.
We will prove R_ X (ordsucc n) SNoS_ ω.
Apply xm (n X) to the current goal.
Assume H1: n X.
Apply R_ordsucc_pos X n (nat_p_omega n Hn) H1 (λ_ v ⇒ v SNoS_ ω) to the current goal.
An exact proof term for the current goal is IHn.
Assume H1: n X.
Apply R_ordsucc_neg X n (nat_p_omega n Hn) H1 (λ_ v ⇒ v SNoS_ ω) to the current goal.
We will prove R_ X n {w + - eps_ (ordsucc n)|wR_ X n} SNoS_ ω.
Apply binunion_Subq_min to the current goal.
An exact proof term for the current goal is IHn.
We will prove {w + - eps_ (ordsucc n)|wR_ X n} SNoS_ ω.
Let u be given.
Assume Hu.
Apply ReplE_impred (R_ X n) (λw ⇒ w + - eps_ (ordsucc n)) u Hu to the current goal.
Let w be given.
Assume Hw: w R_ X n.
Assume Huw: u = w + - eps_ (ordsucc n).
rewrite the current goal using Huw (from left to right).
We will prove w + - eps_ (ordsucc n) SNoS_ ω.
Apply add_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is IHn w Hw.
We will prove - eps_ (ordsucc n) SNoS_ ω.
Apply minus_SNo_SNoS_omega to the current goal.
We will prove eps_ (ordsucc n) SNoS_ ω.
An exact proof term for the current goal is SNo_eps_SNoS_omega (ordsucc n) (omega_ordsucc n (nat_p_omega n Hn)).
Set L to be the term λX ⇒ nωL_ X n of type setset.
Set R to be the term λX ⇒ nωR_ X n of type setset.
We prove the intermediate claim LSo: ∀X, L X SNoS_ ω.
Let X and u be given.
Assume Hu: u nωL_ X n.
Apply famunionE_impred ω (L_ X) u Hu to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hu: u L_ X n.
We will prove u SNoS_ ω.
An exact proof term for the current goal is L_SNo X n (omega_nat_p n Hn) u Hu.
We prove the intermediate claim RSo: ∀X, R X SNoS_ ω.
Let X and u be given.
Assume Hu: u nωR_ X n.
Apply famunionE_impred ω (R_ X) u Hu to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hu: u R_ X n.
We will prove u SNoS_ ω.
An exact proof term for the current goal is R_SNo X n (omega_nat_p n Hn) u Hu.
We prove the intermediate claim LSNo: ∀X, wL X, SNo w.
Let X and w be given.
Assume Hw.
Apply famunionE_impred ω (L_ X) w Hw to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hw': w L_ X n.
An exact proof term for the current goal is L_SNo1 X n (omega_nat_p n Hn) w Hw'.
We prove the intermediate claim RSNo: ∀X, zR X, SNo z.
Let X and z be given.
Assume Hz.
Apply famunionE_impred ω (R_ X) z Hz to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hz': z R_ X n.
An exact proof term for the current goal is R_SNo1 X n (omega_nat_p n Hn) z Hz'.
We prove the intermediate claim LLR: ∀X, SNoCutP (L X) (R X).
Let X be given.
We will prove (wL X, SNo w) (zR X, SNo z) (wL X, zR X, w < z).
Apply and3I to the current goal.
An exact proof term for the current goal is LSNo X.
An exact proof term for the current goal is RSNo X.
Let w be given.
Assume Hw.
Let z be given.
Assume Hz.
We prove the intermediate claim Lw: SNo w.
An exact proof term for the current goal is LSNo X w Hw.
We prove the intermediate claim Lz: SNo z.
An exact proof term for the current goal is RSNo X z Hz.
We prove the intermediate claim Lwzn: ∀n, nat_p nw L_ X nz R_ X nw < z.
Let n be given.
Assume Hn.
Assume H1: w L_ X n.
Assume H2: z R_ X n.
We will prove w < z.
Apply finite_max_exists (L_ X n) (L_SNo1 X n Hn) (L_fin X n Hn) (L_ne X n Hn) to the current goal.
Let w' be given.
Assume Hw': SNo_max_of (L_ X n) w'.
Apply Hw' to the current goal.
Assume H.
Apply H to the current goal.
Assume Hw'1: w' L_ X n.
Assume Hw'2: SNo w'.
Assume Hw'3: yL_ X n, SNo yy w'.
Apply finite_min_exists (R_ X n) (R_SNo1 X n Hn) (R_fin X n Hn) (R_ne X n Hn) to the current goal.
Let z' be given.
Assume Hz': SNo_min_of (R_ X n) z'.
Apply Hz' to the current goal.
Assume H.
Apply H to the current goal.
Assume Hz'1: z' R_ X n.
Assume Hz'2: SNo z'.
Assume Hz'3: yR_ X n, SNo yz' y.
We will prove w < z.
Apply SNoLeLt_tra w w' z Lw Hw'2 Lz (Hw'3 w H1 Lw) to the current goal.
We will prove w' < z.
Apply SNoLtLe_tra w' z' z Hw'2 Hz'2 Lz to the current goal.
We will prove w' < z'.
rewrite the current goal using L_R_dist X n Hn w' z' Hw' Hz' (from left to right).
We will prove w' < w' + eps_ n.
An exact proof term for the current goal is add_SNo_eps_Lt w' Hw'2 n (nat_p_omega n Hn).
We will prove z' z.
An exact proof term for the current goal is Hz'3 z H2 Lz.
Apply famunionE_impred ω (L_ X) w Hw to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hw': w L_ X n.
Apply famunionE_impred ω (R_ X) z Hz to the current goal.
Let m be given.
Assume Hm: m ω.
Assume Hz': z R_ X m.
We will prove w < z.
Apply ordinal_trichotomy_or_impred m n (nat_p_ordinal m (omega_nat_p m Hm)) (nat_p_ordinal n (omega_nat_p n Hn)) to the current goal.
Assume H1: m n.
Apply Lwzn n (omega_nat_p n Hn) to the current goal.
We will prove w L_ X n.
An exact proof term for the current goal is Hw'.
We will prove z R_ X n.
An exact proof term for the current goal is R_Subq X n (omega_nat_p n Hn) m H1 z Hz'.
Assume H1: m = n.
Apply Lwzn n (omega_nat_p n Hn) to the current goal.
We will prove w L_ X n.
An exact proof term for the current goal is Hw'.
We will prove z R_ X n.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hz'.
Assume H1: n m.
Apply Lwzn m (omega_nat_p m Hm) to the current goal.
We will prove w L_ X m.
An exact proof term for the current goal is L_Subq X m (omega_nat_p m Hm) n H1 w Hw'.
We will prove z R_ X m.
An exact proof term for the current goal is Hz'.
We prove the intermediate claim L0_In: ∀X, 0 L X.
Let X be given.
We will prove 0 nωL_ X n.
Apply famunionI ω (L_ X) 0 0 to the current goal.
We will prove 0 ω.
Apply nat_p_omega to the current goal.
We will prove nat_p 0.
An exact proof term for the current goal is nat_0.
We will prove 0 L_ X 0.
An exact proof term for the current goal is L_0_In X 0 nat_0.
We prove the intermediate claim R1_In: ∀X, 1 R X.
Let X be given.
We will prove 1 nωR_ X n.
Apply famunionI ω (R_ X) 0 1 to the current goal.
We will prove 0 ω.
Apply nat_p_omega to the current goal.
We will prove nat_p 0.
An exact proof term for the current goal is nat_0.
We will prove 1 R_ X 0.
An exact proof term for the current goal is R_1_In X 0 nat_0.
We prove the intermediate claim Lne: ∀X, L X 0.
Let X be given.
Assume H1: L X = 0.
Apply EmptyE 0 to the current goal.
We will prove 0 0.
rewrite the current goal using H1 (from right to left) at position 2.
An exact proof term for the current goal is L0_In X.
We prove the intermediate claim Rne: ∀X, R X 0.
Let X be given.
Assume H1: R X = 0.
Apply EmptyE 1 to the current goal.
We will prove 1 0.
rewrite the current goal using H1 (from right to left) at position 2.
An exact proof term for the current goal is R1_In X.
We prove the intermediate claim L_nomax: Xω, infinite XwL X, w'L X, w < w'.
Let X be given.
Assume HX1 HX2.
Let w be given.
Assume Hw.
We prove the intermediate claim Lw: SNo w.
An exact proof term for the current goal is LSNo X w Hw.
Apply famunionE_impred ω (L_ X) w Hw to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hw': w L_ X n.
Apply infinite_bigger X HX1 HX2 n Hn to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m X.
Assume Hnm: n m.
We prove the intermediate claim Lwm: w L_ X m.
An exact proof term for the current goal is L_Subq X m (omega_nat_p m (HX1 m Hm)) n Hnm w Hw'.
We prove the intermediate claim LweSm1: w + eps_ (ordsucc m) L_ X m {w + eps_ (ordsucc m)|wL_ X m}.
Apply binunionI2 to the current goal.
We will prove w + eps_ (ordsucc m) {w + eps_ (ordsucc m)|wL_ X m}.
An exact proof term for the current goal is ReplI (L_ X m) (λw ⇒ w + eps_ (ordsucc m)) w Lwm.
We prove the intermediate claim LweSm2: w + eps_ (ordsucc m) L_ X (ordsucc m).
An exact proof term for the current goal is L_ordsucc_pos X m (HX1 m Hm) Hm (λ_ v ⇒ w + eps_ (ordsucc m) v) LweSm1.
We use (w + eps_ (ordsucc m)) to witness the existential quantifier.
Apply andI to the current goal.
We will prove w + eps_ (ordsucc m) L X.
We will prove w + eps_ (ordsucc m) nωL_ X n.
An exact proof term for the current goal is famunionI ω (L_ X) (ordsucc m) (w + eps_ (ordsucc m)) (omega_ordsucc m (HX1 m Hm)) LweSm2.
We will prove w < w + eps_ (ordsucc m).
An exact proof term for the current goal is add_SNo_eps_Lt w Lw (ordsucc m) (omega_ordsucc m (HX1 m Hm)).
We prove the intermediate claim R_nomin: Xω, infinite (ω X)zR X, z'R X, z' < z.
Let X be given.
Assume HX1 HX2.
Let z be given.
Assume Hz.
We prove the intermediate claim Lz: SNo z.
An exact proof term for the current goal is RSNo X z Hz.
Apply famunionE_impred ω (R_ X) z Hz to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hz': z R_ X n.
Apply infinite_bigger (ω X) (setminus_Subq ω X) HX2 n Hn to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m ω X.
Assume Hnm: n m.
Apply setminusE ω X m Hm to the current goal.
Assume Hm1: m ω.
Assume Hm2: m X.
We prove the intermediate claim Lzm: z R_ X m.
An exact proof term for the current goal is R_Subq X m (omega_nat_p m Hm1) n Hnm z Hz'.
We prove the intermediate claim LzmeSm1: z + - eps_ (ordsucc m) R_ X m {z + - eps_ (ordsucc m)|zR_ X m}.
Apply binunionI2 to the current goal.
We will prove z + - eps_ (ordsucc m) {z + - eps_ (ordsucc m)|zR_ X m}.
An exact proof term for the current goal is ReplI (R_ X m) (λz ⇒ z + - eps_ (ordsucc m)) z Lzm.
We prove the intermediate claim LzmeSm2: z + - eps_ (ordsucc m) R_ X (ordsucc m).
An exact proof term for the current goal is R_ordsucc_neg X m Hm1 Hm2 (λ_ v ⇒ z + - eps_ (ordsucc m) v) LzmeSm1.
We use (z + - eps_ (ordsucc m)) to witness the existential quantifier.
Apply andI to the current goal.
We will prove z + - eps_ (ordsucc m) R X.
We will prove z + - eps_ (ordsucc m) nωR_ X n.
An exact proof term for the current goal is famunionI ω (R_ X) (ordsucc m) (z + - eps_ (ordsucc m)) (omega_ordsucc m Hm1) LzmeSm2.
We will prove z + - eps_ (ordsucc m) < z.
rewrite the current goal using add_SNo_0R z Lz (from right to left) at position 2.
We will prove z + - eps_ (ordsucc m) < z + 0.
Apply add_SNo_Lt2 z (- eps_ (ordsucc m)) 0 Lz (SNo_minus_SNo (eps_ (ordsucc m)) (SNo_eps_ (ordsucc m) (omega_ordsucc m Hm1))) SNo_0 to the current goal.
We will prove - eps_ (ordsucc m) < 0.
rewrite the current goal using minus_SNo_0 (from right to left).
We will prove - eps_ (ordsucc m) < - 0.
An exact proof term for the current goal is minus_SNo_Lt_contra 0 (eps_ (ordsucc m)) SNo_0 (SNo_eps_ (ordsucc m) (omega_ordsucc m Hm1)) (SNo_eps_pos (ordsucc m) (omega_ordsucc m Hm1)).
We prove the intermediate claim L_R_real: Xω, infinite Xinfinite (ω X)SNoCut (L X) (R X) real.
Let X be given.
Assume HXo HXinf HXcoinf.
An exact proof term for the current goal is real_SNoCut_SNoS_omega (L X) (LSo X) (R X) (RSo X) (LLR X) (Lne X) (Rne X) (L_nomax X HXo HXinf) (R_nomin X HXo HXcoinf).
We prove the intermediate claim L_R_pos: ∀X, 0 < SNoCut (L X) (R X).
Let X be given.
Apply SNoCutP_SNoCut_impred (L X) (R X) (LLR X) to the current goal.
Assume HLR1: SNo (SNoCut (L X) (R X)).
Assume _.
Assume HLR3: wL X, w < SNoCut (L X) (R X).
Assume HLR4: zR X, SNoCut (L X) (R X) < z.
Assume _.
Apply HLR3 to the current goal.
An exact proof term for the current goal is L0_In X.
We prove the intermediate claim L_R_lt1: ∀X, SNoCut (L X) (R X) < 1.
Let X be given.
Apply SNoCutP_SNoCut_impred (L X) (R X) (LLR X) to the current goal.
Assume HLR1: SNo (SNoCut (L X) (R X)).
Assume _.
Assume HLR3: wL X, w < SNoCut (L X) (R X).
Assume HLR4: zR X, SNoCut (L X) (R X) < z.
Assume _.
Apply HLR4 to the current goal.
An exact proof term for the current goal is R1_In X.
We prove the intermediate claim L_R_inj: X Yω, SNoCut (L X) (R X) = SNoCut (L Y) (R Y)∀n, nat_p nL_ X n = L_ Y n R_ X n = R_ Y n (in, i X i Y).
Let X be given.
Assume HX.
Let Y be given.
Assume HY.
Assume HXY: SNoCut (L X) (R X) = SNoCut (L Y) (R Y).
We will prove ∀n, nat_p nL_ X n = L_ Y n R_ X n = R_ Y n (in, i X i Y).
Apply SNoCutP_SNoCut_impred (L X) (R X) (LLR X) to the current goal.
Assume HLRX1: SNo (SNoCut (L X) (R X)).
Assume HLRX2.
Assume HLRX3: wL X, w < SNoCut (L X) (R X).
Assume HLRX4: zR X, SNoCut (L X) (R X) < z.
Assume HLRX5.
Apply SNoCutP_SNoCut_impred (L Y) (R Y) (LLR Y) to the current goal.
Assume HLRY1: SNo (SNoCut (L Y) (R Y)).
Assume HLRY2.
Assume HLRY3: wL Y, w < SNoCut (L Y) (R Y).
Assume HLRY4: zR Y, SNoCut (L Y) (R Y) < z.
Assume HLRY5.
Apply nat_ind to the current goal.
We will prove L_ X 0 = L_ Y 0 R_ X 0 = R_ Y 0 (i0, i X i Y).
Apply and3I to the current goal.
We will prove L_ X 0 = L_ Y 0.
Use transitivity with and {0}.
An exact proof term for the current goal is L_0 X.
Use symmetry.
An exact proof term for the current goal is L_0 Y.
We will prove R_ X 0 = R_ Y 0.
Use transitivity with and {1}.
An exact proof term for the current goal is R_0 X.
Use symmetry.
An exact proof term for the current goal is R_0 Y.
Let i be given.
Assume Hi: i 0.
We will prove False.
An exact proof term for the current goal is EmptyE i Hi.
Let n be given.
Assume Hn.
Assume IHn.
Apply IHn to the current goal.
Assume H.
Apply H to the current goal.
Assume IHLn: L_ X n = L_ Y n.
Assume IHRn: R_ X n = R_ Y n.
Assume IHnXY: in, i X i Y.
We will prove L_ X (ordsucc n) = L_ Y (ordsucc n) R_ X (ordsucc n) = R_ Y (ordsucc n) (iordsucc n, i X i Y).
We prove the intermediate claim Ln: n ω.
An exact proof term for the current goal is nat_p_omega n Hn.
We prove the intermediate claim Len: SNo (eps_ n).
An exact proof term for the current goal is SNo_eps_ n Ln.
We prove the intermediate claim LSn: ordsucc n ω.
An exact proof term for the current goal is omega_ordsucc n Ln.
We prove the intermediate claim LeSn: SNo (eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_eps_ (ordsucc n) LSn.
Apply xm (n X) to the current goal.
Assume H1: n X.
Apply xm (n Y) to the current goal.
Assume H2: n Y.
Apply and3I to the current goal.
We will prove L_ X (ordsucc n) = L_ Y (ordsucc n).
Use transitivity with L_ X n {x + eps_ (ordsucc n)|xL_ X n}, and L_ Y n {x + eps_ (ordsucc n)|xL_ Y n}.
An exact proof term for the current goal is L_ordsucc_pos X n Ln H1.
We will prove L_ X n {x + eps_ (ordsucc n)|xL_ X n} = L_ Y n {x + eps_ (ordsucc n)|xL_ Y n}.
rewrite the current goal using IHLn (from left to right).
Use reflexivity.
Use symmetry.
An exact proof term for the current goal is L_ordsucc_pos Y n Ln H2.
We will prove R_ X (ordsucc n) = R_ Y (ordsucc n).
Use transitivity with R_ X n, and R_ Y n.
An exact proof term for the current goal is R_ordsucc_pos X n Ln H1.
We will prove R_ X n = R_ Y n.
An exact proof term for the current goal is IHRn.
Use symmetry.
An exact proof term for the current goal is R_ordsucc_pos Y n Ln H2.
Let i be given.
Assume Hi: i ordsucc n.
Apply ordsuccE n i Hi to the current goal.
Assume Hi': i n.
An exact proof term for the current goal is IHnXY i Hi'.
Assume Hi': i = n.
rewrite the current goal using Hi' (from left to right).
We will prove n X n Y.
Apply iffI to the current goal.
Assume _.
An exact proof term for the current goal is H2.
Assume _.
An exact proof term for the current goal is H1.
Assume H2: n Y.
We will prove False.
Apply finite_max_exists (L_ X n) (L_SNo1 X n Hn) (L_fin X n Hn) (L_ne X n Hn) to the current goal.
Let w be given.
Assume Hw: SNo_max_of (L_ X n) w.
Apply Hw to the current goal.
Assume H.
Apply H to the current goal.
Assume Hw1: w L_ X n.
Assume Hw2: SNo w.
Assume Hw3: yL_ X n, SNo yy w.
Apply finite_min_exists (R_ X n) (R_SNo1 X n Hn) (R_fin X n Hn) (R_ne X n Hn) to the current goal.
Let z be given.
Assume Hz: SNo_min_of (R_ X n) z.
Apply Hz to the current goal.
Assume H.
Apply H to the current goal.
Assume Hz1: z R_ X n.
Assume Hz2: SNo z.
Assume Hz3: yR_ X n, SNo yz y.
We prove the intermediate claim LweSn: SNo (w + eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_add_SNo w (eps_ (ordsucc n)) Hw2 LeSn.
Apply SNoLt_irref (w + eps_ (ordsucc n)) to the current goal.
We will prove w + eps_ (ordsucc n) < w + eps_ (ordsucc n).
Apply SNoLt_tra (w + eps_ (ordsucc n)) (SNoCut (L X) (R X)) (w + eps_ (ordsucc n)) ?? ?? ?? to the current goal.
We will prove w + eps_ (ordsucc n) < SNoCut (L X) (R X).
Apply HLRX3 to the current goal.
We will prove w + eps_ (ordsucc n) L X.
We will prove w + eps_ (ordsucc n) nωL_ X n.
Apply famunionI ω (L_ X) (ordsucc n) (w + eps_ (ordsucc n)) LSn to the current goal.
We will prove w + eps_ (ordsucc n) L_ X (ordsucc n).
We prove the intermediate claim LwLSn: w + eps_ (ordsucc n) L_ X n {x + eps_ (ordsucc n)|xL_ X n}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is ReplI (L_ X n) (λx ⇒ x + eps_ (ordsucc n)) w Hw1.
An exact proof term for the current goal is L_ordsucc_pos X n Ln H1 (λ_ u ⇒ w + eps_ (ordsucc n) u) LwLSn.
We will prove SNoCut (L X) (R X) < w + eps_ (ordsucc n).
rewrite the current goal using HXY (from left to right).
We will prove SNoCut (L Y) (R Y) < w + eps_ (ordsucc n).
Apply HLRY4 to the current goal.
We will prove w + eps_ (ordsucc n) R Y.
We will prove w + eps_ (ordsucc n) nωR_ Y n.
Apply famunionI ω (R_ Y) (ordsucc n) (w + eps_ (ordsucc n)) LSn to the current goal.
We will prove w + eps_ (ordsucc n) R_ Y (ordsucc n).
We prove the intermediate claim Lwz: w + eps_ (ordsucc n) = z + - eps_ (ordsucc n).
rewrite the current goal using L_R_dist X n Hn w z Hw Hz (from left to right).
We will prove w + eps_ (ordsucc n) = (w + eps_ n) + - eps_ (ordsucc n).
rewrite the current goal using eps_ordsucc_half_add n Hn (from right to left).
We will prove w + eps_ (ordsucc n) = (w + eps_ (ordsucc n) + eps_ (ordsucc n)) + - eps_ (ordsucc n).
rewrite the current goal using add_SNo_assoc w (eps_ (ordsucc n)) (eps_ (ordsucc n)) Hw2 LeSn LeSn (from left to right).
We will prove w + eps_ (ordsucc n) = ((w + eps_ (ordsucc n)) + eps_ (ordsucc n)) + - eps_ (ordsucc n).
Use symmetry.
An exact proof term for the current goal is add_SNo_minus_R2 (w + eps_ (ordsucc n)) (eps_ (ordsucc n)) LweSn LeSn.
rewrite the current goal using Lwz (from left to right).
We will prove z + - eps_ (ordsucc n) R_ Y (ordsucc n).
We prove the intermediate claim Lz1: z R_ Y n.
rewrite the current goal using IHRn (from right to left).
An exact proof term for the current goal is Hz1.
We prove the intermediate claim LzRSn: z + - eps_ (ordsucc n) R_ Y n {x + - eps_ (ordsucc n)|xR_ Y n}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is ReplI (R_ Y n) (λx ⇒ x + - eps_ (ordsucc n)) z Lz1.
An exact proof term for the current goal is R_ordsucc_neg Y n Ln H2 (λ_ u ⇒ z + - eps_ (ordsucc n) u) LzRSn.
Assume H1: n X.
Apply xm (n Y) to the current goal.
Assume H2: n Y.
We will prove False.
Apply finite_max_exists (L_ X n) (L_SNo1 X n Hn) (L_fin X n Hn) (L_ne X n Hn) to the current goal.
Let w be given.
Assume Hw: SNo_max_of (L_ X n) w.
Apply Hw to the current goal.
Assume H.
Apply H to the current goal.
Assume Hw1: w L_ X n.
Assume Hw2: SNo w.
Assume Hw3: yL_ X n, SNo yy w.
Apply finite_min_exists (R_ X n) (R_SNo1 X n Hn) (R_fin X n Hn) (R_ne X n Hn) to the current goal.
Let z be given.
Assume Hz: SNo_min_of (R_ X n) z.
Apply Hz to the current goal.
Assume H.
Apply H to the current goal.
Assume Hz1: z R_ X n.
Assume Hz2: SNo z.
Assume Hz3: yR_ X n, SNo yz y.
We prove the intermediate claim LweSn: SNo (w + eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_add_SNo w (eps_ (ordsucc n)) Hw2 LeSn.
Apply SNoLt_irref (w + eps_ (ordsucc n)) to the current goal.
We will prove w + eps_ (ordsucc n) < w + eps_ (ordsucc n).
Apply SNoLt_tra (w + eps_ (ordsucc n)) (SNoCut (L X) (R X)) (w + eps_ (ordsucc n)) ?? ?? ?? to the current goal.
We will prove w + eps_ (ordsucc n) < SNoCut (L X) (R X).
rewrite the current goal using HXY (from left to right).
We will prove w + eps_ (ordsucc n) < SNoCut (L Y) (R Y).
Apply HLRY3 to the current goal.
We will prove w + eps_ (ordsucc n) L Y.
We will prove w + eps_ (ordsucc n) nωL_ Y n.
Apply famunionI ω (L_ Y) (ordsucc n) (w + eps_ (ordsucc n)) LSn to the current goal.
We will prove w + eps_ (ordsucc n) L_ Y (ordsucc n).
We prove the intermediate claim Lw1: w L_ Y n.
rewrite the current goal using IHLn (from right to left).
An exact proof term for the current goal is Hw1.
We prove the intermediate claim LwLSn: w + eps_ (ordsucc n) L_ Y n {x + eps_ (ordsucc n)|xL_ Y n}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is ReplI (L_ Y n) (λx ⇒ x + eps_ (ordsucc n)) w Lw1.
An exact proof term for the current goal is L_ordsucc_pos Y n Ln H2 (λ_ u ⇒ w + eps_ (ordsucc n) u) LwLSn.
We will prove SNoCut (L X) (R X) < w + eps_ (ordsucc n).
Apply HLRX4 to the current goal.
We will prove w + eps_ (ordsucc n) R X.
We will prove w + eps_ (ordsucc n) nωR_ X n.
Apply famunionI ω (R_ X) (ordsucc n) (w + eps_ (ordsucc n)) LSn to the current goal.
We will prove w + eps_ (ordsucc n) R_ X (ordsucc n).
We prove the intermediate claim Lwz: w + eps_ (ordsucc n) = z + - eps_ (ordsucc n).
rewrite the current goal using L_R_dist X n Hn w z Hw Hz (from left to right).
We will prove w + eps_ (ordsucc n) = (w + eps_ n) + - eps_ (ordsucc n).
rewrite the current goal using eps_ordsucc_half_add n Hn (from right to left).
We will prove w + eps_ (ordsucc n) = (w + eps_ (ordsucc n) + eps_ (ordsucc n)) + - eps_ (ordsucc n).
rewrite the current goal using add_SNo_assoc w (eps_ (ordsucc n)) (eps_ (ordsucc n)) Hw2 LeSn LeSn (from left to right).
We will prove w + eps_ (ordsucc n) = ((w + eps_ (ordsucc n)) + eps_ (ordsucc n)) + - eps_ (ordsucc n).
Use symmetry.
An exact proof term for the current goal is add_SNo_minus_R2 (w + eps_ (ordsucc n)) (eps_ (ordsucc n)) LweSn LeSn.
rewrite the current goal using Lwz (from left to right).
We will prove z + - eps_ (ordsucc n) R_ X (ordsucc n).
We prove the intermediate claim LzRSn: z + - eps_ (ordsucc n) R_ X n {x + - eps_ (ordsucc n)|xR_ X n}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is ReplI (R_ X n) (λx ⇒ x + - eps_ (ordsucc n)) z Hz1.
An exact proof term for the current goal is R_ordsucc_neg X n Ln H1 (λ_ u ⇒ z + - eps_ (ordsucc n) u) LzRSn.
Assume H2: n Y.
Apply and3I to the current goal.
We will prove L_ X (ordsucc n) = L_ Y (ordsucc n).
Use transitivity with L_ X n, and L_ Y n.
An exact proof term for the current goal is L_ordsucc_neg X n Ln H1.
We will prove L_ X n = L_ Y n.
An exact proof term for the current goal is IHLn.
Use symmetry.
An exact proof term for the current goal is L_ordsucc_neg Y n Ln H2.
We will prove R_ X (ordsucc n) = R_ Y (ordsucc n).
Use transitivity with R_ X n {x + - eps_ (ordsucc n)|xR_ X n}, and R_ Y n {x + - eps_ (ordsucc n)|xR_ Y n}.
An exact proof term for the current goal is R_ordsucc_neg X n Ln H1.
rewrite the current goal using IHRn (from left to right).
Use reflexivity.
Use symmetry.
An exact proof term for the current goal is R_ordsucc_neg Y n Ln H2.
Let i be given.
Assume Hi: i ordsucc n.
Apply ordsuccE n i Hi to the current goal.
Assume Hi': i n.
An exact proof term for the current goal is IHnXY i Hi'.
Assume Hi': i = n.
rewrite the current goal using Hi' (from left to right).
We will prove n X n Y.
Apply iffI to the current goal.
Assume H3.
We will prove False.
An exact proof term for the current goal is H1 H3.
Assume H4.
We will prove False.
An exact proof term for the current goal is H2 H4.
Set s to be the term λX ⇒ {0} {ordsucc n|nX} of type setset.
We prove the intermediate claim Ls: X𝒫 ω, s X 𝒫 ω.
Let X be given.
Assume HX.
Apply PowerI to the current goal.
We will prove {0} {ordsucc n|nX} ω.
Apply binunion_Subq_min to the current goal.
We will prove {0} ω.
Let u be given.
Assume Hu: u {0}.
rewrite the current goal using SingE 0 u Hu (from left to right).
We will prove 0 ω.
An exact proof term for the current goal is nat_p_omega 0 nat_0.
We will prove {ordsucc n|nX} ω.
Let u be given.
Assume Hu.
Apply ReplE_impred X ordsucc u Hu to the current goal.
Let n be given.
Assume Hn: n X.
Assume Hun: u = ordsucc n.
rewrite the current goal using Hun (from left to right).
Apply omega_ordsucc n to the current goal.
We will prove n ω.
An exact proof term for the current goal is PowerE ω X HX n Hn.
We prove the intermediate claim Lsinj: ∀X Y, s X = s YX = Y.
Let X and Y be given.
Assume HXY: s X = s Y.
Apply set_ext to the current goal.
Let u be given.
Assume Hu: u X.
We prove the intermediate claim LSu: ordsucc u s Y.
rewrite the current goal using HXY (from right to left).
We will prove ordsucc u {0} {ordsucc n|nX}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is ReplI X ordsucc u Hu.
Apply binunionE {0} {ordsucc n|nY} (ordsucc u) LSu to the current goal.
Assume H1: ordsucc u {0}.
We will prove False.
Apply neq_ordsucc_0 u to the current goal.
An exact proof term for the current goal is SingE 0 (ordsucc u) H1.
Assume H1: ordsucc u {ordsucc n|nY}.
Apply ReplE_impred Y ordsucc (ordsucc u) H1 to the current goal.
Let n be given.
Assume Hn: n Y.
Assume HSun: ordsucc u = ordsucc n.
We will prove u Y.
rewrite the current goal using ordsucc_inj u n HSun (from left to right).
An exact proof term for the current goal is Hn.
Let u be given.
Assume Hu: u Y.
We prove the intermediate claim LSu: ordsucc u s X.
rewrite the current goal using HXY (from left to right).
We will prove ordsucc u {0} {ordsucc n|nY}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is ReplI Y ordsucc u Hu.
Apply binunionE {0} {ordsucc n|nX} (ordsucc u) LSu to the current goal.
Assume H1: ordsucc u {0}.
We will prove False.
Apply neq_ordsucc_0 u to the current goal.
An exact proof term for the current goal is SingE 0 (ordsucc u) H1.
Assume H1: ordsucc u {ordsucc n|nX}.
Apply ReplE_impred X ordsucc (ordsucc u) H1 to the current goal.
Let n be given.
Assume Hn: n X.
Assume HSun: ordsucc u = ordsucc n.
We will prove u X.
rewrite the current goal using ordsucc_inj u n HSun (from left to right).
An exact proof term for the current goal is Hn.
We prove the intermediate claim Ls0: ∀X, 0 s X.
Let X be given.
An exact proof term for the current goal is binunionI1 {0} {ordsucc n|nX} 0 (SingI 0).
We prove the intermediate claim Lsfin: ∀X, finite Xfinite (s X).
Let X be given.
Assume HX.
We will prove finite ({0} {ordsucc n|nX}).
Apply binunion_finite to the current goal.
Apply Sing_finite to the current goal.
Apply Repl_finite to the current goal.
An exact proof term for the current goal is HX.
Set h to be the term λX ⇒ X iX{n '|ni, n X} of type setset.
We prove the intermediate claim Lh0: h 0 = 0.
We will prove 0 (i0{n '|ni, n 0}) = 0.
rewrite the current goal using famunion_Empty (λi ⇒ {n '|ni, n 0}) (from left to right).
We will prove 0 0 = 0.
An exact proof term for the current goal is binunion_idl 0.
We prove the intermediate claim LhSa: X𝒫 ω, ∀α, ordinal αX α(nα, ¬ (X n))SNo_ α (h X).
Let X be given.
Assume HX: X 𝒫 ω.
Let α be given.
Assume Ha1: ordinal α.
Assume Ha2: X α.
Assume Ha3: nα, ¬ (X n).
Apply Ha1 to the current goal.
Assume Ha1a Ha1b.
We will prove SNo_ α (h X).
We will prove h X SNoElts_ α nα, exactly1of2 (n ' h X) (n h X).
Apply andI to the current goal.
Let u be given.
Assume Hu: u h X.
We will prove u SNoElts_ α.
Apply binunionE X (iX{n '|ni, n X}) u Hu to the current goal.
Assume H1: u X.
We will prove u α {n '|nα}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Ha2 u H1.
Assume H1: u iX{n '|ni, n X}.
We will prove u α {n '|nα}.
Apply binunionI2 to the current goal.
We will prove u {n '|nα}.
Apply famunionE_impred X (λi ⇒ {n '|ni, n X}) u H1 to the current goal.
Let i be given.
Assume Hi: i X.
Assume H2: u {n '|ni, n X}.
Apply ReplSepE_impred i (λn ⇒ n X) (λn ⇒ n ') u H2 to the current goal.
Let n be given.
Assume Hn: n i.
Assume H3: n X.
Assume H4: u = n '.
We will prove u {n '|nα}.
rewrite the current goal using H4 (from left to right).
We prove the intermediate claim Lna: n α.
An exact proof term for the current goal is Ha1a i (Ha2 i Hi) n Hn.
An exact proof term for the current goal is ReplI α (λn ⇒ n ') n Lna.
Let n be given.
Assume Hn: n α.
We will prove exactly1of2 (n ' h X) (n h X).
We prove the intermediate claim Lno: ordinal n.
An exact proof term for the current goal is ordinal_Hered α Ha1 n Hn.
Apply xm (n X) to the current goal.
Assume H1: n X.
Apply exactly1of2_I2 to the current goal.
We will prove n ' h X.
Assume H2: n ' X iX{n '|ni, n X}.
Apply binunionE X (iX{n '|ni, n X}) (n ') H2 to the current goal.
Assume H3: n ' X.
Apply tagged_not_ordinal n to the current goal.
We will prove ordinal (n ').
Apply ordinal_Hered α Ha1 (n ') to the current goal.
We will prove n ' α.
An exact proof term for the current goal is Ha2 (n ') H3.
Assume H3: n ' iX{n '|ni, n X}.
Apply famunionE_impred X (λi ⇒ {n '|ni, n X}) (n ') H3 to the current goal.
Let i be given.
Assume Hi: i X.
Assume H4: n ' {n '|ni, n X}.
Apply ReplSepE_impred i (λn ⇒ n X) (λn ⇒ n ') (n ') H4 to the current goal.
Let m be given.
Assume Hm: m i.
Assume H5: m X.
Assume H6: n ' = m '.
Apply H5 to the current goal.
We prove the intermediate claim Lmo: ordinal m.
Apply ordinal_Hered α Ha1 m to the current goal.
We will prove m α.
An exact proof term for the current goal is Ha1a i (Ha2 i Hi) m Hm.
rewrite the current goal using tagged_eqE_eq n m Lno Lmo H6 (from right to left).
An exact proof term for the current goal is H1.
We will prove n h X.
We will prove n X iX{n '|ni, n X}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is H1.
Assume H1: n X.
Apply exactly1of2_I1 to the current goal.
We will prove n ' h X.
We will prove n ' X iX{n '|ni, n X}.
Apply binunionI2 to the current goal.
We will prove n ' iX{n '|ni, n X}.
Apply xm (iX, n i) to the current goal.
Assume H3: iX, n i.
Apply H3 to the current goal.
Let i be given.
Assume H.
Apply H to the current goal.
Assume Hi: i X.
Assume Hni: n i.
We prove the intermediate claim Ln': n ' {n '|ni, n X}.
An exact proof term for the current goal is ReplSepI i (λn ⇒ n X) (λn ⇒ n ') n Hni H1.
An exact proof term for the current goal is famunionI X (λi ⇒ {n '|ni, n X}) i (n ') Hi Ln'.
Assume H3: ¬ iX, n i.
We will prove False.
Apply Ha3 n Hn to the current goal.
We will prove X n.
Let i be given.
Assume Hi: i X.
We will prove i n.
We prove the intermediate claim Lio: ordinal i.
An exact proof term for the current goal is ordinal_Hered α Ha1 i (Ha2 i Hi).
Apply ordinal_trichotomy_or_impred i n Lio Lno to the current goal.
Assume H4: i n.
An exact proof term for the current goal is H4.
Assume H4: i = n.
We will prove False.
Apply H1 to the current goal.
We will prove n X.
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is Hi.
Assume H4: n i.
We will prove False.
Apply H3 to the current goal.
We use i to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hi.
An exact proof term for the current goal is H4.
We will prove n h X.
Assume H2: n X iX{n '|ni, n X}.
Apply binunionE X (iX{n '|ni, n X}) n H2 to the current goal.
Assume H3: n X.
We will prove False.
An exact proof term for the current goal is H1 H3.
Assume H3: n iX{n '|ni, n X}.
Apply famunionE_impred X (λi ⇒ {n '|ni, n X}) n H3 to the current goal.
Let i be given.
Assume Hi: i X.
Assume H4: n {n '|ni, n X}.
Apply ReplSepE_impred i (λn ⇒ n X) (λn ⇒ n ') n H4 to the current goal.
Let m be given.
Assume Hm: m i.
Assume H5: m X.
Assume H6: n = m '.
We will prove False.
Apply tagged_not_ordinal m to the current goal.
We will prove ordinal (m ').
rewrite the current goal using H6 (from right to left).
An exact proof term for the current goal is Lno.
We prove the intermediate claim LhS: X𝒫 ω, SNo (h X).
Let X be given.
Assume HX: X 𝒫 ω.
We prove the intermediate claim LhS': α, ordinal α X α.
We use ω to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is omega_ordinal.
We will prove X ω.
Apply PowerE to the current goal.
An exact proof term for the current goal is HX.
Apply least_ordinal_ex (λα ⇒ X α) LhS' to the current goal.
Let α be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Ha1: ordinal α.
Assume Ha2: X α.
Assume Ha3: nα, ¬ (X n).
Apply SNo_SNo α Ha1 (h X) to the current goal.
We will prove SNo_ α (h X).
An exact proof term for the current goal is LhSa X HX α Ha1 Ha2 Ha3.
We prove the intermediate claim Lh: X𝒫 ω, finite Xh X SNoS_ ω.
Let X be given.
Assume HX: X 𝒫 ω.
Assume HXfin: finite X.
We will prove h X SNoS_ ω.
Apply xm (X = 0) to the current goal.
Assume H1: X = 0.
rewrite the current goal using H1 (from left to right).
We will prove h 0 SNoS_ ω.
rewrite the current goal using Lh0 (from left to right).
We will prove 0 SNoS_ ω.
Apply SNoS_I ω omega_ordinal 0 0 (nat_p_omega 0 nat_0) to the current goal.
We will prove SNo_ 0 0.
An exact proof term for the current goal is ordinal_SNo_ Empty ordinal_Empty.
Assume H1: X 0.
We prove the intermediate claim LXS: xX, SNo x.
Let x be given.
Assume Hx.
Apply nat_p_SNo to the current goal.
Apply omega_nat_p to the current goal.
We will prove x ω.
An exact proof term for the current goal is PowerE ω X HX x Hx.
Apply finite_max_exists X LXS HXfin H1 to the current goal.
Let n be given.
Assume Hn: SNo_max_of X n.
Apply Hn to the current goal.
Assume H.
Apply H to the current goal.
Assume Hn1: n X.
Assume Hn2: SNo n.
Assume Hn3: xX, SNo xx n.
We prove the intermediate claim Ln: n ω.
An exact proof term for the current goal is PowerE ω X HX n Hn1.
We prove the intermediate claim Lno: ordinal n.
Apply nat_p_ordinal to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Ln.
We prove the intermediate claim LSn: ordsucc n ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Ln.
We prove the intermediate claim LSno: ordinal (ordsucc n).
Apply nat_p_ordinal to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is LSn.
We prove the intermediate claim LSnhX: SNo_ (ordsucc n) (h X).
Apply LhSa X HX (ordsucc n) LSno to the current goal.
We will prove X ordsucc n.
Let i be given.
Assume Hi: i X.
We prove the intermediate claim Lio: ordinal i.
An exact proof term for the current goal is ordinal_Hered ω omega_ordinal i (PowerE ω X HX i Hi).
We prove the intermediate claim LiS: SNo i.
An exact proof term for the current goal is ordinal_SNo i Lio.
Apply ordinal_In_Or_Subq i (ordsucc n) Lio LSno to the current goal.
Assume H2: i ordsucc n.
An exact proof term for the current goal is H2.
Assume H2: ordsucc n i.
We will prove False.
Apply SNoLt_irref i to the current goal.
We will prove i < i.
Apply SNoLeLt_tra i n i LiS Hn2 LiS (Hn3 i Hi LiS) to the current goal.
We will prove n < i.
Apply SNoLtLe_tra n (ordsucc n) i (ordinal_SNo n Lno) (ordinal_SNo (ordsucc n) LSno) LiS to the current goal.
We will prove n < ordsucc n.
An exact proof term for the current goal is ordinal_In_SNoLt (ordsucc n) LSno n (ordsuccI2 n).
We will prove ordsucc n i.
An exact proof term for the current goal is ordinal_Subq_SNoLe (ordsucc n) i LSno Lio H2.
We will prove mordsucc n, ¬ (X m).
Let m be given.
Assume Hm.
Assume H2: X m.
Apply ordsuccE n m Hm to the current goal.
Assume H3: m n.
An exact proof term for the current goal is In_no2cycle m n H3 (H2 n Hn1).
Assume H3: m = n.
Apply In_irref n to the current goal.
rewrite the current goal using H3 (from right to left) at position 2.
We will prove n m.
An exact proof term for the current goal is H2 n Hn1.
We will prove h X SNoS_ ω.
An exact proof term for the current goal is SNoS_I ω omega_ordinal (h X) (ordsucc n) LSn LSnhX.
We prove the intermediate claim Lh0pos: X𝒫 ω, 0 X0 < h X.
Let X be given.
Assume HX HX0.
We will prove 0 < h X.
We prove the intermediate claim L0hX: 0 h X.
We will prove 0 X iX{n '|ni, n X}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is HX0.
Apply SNoLtI2 0 (h X) to the current goal.
We will prove SNoLev 0 SNoLev (h X).
rewrite the current goal using SNoLev_0 (from left to right).
We will prove 0 SNoLev (h X).
Apply SNoLev_ (h X) (LhS X HX) to the current goal.
Assume H1: h X SNoElts_ (SNoLev (h X)).
Assume _.
Apply binunionE (SNoLev (h X)) {β '|βSNoLev (h X)} 0 (H1 0 L0hX) to the current goal.
Assume H2: 0 SNoLev (h X).
An exact proof term for the current goal is H2.
Assume H2: 0 {β '|βSNoLev (h X)}.
We will prove False.
Apply ReplE_impred (SNoLev (h X)) (λβ ⇒ β ') 0 H2 to the current goal.
Let β be given.
Assume Hb1: β SNoLev (h X).
Assume Hb2: 0 = β '.
Apply tagged_not_ordinal β to the current goal.
We will prove ordinal (β ').
rewrite the current goal using Hb2 (from right to left).
An exact proof term for the current goal is ordinal_Empty.
We will prove SNoEq_ (SNoLev 0) 0 (h X).
rewrite the current goal using SNoLev_0 (from left to right).
Let i be given.
Assume Hi: i 0.
We will prove False.
An exact proof term for the current goal is EmptyE i Hi.
We will prove SNoLev 0 h X.
rewrite the current goal using SNoLev_0 (from left to right).
An exact proof term for the current goal is L0hX.
We prove the intermediate claim Lhinj1: X Y𝒫 ω, h X = h YX Y.
Let X be given.
Assume HX.
Let Y be given.
Assume HY HXY.
Let x be given.
Assume Hx: x X.
We prove the intermediate claim Lxo: ordinal x.
An exact proof term for the current goal is nat_p_ordinal x (omega_nat_p x (PowerE ω X HX x Hx)).
We prove the intermediate claim LxhY: x h Y.
rewrite the current goal using HXY (from right to left).
We will prove x X iX{n '|ni, n X}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hx.
Apply binunionE Y (iY{n '|ni, n Y}) x LxhY to the current goal.
Assume H1: x Y.
An exact proof term for the current goal is H1.
Assume H1: x iY{n '|ni, n Y}.
Apply famunionE_impred Y (λi ⇒ {n '|ni, n Y}) x H1 to the current goal.
Let i be given.
Assume Hi: i Y.
Assume H2: x {n '|ni, n Y}.
Apply ReplSepE_impred i (λn ⇒ n Y) (λn ⇒ n ') x H2 to the current goal.
Let m be given.
Assume Hm: m i.
Assume H3: m Y.
Assume H4: x = m '.
We will prove False.
Apply tagged_not_ordinal m to the current goal.
We will prove ordinal (m ').
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is Lxo.
We prove the intermediate claim Lhinj: X Y𝒫 ω, h X = h YX = Y.
Let X be given.
Assume HX.
Let Y be given.
Assume HY HXY.
Apply set_ext to the current goal.
An exact proof term for the current goal is Lhinj1 X HX Y HY HXY.
An exact proof term for the current goal is Lhinj1 Y HY X HX (λq ⇒ HXY (λx y ⇒ q y x)).
Set g to be the term λX ⇒ if finite X then h (s X) + 1 else if finite (ω X) then - h (s (ω X)) else SNoCut (L X) (R X) of type setset.
We will prove g : setset, inj (𝒫 ω) real g.
We use g to witness the existential quantifier.
We will prove (u𝒫 ω, g u real) (u v𝒫 ω, g u = g vu = v).
Apply andI to the current goal.
Let X be given.
Assume HX: X 𝒫 ω.
Apply xm (finite X) to the current goal.
Assume H1: finite X.
We will prove (if finite X then h (s X) + 1 else if finite (ω X) then - h (s (ω X)) else SNoCut (L X) (R X)) real.
We prove the intermediate claim LhsX: h (s X) + 1 real.
Apply real_add_SNo to the current goal.
Apply SNoS_omega_real to the current goal.
Apply Lh to the current goal.
We will prove s X 𝒫 ω.
Apply Ls to the current goal.
An exact proof term for the current goal is HX.
We will prove finite (s X).
Apply Lsfin to the current goal.
An exact proof term for the current goal is H1.
We will prove 1 real.
Apply SNoS_omega_real to the current goal.
Apply omega_SNoS_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
An exact proof term for the current goal is If_i_1 (finite X) (h (s X) + 1) (if finite (ω X) then - h (s (ω X)) else SNoCut (L X) (R X)) H1 (λ_ u ⇒ u real) LhsX.
Assume H1: infinite X.
Apply xm (finite (ω X)) to the current goal.
Assume H2: finite (ω X).
We prove the intermediate claim LmhsX: - h (s (ω X)) real.
Apply real_minus_SNo to the current goal.
Apply SNoS_omega_real to the current goal.
Apply Lh to the current goal.
We will prove s (ω X) 𝒫 ω.
Apply Ls to the current goal.
Apply PowerI to the current goal.
An exact proof term for the current goal is setminus_Subq ω X.
We will prove finite (s (ω X)).
Apply Lsfin to the current goal.
An exact proof term for the current goal is H2.
We prove the intermediate claim LmhsX': (if finite (ω X) then - h (s (ω X)) else SNoCut (L X) (R X)) real.
An exact proof term for the current goal is If_i_1 (finite (ω X)) (- h (s (ω X))) (SNoCut (L X) (R X)) H2 (λ_ u ⇒ u real) LmhsX.
An exact proof term for the current goal is If_i_0 (finite X) (h (s X) + 1) (if finite (ω X) then - h (s (ω X)) else SNoCut (L X) (R X)) H1 (λ_ u ⇒ u real) LmhsX'.
Assume H2: infinite (ω X).
We prove the intermediate claim LLRX: SNoCut (L X) (R X) real.
An exact proof term for the current goal is L_R_real X (PowerE ω X HX) H1 H2.
We prove the intermediate claim LLRX': (if finite (ω X) then - h (s (ω X)) else SNoCut (L X) (R X)) real.
An exact proof term for the current goal is If_i_0 (finite (ω X)) (- h (s (ω X))) (SNoCut (L X) (R X)) H2 (λ_ u ⇒ u real) LLRX.
An exact proof term for the current goal is If_i_0 (finite X) (h (s X) + 1) (if finite (ω X) then - h (s (ω X)) else SNoCut (L X) (R X)) H1 (λ_ u ⇒ u real) LLRX'.
Let X be given.
Assume HX: X 𝒫 ω.
Let Y be given.
Assume HY: Y 𝒫 ω.
We prove the intermediate claim LX: X ω.
An exact proof term for the current goal is PowerE ω X HX.
We prove the intermediate claim LY: Y ω.
An exact proof term for the current goal is PowerE ω Y HY.
We prove the intermediate claim LoX: ω X 𝒫 ω.
Apply PowerI to the current goal.
An exact proof term for the current goal is setminus_Subq ω X.
We prove the intermediate claim LoY: ω Y 𝒫 ω.
Apply PowerI to the current goal.
An exact proof term for the current goal is setminus_Subq ω Y.
Apply xm (finite X) to the current goal.
Assume H1: finite X.
Apply SNoS_E2 ω omega_ordinal (h (s X)) (Lh (s X) (Ls X HX) (Lsfin X H1)) to the current goal.
Assume HhsX1: SNoLev (h (s X)) ω.
Assume HhsX2: ordinal (SNoLev (h (s X))).
Assume HhsX3: SNo (h (s X)).
Assume HhsX4: SNo_ (SNoLev (h (s X))) (h (s X)).
We will prove (if finite X then h (s X) + 1 else if finite (ω X) then - h (s (ω X)) else SNoCut (L X) (R X)) = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y))X = Y.
Apply If_i_1 (finite X) (h (s X) + 1) (if finite (ω X) then - h (s (ω X)) else SNoCut (L X) (R X)) H1 (λ_ u ⇒ u = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y))X = Y) to the current goal.
We will prove h (s X) + 1 = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y))X = Y.
Apply xm (finite Y) to the current goal.
Assume H2: finite Y.
Apply SNoS_E2 ω omega_ordinal (h (s Y)) (Lh (s Y) (Ls Y HY) (Lsfin Y H2)) to the current goal.
Assume HhsY1: SNoLev (h (s Y)) ω.
Assume HhsY2: ordinal (SNoLev (h (s Y))).
Assume HhsY3: SNo (h (s Y)).
Assume HhsY4: SNo_ (SNoLev (h (s Y))) (h (s Y)).
Apply If_i_1 (finite Y) (h (s Y) + 1) (if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y)) H2 (λ_ u ⇒ h (s X) + 1 = uX = Y) to the current goal.
We will prove h (s X) + 1 = h (s Y) + 1X = Y.
Assume H3: h (s X) + 1 = h (s Y) + 1.
Apply Lsinj to the current goal.
We will prove s X = s Y.
An exact proof term for the current goal is Lhinj (s X) (Ls X HX) (s Y) (Ls Y HY) (add_SNo_cancel_R (h (s X)) 1 (h (s Y)) HhsX3 SNo_1 HhsY3 H3).
Assume H2: infinite Y.
Apply xm (finite (ω Y)) to the current goal.
Assume H3: finite (ω Y).
Assume H4: h (s X) + 1 = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y)).
Apply SNoS_E2 ω omega_ordinal (h (s (ω Y))) (Lh (s (ω Y)) (Ls (ω Y) LoY) (Lsfin (ω Y) H3)) to the current goal.
Assume HhsY1: SNoLev (h (s (ω Y))) ω.
Assume HhsY2: ordinal (SNoLev (h (s (ω Y)))).
Assume HhsY3: SNo (h (s (ω Y))).
Assume HhsY4: SNo_ (SNoLev (h (s (ω Y)))) (h (s (ω Y))).
We prove the intermediate claim LhsXmhsY: h (s X) + 1 = - h (s (ω Y)).
rewrite the current goal using H4 (from left to right).
Use transitivity with and (if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y)).
An exact proof term for the current goal is If_i_0 (finite Y) (h (s Y) + 1) (if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y)) H2.
An exact proof term for the current goal is If_i_1 (finite (ω Y)) (- h (s (ω Y))) (SNoCut (L Y) (R Y)) H3.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLt_tra 0 (h (s X)) 0 SNo_0 HhsX3 SNo_0 to the current goal.
We will prove 0 < h (s X).
Apply Lh0pos to the current goal.
We will prove s X 𝒫 ω.
Apply Ls to the current goal.
An exact proof term for the current goal is HX.
We will prove 0 s X.
We will prove 0 {0} {ordsucc n|nX}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
We will prove h (s X) < 0.
We prove the intermediate claim LhsXhsX1: h (s X) < h (s X) + 1.
An exact proof term for the current goal is add_SNo_0R (h (s X)) HhsX3 (λu _ ⇒ u < h (s X) + 1) (add_SNo_Lt2 (h (s X)) 0 1 HhsX3 SNo_0 SNo_1 SNoLt_0_1).
We prove the intermediate claim LhsX10: h (s X) + 1 < 0.
rewrite the current goal using LhsXmhsY (from left to right).
We will prove - h (s (ω Y)) < 0.
We prove the intermediate claim LhsYpos: - 0 < h (s (ω Y)).
rewrite the current goal using minus_SNo_0 (from left to right).
Apply Lh0pos to the current goal.
We will prove s (ω Y) 𝒫 ω.
Apply Ls to the current goal.
An exact proof term for the current goal is LoY.
We will prove 0 s (ω Y).
We will prove 0 {0} {ordsucc n|nω Y}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
An exact proof term for the current goal is minus_SNo_Lt_contra1 0 (h (s (ω Y))) SNo_0 HhsY3 LhsYpos.
An exact proof term for the current goal is SNoLt_tra (h (s X)) (h (s X) + 1) 0 HhsX3 (SNo_add_SNo (h (s X)) 1 HhsX3 SNo_1) SNo_0 LhsXhsX1 LhsX10.
Assume H3: infinite (ω Y).
Assume H4: h (s X) + 1 = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y)).
We prove the intermediate claim LhsXSLRY: h (s X) + 1 = SNoCut (L Y) (R Y).
rewrite the current goal using H4 (from left to right).
Use transitivity with and (if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y)).
An exact proof term for the current goal is If_i_0 (finite Y) (h (s Y) + 1) (if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y)) H2.
An exact proof term for the current goal is If_i_0 (finite (ω Y)) (- h (s (ω Y))) (SNoCut (L Y) (R Y)) H3.
We will prove False.
Apply SNoLt_irref 1 to the current goal.
We will prove 1 < 1.
Apply SNoLt_tra 1 (h (s X) + 1) 1 SNo_1 (SNo_add_SNo (h (s X)) 1 HhsX3 SNo_1) SNo_1 to the current goal.
We will prove 1 < h (s X) + 1.
We prove the intermediate claim LhsXpos: 0 < h (s X).
Apply Lh0pos to the current goal.
We will prove s X 𝒫 ω.
Apply Ls to the current goal.
An exact proof term for the current goal is HX.
We will prove 0 s X.
We will prove 0 {0} {ordsucc n|nX}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
rewrite the current goal using add_SNo_0L 1 SNo_1 (from right to left) at position 1.
We will prove 0 + 1 < h (s X) + 1.
An exact proof term for the current goal is add_SNo_Lt1 0 1 (h (s X)) SNo_0 SNo_1 HhsX3 LhsXpos.
We will prove h (s X) + 1 < 1.
rewrite the current goal using LhsXSLRY (from left to right).
An exact proof term for the current goal is L_R_lt1 Y.
Assume H1: infinite X.
We will prove (if finite X then h (s X) + 1 else if finite (ω X) then - h (s (ω X)) else SNoCut (L X) (R X)) = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y))X = Y.
Apply If_i_0 (finite X) (h (s X) + 1) (if finite (ω X) then - h (s (ω X)) else SNoCut (L X) (R X)) H1 (λ_ u ⇒ u = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y))X = Y) to the current goal.
We will prove (if finite (ω X) then - h (s (ω X)) else SNoCut (L X) (R X)) = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y))X = Y.
Apply xm (finite (ω X)) to the current goal.
Assume H2: finite (ω X).
Apply SNoS_E2 ω omega_ordinal (h (s (ω X))) (Lh (s (ω X)) (Ls (ω X) LoX) (Lsfin (ω X) H2)) to the current goal.
Assume HhsX1: SNoLev (h (s (ω X))) ω.
Assume HhsX2: ordinal (SNoLev (h (s (ω X)))).
Assume HhsX3: SNo (h (s (ω X))).
Assume HhsX4: SNo_ (SNoLev (h (s (ω X)))) (h (s (ω X))).
We will prove (if finite (ω X) then - h (s (ω X)) else SNoCut (L X) (R X)) = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y))X = Y.
Apply If_i_1 (finite (ω X)) (- h (s (ω X))) (SNoCut (L X) (R X)) H2 (λ_ u ⇒ u = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y))X = Y) to the current goal.
We will prove (- h (s (ω X))) = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y))X = Y.
Apply xm (finite Y) to the current goal.
Assume H3: finite Y.
Assume H4: (- h (s (ω X))) = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y)).
Apply SNoS_E2 ω omega_ordinal (h (s Y)) (Lh (s Y) (Ls Y HY) (Lsfin Y H3)) to the current goal.
Assume HhsY1: SNoLev (h (s Y)) ω.
Assume HhsY2: ordinal (SNoLev (h (s Y))).
Assume HhsY3: SNo (h (s Y)).
Assume HhsY4: SNo_ (SNoLev (h (s Y))) (h (s Y)).
We prove the intermediate claim LmhsXhsY: - h (s (ω X)) = h (s Y) + 1.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is If_i_1 (finite Y) (h (s Y) + 1) (if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y)) H3.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLt_tra 0 (h (s Y) + 1) 0 SNo_0 (SNo_add_SNo (h (s Y)) 1 HhsY3 SNo_1) SNo_0 to the current goal.
We will prove 0 < h (s Y) + 1.
We prove the intermediate claim LhsYpos: 0 < h (s Y).
We will prove 0 < h (s Y).
Apply Lh0pos to the current goal.
We will prove s Y 𝒫 ω.
Apply Ls to the current goal.
An exact proof term for the current goal is HY.
We will prove 0 s Y.
We will prove 0 {0} {ordsucc n|nY}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
An exact proof term for the current goal is SNoLt_tra 0 (h (s Y)) (h (s Y) + 1) SNo_0 HhsY3 (SNo_add_SNo (h (s Y)) 1 HhsY3 SNo_1) LhsYpos (add_SNo_0R (h (s Y)) HhsY3 (λu _ ⇒ u < h (s Y) + 1) (add_SNo_Lt2 (h (s Y)) 0 1 HhsY3 SNo_0 SNo_1 SNoLt_0_1)).
We will prove h (s Y) + 1 < 0.
rewrite the current goal using LmhsXhsY (from right to left).
We will prove - h (s (ω X)) < 0.
We prove the intermediate claim LhsXpos: - 0 < h (s (ω X)).
rewrite the current goal using minus_SNo_0 (from left to right).
Apply Lh0pos to the current goal.
We will prove s (ω X) 𝒫 ω.
Apply Ls to the current goal.
An exact proof term for the current goal is LoX.
We will prove 0 s (ω X).
We will prove 0 {0} {ordsucc n|nω X}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
An exact proof term for the current goal is minus_SNo_Lt_contra1 0 (h (s (ω X))) SNo_0 HhsX3 LhsXpos.
Assume H3: infinite Y.
Apply If_i_0 (finite Y) (h (s Y) + 1) (if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y)) H3 (λ_ u ⇒ - h (s (ω X)) = uX = Y) to the current goal.
We will prove (- h (s (ω X))) = (if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y))X = Y.
Apply xm (finite (ω Y)) to the current goal.
Assume H4: finite (ω Y).
Apply SNoS_E2 ω omega_ordinal (h (s (ω Y))) (Lh (s (ω Y)) (Ls (ω Y) (PowerI ω (ω Y) (setminus_Subq ω Y))) (Lsfin (ω Y) H4)) to the current goal.
Assume HhsY1: SNoLev (h (s (ω Y))) ω.
Assume HhsY2: ordinal (SNoLev (h (s (ω Y)))).
Assume HhsY3: SNo (h (s (ω Y))).
Assume HhsY4: SNo_ (SNoLev (h (s (ω Y)))) (h (s (ω Y))).
Apply If_i_1 (finite (ω Y)) (- h (s (ω Y))) (SNoCut (L Y) (R Y)) H4 (λ_ u ⇒ - h (s (ω X)) = uX = Y) to the current goal.
Assume H5: - h (s (ω X)) = - h (s (ω Y)).
We will prove X = Y.
We prove the intermediate claim LoXoY: ω X = ω Y.
Apply Lsinj to the current goal.
We will prove s (ω X) = s (ω Y).
Apply Lhinj (s (ω X)) (Ls (ω X) LoX) (s (ω Y)) (Ls (ω Y) LoY) to the current goal.
We will prove h (s (ω X)) = h (s (ω Y)).
Use transitivity with - - h (s (ω X)), and - - h (s (ω Y)).
Use symmetry.
An exact proof term for the current goal is minus_SNo_invol (h (s (ω X))) HhsX3.
Use f_equal.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is minus_SNo_invol (h (s (ω Y))) HhsY3.
We will prove X = Y.
Apply set_ext to the current goal.
Let u be given.
Assume HuX: u X.
Apply dneg to the current goal.
Assume HuY: u Y.
Apply setminusE2 ω X u to the current goal.
We will prove u ω X.
rewrite the current goal using LoXoY (from left to right).
We will prove u ω Y.
Apply setminusI to the current goal.
We will prove u ω.
An exact proof term for the current goal is LX u HuX.
An exact proof term for the current goal is HuY.
We will prove u X.
An exact proof term for the current goal is HuX.
Let u be given.
Assume HuY: u Y.
Apply dneg to the current goal.
Assume HuX: u X.
Apply setminusE2 ω Y u to the current goal.
We will prove u ω Y.
rewrite the current goal using LoXoY (from right to left).
We will prove u ω X.
Apply setminusI to the current goal.
We will prove u ω.
An exact proof term for the current goal is LY u HuY.
An exact proof term for the current goal is HuX.
We will prove u Y.
An exact proof term for the current goal is HuY.
Assume H4: infinite (ω Y).
Apply If_i_0 (finite (ω Y)) (- h (s (ω Y))) (SNoCut (L Y) (R Y)) H4 (λ_ u ⇒ - h (s (ω X)) = uX = Y) to the current goal.
Assume H5: - h (s (ω X)) = SNoCut (L Y) (R Y).
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLt_tra 0 (- h (s (ω X))) 0 SNo_0 (SNo_minus_SNo (h (s (ω X))) HhsX3) SNo_0 to the current goal.
We will prove 0 < - h (s (ω X)).
rewrite the current goal using H5 (from left to right).
An exact proof term for the current goal is L_R_pos Y.
We will prove - h (s (ω X)) < 0.
We prove the intermediate claim LhsXpos: - 0 < h (s (ω X)).
rewrite the current goal using minus_SNo_0 (from left to right).
Apply Lh0pos to the current goal.
We will prove s (ω X) 𝒫 ω.
Apply Ls to the current goal.
An exact proof term for the current goal is LoX.
We will prove 0 s (ω X).
We will prove 0 {0} {ordsucc n|nω X}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
An exact proof term for the current goal is minus_SNo_Lt_contra1 0 (h (s (ω X))) SNo_0 HhsX3 LhsXpos.
Assume H2: infinite (ω X).
Apply If_i_0 (finite (ω X)) (- h (s (ω X))) (SNoCut (L X) (R X)) H2 (λ_ u ⇒ u = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y))X = Y) to the current goal.
We will prove (SNoCut (L X) (R X)) = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y))X = Y.
Apply xm (finite Y) to the current goal.
Assume H3: finite Y.
Assume H4: SNoCut (L X) (R X) = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y)).
Apply SNoS_E2 ω omega_ordinal (h (s Y)) (Lh (s Y) (Ls Y HY) (Lsfin Y H3)) to the current goal.
Assume HhsY1: SNoLev (h (s Y)) ω.
Assume HhsY2: ordinal (SNoLev (h (s Y))).
Assume HhsY3: SNo (h (s Y)).
Assume HhsY4: SNo_ (SNoLev (h (s Y))) (h (s Y)).
We prove the intermediate claim LLRXhsY: SNoCut (L X) (R X) = h (s Y) + 1.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is If_i_1 (finite Y) (h (s Y) + 1) (if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y)) H3.
We will prove False.
Apply SNoLt_irref 1 to the current goal.
We will prove 1 < 1.
Apply SNoLt_tra 1 (h (s Y) + 1) 1 SNo_1 (SNo_add_SNo (h (s Y)) 1 HhsY3 SNo_1) SNo_1 to the current goal.
We will prove 1 < h (s Y) + 1.
We prove the intermediate claim LhsYpos: 0 < h (s Y).
Apply Lh0pos to the current goal.
We will prove s Y 𝒫 ω.
Apply Ls to the current goal.
An exact proof term for the current goal is HY.
We will prove 0 s Y.
We will prove 0 {0} {ordsucc n|nY}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
rewrite the current goal using add_SNo_0L 1 SNo_1 (from right to left) at position 1.
We will prove 0 + 1 < h (s Y) + 1.
An exact proof term for the current goal is add_SNo_Lt1 0 1 (h (s Y)) SNo_0 SNo_1 HhsY3 LhsYpos.
We will prove h (s Y) + 1 < 1.
rewrite the current goal using LLRXhsY (from right to left).
An exact proof term for the current goal is L_R_lt1 X.
Assume H3: infinite Y.
We will prove (SNoCut (L X) (R X)) = (if finite Y then h (s Y) + 1 else if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y))X = Y.
Apply If_i_0 (finite Y) (h (s Y) + 1) (if finite (ω Y) then - h (s (ω Y)) else SNoCut (L Y) (R Y)) H3 (λ_ u ⇒ SNoCut (L X) (R X) = uX = Y) to the current goal.
Apply xm (finite (ω Y)) to the current goal.
Assume H4: finite (ω Y).
Apply SNoS_E2 ω omega_ordinal (h (s (ω Y))) (Lh (s (ω Y)) (Ls (ω Y) (PowerI ω (ω Y) (setminus_Subq ω Y))) (Lsfin (ω Y) H4)) to the current goal.
Assume HhsY1: SNoLev (h (s (ω Y))) ω.
Assume HhsY2: ordinal (SNoLev (h (s (ω Y)))).
Assume HhsY3: SNo (h (s (ω Y))).
Assume HhsY4: SNo_ (SNoLev (h (s (ω Y)))) (h (s (ω Y))).
Apply If_i_1 (finite (ω Y)) (- h (s (ω Y))) (SNoCut (L Y) (R Y)) H4 (λ_ u ⇒ SNoCut (L X) (R X) = uX = Y) to the current goal.
Assume H5: SNoCut (L X) (R X) = - h (s (ω Y)).
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLt_tra 0 (- h (s (ω Y))) 0 SNo_0 (SNo_minus_SNo (h (s (ω Y))) HhsY3) SNo_0 to the current goal.
We will prove 0 < - h (s (ω Y)).
rewrite the current goal using H5 (from right to left).
An exact proof term for the current goal is L_R_pos X.
We will prove - h (s (ω Y)) < 0.
We prove the intermediate claim LhsYpos: - 0 < h (s (ω Y)).
rewrite the current goal using minus_SNo_0 (from left to right).
Apply Lh0pos to the current goal.
We will prove s (ω Y) 𝒫 ω.
Apply Ls to the current goal.
An exact proof term for the current goal is LoY.
We will prove 0 s (ω Y).
We will prove 0 {0} {ordsucc n|nω Y}.
Apply binunionI1 to the current goal.
Apply SingI to the current goal.
An exact proof term for the current goal is minus_SNo_Lt_contra1 0 (h (s (ω Y))) SNo_0 HhsY3 LhsYpos.
Assume H4: infinite (ω Y).
Apply If_i_0 (finite (ω Y)) (- h (s (ω Y))) (SNoCut (L Y) (R Y)) H4 (λ_ u ⇒ SNoCut (L X) (R X) = uX = Y) to the current goal.
Assume H5: SNoCut (L X) (R X) = SNoCut (L Y) (R Y).
We will prove X = Y.
Apply set_ext to the current goal.
Let n be given.
Assume HnX: n X.
Apply L_R_inj X LX Y LY H5 (ordsucc n) (nat_ordsucc n (omega_nat_p n (LX n HnX))) to the current goal.
Assume _.
Assume H6: iordsucc n, i X i Y.
Apply H6 n (ordsuccI2 n) to the current goal.
Assume H7: n Xn Y.
Assume _.
An exact proof term for the current goal is H7 HnX.
Let n be given.
Assume HnY: n Y.
Apply L_R_inj X LX Y LY H5 (ordsucc n) (nat_ordsucc n (omega_nat_p n (LY n HnY))) to the current goal.
Assume _.
Assume H6: iordsucc n, i X i Y.
Apply H6 n (ordsuccI2 n) to the current goal.
Assume _.
Assume H7: n Yn X.
An exact proof term for the current goal is H7 HnY.
Proof:
Assume H1: atleastp real ω.
Apply equip_sym real (𝒫 ω) equip_real_Power_omega to the current goal.
Let f be given.
Assume Hf: bij (𝒫 ω) real f.
Apply H1 to the current goal.
Let g be given.
Assume Hg: inj real ω g.
Apply form100_22_v2 (λx ⇒ g (f x)) to the current goal.
We will prove inj (𝒫 ω) ω (λx ⇒ g (f x)).
An exact proof term for the current goal is inj_comp (𝒫 ω) real ω f g (bij_inj (𝒫 ω) real f Hf) Hg.
Proof:
Assume H1: equip real ω.
Apply form100_22_real_uncountable_atleastp to the current goal.
We will prove atleastp real ω.
Apply equip_atleastp real ω to the current goal.
An exact proof term for the current goal is H1.
Proof:
Apply andI to the current goal.
We will prove atleastp ω real.
Apply Subq_atleastp to the current goal.
We will prove ω real.
Apply Subq_tra ω (SNoS_ ω) real to the current goal.
We will prove ω SNoS_ ω.
An exact proof term for the current goal is omega_SNoS_omega.
We will prove SNoS_ ω real.
An exact proof term for the current goal is SNoS_omega_real.
An exact proof term for the current goal is form100_22_real_uncountable_equip.
End of Section form100_22b
Beginning of Section rational
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term div_SNo.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Definition. We define rational to be {xreal|mint, nω {0}, x = m :/: n} of type set.
End of Section rational
Beginning of Section form100_3
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term div_SNo.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Theorem. (Subq_int_SNoS_omega) The following is provable:
Proof:
Let k be given.
Assume Hk.
We will prove k SNoS_ ω.
Apply diadic_rational_p_SNoS_omega to the current goal.
We will prove diadic_rational_p k.
Apply int_diadic_rational_p to the current goal.
An exact proof term for the current goal is Hk.
Proof:
Let q be given.
Assume Hq: q SNoS_ ω.
Apply SNoS_omega_diadic_rational_p q Hq to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k ω.
Assume H.
Apply H to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume Hqkm: q = eps_ k * m.
We prove the intermediate claim LkN: nat_p k.
An exact proof term for the current goal is omega_nat_p k Hk.
Apply SepI to the current goal.
We will prove q real.
Apply SNoS_omega_real to the current goal.
An exact proof term for the current goal is Hq.
We will prove mint, nω {0}, q = m :/: n.
We use m to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hm.
We will prove nω {0}, q = m :/: n.
We prove the intermediate claim L2kN: nat_p (2 ^ k).
An exact proof term for the current goal is nat_exp_SNo_nat 2 nat_2 k LkN.
We prove the intermediate claim L2kS: SNo (2 ^ k).
An exact proof term for the current goal is nat_p_SNo (2 ^ k) L2kN.
We prove the intermediate claim L2knz: 2 ^ k 0.
Assume H1: 2 ^ k = 0.
Apply neq_1_0 to the current goal.
We will prove 1 = 0.
rewrite the current goal using mul_SNo_eps_power_2 k LkN (from right to left).
We will prove eps_ k * 2 ^ k = 0.
rewrite the current goal using H1 (from left to right).
We will prove eps_ k * 0 = 0.
An exact proof term for the current goal is mul_SNo_zeroR (eps_ k) (SNo_eps_ k Hk).
We use 2 ^ k to witness the existential quantifier.
Apply andI to the current goal.
We will prove 2 ^ k ω {0}.
Apply setminusI to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is L2kN.
Assume H1: 2 ^ k {0}.
Apply L2knz to the current goal.
We will prove 2 ^ k = 0.
An exact proof term for the current goal is SingE 0 (2 ^ k) H1.
We will prove q = m :/: (2 ^ k).
We will prove q = m * recip_SNo (2 ^ k).
rewrite the current goal using Hqkm (from left to right).
We will prove eps_ k * m = m * recip_SNo (2 ^ k).
rewrite the current goal using recip_SNo_pow_2 k LkN (from left to right).
An exact proof term for the current goal is mul_SNo_com (eps_ k) m (SNo_eps_ k Hk) (int_SNo m Hm).
Theorem. (Subq_rational_real) The following is provable:
Proof:
An exact proof term for the current goal is Sep_Subq real (λq ⇒ mint, nω {0}, q = m :/: n).
Proof:
Let q be given.
Assume Hq.
Apply SepE real (λq ⇒ mint, nω {0}, q = m :/: n) q Hq to the current goal.
Assume HqR: q real.
Assume HqQ.
Apply HqQ to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume H.
Apply H to the current goal.
Let n be given.
Assume H.
Apply H to the current goal.
Assume Hn: n ω {0}.
Assume H1: q = m :/: n.
Apply setminusE ω {0} n Hn to the current goal.
Assume Hno: n ω.
Assume Hnnz: n {0}.
We prove the intermediate claim LqS: SNo q.
An exact proof term for the current goal is real_SNo q HqR.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is omega_SNo n Hno.
We prove the intermediate claim LmqR: - q real.
An exact proof term for the current goal is real_minus_SNo q HqR.
We prove the intermediate claim LmqS: SNo (- q).
An exact proof term for the current goal is real_SNo (- q) LmqR.
We prove the intermediate claim LmqQ: mint, nω {0}, - q = m :/: n.
We use (- m) to witness the existential quantifier.
We prove the intermediate claim LmmZ: - m int.
An exact proof term for the current goal is int_minus_SNo m Hm.
We prove the intermediate claim LmmS: SNo (- m).
An exact proof term for the current goal is int_SNo (- m) LmmZ.
We prove the intermediate claim LmmnS: SNo ((- m) :/: n).
An exact proof term for the current goal is SNo_div_SNo (- m) n ?? ??.
Apply andI to the current goal.
An exact proof term for the current goal is LmmZ.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hn.
We will prove - q = (- m) :/: n.
We prove the intermediate claim Lnnz: n 0.
Assume H2: n = 0.
Apply Hnnz to the current goal.
We will prove n {0}.
rewrite the current goal using H2 (from left to right).
Apply SingI to the current goal.
Apply mul_SNo_nonzero_cancel_L n (- q) ((- m) :/: n) ?? ?? ?? ?? to the current goal.
We will prove n * (- q) = n * ((- m) :/: n).
Use transitivity with - (n * q), and - m.
We will prove n * (- q) = - (n * q).
An exact proof term for the current goal is mul_SNo_minus_distrR n q ?? ??.
We will prove - (n * q) = - m.
Use f_equal.
We will prove n * q = m.
rewrite the current goal using H1 (from left to right).
We will prove n * (m :/: n) = m.
An exact proof term for the current goal is mul_div_SNo_invR m n (int_SNo m Hm) ?? ??.
We will prove - m = n * ((- m) :/: n).
Use symmetry.
An exact proof term for the current goal is mul_div_SNo_invR (- m) n ?? ?? ??.
An exact proof term for the current goal is SepI real (λq ⇒ mint, nω {0}, q = m :/: n) (- q) LmqR LmqQ.
Definition. We define nat_pair to be λm n ⇒ 2 ^ m * (2 * n + 1) of type setsetset.
Theorem. (nat_pair_In_omega) The following is provable:
Proof:
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
We will prove (2 ^ m) * (2 * n + 1) ω.
Apply mul_SNo_In_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_exp_SNo_nat 2 nat_2 m (omega_nat_p m Hm).
Apply add_SNo_In_omega to the current goal.
Apply mul_SNo_In_omega to the current goal.
An exact proof term for the current goal is nat_p_omega 2 nat_2.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is nat_p_omega 1 nat_1.
Theorem. (nat_pair_0) The following is provable:
m n m' n'ω, nat_pair m n = nat_pair m' n'm = m'
Proof:
We prove the intermediate claim L1: ∀m n k, nat_p mnat_p nnat_p k2 ^ (ordsucc m) * (2 * n + 1) 2 ^ 0 * (2 * k + 1).
Let m, n and k be given.
Assume Hm Hn Hk.
Assume H1: 2 ^ (ordsucc m) * (2 * n + 1) = 2 ^ 0 * (2 * k + 1).
We prove the intermediate claim L1a: 2 ^ m ω.
We will prove 2 ^ m ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_exp_SNo_nat 2 nat_2 m Hm.
We prove the intermediate claim L1b: 2 * n ω.
Apply mul_SNo_In_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_2.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is Hn.
We prove the intermediate claim L1c: 2 * n + 1 ω.
Apply add_SNo_In_omega to the current goal.
An exact proof term for the current goal is L1b.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
We prove the intermediate claim L1d: 2 ^ m * (2 * n + 1) int.
Apply Subq_omega_int to the current goal.
Apply mul_SNo_In_omega to the current goal.
An exact proof term for the current goal is L1a.
An exact proof term for the current goal is L1c.
Apply not_eq_2m_2n1 (2 ^ m * (2 * n + 1)) L1d k (Subq_omega_int k (nat_p_omega k Hk)) to the current goal.
Use transitivity with (2 * (2 ^ m)) * (2 * n + 1), 2 ^ (ordsucc m) * (2 * n + 1), and 2 ^ 0 * (2 * k + 1).
We will prove 2 * (2 ^ m * (2 * n + 1)) = (2 * (2 ^ m)) * (2 * n + 1).
An exact proof term for the current goal is mul_SNo_assoc 2 (2 ^ m) (2 * n + 1) SNo_2 (omega_SNo (2 ^ m) L1a) (omega_SNo (2 * n + 1) L1c).
We will prove (2 * (2 ^ m)) * (2 * n + 1) = 2 ^ (ordsucc m) * (2 * n + 1).
Use f_equal.
We will prove 2 * (2 ^ m) = 2 ^ (ordsucc m).
Use symmetry.
An exact proof term for the current goal is exp_SNo_nat_S 2 SNo_2 m Hm.
We will prove 2 ^ (ordsucc m) * (2 * n + 1) = 2 ^ 0 * (2 * k + 1).
An exact proof term for the current goal is H1.
We will prove 2 ^ 0 * (2 * k + 1) = 2 * k + 1.
rewrite the current goal using exp_SNo_nat_0 2 SNo_2 (from left to right).
We will prove 1 * (2 * k + 1) = 2 * k + 1.
Apply mul_SNo_oneL (2 * k + 1) to the current goal.
We will prove SNo (2 * k + 1).
Apply SNo_add_SNo to the current goal.
Apply SNo_mul_SNo to the current goal.
An exact proof term for the current goal is SNo_2.
An exact proof term for the current goal is nat_p_SNo k Hk.
An exact proof term for the current goal is SNo_1.
We prove the intermediate claim L2: ∀k, nat_p k∀m, nat_p m∀m', nat_p m'∀n, nat_p n∀n', nat_p n'nat_pair m n = knat_pair m' n' = km = m'.
Apply nat_complete_ind to the current goal.
Let k be given.
Assume Hk.
Assume IHk: k'k, ∀m, nat_p m∀m', nat_p m'∀n, nat_p n∀n', nat_p n'nat_pair m n = k'nat_pair m' n' = k'm = m'.
Apply nat_inv_impred to the current goal.
Apply nat_inv_impred to the current goal.
Let n be given.
Assume Hn.
Let n' be given.
Assume Hn'.
Assume H1: 2 ^ 0 * (2 * n + 1) = k.
Assume H2: 2 ^ 0 * (2 * n' + 1) = k.
We will prove 0 = 0.
Use reflexivity.
Let m' be given.
Assume Hm'.
Let n be given.
Assume Hn.
Let n' be given.
Assume Hn'.
Assume H1: 2 ^ 0 * (2 * n + 1) = k.
Assume H2: 2 ^ (ordsucc m') * (2 * n' + 1) = k.
We will prove False.
We prove the intermediate claim L1a: 2 ^ m' * (2 * n' + 1) int.
Apply Subq_omega_int to the current goal.
Apply mul_SNo_In_omega to the current goal.
We will prove 2 ^ m' ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_exp_SNo_nat 2 nat_2 m' Hm'.
We will prove 2 * n' + 1 ω.
Apply add_SNo_In_omega to the current goal.
Apply mul_SNo_In_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_2.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is Hn'.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
Apply L1 m' n' n Hm' Hn' Hn to the current goal.
We will prove 2 ^ (ordsucc m') * (2 * n' + 1) = 2 ^ 0 * (2 * n + 1).
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is H2.
Let m be given.
Assume Hm.
Apply nat_inv_impred to the current goal.
Let n be given.
Assume Hn.
Let n' be given.
Assume Hn'.
Assume H1: 2 ^ (ordsucc m) * (2 * n + 1) = k.
Assume H2: 2 ^ 0 * (2 * n' + 1) = k.
We will prove False.
We prove the intermediate claim L1b: 2 ^ m * (2 * n + 1) int.
Apply Subq_omega_int to the current goal.
Apply mul_SNo_In_omega to the current goal.
We will prove 2 ^ m ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_exp_SNo_nat 2 nat_2 m Hm.
We will prove 2 * n + 1 ω.
Apply add_SNo_In_omega to the current goal.
Apply mul_SNo_In_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_2.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is Hn.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
Apply L1 m n n' Hm Hn Hn' to the current goal.
We will prove 2 ^ (ordsucc m) * (2 * n + 1) = 2 ^ 0 * (2 * n' + 1).
rewrite the current goal using H2 (from left to right).
An exact proof term for the current goal is H1.
Let m' be given.
Assume Hm'.
Let n be given.
Assume Hn.
Let n' be given.
Assume Hn'.
Assume H1: 2 ^ (ordsucc m) * (2 * n + 1) = k.
Assume H2: 2 ^ (ordsucc m') * (2 * n' + 1) = k.
We will prove ordsucc m = ordsucc m'.
Use f_equal.
Set k' to be the term 2 ^ m * (2 * n + 1).
We prove the intermediate claim L2mS: SNo (2 ^ m).
An exact proof term for the current goal is SNo_exp_SNo_nat 2 SNo_2 m Hm.
We prove the intermediate claim L2m'S: SNo (2 ^ m').
An exact proof term for the current goal is SNo_exp_SNo_nat 2 SNo_2 m' Hm'.
We prove the intermediate claim L2mpos: 0 < 2 ^ m.
An exact proof term for the current goal is exp_SNo_nat_pos 2 SNo_2 SNoLt_0_2 m Hm.
We prove the intermediate claim L2SmS: SNo (2 ^ ordsucc m).
An exact proof term for the current goal is SNo_exp_SNo_nat 2 SNo_2 (ordsucc m) (nat_ordsucc m Hm).
We prove the intermediate claim L2nS: SNo (2 * n).
An exact proof term for the current goal is SNo_mul_SNo 2 n SNo_2 (nat_p_SNo n Hn).
We prove the intermediate claim L2n1S: SNo (2 * n + 1).
An exact proof term for the current goal is SNo_add_SNo (2 * n) 1 ?? SNo_1.
We prove the intermediate claim L2n'S: SNo (2 * n').
An exact proof term for the current goal is SNo_mul_SNo 2 n' SNo_2 (nat_p_SNo n' Hn').
We prove the intermediate claim L2n'1S: SNo (2 * n' + 1).
An exact proof term for the current goal is SNo_add_SNo (2 * n') 1 ?? SNo_1.
We prove the intermediate claim L2n1pos: 0 < 2 * n + 1.
Apply SNoLeLt_tra 0 (2 * n) (2 * n + 1) SNo_0 ?? ?? to the current goal.
We will prove 0 2 * n.
Apply mul_SNo_nonneg_nonneg 2 n SNo_2 (nat_p_SNo n Hn) to the current goal.
We will prove 0 2.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLt_0_2.
We will prove 0 n.
An exact proof term for the current goal is omega_nonneg n (nat_p_omega n Hn).
We will prove 2 * n < 2 * n + 1.
rewrite the current goal using add_SNo_0R (2 * n) ?? (from right to left) at position 1.
We will prove 2 * n + 0 < 2 * n + 1.
An exact proof term for the current goal is add_SNo_Lt2 (2 * n) 0 1 ?? SNo_0 SNo_1 SNoLt_0_1.
We prove the intermediate claim L2: k' < k.
We will prove 2 ^ m * (2 * n + 1) < k.
rewrite the current goal using H1 (from right to left).
We will prove 2 ^ m * (2 * n + 1) < 2 ^ (ordsucc m) * (2 * n + 1).
Apply pos_mul_SNo_Lt' (2 ^ m) (2 ^ (ordsucc m)) (2 * n + 1) ?? ?? ?? ?? to the current goal.
We will prove 2 ^ m < 2 ^ (ordsucc m).
rewrite the current goal using exp_SNo_nat_S 2 SNo_2 m Hm (from left to right).
We will prove 2 ^ m < 2 * 2 ^ m.
rewrite the current goal using mul_SNo_oneL (2 ^ m) ?? (from right to left) at position 1.
We will prove 1 * 2 ^ m < 2 * 2 ^ m.
Apply pos_mul_SNo_Lt' 1 2 (2 ^ m) SNo_1 SNo_2 ?? ?? to the current goal.
We will prove 1 < 2.
An exact proof term for the current goal is SNoLt_1_2.
We prove the intermediate claim L3: k' k.
Apply ordinal_SNoLt_In k' k to the current goal.
We will prove ordinal k'.
Apply nat_p_ordinal to the current goal.
Apply omega_nat_p to the current goal.
We will prove 2 ^ m * (2 * n + 1) ω.
We will prove nat_pair m n ω.
An exact proof term for the current goal is nat_pair_In_omega m (nat_p_omega m Hm) n (nat_p_omega n Hn).
We will prove ordinal k.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is Hk.
We will prove k' < k.
An exact proof term for the current goal is L2.
We prove the intermediate claim L4: 2 ^ m * (2 * n + 1) = k'.
Use reflexivity.
We prove the intermediate claim L5: 2 ^ m' * (2 * n' + 1) = k'.
We will prove 2 ^ m' * (2 * n' + 1) = 2 ^ m * (2 * n + 1).
Apply mul_SNo_nonzero_cancel_L 2 (2 ^ m' * (2 * n' + 1)) (2 ^ m * (2 * n + 1)) SNo_2 neq_2_0 (SNo_mul_SNo (2 ^ m') (2 * n' + 1) ?? ??) (SNo_mul_SNo (2 ^ m) (2 * n + 1) ?? ??) to the current goal.
We will prove 2 * (2 ^ m' * (2 * n' + 1)) = 2 * (2 ^ m * (2 * n + 1)).
Use transitivity with (2 * (2 ^ m')) * (2 * n' + 1), (2 ^ (ordsucc m')) * (2 * n' + 1), k, (2 ^ (ordsucc m)) * (2 * n + 1), and (2 * (2 ^ m)) * (2 * n + 1).
An exact proof term for the current goal is mul_SNo_assoc 2 (2 ^ m') (2 * n' + 1) SNo_2 ?? ??.
Use f_equal.
Use symmetry.
An exact proof term for the current goal is exp_SNo_nat_S 2 SNo_2 m' Hm'.
An exact proof term for the current goal is H2.
Use symmetry.
An exact proof term for the current goal is H1.
Use f_equal.
An exact proof term for the current goal is exp_SNo_nat_S 2 SNo_2 m Hm.
Use symmetry.
An exact proof term for the current goal is mul_SNo_assoc 2 (2 ^ m) (2 * n + 1) SNo_2 ?? ??.
We will prove m = m'.
An exact proof term for the current goal is IHk k' L3 m Hm m' Hm' n Hn n' Hn' L4 L5.
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
Let m' be given.
Assume Hm'.
Let n' be given.
Assume Hn'.
Assume H1: nat_pair m n = nat_pair m' n'.
Apply L2 (nat_pair m' n') (omega_nat_p (nat_pair m' n') (nat_pair_In_omega m' Hm' n' Hn')) m (omega_nat_p m Hm) m' (omega_nat_p m' Hm') n (omega_nat_p n Hn) n' (omega_nat_p n' Hn') to the current goal.
We will prove nat_pair m n = nat_pair m' n'.
An exact proof term for the current goal is H1.
We will prove nat_pair m' n' = nat_pair m' n'.
Use reflexivity.
Theorem. (nat_pair_1) The following is provable:
m n m' n'ω, nat_pair m n = nat_pair m' n'n = n'
Proof:
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
Let m' be given.
Assume Hm'.
Let n' be given.
Assume Hn'.
Assume H1: nat_pair m n = nat_pair m' n'.
We prove the intermediate claim L1: m = m'.
An exact proof term for the current goal is nat_pair_0 m Hm n Hn m' Hm' n' Hn' H1.
We prove the intermediate claim L2nS: SNo (2 * n).
An exact proof term for the current goal is SNo_mul_SNo 2 n SNo_2 (omega_SNo n Hn).
We prove the intermediate claim L2n1S: SNo (2 * n + 1).
An exact proof term for the current goal is SNo_add_SNo (2 * n) 1 ?? SNo_1.
We prove the intermediate claim L2n'S: SNo (2 * n').
An exact proof term for the current goal is SNo_mul_SNo 2 n' SNo_2 (omega_SNo n' Hn').
We prove the intermediate claim L2n'1S: SNo (2 * n' + 1).
An exact proof term for the current goal is SNo_add_SNo (2 * n') 1 ?? SNo_1.
We will prove n = n'.
Apply mul_SNo_nonzero_cancel_L 2 n n' SNo_2 neq_2_0 (omega_SNo n Hn) (omega_SNo n' Hn') to the current goal.
We will prove 2 * n = 2 * n'.
Apply add_SNo_cancel_R (2 * n) 1 (2 * n') ?? SNo_1 ?? to the current goal.
We will prove 2 * n + 1 = 2 * n' + 1.
We prove the intermediate claim L2mS: SNo (2 ^ m).
An exact proof term for the current goal is SNo_exp_SNo_nat 2 SNo_2 m (omega_nat_p m Hm).
We prove the intermediate claim L2mn0: 2 ^ m 0.
Assume H2: 2 ^ m = 0.
Apply neq_1_0 to the current goal.
We will prove 1 = 0.
rewrite the current goal using mul_SNo_eps_power_2 m (omega_nat_p m Hm) (from right to left).
We will prove eps_ m * 2 ^ m = 0.
rewrite the current goal using H2 (from left to right).
We will prove eps_ m * 0 = 0.
An exact proof term for the current goal is mul_SNo_zeroR (eps_ m) (SNo_eps_ m Hm).
Apply mul_SNo_nonzero_cancel_L (2 ^ m) (2 * n + 1) (2 * n' + 1) ?? ?? ?? ?? to the current goal.
We will prove (2 ^ m) * (2 * n + 1) = (2 ^ m) * (2 * n' + 1).
rewrite the current goal using L1 (from left to right) at position 2.
An exact proof term for the current goal is H1.
Theorem. (form100_3) The following is provable:
Proof:
Apply atleastp_antisym_equip to the current goal.
We will prove atleastp ω rational.
Apply Subq_atleastp to the current goal.
We will prove ω rational.
Apply Subq_tra ω int rational Subq_omega_int to the current goal.
We will prove int rational.
Apply Subq_tra int (SNoS_ ω) rational Subq_int_SNoS_omega to the current goal.
We will prove SNoS_ ω rational.
An exact proof term for the current goal is Subq_SNoS_omega_rational.
We will prove atleastp rational ω.
Set denom to be the term λq ⇒ Eps_i (λn ⇒ n ω mω, q = m :/: n) of type setset.
Set num to be the term λq ⇒ Eps_i (λm ⇒ m ω q = m :/: denom q) of type setset.
We prove the intermediate claim L1: qrational, 0 qnω, mω, q = m :/: n.
Let q be given.
Assume Hq Hqnn.
Apply SepE real (λq ⇒ mint, nω {0}, q = m :/: n) q Hq to the current goal.
Assume HqR: q real.
Assume HqQ.
Apply HqQ to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume H.
Apply H to the current goal.
Let n be given.
Assume H.
Apply H to the current goal.
Assume Hn: n ω {0}.
Assume H1: q = m :/: n.
Apply setminusE ω {0} n Hn to the current goal.
Assume Hno: n ω.
Assume Hnz: n {0}.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is omega_SNo n Hno.
We prove the intermediate claim LqS: SNo q.
An exact proof term for the current goal is real_SNo q HqR.
We prove the intermediate claim Lnpos: 0 < n.
Apply SNoLeE 0 n SNo_0 LnS (omega_nonneg n Hno) to the current goal.
Assume H2: 0 < n.
An exact proof term for the current goal is H2.
Assume H2: 0 = n.
We will prove False.
Apply Hnz to the current goal.
We will prove n {0}.
rewrite the current goal using H2 (from right to left).
Apply SingI to the current goal.
We prove the intermediate claim Lrnpos: 0 < recip_SNo n.
An exact proof term for the current goal is recip_SNo_of_pos_is_pos n LnS Lnpos.
Apply int_3_cases m Hm to the current goal.
Let m' be given.
Assume Hm': m' ω.
Assume H2: m = - ordsucc m'.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLeLt_tra 0 q 0 SNo_0 LqS SNo_0 Hqnn to the current goal.
We will prove q < 0.
rewrite the current goal using H1 (from left to right).
We will prove m :/: n < 0.
We will prove m * recip_SNo n < 0.
rewrite the current goal using mul_SNo_zeroL (recip_SNo n) (SNo_recip_SNo n LnS) (from right to left).
We will prove m * recip_SNo n < 0 * recip_SNo n.
Apply pos_mul_SNo_Lt' m 0 (recip_SNo n) (int_SNo m Hm) SNo_0 (SNo_recip_SNo n LnS) Lrnpos to the current goal.
We will prove m < 0.
rewrite the current goal using H2 (from left to right).
We will prove - ordsucc m' < 0.
Apply minus_SNo_Lt_contra1 0 (ordsucc m') SNo_0 (omega_SNo (ordsucc m') (omega_ordsucc m' Hm')) to the current goal.
We will prove - 0 < ordsucc m'.
rewrite the current goal using minus_SNo_0 (from left to right).
We will prove 0 < ordsucc m'.
Apply ordinal_In_SNoLt (ordsucc m') (nat_p_ordinal (ordsucc m') (nat_ordsucc m' (omega_nat_p m' Hm'))) 0 to the current goal.
We will prove 0 ordsucc m'.
An exact proof term for the current goal is nat_0_in_ordsucc m' (omega_nat_p m' Hm').
Assume H2: m = 0.
We will prove nω, mω, q = m :/: n.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hno.
We will prove mω, q = m :/: n.
We use m to witness the existential quantifier.
Apply andI to the current goal.
We will prove m ω.
rewrite the current goal using H2 (from left to right).
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_0.
We will prove q = m :/: n.
An exact proof term for the current goal is H1.
Let m' be given.
Assume Hm': m' ω.
Assume H2: m = ordsucc m'.
We will prove nω, mω, q = m :/: n.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hno.
We will prove mω, q = m :/: n.
We use m to witness the existential quantifier.
Apply andI to the current goal.
We will prove m ω.
rewrite the current goal using H2 (from left to right).
We will prove ordsucc m' ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Hm'.
We will prove q = m :/: n.
An exact proof term for the current goal is H1.
We prove the intermediate claim L2: qrational, 0 qdenom q ω nω, q = n :/: denom q.
Let q be given.
Assume Hq Hqnn.
An exact proof term for the current goal is Eps_i_ex (λn ⇒ n ω mω, q = m :/: n) (L1 q Hq Hqnn).
We prove the intermediate claim L3: qrational, 0 qnum q ω q = num q :/: denom q.
Let q be given.
Assume Hq Hqnn.
Apply L2 q Hq Hqnn to the current goal.
Assume H2: denom q ω.
Assume H3: nω, q = n :/: denom q.
An exact proof term for the current goal is Eps_i_ex (λm ⇒ m ω q = m :/: denom q) H3.
We prove the intermediate claim Lnum: qrational, 0 qnum q ω.
Let q be given.
Assume Hq Hqnn.
Apply L3 q Hq Hqnn to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Ldenom: qrational, 0 qdenom q ω.
Let q be given.
Assume Hq Hqnn.
Apply L2 q Hq Hqnn to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Set g to be the term λq ⇒ if 0 q then nat_pair 0 (nat_pair (num q) (denom q)) else nat_pair 1 (nat_pair (num (- q)) (denom (- q))) of type setset.
We prove the intermediate claim Lgnneg: ∀q, 0 qg q = nat_pair 0 (nat_pair (num q) (denom q)).
Let q be given.
Assume Hqnn.
An exact proof term for the current goal is If_i_1 (0 q) (nat_pair 0 (nat_pair (num q) (denom q))) (nat_pair 1 (nat_pair (num (- q)) (denom (- q)))) Hqnn.
We prove the intermediate claim Lgneg: ∀q, SNo qq < 0g q = nat_pair 1 (nat_pair (num (- q)) (denom (- q))).
Let q be given.
Assume Hq Hqneg.
Apply If_i_0 (0 q) (nat_pair 0 (nat_pair (num q) (denom q))) (nat_pair 1 (nat_pair (num (- q)) (denom (- q)))) to the current goal.
We will prove ¬ (0 q).
Assume H1: 0 q.
Apply SNoLt_irref q to the current goal.
An exact proof term for the current goal is SNoLtLe_tra q 0 q Hq SNo_0 Hq Hqneg H1.
We prove the intermediate claim L_nat_pair_3: k m nω, nat_pair k (nat_pair m n) ω.
Let k be given.
Assume Hk.
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
An exact proof term for the current goal is nat_pair_In_omega k Hk (nat_pair m n) (nat_pair_In_omega m Hm n Hn).
We prove the intermediate claim L_nat_pair_3_inj: k m n k' m' n'ω, nat_pair k (nat_pair m n) = nat_pair k' (nat_pair m' n')∀p : prop, (k = k'm = m'n = n'p)p.
Let k be given.
Assume Hk.
Let m be given.
Assume Hm.
Let n be given.
Assume Hn.
Let k' be given.
Assume Hk'.
Let m' be given.
Assume Hm'.
Let n' be given.
Assume Hn'.
Assume H1.
Let p be given.
Assume Hp.
We prove the intermediate claim Lmnm'n': nat_pair m n = nat_pair m' n'.
An exact proof term for the current goal is nat_pair_1 k Hk (nat_pair m n) (nat_pair_In_omega m Hm n Hn) k' Hk' (nat_pair m' n') (nat_pair_In_omega m' Hm' n' Hn') H1.
Apply Hp to the current goal.
An exact proof term for the current goal is nat_pair_0 k Hk (nat_pair m n) (nat_pair_In_omega m Hm n Hn) k' Hk' (nat_pair m' n') (nat_pair_In_omega m' Hm' n' Hn') H1.
An exact proof term for the current goal is nat_pair_0 m Hm n Hn m' Hm' n' Hn' Lmnm'n'.
An exact proof term for the current goal is nat_pair_1 m Hm n Hn m' Hm' n' Hn' Lmnm'n'.
We will prove g : setset, inj rational ω g.
We use g to witness the existential quantifier.
We will prove inj rational ω g.
Apply injI to the current goal.
Let q be given.
Assume Hq: q rational.
We prove the intermediate claim LqS: SNo q.
An exact proof term for the current goal is real_SNo q (Subq_rational_real q Hq).
We will prove g q ω.
Apply SNoLtLe_or q 0 LqS SNo_0 to the current goal.
Assume H1: q < 0.
We prove the intermediate claim LmqQ: - q rational.
An exact proof term for the current goal is rational_minus_SNo q Hq.
We prove the intermediate claim Lmqnn: 0 - q.
Apply SNoLtLe to the current goal.
We will prove 0 < - q.
Apply minus_SNo_Lt_contra2 q 0 LqS SNo_0 to the current goal.
We will prove q < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H1.
We will prove g q ω.
An exact proof term for the current goal is Lgneg q LqS H1 (λ_ u ⇒ u ω) (L_nat_pair_3 1 (nat_p_omega 1 nat_1) (num (- q)) (Lnum (- q) LmqQ Lmqnn) (denom (- q)) (Ldenom (- q) LmqQ Lmqnn)).
Assume H1: 0 q.
We will prove g q ω.
An exact proof term for the current goal is Lgnneg q H1 (λ_ u ⇒ u ω) (L_nat_pair_3 0 (nat_p_omega 0 nat_0) (num q) (Lnum q Hq H1) (denom q) (Ldenom q Hq H1)).
Let q be given.
Assume Hq: q rational.
Let q' be given.
Assume Hq': q' rational.
We prove the intermediate claim LqS: SNo q.
An exact proof term for the current goal is real_SNo q (Subq_rational_real q Hq).
We prove the intermediate claim Lq'S: SNo q'.
An exact proof term for the current goal is real_SNo q' (Subq_rational_real q' Hq').
Assume H1: g q = g q'.
We will prove q = q'.
Apply SNoLtLe_or q 0 LqS SNo_0 to the current goal.
Assume H2: q < 0.
We prove the intermediate claim LmqQ: - q rational.
An exact proof term for the current goal is rational_minus_SNo q Hq.
We prove the intermediate claim Lmqnn: 0 - q.
Apply SNoLtLe to the current goal.
We will prove 0 < - q.
Apply minus_SNo_Lt_contra2 q 0 LqS SNo_0 to the current goal.
We will prove q < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H2.
Apply SNoLtLe_or q' 0 Lq'S SNo_0 to the current goal.
Assume H3: q' < 0.
We prove the intermediate claim Lmq'Q: - q' rational.
An exact proof term for the current goal is rational_minus_SNo q' Hq'.
We prove the intermediate claim Lmq'nn: 0 - q'.
Apply SNoLtLe to the current goal.
We will prove 0 < - q'.
Apply minus_SNo_Lt_contra2 q' 0 Lq'S SNo_0 to the current goal.
We will prove q' < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H3.
We prove the intermediate claim L4a: nat_pair 1 (nat_pair (num (- q)) (denom (- q))) = nat_pair 1 (nat_pair (num (- q')) (denom (- q'))).
Use transitivity with g q, and g q'.
Use symmetry.
An exact proof term for the current goal is Lgneg q LqS H2.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is Lgneg q' Lq'S H3.
Apply L_nat_pair_3_inj 1 (nat_p_omega 1 nat_1) (num (- q)) (Lnum (- q) LmqQ Lmqnn) (denom (- q)) (Ldenom (- q) LmqQ Lmqnn) 1 (nat_p_omega 1 nat_1) (num (- q')) (Lnum (- q') Lmq'Q Lmq'nn) (denom (- q')) (Ldenom (- q') Lmq'Q Lmq'nn) L4a to the current goal.
Assume _.
Assume Hnmqq': num (- q) = num (- q').
Assume Hdmqq': denom (- q) = denom (- q').
We will prove q = q'.
rewrite the current goal using minus_SNo_invol q LqS (from right to left).
rewrite the current goal using minus_SNo_invol q' Lq'S (from right to left).
We will prove - - q = - - q'.
Use f_equal.
We will prove - q = - q'.
Apply L3 (- q) LmqQ Lmqnn to the current goal.
Assume _.
Assume Hmqnd: - q = num (- q) :/: denom (- q).
Apply L3 (- q') Lmq'Q Lmq'nn to the current goal.
Assume _.
Assume Hmq'nd: - q' = num (- q') :/: denom (- q').
rewrite the current goal using Hmqnd (from left to right).
rewrite the current goal using Hmq'nd (from left to right).
Use f_equal.
An exact proof term for the current goal is Hnmqq'.
An exact proof term for the current goal is Hdmqq'.
Assume H3: 0 q'.
We will prove False.
We prove the intermediate claim L4b: nat_pair 1 (nat_pair (num (- q)) (denom (- q))) = nat_pair 0 (nat_pair (num q') (denom q')).
Use transitivity with g q, and g q'.
Use symmetry.
An exact proof term for the current goal is Lgneg q LqS H2.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is Lgnneg q' H3.
Apply L_nat_pair_3_inj 1 (nat_p_omega 1 nat_1) (num (- q)) (Lnum (- q) LmqQ Lmqnn) (denom (- q)) (Ldenom (- q) LmqQ Lmqnn) 0 (nat_p_omega 0 nat_0) (num q') (Lnum q' Hq' H3) (denom q') (Ldenom q' Hq' H3) L4b to the current goal.
Assume H4: 1 = 0.
We will prove False.
Apply neq_1_0 to the current goal.
An exact proof term for the current goal is H4.
Assume H2: 0 q.
Apply SNoLtLe_or q' 0 Lq'S SNo_0 to the current goal.
Assume H3: q' < 0.
We will prove False.
We prove the intermediate claim Lmq'Q: - q' rational.
An exact proof term for the current goal is rational_minus_SNo q' Hq'.
We prove the intermediate claim Lmq'nn: 0 - q'.
Apply SNoLtLe to the current goal.
We will prove 0 < - q'.
Apply minus_SNo_Lt_contra2 q' 0 Lq'S SNo_0 to the current goal.
We will prove q' < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H3.
We prove the intermediate claim L4c: nat_pair 0 (nat_pair (num q) (denom q)) = nat_pair 1 (nat_pair (num (- q')) (denom (- q'))).
Use transitivity with g q, and g q'.
Use symmetry.
An exact proof term for the current goal is Lgnneg q H2.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is Lgneg q' Lq'S H3.
Apply L_nat_pair_3_inj 0 (nat_p_omega 0 nat_0) (num q) (Lnum q Hq H2) (denom q) (Ldenom q Hq H2) 1 (nat_p_omega 1 nat_1) (num (- q')) (Lnum (- q') Lmq'Q Lmq'nn) (denom (- q')) (Ldenom (- q') Lmq'Q Lmq'nn) L4c to the current goal.
Assume H4: 0 = 1.
We will prove False.
Apply neq_0_1 to the current goal.
An exact proof term for the current goal is H4.
Assume H3: 0 q'.
We prove the intermediate claim L4d: nat_pair 0 (nat_pair (num q) (denom q)) = nat_pair 0 (nat_pair (num q') (denom q')).
Use transitivity with g q, and g q'.
Use symmetry.
An exact proof term for the current goal is Lgnneg q H2.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is Lgnneg q' H3.
Apply L_nat_pair_3_inj 0 (nat_p_omega 0 nat_0) (num q) (Lnum q Hq H2) (denom q) (Ldenom q Hq H2) 0 (nat_p_omega 0 nat_0) (num q') (Lnum q' Hq' H3) (denom q') (Ldenom q' Hq' H3) L4d to the current goal.
Assume _.
Assume Hnqq': num q = num q'.
Assume Hdqq': denom q = denom q'.
We will prove q = q'.
Apply L3 q Hq H2 to the current goal.
Assume _.
Assume Hqnd: q = num q :/: denom q.
Apply L3 q' Hq' H3 to the current goal.
Assume _.
Assume Hq'nd: q' = num q' :/: denom q'.
rewrite the current goal using Hqnd (from left to right).
rewrite the current goal using Hq'nd (from left to right).
Use f_equal.
An exact proof term for the current goal is Hnqq'.
An exact proof term for the current goal is Hdqq'.
End of Section form100_3
Beginning of Section SurrealSqrt
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term div_SNo.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Definition. We define SNoL_nonneg to be λx ⇒ {wSNoL x|0 w} of type setset.
Theorem. (SNoL_nonneg_0) The following is provable:
Proof:
We will prove {wSNoL 0|0 w} = 0.
rewrite the current goal using SNoL_0 (from left to right).
An exact proof term for the current goal is Sep_Empty (λw ⇒ 0 w).
Theorem. (SNoL_nonneg_1) The following is provable:
Proof:
We will prove {wSNoL 1|0 w} = 1.
rewrite the current goal using SNoL_1 (from left to right).
We will prove {w1|0 w} = 1.
Apply set_ext to the current goal.
An exact proof term for the current goal is Sep_Subq 1 (λw ⇒ 0 w).
Let w be given.
Assume Hw: w 1.
Apply cases_1 w Hw to the current goal.
We will prove 0 {w1|0 w}.
Apply SepI to the current goal.
An exact proof term for the current goal is In_0_1.
We will prove 0 0.
Apply SNoLe_ref to the current goal.
Definition. We define SNo_sqrtauxset to be λY Z x ⇒ yY{(x + y * z) :/: (y + z)|zZ, 0 < y + z} of type setsetsetset.
Theorem. (SNo_sqrtauxset_I) The following is provable:
∀Y Z x, yY, zZ, 0 < y + z(x + y * z) :/: (y + z) SNo_sqrtauxset Y Z x
Proof:
Let Y, Z, x and y be given.
Assume Hy.
Let z be given.
Assume Hz.
Assume H1.
We will prove (x + y * z) :/: (y + z) yY{(x + y * z) :/: (y + z)|zZ, 0 < y + z}.
Apply famunionI Y (λy ⇒ {(x + y * z) :/: (y + z)|zZ, 0 < y + z}) y ((x + y * z) :/: (y + z)) Hy to the current goal.
We will prove (x + y * z) :/: (y + z) {(x + y * z) :/: (y + z)|zZ, 0 < y + z}.
An exact proof term for the current goal is ReplSepI Z (λz ⇒ 0 < y + z) (λz ⇒ (x + y * z) :/: (y + z)) z Hz H1.
Theorem. (SNo_sqrtauxset_E) The following is provable:
∀Y Z x, uSNo_sqrtauxset Y Z x, ∀p : prop, (yY, zZ, 0 < y + zu = (x + y * z) :/: (y + z)p)p
Proof:
Let Y, Z, x and u be given.
Assume Hu.
Let p be given.
Assume H1.
Apply famunionE_impred Y (λy ⇒ {(x + y * z) :/: (y + z)|zZ, 0 < y + z}) u Hu to the current goal.
Let y be given.
Assume Hy: y Y.
Assume Hu1.
Apply ReplSepE_impred Z (λz ⇒ 0 < y + z) (λz ⇒ (x + y * z) :/: (y + z)) u Hu1 to the current goal.
Let z be given.
Assume Hz: z Z.
Assume Hyz: 0 < y + z.
Assume Hu2: u = (x + y * z) :/: (y + z).
An exact proof term for the current goal is H1 y Hy z Hz Hyz Hu2.
Theorem. (SNo_sqrtauxset_0) The following is provable:
∀Z x, SNo_sqrtauxset 0 Z x = 0
Proof:
Let Z and x be given.
Apply Empty_eq to the current goal.
Let u be given.
Assume Hu.
Apply SNo_sqrtauxset_E 0 Z x u Hu to the current goal.
Let y be given.
Assume Hy: y 0.
We will prove False.
An exact proof term for the current goal is EmptyE y Hy.
Theorem. (SNo_sqrtauxset_0') The following is provable:
∀Y x, SNo_sqrtauxset Y 0 x = 0
Proof:
Let Y and x be given.
Apply Empty_eq to the current goal.
Let u be given.
Assume Hu.
Apply SNo_sqrtauxset_E Y 0 x u Hu to the current goal.
Let y be given.
Assume Hy: y Y.
Let z be given.
Assume Hz: z 0.
We will prove False.
An exact proof term for the current goal is EmptyE z Hz.
Definition. We define SNo_sqrtaux to be λx g ⇒ nat_primrec ({g w|wSNoL_nonneg x},{g z|zSNoR x}) (λk p ⇒ (p 0 SNo_sqrtauxset (p 0) (p 1) x,p 1 SNo_sqrtauxset (p 0) (p 0) x SNo_sqrtauxset (p 1) (p 1) x)) of type set(setset)setset.
Theorem. (SNo_sqrtaux_0) The following is provable:
∀x, ∀g : setset, SNo_sqrtaux x g 0 = ({g w|wSNoL_nonneg x},{g z|zSNoR x})
Proof:
Let x and g be given.
An exact proof term for the current goal is nat_primrec_0 ({g w|wSNoL_nonneg x},{g z|zSNoR x}) (λk p ⇒ (p 0 SNo_sqrtauxset (p 0) (p 1) x,p 1 SNo_sqrtauxset (p 0) (p 0) x SNo_sqrtauxset (p 1) (p 1) x)).
Theorem. (SNo_sqrtaux_S) The following is provable:
∀x, ∀g : setset, ∀n, nat_p nSNo_sqrtaux x g (ordsucc n) = (SNo_sqrtaux x g n 0 SNo_sqrtauxset (SNo_sqrtaux x g n 0) (SNo_sqrtaux x g n 1) x,SNo_sqrtaux x g n 1 SNo_sqrtauxset (SNo_sqrtaux x g n 0) (SNo_sqrtaux x g n 0) x SNo_sqrtauxset (SNo_sqrtaux x g n 1) (SNo_sqrtaux x g n 1) x)
Proof:
Let x, g and n be given.
Assume Hn.
An exact proof term for the current goal is nat_primrec_S ({g w|wSNoL_nonneg x},{g z|zSNoR x}) (λk p ⇒ (p 0 SNo_sqrtauxset (p 0) (p 1) x,p 1 SNo_sqrtauxset (p 0) (p 0) x SNo_sqrtauxset (p 1) (p 1) x)) n Hn.
Theorem. (SNo_sqrtaux_mon_lem) The following is provable:
∀x, ∀g : setset, ∀m, nat_p m∀n, nat_p nSNo_sqrtaux x g m 0 SNo_sqrtaux x g (add_nat m n) 0 SNo_sqrtaux x g m 1 SNo_sqrtaux x g (add_nat m n) 1
Proof:
Let x, g and m be given.
Assume Hm.
Apply nat_ind to the current goal.
We will prove SNo_sqrtaux x g m 0 SNo_sqrtaux x g (add_nat m 0) 0 SNo_sqrtaux x g m 1 SNo_sqrtaux x g (add_nat m 0) 1.
rewrite the current goal using add_nat_0R m (from left to right).
We will prove SNo_sqrtaux x g m 0 SNo_sqrtaux x g m 0 SNo_sqrtaux x g m 1 SNo_sqrtaux x g m 1.
Apply andI to the current goal.
Apply Subq_ref to the current goal.
Apply Subq_ref to the current goal.
Let n be given.
Assume Hn IH.
Apply IH to the current goal.
Assume IH0: SNo_sqrtaux x g m 0 SNo_sqrtaux x g (add_nat m n) 0.
Assume IH1: SNo_sqrtaux x g m 1 SNo_sqrtaux x g (add_nat m n) 1.
rewrite the current goal using add_nat_SR m n Hn (from left to right).
We will prove SNo_sqrtaux x g m 0 SNo_sqrtaux x g (ordsucc (add_nat m n)) 0 SNo_sqrtaux x g m 1 SNo_sqrtaux x g (ordsucc (add_nat m n)) 1.
rewrite the current goal using SNo_sqrtaux_S x g (add_nat m n) (add_nat_p m Hm n Hn) (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply andI to the current goal.
We will prove SNo_sqrtaux x g m 0 SNo_sqrtaux x g (add_nat m n) 0 SNo_sqrtauxset (SNo_sqrtaux x g (add_nat m n) 0) (SNo_sqrtaux x g (add_nat m n) 1) x.
Apply Subq_tra (SNo_sqrtaux x g m 0) (SNo_sqrtaux x g (add_nat m n) 0) (SNo_sqrtaux x g (add_nat m n) 0 SNo_sqrtauxset (SNo_sqrtaux x g (add_nat m n) 0) (SNo_sqrtaux x g (add_nat m n) 1) x) IH0 to the current goal.
Apply binunion_Subq_1 to the current goal.
We will prove SNo_sqrtaux x g m 1 SNo_sqrtaux x g (add_nat m n) 1 SNo_sqrtauxset (SNo_sqrtaux x g (add_nat m n) 0) (SNo_sqrtaux x g (add_nat m n) 0) x SNo_sqrtauxset (SNo_sqrtaux x g (add_nat m n) 1) (SNo_sqrtaux x g (add_nat m n) 1) x.
Apply Subq_tra (SNo_sqrtaux x g m 1) (SNo_sqrtaux x g (add_nat m n) 1) (SNo_sqrtaux x g (add_nat m n) 1 SNo_sqrtauxset (SNo_sqrtaux x g (add_nat m n) 0) (SNo_sqrtaux x g (add_nat m n) 0) x SNo_sqrtauxset (SNo_sqrtaux x g (add_nat m n) 1) (SNo_sqrtaux x g (add_nat m n) 1) x) IH1 to the current goal.
Apply Subq_tra (SNo_sqrtaux x g (add_nat m n) 1) (SNo_sqrtaux x g (add_nat m n) 1 SNo_sqrtauxset (SNo_sqrtaux x g (add_nat m n) 0) (SNo_sqrtaux x g (add_nat m n) 0) x) (SNo_sqrtaux x g (add_nat m n) 1 SNo_sqrtauxset (SNo_sqrtaux x g (add_nat m n) 0) (SNo_sqrtaux x g (add_nat m n) 0) x SNo_sqrtauxset (SNo_sqrtaux x g (add_nat m n) 1) (SNo_sqrtaux x g (add_nat m n) 1) x) to the current goal.
Apply binunion_Subq_1 to the current goal.
Apply binunion_Subq_1 to the current goal.
Theorem. (SNo_sqrtaux_mon) The following is provable:
∀x, ∀g : setset, ∀m, nat_p m∀n, nat_p nm nSNo_sqrtaux x g m 0 SNo_sqrtaux x g n 0 SNo_sqrtaux x g m 1 SNo_sqrtaux x g n 1
Proof:
Let x, g and m be given.
Assume Hm.
Let n be given.
Assume Hn Hmn.
Apply nat_Subq_add_ex m Hm n Hn Hmn to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: nat_p k.
rewrite the current goal using add_nat_com k Hk m Hm (from left to right).
Assume H1: n = add_nat m k.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is SNo_sqrtaux_mon_lem x g m Hm k Hk.
Theorem. (SNo_sqrtaux_ext) The following is provable:
∀x, SNo x∀g h : setset, (x'SNoS_ (SNoLev x), g x' = h x')∀k, nat_p kSNo_sqrtaux x g k = SNo_sqrtaux x h k
Proof:
Let x be given.
Assume Hx.
Let g and h be given.
Assume Hgh.
Apply nat_ind to the current goal.
We will prove SNo_sqrtaux x g 0 = SNo_sqrtaux x h 0.
rewrite the current goal using SNo_sqrtaux_0 x g (from left to right).
rewrite the current goal using SNo_sqrtaux_0 x h (from left to right).
We will prove ({g w|wSNoL_nonneg x},{g z|zSNoR x}) = ({h w|wSNoL_nonneg x},{h z|zSNoR x}).
We prove the intermediate claim L1: {g w|wSNoL_nonneg x} = {h w|wSNoL_nonneg x}.
Apply ReplEq_ext (SNoL_nonneg x) g h to the current goal.
Let w be given.
Assume Hw: w SNoL_nonneg x.
We will prove g w = h w.
Apply SNoL_E x Hx w (SepE1 (SNoL x) (λw ⇒ 0 w) w Hw) to the current goal.
Assume Hw1 Hw2 Hw3.
Apply Hgh to the current goal.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
We prove the intermediate claim L2: {g w|wSNoR x} = {h w|wSNoR x}.
Apply ReplEq_ext (SNoR x) g h to the current goal.
Let w be given.
Assume Hw: w SNoR x.
We will prove g w = h w.
Apply SNoR_E x Hx w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
Apply Hgh to the current goal.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
rewrite the current goal using L1 (from left to right).
rewrite the current goal using L2 (from left to right).
Use reflexivity.
Let k be given.
Assume Hk: nat_p k.
Assume IH: SNo_sqrtaux x g k = SNo_sqrtaux x h k.
We will prove SNo_sqrtaux x g (ordsucc k) = SNo_sqrtaux x h (ordsucc k).
rewrite the current goal using SNo_sqrtaux_S x g k Hk (from left to right).
rewrite the current goal using SNo_sqrtaux_S x h k Hk (from left to right).
rewrite the current goal using IH (from left to right).
Use reflexivity.
Beginning of Section sqrt_SNo_nonneg
Let G : set(setset)setλx g ⇒ SNoCut (kωSNo_sqrtaux x g k 0) (kωSNo_sqrtaux x g k 1)
Theorem. (sqrt_SNo_nonneg_eq) The following is provable:
Proof:
Apply SNo_rec_i_eq G to the current goal.
Let x be given.
Assume Hx.
Let g and h be given.
Assume Hgh.
Use f_equal.
Apply famunion_ext to the current goal.
Let k be given.
Assume Hk.
We will prove SNo_sqrtaux x g k 0 = SNo_sqrtaux x h k 0.
Use f_equal.
Apply SNo_sqrtaux_ext x Hx g h to the current goal.
We will prove wSNoS_ (SNoLev x), g w = h w.
An exact proof term for the current goal is Hgh.
An exact proof term for the current goal is omega_nat_p k Hk.
Apply famunion_ext to the current goal.
Let k be given.
Assume Hk.
We will prove SNo_sqrtaux x g k 1 = SNo_sqrtaux x h k 1.
Use f_equal.
Apply SNo_sqrtaux_ext x Hx g h to the current goal.
We will prove wSNoS_ (SNoLev x), g w = h w.
An exact proof term for the current goal is Hgh.
An exact proof term for the current goal is omega_nat_p k Hk.
Proof:
Let x be given.
Assume Hx Hxnonneg IH.
Set L_ to be the term λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 0 of type setset.
Set R_ to be the term λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 1 of type setset.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
Apply nat_ind to the current goal.
rewrite the current goal using SNo_sqrtaux_0 x sqrt_SNo_nonneg (from left to right).
Apply andI to the current goal.
Let y be given.
rewrite the current goal using tuple_2_0_eq (from left to right).
We will prove SNo y 0 y y * y < x.
Apply ReplE_impred (SNoL_nonneg x) sqrt_SNo_nonneg y Hy to the current goal.
Let w be given.
Assume Hw: w SNoL_nonneg x.
Assume Hyw: y = sqrt_SNo_nonneg w.
Apply SepE (SNoL x) (λw ⇒ 0 w) w Hw to the current goal.
Assume Hw: w SNoL x.
Assume Hwnonneg: 0 w.
Apply SNoL_E x Hx w Hw to the current goal.
Assume Hw1 Hw2 Hw3.
We prove the intermediate claim Lw: w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
Apply IH w Lw Hwnonneg to the current goal.
Assume H.
Apply H to the current goal.
Assume IHa: SNo (sqrt_SNo_nonneg w).
Assume IHb: 0 sqrt_SNo_nonneg w.
Assume IHc: sqrt_SNo_nonneg w * sqrt_SNo_nonneg w = w.
Apply and3I to the current goal.
rewrite the current goal using Hyw (from left to right).
An exact proof term for the current goal is IHa.
rewrite the current goal using Hyw (from left to right).
An exact proof term for the current goal is IHb.
rewrite the current goal using Hyw (from left to right).
We will prove sqrt_SNo_nonneg w * sqrt_SNo_nonneg w < x.
rewrite the current goal using IHc (from left to right).
An exact proof term for the current goal is Hw3.
Let y be given.
rewrite the current goal using tuple_2_1_eq (from left to right).
Assume Hy: y {sqrt_SNo_nonneg z|zSNoR x}.
We will prove SNo y 0 y x < y * y.
Apply ReplE_impred (SNoR x) sqrt_SNo_nonneg y Hy to the current goal.
Let z be given.
Assume Hz: z SNoR x.
Assume Hyz: y = sqrt_SNo_nonneg z.
Apply SNoR_E x Hx z Hz to the current goal.
Assume Hz1 Hz2 Hz3.
We prove the intermediate claim Lz: z SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 z x Hz1 Hx Hz2.
We prove the intermediate claim Lznonneg: 0 z.
An exact proof term for the current goal is SNoLe_tra 0 x z SNo_0 Hx Hz1 Hxnonneg (SNoLtLe x z Hz3).
Apply IH z Lz Lznonneg to the current goal.
Assume H.
Apply H to the current goal.
Assume IHa: SNo (sqrt_SNo_nonneg z).
Assume IHb: 0 sqrt_SNo_nonneg z.
Assume IHc: sqrt_SNo_nonneg z * sqrt_SNo_nonneg z = z.
Apply and3I to the current goal.
rewrite the current goal using Hyz (from left to right).
An exact proof term for the current goal is IHa.
rewrite the current goal using Hyz (from left to right).
An exact proof term for the current goal is IHb.
rewrite the current goal using Hyz (from left to right).
We will prove x < sqrt_SNo_nonneg z * sqrt_SNo_nonneg z.
rewrite the current goal using IHc (from left to right).
An exact proof term for the current goal is Hz3.
Let k be given.
Assume Hk: nat_p k.
Assume IHk: (yL_ k, SNo y 0 y y * y < x) (yR_ k, SNo y 0 y x < y * y).
Apply IHk to the current goal.
Assume IHk0 IHk1.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k Hk (from left to right).
Apply andI to the current goal.
Let y be given.
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply binunionE' to the current goal.
An exact proof term for the current goal is IHk0 y.
Assume Hy: y SNo_sqrtauxset (L_ k) (R_ k) x.
Apply SNo_sqrtauxset_E (L_ k) (R_ k) x y Hy to the current goal.
Let w be given.
Assume Hw: w L_ k.
Let z be given.
Assume Hz: z R_ k.
Assume Hwpzpos: 0 < w + z.
Assume Hywz: y = (x + w * z) :/: (w + z).
Apply IHk0 w Hw to the current goal.
Assume H.
Apply H to the current goal.
Assume Hw1: SNo w.
Assume Hw2: 0 w.
Assume Hw3: w * w < x.
Apply IHk1 z Hz to the current goal.
Assume H.
Apply H to the current goal.
Assume Hz1: SNo z.
Assume Hz2: 0 z.
Assume Hz3: x < z * z.
We will prove SNo y 0 y y * y < x.
We prove the intermediate claim Lwz: SNo (w * z).
An exact proof term for the current goal is SNo_mul_SNo w z Hw1 Hz1.
We prove the intermediate claim Lxpwz: SNo (x + w * z).
An exact proof term for the current goal is SNo_add_SNo x (w * z) Hx Lwz.
We prove the intermediate claim Lwpz: SNo (w + z).
An exact proof term for the current goal is SNo_add_SNo w z Hw1 Hz1.
We prove the intermediate claim Ly: SNo y.
rewrite the current goal using Hywz (from left to right).
An exact proof term for the current goal is SNo_div_SNo (x + w * z) (w + z) Lxpwz Lwpz.
We prove the intermediate claim Lxpwznonneg: 0 x + w * z.
rewrite the current goal using add_SNo_0L 0 SNo_0 (from right to left).
Apply add_SNo_Le3 0 0 x (w * z) SNo_0 SNo_0 Hx Lwz Hxnonneg to the current goal.
We will prove 0 w * z.
An exact proof term for the current goal is mul_SNo_nonneg_nonneg w z Hw1 Hz1 Hw2 Hz2.
We prove the intermediate claim Lynonneg: 0 y.
We will prove 0 y.
rewrite the current goal using Hywz (from left to right).
We will prove 0 (x + w * z) :/: (w + z).
Apply SNoLeE 0 (x + w * z) SNo_0 Lxpwz Lxpwznonneg to the current goal.
Assume H1: 0 < x + w * z.
Apply SNoLtLe to the current goal.
Apply div_SNo_pos_pos (x + w * z) (w + z) Lxpwz Lwpz to the current goal.
We will prove 0 < x + w * z.
An exact proof term for the current goal is H1.
We will prove 0 < w + z.
An exact proof term for the current goal is Hwpzpos.
Assume H1: 0 = x + w * z.
rewrite the current goal using H1 (from right to left).
We will prove 0 0 :/: (w + z).
rewrite the current goal using div_SNo_0_num (w + z) Lwpz (from left to right).
Apply SNoLe_ref to the current goal.
Apply and3I to the current goal.
An exact proof term for the current goal is Ly.
An exact proof term for the current goal is Lynonneg.
We will prove y * y < x.
rewrite the current goal using Hywz (from left to right).
We will prove ((x + w * z) :/: (w + z)) * ((x + w * z) :/: (w + z)) < x.
rewrite the current goal using mul_div_SNo_both (x + w * z) (w + z) (x + w * z) (w + z) Lxpwz Lwpz Lxpwz Lwpz (from left to right).
We will prove ((x + w * z) * (x + w * z)) :/: ((w + z) * (w + z)) < x.
Apply div_SNo_pos_LtL ((x + w * z) * (x + w * z)) ((w + z) * (w + z)) x (SNo_mul_SNo (x + w * z) (x + w * z) Lxpwz Lxpwz) (SNo_mul_SNo (w + z) (w + z) Lwpz Lwpz) Hx to the current goal.
We will prove 0 < (w + z) * (w + z).
An exact proof term for the current goal is mul_SNo_pos_pos (w + z) (w + z) Lwpz Lwpz Hwpzpos Hwpzpos.
We will prove ((x + w * z) * (x + w * z)) < x * ((w + z) * (w + z)).
rewrite the current goal using SNo_foil x (w * z) x (w * z) Hx Lwz (from left to right).
rewrite the current goal using SNo_foil w z w z Hw1 Hz1 Hw1 Hz1 (from left to right).
We will prove x * x + x * w * z + (w * z) * x + (w * z) * w * z < x * (w * w + w * z + z * w + z * z).
rewrite the current goal using mul_SNo_com z w Hz1 Hw1 (from left to right).
rewrite the current goal using add_SNo_rotate_4_1 (w * z) (w * z) (z * z) (w * w) Lwz Lwz (SNo_mul_SNo z z Hz1 Hz1) (SNo_mul_SNo w w Hw1 Hw1) (from right to left).
We will prove x * x + x * w * z + (w * z) * x + (w * z) * w * z < x * (w * z + w * z + z * z + w * w).
rewrite the current goal using mul_SNo_com (w * z) x Lwz Hx (from left to right).
We will prove x * x + x * w * z + x * w * z + (w * z) * w * z < x * (w * z + w * z + z * z + w * w).
We prove the intermediate claim Lxwz: SNo (x * w * z).
An exact proof term for the current goal is SNo_mul_SNo x (w * z) Hx Lwz.
rewrite the current goal using add_SNo_rotate_4_1 (x * w * z) (x * w * z) ((w * z) * w * z) (x * x) Lxwz Lxwz (SNo_mul_SNo (w * z) (w * z) Lwz Lwz) (SNo_mul_SNo x x Hx Hx) (from right to left).
We will prove x * w * z + x * w * z + (w * z) * w * z + x * x < x * (w * z + w * z + z * z + w * w).
rewrite the current goal using mul_SNo_distrL x (w * z) (w * z + z * z + w * w) Hx Lwz (SNo_add_SNo_3 (w * z) (z * z) (w * w) Lwz (SNo_mul_SNo z z Hz1 Hz1) (SNo_mul_SNo w w Hw1 Hw1)) (from left to right).
We will prove x * w * z + x * w * z + (w * z) * w * z + x * x < x * w * z + x * (w * z + z * z + w * w).
rewrite the current goal using mul_SNo_distrL x (w * z) (z * z + w * w) Hx Lwz (SNo_add_SNo (z * z) (w * w) (SNo_mul_SNo z z Hz1 Hz1) (SNo_mul_SNo w w Hw1 Hw1)) (from left to right).
We will prove x * w * z + x * w * z + (w * z) * w * z + x * x < x * w * z + x * w * z + x * (z * z + w * w).
We prove the intermediate claim Lxwz: SNo (x * w * z).
An exact proof term for the current goal is SNo_mul_SNo_3 x w z Hx Hw1 Hz1.
Apply add_SNo_Lt2 (x * w * z) (x * w * z + (w * z) * w * z + x * x) (x * w * z + x * (z * z + w * w)) Lxwz (SNo_add_SNo_3 (x * w * z) ((w * z) * w * z) (x * x) Lxwz (SNo_mul_SNo (w * z) (w * z) Lwz Lwz) (SNo_mul_SNo x x Hx Hx)) (SNo_add_SNo (x * w * z) (x * (z * z + w * w)) Lxwz (SNo_mul_SNo x (z * z + w * w) Hx (SNo_add_SNo (z * z) (w * w) (SNo_mul_SNo z z Hz1 Hz1) (SNo_mul_SNo w w Hw1 Hw1)))) to the current goal.
We will prove x * w * z + (w * z) * w * z + x * x < x * w * z + x * (z * z + w * w).
Apply add_SNo_Lt2 (x * w * z) ((w * z) * w * z + x * x) (x * (z * z + w * w)) Lxwz (SNo_add_SNo ((w * z) * w * z) (x * x) (SNo_mul_SNo (w * z) (w * z) Lwz Lwz) (SNo_mul_SNo x x Hx Hx)) (SNo_mul_SNo x (z * z + w * w) Hx (SNo_add_SNo (z * z) (w * w) (SNo_mul_SNo z z Hz1 Hz1) (SNo_mul_SNo w w Hw1 Hw1))) to the current goal.
We will prove (w * z) * w * z + x * x < x * (z * z + w * w).
rewrite the current goal using mul_SNo_distrL x (z * z) (w * w) Hx (SNo_mul_SNo z z Hz1 Hz1) (SNo_mul_SNo w w Hw1 Hw1) (from left to right).
We will prove (w * z) * w * z + x * x < x * z * z + x * w * w.
rewrite the current goal using mul_SNo_com x (w * w) Hx (SNo_mul_SNo w w Hw1 Hw1) (from left to right).
We will prove (w * z) * w * z + x * x < x * z * z + (w * w) * x.
rewrite the current goal using add_SNo_0L ((w * z) * w * z + x * x) (SNo_add_SNo ((w * z) * w * z) (x * x) (SNo_mul_SNo (w * z) (w * z) Lwz Lwz) (SNo_mul_SNo x x Hx Hx)) (from right to left).
We will prove 0 + (w * z) * w * z + x * x < x * z * z + (w * w) * x.
Apply add_SNo_minus_Lt2 (x * z * z + (w * w) * x) ((w * z) * w * z + x * x) 0 (SNo_add_SNo (x * z * z) ((w * w) * x) (SNo_mul_SNo x (z * z) Hx (SNo_mul_SNo z z Hz1 Hz1)) (SNo_mul_SNo (w * w) x (SNo_mul_SNo w w Hw1 Hw1) Hx)) (SNo_add_SNo ((w * z) * w * z) (x * x) (SNo_mul_SNo (w * z) (w * z) Lwz Lwz) (SNo_mul_SNo x x Hx Hx)) SNo_0 to the current goal.
We will prove 0 < (x * z * z + (w * w) * x) + - ((w * z) * w * z + x * x).
rewrite the current goal using add_SNo_assoc (x * z * z) ((w * w) * x) (- ((w * z) * w * z + x * x)) (SNo_mul_SNo x (z * z) Hx (SNo_mul_SNo z z Hz1 Hz1)) (SNo_mul_SNo (w * w) x (SNo_mul_SNo w w Hw1 Hw1) Hx) (SNo_minus_SNo ((w * z) * w * z + x * x) (SNo_add_SNo ((w * z) * w * z) (x * x) (SNo_mul_SNo (w * z) (w * z) Lwz Lwz) (SNo_mul_SNo x x Hx Hx))) (from right to left).
rewrite the current goal using minus_add_SNo_distr ((w * z) * w * z) (x * x) (SNo_mul_SNo (w * z) (w * z) Lwz Lwz) (SNo_mul_SNo x x Hx Hx) (from left to right).
We will prove 0 < x * z * z + (w * w) * x + - (w * z) * w * z + - x * x.
rewrite the current goal using add_SNo_rotate_3_1 ((w * w) * x) (- (w * z) * w * z) (- x * x) (SNo_mul_SNo (w * w) x (SNo_mul_SNo w w Hw1 Hw1) Hx) (SNo_minus_SNo ((w * z) * w * z) (SNo_mul_SNo (w * z) (w * z) Lwz Lwz)) (SNo_minus_SNo (x * x) (SNo_mul_SNo x x Hx Hx)) (from left to right).
We will prove 0 < x * z * z + - x * x + (w * w) * x + - (w * z) * w * z.
rewrite the current goal using add_SNo_com ((w * w) * x) (- (w * z) * w * z) (SNo_mul_SNo (w * w) x (SNo_mul_SNo w w Hw1 Hw1) Hx) (SNo_minus_SNo ((w * z) * w * z) (SNo_mul_SNo (w * z) (w * z) Lwz Lwz)) (from left to right).
We will prove 0 < x * z * z + - x * x + - (w * z) * w * z + (w * w) * x.
rewrite the current goal using mul_SNo_assoc w z (w * z) Hw1 Hz1 Lwz (from right to left).
We will prove 0 < x * z * z + - x * x + - w * z * w * z + (w * w) * x.
rewrite the current goal using mul_SNo_com_3_0_1 z w z Hz1 Hw1 Hz1 (from left to right).
We will prove 0 < x * z * z + - x * x + - w * w * z * z + (w * w) * x.
rewrite the current goal using mul_SNo_assoc w w (z * z) Hw1 Hw1 (SNo_mul_SNo z z Hz1 Hz1) (from left to right).
rewrite the current goal using SNo_foil_mm x (w * w) (z * z) x Hx (SNo_mul_SNo w w Hw1 Hw1) (SNo_mul_SNo z z Hz1 Hz1) Hx (from right to left).
We will prove 0 < (x + - w * w) * (z * z + - x).
Apply mul_SNo_pos_pos (x + - w * w) (z * z + - x) (SNo_add_SNo x (- w * w) Hx (SNo_minus_SNo (w * w) (SNo_mul_SNo w w Hw1 Hw1))) (SNo_add_SNo (z * z) (- x) (SNo_mul_SNo z z Hz1 Hz1) (SNo_minus_SNo x Hx)) to the current goal.
We will prove 0 < x + - w * w.
An exact proof term for the current goal is SNoLt_minus_pos (w * w) x (SNo_mul_SNo w w Hw1 Hw1) Hx Hw3.
We will prove 0 < z * z + - x.
An exact proof term for the current goal is SNoLt_minus_pos x (z * z) Hx (SNo_mul_SNo z z Hz1 Hz1) Hz3.
An exact proof term for the current goal is Hx.
We will prove SNo (w * z).
An exact proof term for the current goal is Lwz.
Let y be given.
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply binunionE' to the current goal.
Apply binunionE' to the current goal.
An exact proof term for the current goal is IHk1 y.
Assume Hy: y SNo_sqrtauxset (L_ k) (L_ k) x.
We will prove SNo y 0 y x < y * y.
Apply SNo_sqrtauxset_E (L_ k) (L_ k) x y Hy to the current goal.
Let w be given.
Assume Hw: w L_ k.
Let w' be given.
Assume Hw': w' L_ k.
Assume Hww'pos: 0 < w + w'.
Assume Hyww': y = (x + w * w') :/: (w + w').
Apply IHk0 w Hw to the current goal.
Assume H.
Apply H to the current goal.
Assume Hw1: SNo w.
Assume Hw2: 0 w.
Assume Hw3: w * w < x.
Apply IHk0 w' Hw' to the current goal.
Assume H.
Apply H to the current goal.
Assume Hw'1: SNo w'.
Assume Hw'2: 0 w'.
Assume Hw'3: w' * w' < x.
We will prove SNo y 0 y x < y * y.
We prove the intermediate claim Lww': SNo (w * w').
An exact proof term for the current goal is SNo_mul_SNo w w' Hw1 Hw'1.
We prove the intermediate claim Lxpww': SNo (x + w * w').
An exact proof term for the current goal is SNo_add_SNo x (w * w') Hx Lww'.
We prove the intermediate claim Lwpw': SNo (w + w').
An exact proof term for the current goal is SNo_add_SNo w w' Hw1 Hw'1.
We prove the intermediate claim Ly: SNo y.
rewrite the current goal using Hyww' (from left to right).
An exact proof term for the current goal is SNo_div_SNo (x + w * w') (w + w') Lxpww' Lwpw'.
We prove the intermediate claim Lxpww'nonneg: 0 x + w * w'.
rewrite the current goal using add_SNo_0L 0 SNo_0 (from right to left).
Apply add_SNo_Le3 0 0 x (w * w') SNo_0 SNo_0 Hx Lww' Hxnonneg to the current goal.
We will prove 0 w * w'.
An exact proof term for the current goal is mul_SNo_nonneg_nonneg w w' Hw1 Hw'1 Hw2 Hw'2.
We prove the intermediate claim Lynonneg: 0 y.
We will prove 0 y.
rewrite the current goal using Hyww' (from left to right).
We will prove 0 (x + w * w') :/: (w + w').
Apply SNoLeE 0 (x + w * w') SNo_0 Lxpww' Lxpww'nonneg to the current goal.
Assume H1: 0 < x + w * w'.
Apply SNoLtLe to the current goal.
Apply div_SNo_pos_pos (x + w * w') (w + w') Lxpww' Lwpw' to the current goal.
We will prove 0 < x + w * w'.
An exact proof term for the current goal is H1.
We will prove 0 < w + w'.
An exact proof term for the current goal is Hww'pos.
Assume H1: 0 = x + w * w'.
rewrite the current goal using H1 (from right to left).
We will prove 0 0 :/: (w + w').
rewrite the current goal using div_SNo_0_num (w + w') Lwpw' (from left to right).
Apply SNoLe_ref to the current goal.
Apply and3I to the current goal.
An exact proof term for the current goal is Ly.
An exact proof term for the current goal is Lynonneg.
We will prove x < y * y.
rewrite the current goal using Hyww' (from left to right).
We will prove x < ((x + w * w') :/: (w + w')) * ((x + w * w') :/: (w + w')).
rewrite the current goal using mul_div_SNo_both (x + w * w') (w + w') (x + w * w') (w + w') Lxpww' Lwpw' Lxpww' Lwpw' (from left to right).
We will prove x < ((x + w * w') * (x + w * w')) :/: ((w + w') * (w + w')).
Apply div_SNo_pos_LtR ((x + w * w') * (x + w * w')) ((w + w') * (w + w')) x (SNo_mul_SNo (x + w * w') (x + w * w') Lxpww' Lxpww') (SNo_mul_SNo (w + w') (w + w') Lwpw' Lwpw') Hx to the current goal.
We will prove 0 < (w + w') * (w + w').
An exact proof term for the current goal is mul_SNo_pos_pos (w + w') (w + w') Lwpw' Lwpw' Hww'pos Hww'pos.
We will prove x * ((w + w') * (w + w')) < ((x + w * w') * (x + w * w')).
rewrite the current goal using SNo_foil x (w * w') x (w * w') Hx Lww' (from left to right).
rewrite the current goal using SNo_foil w w' w w' Hw1 Hw'1 Hw1 Hw'1 (from left to right).
We will prove x * (w * w + w * w' + w' * w + w' * w') < x * x + x * w * w' + (w * w') * x + (w * w') * w * w'.
rewrite the current goal using mul_SNo_com w' w Hw'1 Hw1 (from left to right).
rewrite the current goal using add_SNo_rotate_4_1 (w * w') (w * w') (w' * w') (w * w) Lww' Lww' (SNo_mul_SNo w' w' Hw'1 Hw'1) (SNo_mul_SNo w w Hw1 Hw1) (from right to left).
We will prove x * (w * w' + w * w' + w' * w' + w * w) < x * x + x * w * w' + (w * w') * x + (w * w') * w * w'.
rewrite the current goal using mul_SNo_com (w * w') x Lww' Hx (from left to right).
We will prove x * (w * w' + w * w' + w' * w' + w * w) < x * x + x * w * w' + x * w * w' + (w * w') * w * w'.
We prove the intermediate claim Lxww': SNo (x * w * w').
An exact proof term for the current goal is SNo_mul_SNo x (w * w') Hx Lww'.
rewrite the current goal using add_SNo_rotate_4_1 (x * w * w') (x * w * w') ((w * w') * w * w') (x * x) Lxww' Lxww' (SNo_mul_SNo (w * w') (w * w') Lww' Lww') (SNo_mul_SNo x x Hx Hx) (from right to left).
We will prove x * (w * w' + w * w' + w' * w' + w * w) < x * w * w' + x * w * w' + (w * w') * w * w' + x * x.
rewrite the current goal using mul_SNo_distrL x (w * w') (w * w' + w' * w' + w * w) Hx Lww' (SNo_add_SNo_3 (w * w') (w' * w') (w * w) Lww' (SNo_mul_SNo w' w' Hw'1 Hw'1) (SNo_mul_SNo w w Hw1 Hw1)) (from left to right).
We will prove x * w * w' + x * (w * w' + w' * w' + w * w) < x * w * w' + x * w * w' + (w * w') * w * w' + x * x.
rewrite the current goal using mul_SNo_distrL x (w * w') (w' * w' + w * w) Hx Lww' (SNo_add_SNo (w' * w') (w * w) (SNo_mul_SNo w' w' Hw'1 Hw'1) (SNo_mul_SNo w w Hw1 Hw1)) (from left to right).
We will prove x * w * w' + x * w * w' + x * (w' * w' + w * w) < x * w * w' + x * w * w' + (w * w') * w * w' + x * x.
We prove the intermediate claim Lxww': SNo (x * w * w').
An exact proof term for the current goal is SNo_mul_SNo_3 x w w' Hx Hw1 Hw'1.
Apply add_SNo_Lt2 (x * w * w') (x * w * w' + x * (w' * w' + w * w)) (x * w * w' + (w * w') * w * w' + x * x) Lxww' (SNo_add_SNo (x * w * w') (x * (w' * w' + w * w)) Lxww' (SNo_mul_SNo x (w' * w' + w * w) Hx (SNo_add_SNo (w' * w') (w * w) (SNo_mul_SNo w' w' Hw'1 Hw'1) (SNo_mul_SNo w w Hw1 Hw1)))) (SNo_add_SNo_3 (x * w * w') ((w * w') * w * w') (x * x) Lxww' (SNo_mul_SNo (w * w') (w * w') Lww' Lww') (SNo_mul_SNo x x Hx Hx)) to the current goal.
We will prove x * w * w' + x * (w' * w' + w * w) < x * w * w' + (w * w') * w * w' + x * x.
Apply add_SNo_Lt2 (x * w * w') (x * (w' * w' + w * w)) ((w * w') * w * w' + x * x) Lxww' (SNo_mul_SNo x (w' * w' + w * w) Hx (SNo_add_SNo (w' * w') (w * w) (SNo_mul_SNo w' w' Hw'1 Hw'1) (SNo_mul_SNo w w Hw1 Hw1))) (SNo_add_SNo ((w * w') * w * w') (x * x) (SNo_mul_SNo (w * w') (w * w') Lww' Lww') (SNo_mul_SNo x x Hx Hx)) to the current goal.
We will prove x * (w' * w' + w * w) < (w * w') * w * w' + x * x.
rewrite the current goal using mul_SNo_distrL x (w' * w') (w * w) Hx (SNo_mul_SNo w' w' Hw'1 Hw'1) (SNo_mul_SNo w w Hw1 Hw1) (from left to right).
We will prove x * w' * w' + x * w * w < (w * w') * w * w' + x * x.
rewrite the current goal using mul_SNo_com x (w * w) Hx (SNo_mul_SNo w w Hw1 Hw1) (from left to right).
We will prove x * w' * w' + (w * w) * x < (w * w') * w * w' + x * x.
rewrite the current goal using add_SNo_0L ((w * w') * w * w' + x * x) (SNo_add_SNo ((w * w') * w * w') (x * x) (SNo_mul_SNo (w * w') (w * w') Lww' Lww') (SNo_mul_SNo x x Hx Hx)) (from right to left).
We will prove x * w' * w' + (w * w) * x < 0 + (w * w') * w * w' + x * x.
Apply add_SNo_minus_Lt1 (x * w' * w' + (w * w) * x) ((w * w') * w * w' + x * x) 0 (SNo_add_SNo (x * w' * w') ((w * w) * x) (SNo_mul_SNo x (w' * w') Hx (SNo_mul_SNo w' w' Hw'1 Hw'1)) (SNo_mul_SNo (w * w) x (SNo_mul_SNo w w Hw1 Hw1) Hx)) (SNo_add_SNo ((w * w') * w * w') (x * x) (SNo_mul_SNo (w * w') (w * w') Lww' Lww') (SNo_mul_SNo x x Hx Hx)) SNo_0 to the current goal.
We will prove (x * w' * w' + (w * w) * x) + - ((w * w') * w * w' + x * x) < 0.
rewrite the current goal using add_SNo_assoc (x * w' * w') ((w * w) * x) (- ((w * w') * w * w' + x * x)) (SNo_mul_SNo x (w' * w') Hx (SNo_mul_SNo w' w' Hw'1 Hw'1)) (SNo_mul_SNo (w * w) x (SNo_mul_SNo w w Hw1 Hw1) Hx) (SNo_minus_SNo ((w * w') * w * w' + x * x) (SNo_add_SNo ((w * w') * w * w') (x * x) (SNo_mul_SNo (w * w') (w * w') Lww' Lww') (SNo_mul_SNo x x Hx Hx))) (from right to left).
rewrite the current goal using minus_add_SNo_distr ((w * w') * w * w') (x * x) (SNo_mul_SNo (w * w') (w * w') Lww' Lww') (SNo_mul_SNo x x Hx Hx) (from left to right).
We will prove x * w' * w' + (w * w) * x + - (w * w') * w * w' + - x * x < 0.
rewrite the current goal using add_SNo_rotate_3_1 ((w * w) * x) (- (w * w') * w * w') (- x * x) (SNo_mul_SNo (w * w) x (SNo_mul_SNo w w Hw1 Hw1) Hx) (SNo_minus_SNo ((w * w') * w * w') (SNo_mul_SNo (w * w') (w * w') Lww' Lww')) (SNo_minus_SNo (x * x) (SNo_mul_SNo x x Hx Hx)) (from left to right).
We will prove x * w' * w' + - x * x + (w * w) * x + - (w * w') * w * w' < 0.
rewrite the current goal using add_SNo_com ((w * w) * x) (- (w * w') * w * w') (SNo_mul_SNo (w * w) x (SNo_mul_SNo w w Hw1 Hw1) Hx) (SNo_minus_SNo ((w * w') * w * w') (SNo_mul_SNo (w * w') (w * w') Lww' Lww')) (from left to right).
We will prove x * w' * w' + - x * x + - (w * w') * w * w' + (w * w) * x < 0.
rewrite the current goal using mul_SNo_assoc w w' (w * w') Hw1 Hw'1 Lww' (from right to left).
We will prove x * w' * w' + - x * x + - w * w' * w * w' + (w * w) * x < 0.
rewrite the current goal using mul_SNo_com_3_0_1 w' w w' Hw'1 Hw1 Hw'1 (from left to right).
We will prove x * w' * w' + - x * x + - w * w * w' * w' + (w * w) * x < 0.
rewrite the current goal using mul_SNo_assoc w w (w' * w') Hw1 Hw1 (SNo_mul_SNo w' w' Hw'1 Hw'1) (from left to right).
rewrite the current goal using SNo_foil_mm x (w * w) (w' * w') x Hx (SNo_mul_SNo w w Hw1 Hw1) (SNo_mul_SNo w' w' Hw'1 Hw'1) Hx (from right to left).
We will prove (x + - w * w) * (w' * w' + - x) < 0.
Apply mul_SNo_pos_neg (x + - w * w) (w' * w' + - x) (SNo_add_SNo x (- w * w) Hx (SNo_minus_SNo (w * w) (SNo_mul_SNo w w Hw1 Hw1))) (SNo_add_SNo (w' * w') (- x) (SNo_mul_SNo w' w' Hw'1 Hw'1) (SNo_minus_SNo x Hx)) to the current goal.
We will prove 0 < x + - w * w.
An exact proof term for the current goal is SNoLt_minus_pos (w * w) x (SNo_mul_SNo w w Hw1 Hw1) Hx Hw3.
We will prove w' * w' + - x < 0.
Apply add_SNo_minus_Lt1b (w' * w') x 0 (SNo_mul_SNo w' w' Hw'1 Hw'1) Hx SNo_0 to the current goal.
We will prove w' * w' < 0 + x.
rewrite the current goal using add_SNo_0L x Hx (from left to right).
We will prove w' * w' < x.
An exact proof term for the current goal is Hw'3.
An exact proof term for the current goal is Hx.
We will prove SNo (w * w').
An exact proof term for the current goal is Lww'.
Assume Hy: y SNo_sqrtauxset (R_ k) (R_ k) x.
We will prove SNo y 0 y x < y * y.
Apply SNo_sqrtauxset_E (R_ k) (R_ k) x y Hy to the current goal.
Let z be given.
Assume Hz: z R_ k.
Let z' be given.
Assume Hz': z' R_ k.
Assume Hzz'pos: 0 < z + z'.
Assume Hyzz': y = (x + z * z') :/: (z + z').
Apply IHk1 z Hz to the current goal.
Assume H.
Apply H to the current goal.
Assume Hz1: SNo z.
Assume Hz2: 0 z.
Assume Hz3: x < z * z.
Apply IHk1 z' Hz' to the current goal.
Assume H.
Apply H to the current goal.
Assume Hz'1: SNo z'.
Assume Hz'2: 0 z'.
Assume Hz'3: x < z' * z'.
We will prove SNo y 0 y x < y * y.
We prove the intermediate claim Lzz': SNo (z * z').
An exact proof term for the current goal is SNo_mul_SNo z z' Hz1 Hz'1.
We prove the intermediate claim Lxpzz': SNo (x + z * z').
An exact proof term for the current goal is SNo_add_SNo x (z * z') Hx Lzz'.
We prove the intermediate claim Lzpz': SNo (z + z').
An exact proof term for the current goal is SNo_add_SNo z z' Hz1 Hz'1.
We prove the intermediate claim Ly: SNo y.
rewrite the current goal using Hyzz' (from left to right).
An exact proof term for the current goal is SNo_div_SNo (x + z * z') (z + z') Lxpzz' Lzpz'.
We prove the intermediate claim Lxpzz'nonneg: 0 x + z * z'.
rewrite the current goal using add_SNo_0L 0 SNo_0 (from right to left).
Apply add_SNo_Le3 0 0 x (z * z') SNo_0 SNo_0 Hx Lzz' Hxnonneg to the current goal.
We will prove 0 z * z'.
An exact proof term for the current goal is mul_SNo_nonneg_nonneg z z' Hz1 Hz'1 Hz2 Hz'2.
We prove the intermediate claim Lynonneg: 0 y.
We will prove 0 y.
rewrite the current goal using Hyzz' (from left to right).
We will prove 0 (x + z * z') :/: (z + z').
Apply SNoLeE 0 (x + z * z') SNo_0 Lxpzz' Lxpzz'nonneg to the current goal.
Assume H1: 0 < x + z * z'.
Apply SNoLtLe to the current goal.
Apply div_SNo_pos_pos (x + z * z') (z + z') Lxpzz' Lzpz' to the current goal.
We will prove 0 < x + z * z'.
An exact proof term for the current goal is H1.
We will prove 0 < z + z'.
An exact proof term for the current goal is Hzz'pos.
Assume H1: 0 = x + z * z'.
rewrite the current goal using H1 (from right to left).
We will prove 0 0 :/: (z + z').
rewrite the current goal using div_SNo_0_num (z + z') Lzpz' (from left to right).
Apply SNoLe_ref to the current goal.
Apply and3I to the current goal.
An exact proof term for the current goal is Ly.
An exact proof term for the current goal is Lynonneg.
We will prove x < y * y.
rewrite the current goal using Hyzz' (from left to right).
We will prove x < ((x + z * z') :/: (z + z')) * ((x + z * z') :/: (z + z')).
rewrite the current goal using mul_div_SNo_both (x + z * z') (z + z') (x + z * z') (z + z') Lxpzz' Lzpz' Lxpzz' Lzpz' (from left to right).
We will prove x < ((x + z * z') * (x + z * z')) :/: ((z + z') * (z + z')).
Apply div_SNo_pos_LtR ((x + z * z') * (x + z * z')) ((z + z') * (z + z')) x (SNo_mul_SNo (x + z * z') (x + z * z') Lxpzz' Lxpzz') (SNo_mul_SNo (z + z') (z + z') Lzpz' Lzpz') Hx to the current goal.
We will prove 0 < (z + z') * (z + z').
An exact proof term for the current goal is mul_SNo_pos_pos (z + z') (z + z') Lzpz' Lzpz' Hzz'pos Hzz'pos.
We will prove x * ((z + z') * (z + z')) < ((x + z * z') * (x + z * z')).
rewrite the current goal using SNo_foil x (z * z') x (z * z') Hx Lzz' (from left to right).
rewrite the current goal using SNo_foil z z' z z' Hz1 Hz'1 Hz1 Hz'1 (from left to right).
We will prove x * (z * z + z * z' + z' * z + z' * z') < x * x + x * z * z' + (z * z') * x + (z * z') * z * z'.
rewrite the current goal using mul_SNo_com z' z Hz'1 Hz1 (from left to right).
rewrite the current goal using add_SNo_rotate_4_1 (z * z') (z * z') (z' * z') (z * z) Lzz' Lzz' (SNo_mul_SNo z' z' Hz'1 Hz'1) (SNo_mul_SNo z z Hz1 Hz1) (from right to left).
We will prove x * (z * z' + z * z' + z' * z' + z * z) < x * x + x * z * z' + (z * z') * x + (z * z') * z * z'.
rewrite the current goal using mul_SNo_com (z * z') x Lzz' Hx (from left to right).
We will prove x * (z * z' + z * z' + z' * z' + z * z) < x * x + x * z * z' + x * z * z' + (z * z') * z * z'.
We prove the intermediate claim Lxzz': SNo (x * z * z').
An exact proof term for the current goal is SNo_mul_SNo x (z * z') Hx Lzz'.
rewrite the current goal using add_SNo_rotate_4_1 (x * z * z') (x * z * z') ((z * z') * z * z') (x * x) Lxzz' Lxzz' (SNo_mul_SNo (z * z') (z * z') Lzz' Lzz') (SNo_mul_SNo x x Hx Hx) (from right to left).
We will prove x * (z * z' + z * z' + z' * z' + z * z) < x * z * z' + x * z * z' + (z * z') * z * z' + x * x.
rewrite the current goal using mul_SNo_distrL x (z * z') (z * z' + z' * z' + z * z) Hx Lzz' (SNo_add_SNo_3 (z * z') (z' * z') (z * z) Lzz' (SNo_mul_SNo z' z' Hz'1 Hz'1) (SNo_mul_SNo z z Hz1 Hz1)) (from left to right).
We will prove x * z * z' + x * (z * z' + z' * z' + z * z) < x * z * z' + x * z * z' + (z * z') * z * z' + x * x.
rewrite the current goal using mul_SNo_distrL x (z * z') (z' * z' + z * z) Hx Lzz' (SNo_add_SNo (z' * z') (z * z) (SNo_mul_SNo z' z' Hz'1 Hz'1) (SNo_mul_SNo z z Hz1 Hz1)) (from left to right).
We will prove x * z * z' + x * z * z' + x * (z' * z' + z * z) < x * z * z' + x * z * z' + (z * z') * z * z' + x * x.
We prove the intermediate claim Lxzz': SNo (x * z * z').
An exact proof term for the current goal is SNo_mul_SNo_3 x z z' Hx Hz1 Hz'1.
Apply add_SNo_Lt2 (x * z * z') (x * z * z' + x * (z' * z' + z * z)) (x * z * z' + (z * z') * z * z' + x * x) Lxzz' (SNo_add_SNo (x * z * z') (x * (z' * z' + z * z)) Lxzz' (SNo_mul_SNo x (z' * z' + z * z) Hx (SNo_add_SNo (z' * z') (z * z) (SNo_mul_SNo z' z' Hz'1 Hz'1) (SNo_mul_SNo z z Hz1 Hz1)))) (SNo_add_SNo_3 (x * z * z') ((z * z') * z * z') (x * x) Lxzz' (SNo_mul_SNo (z * z') (z * z') Lzz' Lzz') (SNo_mul_SNo x x Hx Hx)) to the current goal.
We will prove x * z * z' + x * (z' * z' + z * z) < x * z * z' + (z * z') * z * z' + x * x.
Apply add_SNo_Lt2 (x * z * z') (x * (z' * z' + z * z)) ((z * z') * z * z' + x * x) Lxzz' (SNo_mul_SNo x (z' * z' + z * z) Hx (SNo_add_SNo (z' * z') (z * z) (SNo_mul_SNo z' z' Hz'1 Hz'1) (SNo_mul_SNo z z Hz1 Hz1))) (SNo_add_SNo ((z * z') * z * z') (x * x) (SNo_mul_SNo (z * z') (z * z') Lzz' Lzz') (SNo_mul_SNo x x Hx Hx)) to the current goal.
We will prove x * (z' * z' + z * z) < (z * z') * z * z' + x * x.
rewrite the current goal using mul_SNo_distrL x (z' * z') (z * z) Hx (SNo_mul_SNo z' z' Hz'1 Hz'1) (SNo_mul_SNo z z Hz1 Hz1) (from left to right).
We will prove x * z' * z' + x * z * z < (z * z') * z * z' + x * x.
rewrite the current goal using mul_SNo_com x (z * z) Hx (SNo_mul_SNo z z Hz1 Hz1) (from left to right).
We will prove x * z' * z' + (z * z) * x < (z * z') * z * z' + x * x.
rewrite the current goal using add_SNo_0L ((z * z') * z * z' + x * x) (SNo_add_SNo ((z * z') * z * z') (x * x) (SNo_mul_SNo (z * z') (z * z') Lzz' Lzz') (SNo_mul_SNo x x Hx Hx)) (from right to left).
We will prove x * z' * z' + (z * z) * x < 0 + (z * z') * z * z' + x * x.
Apply add_SNo_minus_Lt1 (x * z' * z' + (z * z) * x) ((z * z') * z * z' + x * x) 0 (SNo_add_SNo (x * z' * z') ((z * z) * x) (SNo_mul_SNo x (z' * z') Hx (SNo_mul_SNo z' z' Hz'1 Hz'1)) (SNo_mul_SNo (z * z) x (SNo_mul_SNo z z Hz1 Hz1) Hx)) (SNo_add_SNo ((z * z') * z * z') (x * x) (SNo_mul_SNo (z * z') (z * z') Lzz' Lzz') (SNo_mul_SNo x x Hx Hx)) SNo_0 to the current goal.
We will prove (x * z' * z' + (z * z) * x) + - ((z * z') * z * z' + x * x) < 0.
rewrite the current goal using add_SNo_assoc (x * z' * z') ((z * z) * x) (- ((z * z') * z * z' + x * x)) (SNo_mul_SNo x (z' * z') Hx (SNo_mul_SNo z' z' Hz'1 Hz'1)) (SNo_mul_SNo (z * z) x (SNo_mul_SNo z z Hz1 Hz1) Hx) (SNo_minus_SNo ((z * z') * z * z' + x * x) (SNo_add_SNo ((z * z') * z * z') (x * x) (SNo_mul_SNo (z * z') (z * z') Lzz' Lzz') (SNo_mul_SNo x x Hx Hx))) (from right to left).
rewrite the current goal using minus_add_SNo_distr ((z * z') * z * z') (x * x) (SNo_mul_SNo (z * z') (z * z') Lzz' Lzz') (SNo_mul_SNo x x Hx Hx) (from left to right).
We will prove x * z' * z' + (z * z) * x + - (z * z') * z * z' + - x * x < 0.
rewrite the current goal using add_SNo_rotate_3_1 ((z * z) * x) (- (z * z') * z * z') (- x * x) (SNo_mul_SNo (z * z) x (SNo_mul_SNo z z Hz1 Hz1) Hx) (SNo_minus_SNo ((z * z') * z * z') (SNo_mul_SNo (z * z') (z * z') Lzz' Lzz')) (SNo_minus_SNo (x * x) (SNo_mul_SNo x x Hx Hx)) (from left to right).
We will prove x * z' * z' + - x * x + (z * z) * x + - (z * z') * z * z' < 0.
rewrite the current goal using add_SNo_com ((z * z) * x) (- (z * z') * z * z') (SNo_mul_SNo (z * z) x (SNo_mul_SNo z z Hz1 Hz1) Hx) (SNo_minus_SNo ((z * z') * z * z') (SNo_mul_SNo (z * z') (z * z') Lzz' Lzz')) (from left to right).
We will prove x * z' * z' + - x * x + - (z * z') * z * z' + (z * z) * x < 0.
rewrite the current goal using mul_SNo_assoc z z' (z * z') Hz1 Hz'1 Lzz' (from right to left).
We will prove x * z' * z' + - x * x + - z * z' * z * z' + (z * z) * x < 0.
rewrite the current goal using mul_SNo_com_3_0_1 z' z z' Hz'1 Hz1 Hz'1 (from left to right).
We will prove x * z' * z' + - x * x + - z * z * z' * z' + (z * z) * x < 0.
rewrite the current goal using mul_SNo_assoc z z (z' * z') Hz1 Hz1 (SNo_mul_SNo z' z' Hz'1 Hz'1) (from left to right).
rewrite the current goal using SNo_foil_mm x (z * z) (z' * z') x Hx (SNo_mul_SNo z z Hz1 Hz1) (SNo_mul_SNo z' z' Hz'1 Hz'1) Hx (from right to left).
We will prove (x + - z * z) * (z' * z' + - x) < 0.
Apply mul_SNo_neg_pos (x + - z * z) (z' * z' + - x) (SNo_add_SNo x (- z * z) Hx (SNo_minus_SNo (z * z) (SNo_mul_SNo z z Hz1 Hz1))) (SNo_add_SNo (z' * z') (- x) (SNo_mul_SNo z' z' Hz'1 Hz'1) (SNo_minus_SNo x Hx)) to the current goal.
We will prove x + - z * z < 0.
Apply add_SNo_minus_Lt1b x (z * z) 0 Hx (SNo_mul_SNo z z Hz1 Hz1) SNo_0 to the current goal.
We will prove x < 0 + z * z.
rewrite the current goal using add_SNo_0L (z * z) (SNo_mul_SNo z z Hz1 Hz1) (from left to right).
We will prove x < z * z.
An exact proof term for the current goal is Hz3.
We will prove 0 < z' * z' + - x.
An exact proof term for the current goal is SNoLt_minus_pos x (z' * z') Hx (SNo_mul_SNo z' z' Hz'1 Hz'1) Hz'3.
An exact proof term for the current goal is Hx.
We will prove SNo (z * z').
An exact proof term for the current goal is Lzz'.
Proof:
Let x be given.
Assume Hx Hxnonneg.
Set L_ to be the term λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 0 of type setset.
Set R_ to be the term λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 1 of type setset.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
Assume H0: ∀k, nat_p k(yL_ k, SNo y 0 y y * y < x) (yR_ k, SNo y 0 y x < y * y).
We will prove (xL, SNo x) (yR, SNo y) (xL, yR, x < y).
Apply and3I to the current goal.
Let w be given.
Assume Hw: w L.
Apply famunionE_impred ω L_ w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: w L_ k.
Apply H0 k (omega_nat_p k Hk) to the current goal.
Assume H2 _.
Apply H2 w H1 to the current goal.
Assume H3 _.
Apply H3 to the current goal.
Assume H3 _.
An exact proof term for the current goal is H3.
Let z be given.
Assume Hz: z R.
Apply famunionE_impred ω R_ z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: z R_ k.
Apply H0 k (omega_nat_p k Hk) to the current goal.
Assume _ H2.
Apply H2 z H1 to the current goal.
Assume H3 _.
Apply H3 to the current goal.
Assume H3 _.
An exact proof term for the current goal is H3.
Let w be given.
Assume Hw: w L.
Let z be given.
Assume Hz: z R.
We will prove w < z.
Apply famunionE_impred ω L_ w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: w L_ k.
Apply H0 k (omega_nat_p k Hk) to the current goal.
Assume H2 _.
Apply H2 w H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume Hw1: SNo w.
Assume Hw2: 0 w.
Assume Hw3: w * w < x.
Apply famunionE_impred ω R_ z Hz to the current goal.
Let k' be given.
Assume Hk': k' ω.
Assume H3: z R_ k'.
Apply H0 k' (omega_nat_p k' Hk') to the current goal.
Assume _ H4.
Apply H4 z H3 to the current goal.
Assume H.
Apply H to the current goal.
Assume Hz1: SNo z.
Assume Hz2: 0 z.
Assume Hz3: x < z * z.
We will prove w < z.
Apply SNoLtLe_or w z Hw1 Hz1 to the current goal.
Assume H5: w < z.
An exact proof term for the current goal is H5.
Assume H5: z w.
We will prove False.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLt_tra x (z * z) x Hx (SNo_mul_SNo z z Hz1 Hz1) Hx Hz3 to the current goal.
We will prove z * z < x.
Apply SNoLeLt_tra (z * z) (w * w) x (SNo_mul_SNo z z Hz1 Hz1) (SNo_mul_SNo w w Hw1 Hw1) Hx to the current goal.
We will prove z * z w * w.
An exact proof term for the current goal is nonneg_mul_SNo_Le2 z z w w Hz1 Hz1 Hw1 Hw1 Hz2 Hz2 H5 H5.
An exact proof term for the current goal is Hw3.
Theorem. (sqrt_SNo_nonneg_prop1c) The following is provable:
∀x, SNo x0 xSNoCutP (kωSNo_sqrtaux x sqrt_SNo_nonneg k 0) (kωSNo_sqrtaux x sqrt_SNo_nonneg k 1)(z(kωSNo_sqrtaux x sqrt_SNo_nonneg k 1), ∀p : prop, (SNo z0 zx < z * zp)p)0 G x sqrt_SNo_nonneg
Proof:
Let x be given.
Assume Hx Hxnonneg H1 H1R.
rewrite the current goal using SNoCut_0_0 (from right to left) at position 1.
Set L_ to be the term λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 0 of type setset.
Set R_ to be the term λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 1 of type setset.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
We will prove SNoCut 0 0 SNoCut L R.
Apply SNoCut_Le 0 0 L R to the current goal.
We will prove SNoCutP 0 0.
An exact proof term for the current goal is SNoCutP_0_0.
An exact proof term for the current goal is H1.
Let w be given.
Assume Hw: w 0.
We will prove False.
An exact proof term for the current goal is EmptyE w Hw.
Let z be given.
Assume Hz: z R.
We will prove SNoCut 0 0 < z.
rewrite the current goal using SNoCut_0_0 (from left to right).
We will prove 0 < z.
Apply H1R z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: 0 z.
Assume Hz3: x < z * z.
Apply SNoLeE 0 z SNo_0 Hz1 Hz2 to the current goal.
Assume H6: 0 < z.
An exact proof term for the current goal is H6.
Assume H6: 0 = z.
We will prove False.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLtLe_tra x 0 x Hx SNo_0 Hx to the current goal.
We will prove x < 0.
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from right to left).
We will prove x < 0 * 0.
rewrite the current goal using H6 (from left to right).
An exact proof term for the current goal is Hz3.
We will prove 0 x.
An exact proof term for the current goal is Hxnonneg.
Proof:
Let x be given.
Assume Hx Hxnonneg IH HLR.
Set L_ to be the term λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 0 of type setset.
Set R_ to be the term λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 1 of type setset.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
Set y to be the term SNoCut L R.
Assume Hynn: 0 y.
Assume H6: y * y < x.
Apply HLR to the current goal.
Assume HLHR.
Apply HLHR to the current goal.
Assume HL: wL, SNo w.
Assume HR: zR, SNo z.
Assume HLR': wL, zR, w < z.
Apply SNoCutP_SNoCut_impred L R HLR to the current goal.
Assume H1: SNo y.
Assume H3: wL, w < y.
Assume H4: zR, y < z.
Assume H5: ∀u, SNo u(wL, w < u)(zR, u < z)SNoLev y SNoLev u SNoEq_ (SNoLev y) y u.
We prove the intermediate claim Lyy: SNo (y * y).
An exact proof term for the current goal is SNo_mul_SNo y y H1 H1.
We prove the intermediate claim Lyynn: 0 y * y.
An exact proof term for the current goal is mul_SNo_nonneg_nonneg y y H1 H1 Hynn Hynn.
We prove the intermediate claim LL_mon: ∀k k', nat_p knat_p k'k k'L_ k L_ k'.
Let k and k' be given.
Assume Hk Hk' Hkk'.
Apply SNo_sqrtaux_mon x sqrt_SNo_nonneg k Hk k' Hk' Hkk' to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LR_mon: ∀k k', nat_p knat_p k'k k'R_ k R_ k'.
Let k and k' be given.
Assume Hk Hk' Hkk'.
Apply SNo_sqrtaux_mon x sqrt_SNo_nonneg k Hk k' Hk' Hkk' to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim L1: ∀k, nat_p k(yL_ k, SNo y 0 y y * y < x) (yR_ k, SNo y 0 y x < y * y).
An exact proof term for the current goal is sqrt_SNo_nonneg_prop1a x Hx Hxnonneg IH.
We prove the intermediate claim L1L: wL, ∀p : prop, (SNo w0 ww * w < xp)p.
Let w be given.
Assume Hw.
Let p be given.
Assume Hp.
Apply famunionE_impred ω L_ w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: w L_ k.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume H2 _.
Apply H2 w H1 to the current goal.
Assume H3.
Apply H3 to the current goal.
An exact proof term for the current goal is Hp.
We prove the intermediate claim L1R: zR, ∀p : prop, (SNo z0 zx < z * zp)p.
Let z be given.
Assume Hz.
Let p be given.
Assume Hp.
Apply famunionE_impred ω R_ z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: z R_ k.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume _ H2.
Apply H2 z H1 to the current goal.
Assume H3.
Apply H3 to the current goal.
An exact proof term for the current goal is Hp.
Apply SNoLtE (y * y) x Lyy Hx H6 to the current goal.
Let u be given.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev (y * y) SNoLev x.
Assume Hu3: SNoEq_ (SNoLev u) u (y * y).
Assume Hu4: SNoEq_ (SNoLev u) u x.
Assume Hu5: y * y < u.
Assume Hu6: u < x.
We will prove False.
We prove the intermediate claim Lunn: 0 u.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLeLt_tra 0 (y * y) u SNo_0 Lyy Hu1 Lyynn Hu5.
We prove the intermediate claim LuSx: u SNoS_ (SNoLev x).
Apply SNoS_I2 u x Hu1 Hx to the current goal.
We will prove SNoLev u SNoLev x.
An exact proof term for the current goal is binintersectE2 (SNoLev (y * y)) (SNoLev x) (SNoLev u) Hu2.
Apply IH u LuSx Lunn to the current goal.
Assume H.
Apply H to the current goal.
Assume H7: SNo (sqrt_SNo_nonneg u).
Assume H8: 0 sqrt_SNo_nonneg u.
We prove the intermediate claim Lsruy: sqrt_SNo_nonneg u y.
Apply SNoLtLe to the current goal.
We will prove sqrt_SNo_nonneg u < y.
Apply H3 to the current goal.
We will prove sqrt_SNo_nonneg u L.
We prove the intermediate claim Lsruy0: sqrt_SNo_nonneg u L_ 0.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply ReplI to the current goal.
We will prove u {wSNoL x|0 w}.
Apply SepI to the current goal.
Apply SNoL_I x Hx u Hu1 to the current goal.
An exact proof term for the current goal is binintersectE2 (SNoLev (y * y)) (SNoLev x) (SNoLev u) Hu2.
We will prove u < x.
An exact proof term for the current goal is Hu6.
An exact proof term for the current goal is Lunn.
An exact proof term for the current goal is famunionI ω L_ 0 (sqrt_SNo_nonneg u) (nat_p_omega 0 nat_0) Lsruy0.
We prove the intermediate claim Luyy: u y * y.
rewrite the current goal using H9 (from right to left).
We will prove sqrt_SNo_nonneg u * sqrt_SNo_nonneg u y * y.
An exact proof term for the current goal is nonneg_mul_SNo_Le2 (sqrt_SNo_nonneg u) (sqrt_SNo_nonneg u) y y H7 H7 H1 H1 H8 H8 Lsruy Lsruy.
Apply SNoLt_irref (y * y) to the current goal.
We will prove y * y < y * y.
An exact proof term for the current goal is SNoLtLe_tra (y * y) u (y * y) Lyy Hu1 Lyy Hu5 Luyy.
Assume H7: SNoLev (y * y) SNoLev x.
We will prove False.
We prove the intermediate claim Lsryy: sqrt_SNo_nonneg (y * y) = y.
Apply IH (y * y) (SNoS_I2 (y * y) x Lyy Hx H7) Lyynn to the current goal.
Assume H.
Apply H to the current goal.
Assume H10: SNo (sqrt_SNo_nonneg (y * y)).
Assume H11: 0 sqrt_SNo_nonneg (y * y).
Assume H12: sqrt_SNo_nonneg (y * y) * sqrt_SNo_nonneg (y * y) = y * y.
An exact proof term for the current goal is SNo_nonneg_sqr_uniq (sqrt_SNo_nonneg (y * y)) y H10 H1 H11 Hynn H12.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using Lsryy (from right to left) at position 1.
We will prove sqrt_SNo_nonneg (y * y) < y.
Apply H3 to the current goal.
We will prove sqrt_SNo_nonneg (y * y) kωL_ k.
We prove the intermediate claim LyyL0: sqrt_SNo_nonneg (y * y) L_ 0.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply ReplI to the current goal.
We will prove y * y SNoL_nonneg x.
We will prove y * y {wSNoL x|0 w}.
Apply SepI to the current goal.
An exact proof term for the current goal is SNoL_I x Hx (y * y) Lyy H7 H6.
We will prove 0 y * y.
An exact proof term for the current goal is Lyynn.
An exact proof term for the current goal is famunionI ω L_ 0 (sqrt_SNo_nonneg (y * y)) (nat_p_omega 0 nat_0) LyyL0.
Assume H7: SNoLev x SNoLev (y * y).
Assume H8: SNoEq_ (SNoLev x) (y * y) x.
Assume H9: SNoLev x y * y.
We prove the intermediate claim L3: x SNoR (y * y).
An exact proof term for the current goal is SNoR_I (y * y) Lyy x Hx H7 H6.
We prove the intermediate claim L4: ∀p : prop, (vL, wR, v * y + y * w x + v * wp)p.
Let p be given.
Assume Hp.
Apply mul_SNo_SNoCut_SNoR_interpolate_impred L R L R HLR HLR y y (λq H ⇒ H) (λq H ⇒ H) x L3 to the current goal.
Let v be given.
Assume Hv: v L.
Let w be given.
Assume Hw: w R.
Assume H10: v * y + y * w x + v * w.
An exact proof term for the current goal is Hp v Hv w Hw H10.
Let v be given.
Assume Hv: v R.
Let w be given.
Assume Hw: w L.
Assume H10: v * y + y * w x + v * w.
Apply Hp w Hw v Hv to the current goal.
We will prove w * y + y * v x + w * v.
We prove the intermediate claim Lv1: SNo v.
An exact proof term for the current goal is HR v Hv.
We prove the intermediate claim Lw1: SNo w.
An exact proof term for the current goal is HL w Hw.
rewrite the current goal using mul_SNo_com w v Lw1 Lv1 (from left to right).
We will prove w * y + y * v x + v * w.
Apply mul_SNo_com w y Lw1 H1 (λ_ u ⇒ u + y * v x + v * w) to the current goal.
We will prove y * w + y * v x + v * w.
Apply mul_SNo_com y v H1 Lv1 (λ_ u ⇒ y * w + u x + v * w) to the current goal.
We will prove y * w + v * y x + v * w.
Apply add_SNo_com (y * w) (v * y) (SNo_mul_SNo y w H1 Lw1) (SNo_mul_SNo v y Lv1 H1) (λ_ u ⇒ u x + v * w) to the current goal.
An exact proof term for the current goal is H10.
Apply L4 to the current goal.
Let v be given.
Assume Hv: v L.
Let w be given.
Assume Hw: w R.
Assume H10: v * y + y * w x + v * w.
Apply L1L v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: 0 v.
Assume Hv3: v * v < x.
Apply L1R w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: 0 w.
Assume Hw3: x < w * w.
We prove the intermediate claim L5: k, nat_p k v L_ k w R_ k.
Apply famunionE ω L_ v Hv to the current goal.
Let k' be given.
Assume H.
Apply H to the current goal.
Assume Hk'1: k' ω.
Assume Hk'2: v L_ k'.
Apply famunionE ω R_ w Hw to the current goal.
Let k'' be given.
Assume H.
Apply H to the current goal.
Assume Hk''1: k'' ω.
Assume Hk''2: w R_ k''.
Apply ordinal_linear k' k'' (nat_p_ordinal k' (omega_nat_p k' Hk'1)) (nat_p_ordinal k'' (omega_nat_p k'' Hk''1)) to the current goal.
Assume H1: k' k''.
We use k'' to witness the existential quantifier.
Apply and3I to the current goal.
An exact proof term for the current goal is omega_nat_p k'' Hk''1.
We will prove v L_ k''.
An exact proof term for the current goal is LL_mon k' k'' (omega_nat_p k' Hk'1) (omega_nat_p k'' Hk''1) H1 v Hk'2.
An exact proof term for the current goal is Hk''2.
Assume H1: k'' k'.
We use k' to witness the existential quantifier.
Apply and3I to the current goal.
An exact proof term for the current goal is omega_nat_p k' Hk'1.
An exact proof term for the current goal is Hk'2.
We will prove w R_ k'.
An exact proof term for the current goal is LR_mon k'' k' (omega_nat_p k'' Hk''1) (omega_nat_p k' Hk'1) H1 w Hk''2.
Apply L5 to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Hk: nat_p k.
Assume Hvk: v L_ k.
Assume Hwk: w R_ k.
We prove the intermediate claim Lvwpos: 0 < v + w.
Apply SNoLeLt_tra 0 v (v + w) SNo_0 Hv1 (SNo_add_SNo v w Hv1 Hw1) Hv2 to the current goal.
We will prove v < v + w.
rewrite the current goal using add_SNo_0R v Hv1 (from right to left) at position 1.
We will prove v + 0 < v + w.
Apply add_SNo_Lt2 v 0 w Hv1 SNo_0 Hw1 to the current goal.
We will prove 0 < w.
Apply SNoLeLt_tra 0 y w SNo_0 H1 Hw1 Hynn to the current goal.
We will prove y < w.
Apply H4 to the current goal.
We will prove w R.
An exact proof term for the current goal is famunionI ω R_ k w (nat_p_omega k Hk) Hwk.
We prove the intermediate claim Lvw0: v + w 0.
Assume H.
Apply SNoLt_irref 0 to the current goal.
rewrite the current goal using H (from right to left) at position 2.
An exact proof term for the current goal is Lvwpos.
We prove the intermediate claim L6: (x + v * w) :/: (v + w) L_ (ordsucc k).
We will prove (x + v * w) :/: (v + w) SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k) 0.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
We will prove (x + v * w) :/: (v + w) L_ k SNo_sqrtauxset (L_ k) (R_ k) x.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is SNo_sqrtauxset_I (L_ k) (R_ k) x v Hvk w Hwk Lvwpos.
We prove the intermediate claim L7: (x + v * w) :/: (v + w) L.
An exact proof term for the current goal is famunionI ω L_ (ordsucc k) ((x + v * w) :/: (v + w)) (nat_p_omega (ordsucc k) (nat_ordsucc k Hk)) L6.
We prove the intermediate claim L8: (x + v * w) :/: (v + w) < y.
An exact proof term for the current goal is H3 ((x + v * w) :/: (v + w)) L7.
We prove the intermediate claim L9: v * y + y * w = y * (v + w).
Use transitivity with and y * v + y * w.
Use f_equal.
We will prove v * y = y * v.
An exact proof term for the current goal is mul_SNo_com v y Hv1 H1.
We will prove y * v + y * w = y * (v + w).
Use symmetry.
An exact proof term for the current goal is mul_SNo_distrL y v w H1 Hv1 Hw1.
We will prove False.
Apply SNoLt_irref (v * y + y * w) to the current goal.
Apply SNoLeLt_tra (v * y + y * w) (x + v * w) (v * y + y * w) (SNo_add_SNo (v * y) (y * w) (SNo_mul_SNo v y Hv1 H1) (SNo_mul_SNo y w H1 Hw1)) (SNo_add_SNo x (v * w) Hx (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo (v * y) (y * w) (SNo_mul_SNo v y Hv1 H1) (SNo_mul_SNo y w H1 Hw1)) H10 to the current goal.
We will prove x + v * w < v * y + y * w.
rewrite the current goal using L9 (from left to right).
We will prove x + v * w < y * (v + w).
rewrite the current goal using mul_div_SNo_invL (x + v * w) (v + w) (SNo_add_SNo x (v * w) Hx (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo v w Hv1 Hw1) Lvw0 (from right to left).
We will prove ((x + v * w) :/: (v + w)) * (v + w) < y * (v + w).
An exact proof term for the current goal is pos_mul_SNo_Lt' ((x + v * w) :/: (v + w)) y (v + w) (SNo_div_SNo (x + v * w) (v + w) (SNo_add_SNo x (v * w) Hx (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo v w Hv1 Hw1)) H1 (SNo_add_SNo v w Hv1 Hw1) Lvwpos L8.
Proof:
Let x be given.
Assume Hx Hxnonneg IH HLR.
Set L_ to be the term λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 0 of type setset.
Set R_ to be the term λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 1 of type setset.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
Set y to be the term SNoCut L R.
Assume Hynn: 0 y.
Assume H6: x < y * y.
Apply HLR to the current goal.
Assume HLHR.
Apply HLHR to the current goal.
Assume HL: wL, SNo w.
Assume HR: zR, SNo z.
Assume HLR': wL, zR, w < z.
Apply SNoCutP_SNoCut_impred L R HLR to the current goal.
Assume H1: SNo y.
Assume H3: wL, w < y.
Assume H4: zR, y < z.
Assume H5: ∀u, SNo u(wL, w < u)(zR, u < z)SNoLev y SNoLev u SNoEq_ (SNoLev y) y u.
We prove the intermediate claim Lyy: SNo (y * y).
An exact proof term for the current goal is SNo_mul_SNo y y H1 H1.
We prove the intermediate claim Lyynn: 0 y * y.
An exact proof term for the current goal is mul_SNo_nonneg_nonneg y y H1 H1 Hynn Hynn.
We prove the intermediate claim LL_mon: ∀k k', nat_p knat_p k'k k'L_ k L_ k'.
Let k and k' be given.
Assume Hk Hk' Hkk'.
Apply SNo_sqrtaux_mon x sqrt_SNo_nonneg k Hk k' Hk' Hkk' to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LR_mon: ∀k k', nat_p knat_p k'k k'R_ k R_ k'.
Let k and k' be given.
Assume Hk Hk' Hkk'.
Apply SNo_sqrtaux_mon x sqrt_SNo_nonneg k Hk k' Hk' Hkk' to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim L1: ∀k, nat_p k(yL_ k, SNo y 0 y y * y < x) (yR_ k, SNo y 0 y x < y * y).
An exact proof term for the current goal is sqrt_SNo_nonneg_prop1a x Hx Hxnonneg IH.
We prove the intermediate claim L1L: wL, ∀p : prop, (SNo w0 ww * w < xp)p.
Let w be given.
Assume Hw.
Let p be given.
Assume Hp.
Apply famunionE_impred ω L_ w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: w L_ k.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume H2 _.
Apply H2 w H1 to the current goal.
Assume H3.
Apply H3 to the current goal.
An exact proof term for the current goal is Hp.
We prove the intermediate claim L1R: zR, ∀p : prop, (SNo z0 zx < z * zp)p.
Let z be given.
Assume Hz.
Let p be given.
Assume Hp.
Apply famunionE_impred ω R_ z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: z R_ k.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume _ H2.
Apply H2 z H1 to the current goal.
Assume H3.
Apply H3 to the current goal.
An exact proof term for the current goal is Hp.
Apply SNoLtE x (y * y) Hx Lyy H6 to the current goal.
Let u be given.
Assume Hu1: SNo u.
Assume Hu2: SNoLev u SNoLev x SNoLev (y * y).
Assume Hu3: SNoEq_ (SNoLev u) u x.
Assume Hu4: SNoEq_ (SNoLev u) u (y * y).
Assume Hu5: x < u.
Assume Hu6: u < y * y.
We will prove False.
We prove the intermediate claim Lunn: 0 u.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLeLt_tra 0 x u SNo_0 Hx Hu1 Hxnonneg Hu5.
We prove the intermediate claim LuSx: u SNoS_ (SNoLev x).
Apply SNoS_I2 u x Hu1 Hx to the current goal.
We will prove SNoLev u SNoLev x.
An exact proof term for the current goal is binintersectE1 (SNoLev x) (SNoLev (y * y)) (SNoLev u) Hu2.
Apply IH u LuSx Lunn to the current goal.
Assume H.
Apply H to the current goal.
Assume H7: SNo (sqrt_SNo_nonneg u).
Assume H8: 0 sqrt_SNo_nonneg u.
We prove the intermediate claim Lysru: y sqrt_SNo_nonneg u.
Apply SNoLtLe to the current goal.
We will prove y < sqrt_SNo_nonneg u.
Apply H4 to the current goal.
We will prove sqrt_SNo_nonneg u R.
We prove the intermediate claim Lysru0: sqrt_SNo_nonneg u R_ 0.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply ReplI to the current goal.
Apply SNoR_I x Hx u Hu1 to the current goal.
An exact proof term for the current goal is binintersectE1 (SNoLev x) (SNoLev (y * y)) (SNoLev u) Hu2.
We will prove x < u.
An exact proof term for the current goal is Hu5.
An exact proof term for the current goal is famunionI ω R_ 0 (sqrt_SNo_nonneg u) (nat_p_omega 0 nat_0) Lysru0.
Apply SNoLt_irref u to the current goal.
We will prove u < u.
Apply SNoLtLe_tra u (y * y) u Hu1 Lyy Hu1 Hu6 to the current goal.
We will prove y * y u.
rewrite the current goal using H9 (from right to left).
We will prove y * y sqrt_SNo_nonneg u * sqrt_SNo_nonneg u.
An exact proof term for the current goal is nonneg_mul_SNo_Le2 y y (sqrt_SNo_nonneg u) (sqrt_SNo_nonneg u) H1 H1 H7 H7 Hynn Hynn Lysru Lysru.
Assume H7: SNoLev x SNoLev (y * y).
Assume H8: SNoEq_ (SNoLev x) x (y * y).
Assume H9: SNoLev x y * y.
We prove the intermediate claim L10: x SNoL (y * y).
An exact proof term for the current goal is SNoL_I (y * y) Lyy x Hx H7 H6.
Apply mul_SNo_SNoCut_SNoL_interpolate_impred L R L R HLR HLR y y (λq H ⇒ H) (λq H ⇒ H) x L10 to the current goal.
Let v be given.
Assume Hv: v L.
Let w be given.
Assume Hw: w L.
Assume H10: x + v * w v * y + y * w.
Apply L1L v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: 0 v.
Assume Hv3: v * v < x.
Apply L1L w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: 0 w.
Assume Hw3: w * w < x.
Apply SNoLtLe_or 0 (v + w) SNo_0 (SNo_add_SNo v w Hv1 Hw1) to the current goal.
Assume H11: 0 < v + w.
We prove the intermediate claim L11: k, nat_p k v L_ k w L_ k.
Apply famunionE ω L_ v Hv to the current goal.
Let k' be given.
Assume H.
Apply H to the current goal.
Assume Hk'1: k' ω.
Assume Hk'2: v L_ k'.
Apply famunionE ω L_ w Hw to the current goal.
Let k'' be given.
Assume H.
Apply H to the current goal.
Assume Hk''1: k'' ω.
Assume Hk''2: w L_ k''.
Apply ordinal_linear k' k'' (nat_p_ordinal k' (omega_nat_p k' Hk'1)) (nat_p_ordinal k'' (omega_nat_p k'' Hk''1)) to the current goal.
Assume H1: k' k''.
We use k'' to witness the existential quantifier.
Apply and3I to the current goal.
An exact proof term for the current goal is omega_nat_p k'' Hk''1.
We will prove v L_ k''.
An exact proof term for the current goal is LL_mon k' k'' (omega_nat_p k' Hk'1) (omega_nat_p k'' Hk''1) H1 v Hk'2.
An exact proof term for the current goal is Hk''2.
Assume H1: k'' k'.
We use k' to witness the existential quantifier.
Apply and3I to the current goal.
An exact proof term for the current goal is omega_nat_p k' Hk'1.
An exact proof term for the current goal is Hk'2.
We will prove w L_ k'.
An exact proof term for the current goal is LL_mon k'' k' (omega_nat_p k'' Hk''1) (omega_nat_p k' Hk'1) H1 w Hk''2.
Apply L11 to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Hk: nat_p k.
Assume Hvk: v L_ k.
Assume Hwk: w L_ k.
We prove the intermediate claim Lvw0: v + w 0.
Assume H.
Apply SNoLt_irref 0 to the current goal.
rewrite the current goal using H (from right to left) at position 2.
An exact proof term for the current goal is H11.
We prove the intermediate claim L12: (x + v * w) :/: (v + w) R_ (ordsucc k).
We will prove (x + v * w) :/: (v + w) SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k) 1.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove (x + v * w) :/: (v + w) R_ k SNo_sqrtauxset (L_ k) (L_ k) x SNo_sqrtauxset (R_ k) (R_ k) x.
Apply binunionI1 to the current goal.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is SNo_sqrtauxset_I (L_ k) (L_ k) x v Hvk w Hwk H11.
We prove the intermediate claim L13: (x + v * w) :/: (v + w) R.
An exact proof term for the current goal is famunionI ω R_ (ordsucc k) ((x + v * w) :/: (v + w)) (nat_p_omega (ordsucc k) (nat_ordsucc k Hk)) L12.
We prove the intermediate claim L14: y < (x + v * w) :/: (v + w).
An exact proof term for the current goal is H4 ((x + v * w) :/: (v + w)) L13.
We prove the intermediate claim L15: v * y + y * w = y * (v + w).
Use transitivity with and y * v + y * w.
Use f_equal.
We will prove v * y = y * v.
An exact proof term for the current goal is mul_SNo_com v y Hv1 H1.
We will prove y * v + y * w = y * (v + w).
Use symmetry.
An exact proof term for the current goal is mul_SNo_distrL y v w H1 Hv1 Hw1.
We will prove False.
Apply SNoLt_irref (x + v * w) to the current goal.
Apply SNoLeLt_tra (x + v * w) (v * y + y * w) (x + v * w) (SNo_add_SNo x (v * w) Hx (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo (v * y) (y * w) (SNo_mul_SNo v y Hv1 H1) (SNo_mul_SNo y w H1 Hw1)) (SNo_add_SNo x (v * w) Hx (SNo_mul_SNo v w Hv1 Hw1)) H10 to the current goal.
We will prove v * y + y * w < x + v * w.
rewrite the current goal using L15 (from left to right).
We will prove y * (v + w) < x + v * w.
rewrite the current goal using mul_div_SNo_invL (x + v * w) (v + w) (SNo_add_SNo x (v * w) Hx (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo v w Hv1 Hw1) Lvw0 (from right to left).
We will prove y * (v + w) < ((x + v * w) :/: (v + w)) * (v + w).
An exact proof term for the current goal is pos_mul_SNo_Lt' y ((x + v * w) :/: (v + w)) (v + w) H1 (SNo_div_SNo (x + v * w) (v + w) (SNo_add_SNo x (v * w) Hx (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo v w Hv1 Hw1)) (SNo_add_SNo v w Hv1 Hw1) H11 L14.
Assume H11: v + w 0.
We prove the intermediate claim L16: v = 0 w = 0.
Apply SNoLtLe_or 0 v SNo_0 Hv1 to the current goal.
Assume H12: 0 < v.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
Apply SNoLtLe_tra 0 v 0 SNo_0 Hv1 SNo_0 H12 to the current goal.
We will prove v 0.
Apply SNoLe_tra v (v + w) 0 Hv1 (SNo_add_SNo v w Hv1 Hw1) SNo_0 to the current goal.
We will prove v v + w.
rewrite the current goal using add_SNo_0R v Hv1 (from right to left) at position 1.
We will prove v + 0 v + w.
An exact proof term for the current goal is add_SNo_Le2 v 0 w Hv1 SNo_0 Hw1 Hw2.
We will prove v + w 0.
An exact proof term for the current goal is H11.
Assume H12: v 0.
Apply SNoLtLe_or 0 w SNo_0 Hw1 to the current goal.
Assume H13: 0 < w.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
Apply SNoLtLe_tra 0 w 0 SNo_0 Hw1 SNo_0 H13 to the current goal.
We will prove w 0.
Apply SNoLe_tra w (v + w) 0 Hw1 (SNo_add_SNo v w Hv1 Hw1) SNo_0 to the current goal.
We will prove w v + w.
rewrite the current goal using add_SNo_0L w Hw1 (from right to left) at position 1.
We will prove 0 + w v + w.
An exact proof term for the current goal is add_SNo_Le1 0 w v SNo_0 Hw1 Hv1 Hv2.
We will prove v + w 0.
An exact proof term for the current goal is H11.
Assume H13: w 0.
Apply andI to the current goal.
An exact proof term for the current goal is SNoLe_antisym v 0 Hv1 SNo_0 H12 Hv2.
An exact proof term for the current goal is SNoLe_antisym w 0 Hw1 SNo_0 H13 Hw2.
Apply L16 to the current goal.
Assume Hv0: v = 0.
Assume Hw0: w = 0.
We prove the intermediate claim L17: x + v * w = x.
rewrite the current goal using Hv0 (from left to right).
rewrite the current goal using mul_SNo_zeroL w Hw1 (from left to right).
An exact proof term for the current goal is add_SNo_0R x Hx.
We prove the intermediate claim L18: v * y + y * w = 0.
rewrite the current goal using Hv0 (from left to right).
We will prove 0 * y + y * w = 0.
Apply mul_SNo_zeroL y H1 (λ_ u ⇒ u + y * w = 0) to the current goal.
rewrite the current goal using Hw0 (from left to right).
We will prove 0 + y * 0 = 0.
Apply mul_SNo_zeroR y H1 (λ_ u ⇒ 0 + u = 0) to the current goal.
An exact proof term for the current goal is add_SNo_0L 0 SNo_0.
We prove the intermediate claim L19: x 0.
rewrite the current goal using L17 (from right to left).
rewrite the current goal using L18 (from right to left).
An exact proof term for the current goal is H10.
We prove the intermediate claim L20: x = 0.
An exact proof term for the current goal is SNoLe_antisym x 0 Hx SNo_0 L19 Hxnonneg.
Apply SNoLt_irref (v * v) to the current goal.
We will prove v * v < v * v.
rewrite the current goal using Hv0 (from left to right) at position 3.
We will prove v * v < 0 * v.
rewrite the current goal using mul_SNo_zeroL v Hv1 (from left to right).
We will prove v * v < 0.
rewrite the current goal using L20 (from right to left).
An exact proof term for the current goal is Hv3.
Let v be given.
Assume Hv: v R.
Let w be given.
Assume Hw: w R.
Assume H10: x + v * w v * y + y * w.
Apply L1R v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: 0 v.
Assume Hv3: x < v * v.
Apply L1R w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: 0 w.
Assume Hw3: x < w * w.
We prove the intermediate claim L21: k, nat_p k v R_ k w R_ k.
Apply famunionE ω R_ v Hv to the current goal.
Let k' be given.
Assume H.
Apply H to the current goal.
Assume Hk'1: k' ω.
Assume Hk'2: v R_ k'.
Apply famunionE ω R_ w Hw to the current goal.
Let k'' be given.
Assume H.
Apply H to the current goal.
Assume Hk''1: k'' ω.
Assume Hk''2: w R_ k''.
Apply ordinal_linear k' k'' (nat_p_ordinal k' (omega_nat_p k' Hk'1)) (nat_p_ordinal k'' (omega_nat_p k'' Hk''1)) to the current goal.
Assume H1: k' k''.
We use k'' to witness the existential quantifier.
Apply and3I to the current goal.
An exact proof term for the current goal is omega_nat_p k'' Hk''1.
We will prove v R_ k''.
An exact proof term for the current goal is LR_mon k' k'' (omega_nat_p k' Hk'1) (omega_nat_p k'' Hk''1) H1 v Hk'2.
An exact proof term for the current goal is Hk''2.
Assume H1: k'' k'.
We use k' to witness the existential quantifier.
Apply and3I to the current goal.
An exact proof term for the current goal is omega_nat_p k' Hk'1.
An exact proof term for the current goal is Hk'2.
We will prove w R_ k'.
An exact proof term for the current goal is LR_mon k'' k' (omega_nat_p k'' Hk''1) (omega_nat_p k' Hk'1) H1 w Hk''2.
Apply L21 to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume Hk: nat_p k.
Assume Hvk: v R_ k.
Assume Hwk: w R_ k.
We prove the intermediate claim Lvwpos: 0 < v + w.
Apply SNoLeLt_tra 0 v (v + w) SNo_0 Hv1 (SNo_add_SNo v w Hv1 Hw1) Hv2 to the current goal.
We will prove v < v + w.
rewrite the current goal using add_SNo_0R v Hv1 (from right to left) at position 1.
We will prove v + 0 < v + w.
Apply add_SNo_Lt2 v 0 w Hv1 SNo_0 Hw1 to the current goal.
We will prove 0 < w.
Apply SNoLeLt_tra 0 y w SNo_0 H1 Hw1 Hynn to the current goal.
We will prove y < w.
Apply H4 to the current goal.
We will prove w R.
An exact proof term for the current goal is famunionI ω R_ k w (nat_p_omega k Hk) Hwk.
We prove the intermediate claim Lvw0: v + w 0.
Assume H.
Apply SNoLt_irref 0 to the current goal.
rewrite the current goal using H (from right to left) at position 2.
An exact proof term for the current goal is Lvwpos.
We prove the intermediate claim L22: (x + v * w) :/: (v + w) R_ (ordsucc k).
We will prove (x + v * w) :/: (v + w) SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k) 1.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove (x + v * w) :/: (v + w) R_ k SNo_sqrtauxset (L_ k) (L_ k) x SNo_sqrtauxset (R_ k) (R_ k) x.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is SNo_sqrtauxset_I (R_ k) (R_ k) x v Hvk w Hwk Lvwpos.
We prove the intermediate claim L23: (x + v * w) :/: (v + w) R.
An exact proof term for the current goal is famunionI ω R_ (ordsucc k) ((x + v * w) :/: (v + w)) (nat_p_omega (ordsucc k) (nat_ordsucc k Hk)) L22.
We prove the intermediate claim L24: y < (x + v * w) :/: (v + w).
An exact proof term for the current goal is H4 ((x + v * w) :/: (v + w)) L23.
We prove the intermediate claim L25: v * y + y * w = y * (v + w).
Use transitivity with and y * v + y * w.
Use f_equal.
We will prove v * y = y * v.
An exact proof term for the current goal is mul_SNo_com v y Hv1 H1.
We will prove y * v + y * w = y * (v + w).
Use symmetry.
An exact proof term for the current goal is mul_SNo_distrL y v w H1 Hv1 Hw1.
We will prove False.
Apply SNoLt_irref (x + v * w) to the current goal.
Apply SNoLeLt_tra (x + v * w) (v * y + y * w) (x + v * w) (SNo_add_SNo x (v * w) Hx (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo (v * y) (y * w) (SNo_mul_SNo v y Hv1 H1) (SNo_mul_SNo y w H1 Hw1)) (SNo_add_SNo x (v * w) Hx (SNo_mul_SNo v w Hv1 Hw1)) H10 to the current goal.
We will prove v * y + y * w < x + v * w.
rewrite the current goal using L25 (from left to right).
We will prove y * (v + w) < x + v * w.
rewrite the current goal using mul_div_SNo_invL (x + v * w) (v + w) (SNo_add_SNo x (v * w) Hx (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo v w Hv1 Hw1) Lvw0 (from right to left).
We will prove y * (v + w) < ((x + v * w) :/: (v + w)) * (v + w).
An exact proof term for the current goal is pos_mul_SNo_Lt' y ((x + v * w) :/: (v + w)) (v + w) H1 (SNo_div_SNo (x + v * w) (v + w) (SNo_add_SNo x (v * w) Hx (SNo_mul_SNo v w Hv1 Hw1)) (SNo_add_SNo v w Hv1 Hw1)) (SNo_add_SNo v w Hv1 Hw1) Lvwpos L24.
Assume H7: SNoLev (y * y) SNoLev x.
We will prove False.
We prove the intermediate claim Lsryy: sqrt_SNo_nonneg (y * y) = y.
Apply IH (y * y) (SNoS_I2 (y * y) x Lyy Hx H7) Lyynn to the current goal.
Assume H.
Apply H to the current goal.
Assume H10: SNo (sqrt_SNo_nonneg (y * y)).
Assume H11: 0 sqrt_SNo_nonneg (y * y).
Assume H12: sqrt_SNo_nonneg (y * y) * sqrt_SNo_nonneg (y * y) = y * y.
An exact proof term for the current goal is SNo_nonneg_sqr_uniq (sqrt_SNo_nonneg (y * y)) y H10 H1 H11 Hynn H12.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using Lsryy (from right to left) at position 2.
We will prove y < sqrt_SNo_nonneg (y * y).
Apply H4 to the current goal.
We will prove sqrt_SNo_nonneg (y * y) R.
We prove the intermediate claim LyyR0: sqrt_SNo_nonneg (y * y) R_ 0.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply ReplI to the current goal.
We will prove y * y SNoR x.
An exact proof term for the current goal is SNoR_I x Hx (y * y) Lyy H7 H6.
An exact proof term for the current goal is famunionI ω R_ 0 (sqrt_SNo_nonneg (y * y)) (nat_p_omega 0 nat_0) LyyR0.
Proof:
Apply SNoLev_ind to the current goal.
Let x be given.
Assume Hx: SNo x.
Assume Hxnonneg: 0 x.
rewrite the current goal using sqrt_SNo_nonneg_eq x Hx (from left to right).
Set L_ to be the term λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 0 of type setset.
Set R_ to be the term λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 1 of type setset.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
We prove the intermediate claim LL_mon: ∀k k', nat_p knat_p k'k k'L_ k L_ k'.
Let k and k' be given.
Assume Hk Hk' Hkk'.
Apply SNo_sqrtaux_mon x sqrt_SNo_nonneg k Hk k' Hk' Hkk' to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LR_mon: ∀k k', nat_p knat_p k'k k'R_ k R_ k'.
Let k and k' be given.
Assume Hk Hk' Hkk'.
Apply SNo_sqrtaux_mon x sqrt_SNo_nonneg k Hk k' Hk' Hkk' to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim L1: ∀k, nat_p k(yL_ k, SNo y 0 y y * y < x) (yR_ k, SNo y 0 y x < y * y).
An exact proof term for the current goal is sqrt_SNo_nonneg_prop1a x Hx Hxnonneg IH.
We prove the intermediate claim L1L: wL, ∀p : prop, (SNo w0 ww * w < xp)p.
Let w be given.
Assume Hw.
Let p be given.
Assume Hp.
Apply famunionE_impred ω L_ w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: w L_ k.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume H2 _.
Apply H2 w H1 to the current goal.
Assume H3.
Apply H3 to the current goal.
An exact proof term for the current goal is Hp.
We prove the intermediate claim L1R: zR, ∀p : prop, (SNo z0 zx < z * zp)p.
Let z be given.
Assume Hz.
Let p be given.
Assume Hp.
Apply famunionE_impred ω R_ z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: z R_ k.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume _ H2.
Apply H2 z H1 to the current goal.
Assume H3.
Apply H3 to the current goal.
An exact proof term for the current goal is Hp.
We prove the intermediate claim L2: SNoCutP L R.
An exact proof term for the current goal is sqrt_SNo_nonneg_prop1b x Hx Hxnonneg L1.
Apply L2 to the current goal.
Assume HLHR.
Apply HLHR to the current goal.
Assume HL: wL, SNo w.
Assume HR: zR, SNo z.
Assume HLR: wL, zR, w < z.
Set y to be the term SNoCut L R.
Apply SNoCutP_SNoCut_impred L R L2 to the current goal.
Assume H1: SNo y.
Assume H3: wL, w < y.
Assume H4: zR, y < z.
Assume H5: ∀u, SNo u(wL, w < u)(zR, u < z)SNoLev y SNoLev u SNoEq_ (SNoLev y) y u.
We prove the intermediate claim Lynn: 0 y.
An exact proof term for the current goal is sqrt_SNo_nonneg_prop1c x Hx Hxnonneg L2 L1R.
We will prove SNo y 0 y y * y = x.
Apply and3I to the current goal.
We will prove SNo y.
An exact proof term for the current goal is H1.
We will prove 0 y.
An exact proof term for the current goal is Lynn.
We will prove y * y = x.
We prove the intermediate claim Lyy: SNo (y * y).
An exact proof term for the current goal is SNo_mul_SNo y y H1 H1.
We prove the intermediate claim Lyynn: 0 y * y.
An exact proof term for the current goal is mul_SNo_nonneg_nonneg y y H1 H1 Lynn Lynn.
Apply SNoLt_trichotomy_or_impred (y * y) x Lyy Hx to the current goal.
Assume H6: y * y < x.
We will prove False.
An exact proof term for the current goal is sqrt_SNo_nonneg_prop1d x Hx Hxnonneg IH L2 Lynn H6.
Assume H6: y * y = x.
An exact proof term for the current goal is H6.
Assume H6: x < y * y.
We will prove False.
An exact proof term for the current goal is sqrt_SNo_nonneg_prop1e x Hx Hxnonneg IH L2 Lynn H6.
End of Section sqrt_SNo_nonneg
Theorem. (SNo_sqrtaux_0_1_prop) The following is provable:
∀x, SNo x0 x∀k, nat_p k(ySNo_sqrtaux x sqrt_SNo_nonneg k 0, SNo y 0 y y * y < x) (ySNo_sqrtaux x sqrt_SNo_nonneg k 1, SNo y 0 y x < y * y)
Proof:
Let x be given.
Assume Hx Hxnonneg.
Apply sqrt_SNo_nonneg_prop1a x Hx Hxnonneg to the current goal.
Let w be given.
Assume Hw Hwnonneg.
Apply SNoS_E2 (SNoLev x) (SNoLev_ordinal x Hx) w Hw to the current goal.
Assume Hw1 Hw2 Hw3 Hw4.
An exact proof term for the current goal is sqrt_SNo_nonneg_prop1 w Hw3 Hwnonneg.
Theorem. (SNo_sqrtaux_0_prop) The following is provable:
∀x, SNo x0 x∀k, nat_p kySNo_sqrtaux x sqrt_SNo_nonneg k 0, SNo y 0 y y * y < x
Proof:
Let x be given.
Assume Hx Hxnonneg.
Let k be given.
Assume Hk.
Apply SNo_sqrtaux_0_1_prop x Hx Hxnonneg k Hk to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Theorem. (SNo_sqrtaux_1_prop) The following is provable:
∀x, SNo x0 x∀k, nat_p kySNo_sqrtaux x sqrt_SNo_nonneg k 1, SNo y 0 y x < y * y
Proof:
Let x be given.
Assume Hx Hxnonneg.
Let k be given.
Assume Hk.
Apply SNo_sqrtaux_0_1_prop x Hx Hxnonneg k Hk to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
Proof:
Let x be given.
Assume Hx Hxnonneg.
Apply sqrt_SNo_nonneg_prop1b x Hx Hxnonneg to the current goal.
An exact proof term for the current goal is SNo_sqrtaux_0_1_prop x Hx Hxnonneg.
Theorem. (SNo_sqrt_SNo_nonneg) The following is provable:
∀x, SNo x0 xSNo (sqrt_SNo_nonneg x)
Proof:
Let x be given.
Assume Hx Hxnonneg.
Apply sqrt_SNo_nonneg_prop1 x Hx Hxnonneg to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Theorem. (sqrt_SNo_nonneg_nonneg) The following is provable:
∀x, SNo x0 x0 sqrt_SNo_nonneg x
Proof:
Let x be given.
Assume Hx Hxnonneg.
Apply sqrt_SNo_nonneg_prop1 x Hx Hxnonneg to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
Theorem. (sqrt_SNo_nonneg_sqr) The following is provable:
∀x, SNo x0 xsqrt_SNo_nonneg x * sqrt_SNo_nonneg x = x
Proof:
Let x be given.
Assume Hx Hxnonneg.
Apply sqrt_SNo_nonneg_prop1 x Hx Hxnonneg to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
Theorem. (sqrt_SNo_nonneg_0) The following is provable:
Proof:
rewrite the current goal using sqrt_SNo_nonneg_eq 0 SNo_0 (from left to right).
Set L_ to be the term λk : setSNo_sqrtaux 0 sqrt_SNo_nonneg k 0.
Set R_ to be the term λk : setSNo_sqrtaux 0 sqrt_SNo_nonneg k 1.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
We will prove SNoCut L R = 0.
We prove the intermediate claim L1: ∀k, nat_p kL_ k = 0 R_ k = 0.
Apply nat_ind to the current goal.
Apply andI to the current goal.
We will prove L_ 0 = 0.
We will prove SNo_sqrtaux 0 sqrt_SNo_nonneg 0 0 = 0.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using SNoL_nonneg_0 (from left to right).
An exact proof term for the current goal is Repl_Empty sqrt_SNo_nonneg.
We will prove R_ 0 = 0.
We will prove SNo_sqrtaux 0 sqrt_SNo_nonneg 0 1 = 0.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove {sqrt_SNo_nonneg w|wSNoR 0} = 0.
rewrite the current goal using SNoR_0 (from left to right).
An exact proof term for the current goal is Repl_Empty sqrt_SNo_nonneg.
Let k be given.
Assume Hk.
Assume IHk.
Apply IHk to the current goal.
Assume IHLk: L_ k = 0.
Assume IHRk: R_ k = 0.
Apply andI to the current goal.
We will prove L_ (ordsucc k) = 0.
We will prove SNo_sqrtaux 0 sqrt_SNo_nonneg (ordsucc k) 0 = 0.
rewrite the current goal using SNo_sqrtaux_S 0 sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
We will prove L_ k SNo_sqrtauxset (L_ k) (R_ k) 0 = Empty.
rewrite the current goal using IHLk (from left to right).
We will prove 0 SNo_sqrtauxset 0 (R_ k) 0 = Empty.
Apply SNo_sqrtauxset_0 (R_ k) 0 (λ_ u ⇒ 0 u = 0) to the current goal.
We will prove 0 0 = Empty.
Apply binunion_idl to the current goal.
We will prove R_ (ordsucc k) = 0.
We will prove SNo_sqrtaux 0 sqrt_SNo_nonneg (ordsucc k) 1 = 0.
rewrite the current goal using SNo_sqrtaux_S 0 sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove R_ k SNo_sqrtauxset (L_ k) (L_ k) 0 SNo_sqrtauxset (R_ k) (R_ k) 0 = Empty.
rewrite the current goal using IHLk (from left to right).
rewrite the current goal using IHRk (from left to right).
rewrite the current goal using SNo_sqrtauxset_0 0 0 (from left to right).
We will prove 0 0 0 = Empty.
rewrite the current goal using binunion_idl 0 (from left to right).
We will prove 0 0 = Empty.
Apply binunion_idl to the current goal.
We prove the intermediate claim L2: L = 0.
Apply Empty_eq to the current goal.
Let x be given.
Assume Hx: x L.
Apply famunionE_impred ω L_ x Hx to the current goal.
Let k be given.
Assume Hk: k ω.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume H1: L_ k = 0.
Assume _.
We will prove x L_ k.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is EmptyE x.
We prove the intermediate claim L3: R = 0.
Apply Empty_eq to the current goal.
Let x be given.
Assume Hx: x R.
Apply famunionE_impred ω R_ x Hx to the current goal.
Let k be given.
Assume Hk: k ω.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume _.
Assume H1: R_ k = 0.
We will prove x R_ k.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is EmptyE x.
rewrite the current goal using L2 (from left to right).
rewrite the current goal using L3 (from left to right).
An exact proof term for the current goal is SNoCut_0_0.
Theorem. (sqrt_SNo_nonneg_1) The following is provable:
Proof:
rewrite the current goal using sqrt_SNo_nonneg_eq 1 SNo_1 (from left to right).
Set L_ to be the term λk : setSNo_sqrtaux 1 sqrt_SNo_nonneg k 0.
Set R_ to be the term λk : setSNo_sqrtaux 1 sqrt_SNo_nonneg k 1.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
We will prove SNoCut L R = 1.
We prove the intermediate claim L1: ∀k, nat_p kL_ k = 1 R_ k = 0.
Apply nat_ind to the current goal.
Apply andI to the current goal.
We will prove L_ 0 = 1.
We will prove SNo_sqrtaux 1 sqrt_SNo_nonneg 0 0 = 1.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using SNoL_nonneg_1 (from left to right).
We will prove {sqrt_SNo_nonneg w|w1} = 1.
Apply set_ext to the current goal.
Let u be given.
Assume Hu: u {sqrt_SNo_nonneg w|w1}.
We will prove u 1.
Apply ReplE_impred 1 sqrt_SNo_nonneg u Hu to the current goal.
Let w be given.
Assume Hw: w 1.
Apply cases_1 w Hw to the current goal.
rewrite the current goal using sqrt_SNo_nonneg_0 (from left to right).
Assume Hu0: u = 0.
rewrite the current goal using Hu0 (from left to right).
An exact proof term for the current goal is In_0_1.
Let u be given.
Assume Hu: u 1.
Apply cases_1 u Hu to the current goal.
We will prove 0 {sqrt_SNo_nonneg w|w1}.
rewrite the current goal using sqrt_SNo_nonneg_0 (from right to left) at position 1.
Apply ReplI to the current goal.
An exact proof term for the current goal is In_0_1.
We will prove R_ 0 = 0.
We will prove SNo_sqrtaux 1 sqrt_SNo_nonneg 0 1 = 0.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove {sqrt_SNo_nonneg w|wSNoR 1} = 0.
rewrite the current goal using SNoR_1 (from left to right).
An exact proof term for the current goal is Repl_Empty sqrt_SNo_nonneg.
Let k be given.
Assume Hk.
Assume IHk.
Apply IHk to the current goal.
Assume IHLk: L_ k = 1.
Assume IHRk: R_ k = 0.
Apply andI to the current goal.
We will prove L_ (ordsucc k) = 1.
We will prove SNo_sqrtaux 1 sqrt_SNo_nonneg (ordsucc k) 0 = 1.
rewrite the current goal using SNo_sqrtaux_S 1 sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
We will prove L_ k SNo_sqrtauxset (L_ k) (R_ k) 1 = 1.
rewrite the current goal using IHLk (from left to right).
rewrite the current goal using IHRk (from left to right).
We will prove 1 SNo_sqrtauxset 1 0 1 = 1.
rewrite the current goal using SNo_sqrtauxset_0' 1 1 (from left to right).
Apply binunion_idr to the current goal.
We will prove R_ (ordsucc k) = 0.
We will prove SNo_sqrtaux 1 sqrt_SNo_nonneg (ordsucc k) 1 = 0.
rewrite the current goal using SNo_sqrtaux_S 1 sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove R_ k SNo_sqrtauxset (L_ k) (L_ k) 1 SNo_sqrtauxset (R_ k) (R_ k) 1 = 0.
rewrite the current goal using IHLk (from left to right).
rewrite the current goal using IHRk (from left to right).
rewrite the current goal using SNo_sqrtauxset_0 0 1 (from left to right).
We will prove 0 SNo_sqrtauxset 1 1 1 0 = 0.
rewrite the current goal using binunion_idl (SNo_sqrtauxset 1 1 1) (from left to right).
rewrite the current goal using binunion_idr (SNo_sqrtauxset 1 1 1) (from left to right).
We will prove SNo_sqrtauxset 1 1 1 = 0.
Apply Empty_eq to the current goal.
Let u be given.
Assume Hu: u SNo_sqrtauxset 1 1 1.
Apply SNo_sqrtauxset_E 1 1 1 u Hu to the current goal.
Let w be given.
Assume Hw: w 1.
Let z be given.
Assume Hz: z 1.
Apply cases_1 w Hw to the current goal.
Apply cases_1 z Hz to the current goal.
rewrite the current goal using add_SNo_0R 0 SNo_0 (from left to right).
Assume H1: 0 < 0.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
An exact proof term for the current goal is H1.
We prove the intermediate claim L2: L = 1.
Apply set_ext to the current goal.
We will prove L 1.
Let x be given.
Assume Hx: x L.
Apply famunionE_impred ω L_ x Hx to the current goal.
Let k be given.
Assume Hk: k ω.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume H1: L_ k = 1.
Assume _.
We will prove x L_ kx 1.
rewrite the current goal using H1 (from left to right).
Assume H2: x 1.
We will prove x 1.
An exact proof term for the current goal is H2.
Let x be given.
Assume Hx: x 1.
Apply cases_1 x Hx to the current goal.
We will prove 0 L.
We prove the intermediate claim L2a: 0 L_ 0.
Apply L1 0 nat_0 to the current goal.
Assume H1: L_ 0 = 1.
Assume _.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is In_0_1.
We will prove 0 kωL_ k.
An exact proof term for the current goal is famunionI ω L_ 0 0 (nat_p_omega 0 nat_0) L2a.
We prove the intermediate claim L3: R = 0.
Apply Empty_eq to the current goal.
Let x be given.
Assume Hx: x R.
Apply famunionE_impred ω R_ x Hx to the current goal.
Let k be given.
Assume Hk: k ω.
Apply L1 k (omega_nat_p k Hk) to the current goal.
Assume _.
Assume H1: R_ k = 0.
We will prove x R_ k.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is EmptyE x.
rewrite the current goal using L2 (from left to right).
rewrite the current goal using L3 (from left to right).
We will prove SNoCut 1 0 = 1.
rewrite the current goal using SNoL_1 (from right to left) at position 1.
rewrite the current goal using SNoR_1 (from right to left) at position 2.
We will prove SNoCut (SNoL 1) (SNoR 1) = 1.
Use symmetry.
An exact proof term for the current goal is SNo_eta 1 SNo_1.
Theorem. (sqrt_SNo_nonneg_0inL0) The following is provable:
∀x, SNo x0 x0 SNoLev x0 SNo_sqrtaux x sqrt_SNo_nonneg 0 0
Proof:
Let x be given.
Assume Hx Hxnn H1.
Set L_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 0.
We will prove 0 L_ 0.
rewrite the current goal using sqrt_SNo_nonneg_0 (from right to left) at position 1.
rewrite the current goal using SNo_sqrtaux_0 x sqrt_SNo_nonneg (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply ReplI to the current goal.
We will prove 0 SNoL_nonneg x.
We will prove 0 {wSNoL x|0 w}.
Apply SepI to the current goal.
We will prove 0 SNoL x.
Apply SNoL_I x Hx 0 SNo_0 to the current goal.
We will prove SNoLev 0 SNoLev x.
rewrite the current goal using SNoLev_0 (from left to right).
An exact proof term for the current goal is H1.
We will prove 0 < x.
Apply SNoLeE 0 x SNo_0 Hx Hxnn to the current goal.
Assume H3: 0 < x.
An exact proof term for the current goal is H3.
Assume H3: 0 = x.
We will prove False.
Apply EmptyE 0 to the current goal.
rewrite the current goal using SNoLev_0 (from right to left) at position 2.
rewrite the current goal using H3 (from left to right) at position 2.
An exact proof term for the current goal is H1.
We will prove 0 0.
Apply SNoLe_ref to the current goal.
Theorem. (sqrt_SNo_nonneg_Lnonempty) The following is provable:
∀x, SNo x0 x0 SNoLev x(kωSNo_sqrtaux x sqrt_SNo_nonneg k 0) 0
Proof:
Let x be given.
Assume Hx Hxnn H1.
Set L_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 0.
Set R_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 1.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
We will prove L 0.
Assume H2: L = 0.
We prove the intermediate claim L1: sqrt_SNo_nonneg 0 L_ 0.
rewrite the current goal using sqrt_SNo_nonneg_0 (from left to right).
An exact proof term for the current goal is sqrt_SNo_nonneg_0inL0 x Hx Hxnn H1.
Apply EmptyE (sqrt_SNo_nonneg 0) to the current goal.
We will prove sqrt_SNo_nonneg 0 0.
rewrite the current goal using H2 (from right to left) at position 2.
An exact proof term for the current goal is famunionI ω L_ 0 (sqrt_SNo_nonneg 0) (nat_p_omega 0 nat_0) L1.
Theorem. (sqrt_SNo_nonneg_Rnonempty) The following is provable:
∀x, SNo x0 x1 SNoLev x(kωSNo_sqrtaux x sqrt_SNo_nonneg k 1) 0
Proof:
Let x be given.
Assume Hx Hxnn H1.
Set L_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 0.
Set R_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 1.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
We will prove R 0.
Assume H2: R = 0.
Apply SNoLt_trichotomy_or_impred x 1 Hx SNo_1 to the current goal.
Assume H3: x < 1.
We prove the intermediate claim L1: 1 SNoR x.
Apply SNoR_I x Hx 1 SNo_1 to the current goal.
We will prove SNoLev 1 SNoLev x.
rewrite the current goal using ordinal_SNoLev 1 (nat_p_ordinal 1 nat_1) (from left to right).
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H3.
We prove the intermediate claim L2: sqrt_SNo_nonneg 1 R_ 0.
rewrite the current goal using SNo_sqrtaux_0 x sqrt_SNo_nonneg (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply ReplI to the current goal.
An exact proof term for the current goal is L1.
Apply EmptyE (sqrt_SNo_nonneg 1) to the current goal.
rewrite the current goal using H2 (from right to left) at position 2.
We will prove sqrt_SNo_nonneg 1 R.
An exact proof term for the current goal is famunionI ω R_ 0 (sqrt_SNo_nonneg 1) (nat_p_omega 0 nat_0) L2.
Assume H3: x = 1.
We will prove False.
Apply In_irref 1 to the current goal.
We will prove 1 1.
rewrite the current goal using ordinal_SNoLev 1 (nat_p_ordinal 1 nat_1) (from right to left) at position 2.
rewrite the current goal using H3 (from right to left) at position 2.
An exact proof term for the current goal is H1.
Assume H3: 1 < x.
We prove the intermediate claim L3: 1 SNoL_nonneg x.
We will prove 1 {wSNoL x|0 w}.
Apply SepI to the current goal.
Apply SNoL_I x Hx 1 SNo_1 to the current goal.
We will prove SNoLev 1 SNoLev x.
rewrite the current goal using ordinal_SNoLev 1 (nat_p_ordinal 1 nat_1) (from left to right).
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H3.
We will prove 0 1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLt_0_1.
We prove the intermediate claim L4: (x + 1 * 0) :/: (1 + 0) R_ 1.
We will prove (x + 1 * 0) :/: (1 + 0) SNo_sqrtaux x sqrt_SNo_nonneg 1 1.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg 0 nat_0 (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply binunionI1 to the current goal.
Apply binunionI2 to the current goal.
Apply SNo_sqrtauxset_I to the current goal.
We will prove 1 L_ 0.
We will prove 1 SNo_sqrtaux x sqrt_SNo_nonneg 0 0.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using sqrt_SNo_nonneg_1 (from right to left).
Apply ReplI to the current goal.
We will prove 1 SNoL_nonneg x.
An exact proof term for the current goal is L3.
We will prove 0 L_ 0.
An exact proof term for the current goal is sqrt_SNo_nonneg_0inL0 x Hx Hxnn (ordinal_TransSet (SNoLev x) (SNoLev_ordinal x Hx) 1 H1 0 In_0_1).
We will prove 0 < 1 + 0.
rewrite the current goal using add_SNo_0R 1 SNo_1 (from left to right).
An exact proof term for the current goal is SNoLt_0_1.
Apply EmptyE ((x + 1 * 0) :/: (1 + 0)) to the current goal.
rewrite the current goal using H2 (from right to left) at position 5.
We will prove ((x + 1 * 0) :/: (1 + 0)) R.
An exact proof term for the current goal is famunionI ω R_ 1 ((x + 1 * 0) :/: (1 + 0)) (nat_p_omega 1 nat_1) L4.
Theorem. (SNo_sqrtauxset_real) The following is provable:
∀Y Z x, Y realZ realx realSNo_sqrtauxset Y Z x real
Proof:
Let Y, Z and x be given.
Assume HY HZ Hx.
We will prove (yY{(x + y * z) :/: (y + z)|zZ, 0 < y + z}) real.
Let w be given.
Assume Hw.
Apply famunionE_impred Y (λy ⇒ {(x + y * z) :/: (y + z)|zZ, 0 < y + z}) w Hw to the current goal.
Let y be given.
Assume Hy: y Y.
Assume Hw2: w {(x + y * z) :/: (y + z)|zZ, 0 < y + z}.
Apply ReplSepE_impred Z (λz ⇒ 0 < y + z) (λz ⇒ (x + y * z) :/: (y + z)) w Hw2 to the current goal.
Let z be given.
Assume Hz: z Z.
Assume Hyz: 0 < y + z.
Assume Hw3: w = (x + y * z) :/: (y + z).
We will prove w real.
rewrite the current goal using Hw3 (from left to right).
Apply real_div_SNo to the current goal.
We will prove x + y * z real.
Apply real_add_SNo to the current goal.
An exact proof term for the current goal is Hx.
Apply real_mul_SNo to the current goal.
An exact proof term for the current goal is HY y Hy.
An exact proof term for the current goal is HZ z Hz.
We will prove y + z real.
Apply real_add_SNo to the current goal.
An exact proof term for the current goal is HY y Hy.
An exact proof term for the current goal is HZ z Hz.
Theorem. (SNo_sqrtauxset_real_nonneg) The following is provable:
∀Y Z x, Y {wreal|0 w}Z {zreal|0 z}x real0 xSNo_sqrtauxset Y Z x {wreal|0 w}
Proof:
Let Y, Z and x be given.
Assume HY HZ Hx Hxnneg.
We will prove (yY{(x + y * z) :/: (y + z)|zZ, 0 < y + z}) {wreal|0 w}.
We prove the intermediate claim LY: Y real.
Let y be given.
Assume Hy.
An exact proof term for the current goal is SepE1 real (λw ⇒ 0 w) y (HY y Hy).
We prove the intermediate claim LZ: Z real.
Let z be given.
Assume Hz.
An exact proof term for the current goal is SepE1 real (λw ⇒ 0 w) z (HZ z Hz).
We prove the intermediate claim LxS: SNo x.
An exact proof term for the current goal is real_SNo x Hx.
Let w be given.
Assume Hw.
Apply SepI to the current goal.
Apply SNo_sqrtauxset_real Y Z x LY LZ Hx w Hw to the current goal.
We will prove 0 w.
Apply famunionE_impred Y (λy ⇒ {(x + y * z) :/: (y + z)|zZ, 0 < y + z}) w Hw to the current goal.
Let y be given.
Assume Hy: y Y.
Assume Hw2: w {(x + y * z) :/: (y + z)|zZ, 0 < y + z}.
Apply ReplSepE_impred Z (λz ⇒ 0 < y + z) (λz ⇒ (x + y * z) :/: (y + z)) w Hw2 to the current goal.
Let z be given.
Assume Hz: z Z.
Assume Hyz: 0 < y + z.
Assume Hw3: w = (x + y * z) :/: (y + z).
Apply SepE real (λw ⇒ 0 w) y (HY y Hy) to the current goal.
Assume HyR: y real.
Assume Hynneg: 0 y.
We prove the intermediate claim LyS: SNo y.
An exact proof term for the current goal is real_SNo y HyR.
Apply SepE real (λz ⇒ 0 z) z (HZ z Hz) to the current goal.
Assume HzR: z real.
Assume Hznneg: 0 z.
We prove the intermediate claim LzS: SNo z.
An exact proof term for the current goal is real_SNo z HzR.
rewrite the current goal using Hw3 (from left to right).
We will prove 0 (x + y * z) :/: (y + z).
We prove the intermediate claim L1: 0 x + y * z.
rewrite the current goal using add_SNo_0R 0 SNo_0 (from right to left).
Apply add_SNo_Le3 0 0 x (y * z) SNo_0 SNo_0 (real_SNo x Hx) (SNo_mul_SNo y z LyS LzS) to the current goal.
We will prove 0 x.
An exact proof term for the current goal is Hxnneg.
We will prove 0 y * z.
Apply SNoLeE 0 y SNo_0 LyS Hynneg to the current goal.
Assume H1: 0 < y.
Apply SNoLeE 0 z SNo_0 LzS Hznneg to the current goal.
Assume H2: 0 < z.
Apply SNoLtLe to the current goal.
We will prove 0 < y * z.
An exact proof term for the current goal is mul_SNo_pos_pos y z LyS LzS H1 H2.
Assume H2: 0 = z.
rewrite the current goal using H2 (from right to left).
rewrite the current goal using mul_SNo_zeroR y LyS (from left to right).
Apply SNoLe_ref to the current goal.
Assume H1: 0 = y.
rewrite the current goal using H1 (from right to left).
rewrite the current goal using mul_SNo_zeroL z LzS (from left to right).
Apply SNoLe_ref to the current goal.
Apply SNoLeE 0 (x + y * z) SNo_0 (SNo_add_SNo x (y * z) LxS (SNo_mul_SNo y z LyS LzS)) L1 to the current goal.
Assume H1: 0 < x + y * z.
We will prove 0 (x + y * z) :/: (y + z).
Apply SNoLtLe to the current goal.
We will prove 0 < (x + y * z) :/: (y + z).
An exact proof term for the current goal is div_SNo_pos_pos (x + y * z) (y + z) (SNo_add_SNo x (y * z) LxS (SNo_mul_SNo y z LyS LzS)) (SNo_add_SNo y z LyS LzS) H1 Hyz.
Assume H1: 0 = x + y * z.
rewrite the current goal using H1 (from right to left).
rewrite the current goal using div_SNo_0_num (y + z) (SNo_add_SNo y z LyS LzS) (from left to right).
Apply SNoLe_ref to the current goal.
Proof:
We prove the intermediate claim L1: ∀x, SNo xSNoLev x ω0 xsqrt_SNo_nonneg x real.
Apply SNoLev_ind to the current goal.
Let x be given.
Assume Hx: SNo x.
Assume IH: wSNoS_ (SNoLev x), SNoLev w ω0 wsqrt_SNo_nonneg w real.
Assume Hx1: SNoLev x ω.
Assume Hx2: 0 x.
We prove the intermediate claim Lx: x real.
Apply SNoS_omega_real to the current goal.
Apply SNoS_I ω omega_ordinal x (SNoLev x) Hx1 to the current goal.
We will prove SNo_ (SNoLev x) x.
An exact proof term for the current goal is SNoLev_ x Hx.
We will prove sqrt_SNo_nonneg x real.
Apply ordinal_In_Or_Subq 0 (SNoLev x) ordinal_Empty (SNoLev_ordinal x Hx) to the current goal.
Assume H1: 0 SNoLev x.
Apply ordinal_In_Or_Subq 1 (SNoLev x) ordinal_1 (SNoLev_ordinal x Hx) to the current goal.
Assume H2: 1 SNoLev x.
We will prove sqrt_SNo_nonneg x real.
rewrite the current goal using sqrt_SNo_nonneg_eq x Hx (from left to right).
Set L_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 0.
Set R_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 1.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
We will prove SNoCut L R real.
We prove the intermediate claim L_L_R_real: ∀k, nat_p kL_ k real R_ k real.
Apply nat_ind to the current goal.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply andI to the current goal.
Let w' be given.
Assume Hw'.
Apply ReplE_impred (SNoL_nonneg x) sqrt_SNo_nonneg w' Hw' to the current goal.
Let w be given.
Assume Hw: w SNoL_nonneg x.
Assume Hw'w: w' = sqrt_SNo_nonneg w.
rewrite the current goal using Hw'w (from left to right).
We will prove sqrt_SNo_nonneg w real.
Apply SepE (SNoL x) (λw ⇒ 0 w) w Hw to the current goal.
Assume Hw1: w SNoL x.
Assume Hwnneg: 0 w.
Apply SNoL_E x Hx w Hw1 to the current goal.
Assume Hw1a Hw1b Hw1c.
Apply IH to the current goal.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1a Hx Hw1b.
We will prove SNoLev w ω.
An exact proof term for the current goal is omega_TransSet (SNoLev x) Hx1 (SNoLev w) Hw1b.
We will prove 0 w.
An exact proof term for the current goal is Hwnneg.
Let z' be given.
Assume Hz'.
Apply ReplE_impred (SNoR x) sqrt_SNo_nonneg z' Hz' to the current goal.
Let z be given.
Assume Hz: z SNoR x.
Assume Hz'z: z' = sqrt_SNo_nonneg z.
rewrite the current goal using Hz'z (from left to right).
We will prove sqrt_SNo_nonneg z real.
Apply SNoR_E x Hx z Hz to the current goal.
Assume Hz1 Hz2 Hz3.
Apply IH to the current goal.
We will prove z SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 z x Hz1 Hx Hz2.
We will prove SNoLev z ω.
An exact proof term for the current goal is omega_TransSet (SNoLev x) Hx1 (SNoLev z) Hz2.
We will prove 0 z.
Apply SNoLtLe to the current goal.
We will prove 0 < z.
Apply SNoLeLt_tra 0 x z SNo_0 Hx Hz1 Hx2 to the current goal.
We will prove x < z.
An exact proof term for the current goal is Hz3.
Let k be given.
Assume Hk.
Assume IHk.
Apply IHk to the current goal.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply andI to the current goal.
Apply binunion_Subq_min to the current goal.
An exact proof term for the current goal is IHk0.
Apply SNo_sqrtauxset_real to the current goal.
An exact proof term for the current goal is IHk0.
An exact proof term for the current goal is IHk1.
An exact proof term for the current goal is Lx.
Apply binunion_Subq_min to the current goal.
Apply binunion_Subq_min to the current goal.
An exact proof term for the current goal is IHk1.
Apply SNo_sqrtauxset_real to the current goal.
An exact proof term for the current goal is IHk0.
An exact proof term for the current goal is IHk0.
An exact proof term for the current goal is Lx.
Apply SNo_sqrtauxset_real to the current goal.
An exact proof term for the current goal is IHk1.
An exact proof term for the current goal is IHk1.
An exact proof term for the current goal is Lx.
We prove the intermediate claim L1L: wL, ∀p : prop, (SNo w0 ww * w < xp)p.
Let w be given.
Assume Hw.
Let p be given.
Assume Hp.
Apply famunionE_impred ω L_ w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: w L_ k.
Apply SNo_sqrtaux_0_prop x Hx Hx2 k (omega_nat_p k Hk) w H1 to the current goal.
Assume H2.
Apply H2 to the current goal.
An exact proof term for the current goal is Hp.
We prove the intermediate claim L1R: zR, ∀p : prop, (SNo z0 zx < z * zp)p.
Let z be given.
Assume Hz.
Let p be given.
Assume Hp.
Apply famunionE_impred ω R_ z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: z R_ k.
Apply SNo_sqrtaux_1_prop x Hx Hx2 k (omega_nat_p k Hk) z H1 to the current goal.
Assume H3.
Apply H3 to the current goal.
An exact proof term for the current goal is Hp.
We prove the intermediate claim LLR: SNoCutP L R.
An exact proof term for the current goal is SNo_sqrt_SNo_SNoCutP x Hx Hx2.
Apply LLR to the current goal.
Assume HLHR.
Apply HLHR to the current goal.
Assume HL: wL, SNo w.
Assume HR: zR, SNo z.
Assume HLR: wL, zR, w < z.
Apply real_SNoCut to the current goal.
We will prove L real.
Let w be given.
Assume Hw: w L.
Apply famunionE_impred ω L_ w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: w L_ k.
Apply L_L_R_real k (omega_nat_p k Hk) to the current goal.
Assume H2 _.
An exact proof term for the current goal is H2 w H1.
We will prove R real.
Let z be given.
Assume Hz: z R.
Apply famunionE_impred ω R_ z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: z R_ k.
Apply L_L_R_real k (omega_nat_p k Hk) to the current goal.
Assume _ H2.
An exact proof term for the current goal is H2 z H1.
We will prove SNoCutP L R.
An exact proof term for the current goal is LLR.
We will prove L 0.
An exact proof term for the current goal is sqrt_SNo_nonneg_Lnonempty x Hx Hx2 H1.
We will prove R 0.
An exact proof term for the current goal is sqrt_SNo_nonneg_Rnonempty x Hx Hx2 H2.
We will prove wL, w'L, w < w'.
Let w be given.
Assume Hw.
Apply famunionE_impred ω L_ w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H3: w L_ k.
Apply L1L w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: 0 w.
Assume Hw3: w * w < x.
We prove the intermediate claim Lwmw: SNo (w * w).
An exact proof term for the current goal is SNo_mul_SNo w w Hw1 Hw1.
We prove the intermediate claim Lwpw: SNo (w + w).
An exact proof term for the current goal is SNo_add_SNo w w Hw1 Hw1.
We prove the intermediate claim L1a: z, z R_ (ordsucc k).
Apply SNoLt_trichotomy_or_impred x 1 Hx SNo_1 to the current goal.
Assume H4: x < 1.
We use 1 to witness the existential quantifier.
We will prove 1 R_ (ordsucc k).
Apply SNo_sqrtaux_mon x sqrt_SNo_nonneg 0 nat_0 (ordsucc k) (nat_ordsucc k (omega_nat_p k Hk)) (Subq_Empty (ordsucc k)) to the current goal.
Assume _.
Assume H5: zR_ 0, z R_ (ordsucc k).
We will prove 1 R_ (ordsucc k).
Apply H5 to the current goal.
We will prove 1 R_ 0.
We will prove 1 SNo_sqrtaux x sqrt_SNo_nonneg 0 1.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove 1 {sqrt_SNo_nonneg z|zSNoR x}.
rewrite the current goal using sqrt_SNo_nonneg_1 (from right to left).
Apply ReplI to the current goal.
We will prove 1 SNoR x.
We will prove 1 {zSNoS_ (SNoLev x)|x < z}.
Apply SepI to the current goal.
We will prove 1 SNoS_ (SNoLev x).
Apply SNoS_I2 1 x SNo_1 Hx to the current goal.
We will prove SNoLev 1 SNoLev x.
rewrite the current goal using ordinal_SNoLev 1 ordinal_1 (from left to right).
An exact proof term for the current goal is H2.
We will prove x < 1.
An exact proof term for the current goal is H4.
Assume H4: x = 1.
We will prove False.
Apply In_irref 1 to the current goal.
We will prove 1 1.
rewrite the current goal using ordinal_SNoLev 1 ordinal_1 (from right to left) at position 2.
We will prove 1 SNoLev 1.
rewrite the current goal using H4 (from right to left) at position 2.
An exact proof term for the current goal is H2.
Assume H4: 1 < x.
We prove the intermediate claim L1a1: 1 L_ k.
Apply SNo_sqrtaux_mon x sqrt_SNo_nonneg 0 nat_0 k (omega_nat_p k Hk) (Subq_Empty k) to the current goal.
Assume H5: zL_ 0, z L_ k.
Assume _.
We will prove 1 L_ k.
Apply H5 to the current goal.
We will prove 1 L_ 0.
We will prove 1 SNo_sqrtaux x sqrt_SNo_nonneg 0 0.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using sqrt_SNo_nonneg_1 (from right to left).
Apply ReplI to the current goal.
We will prove 1 SNoL_nonneg x.
We will prove 1 {wSNoL x|0 w}.
Apply SepI to the current goal.
We will prove 1 {zSNoS_ (SNoLev x)|z < x}.
Apply SepI to the current goal.
We will prove 1 SNoS_ (SNoLev x).
Apply SNoS_I2 1 x SNo_1 Hx to the current goal.
We will prove SNoLev 1 SNoLev x.
rewrite the current goal using ordinal_SNoLev 1 ordinal_1 (from left to right).
An exact proof term for the current goal is H2.
We will prove 1 < x.
An exact proof term for the current goal is H4.
We will prove 0 1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLt_0_1.
We prove the intermediate claim L1a2: 0 < 1 + 1.
rewrite the current goal using add_SNo_1_1_2 (from left to right).
An exact proof term for the current goal is SNoLt_0_2.
Set z to be the term (x + 1 * 1) :/: (1 + 1).
We use z to witness the existential quantifier.
We will prove z R_ (ordsucc k).
We will prove z SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k) 1.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove z R_ k SNo_sqrtauxset (L_ k) (L_ k) x SNo_sqrtauxset (R_ k) (R_ k) x.
Apply binunionI1 to the current goal.
Apply binunionI2 to the current goal.
We will prove z SNo_sqrtauxset (L_ k) (L_ k) x.
An exact proof term for the current goal is SNo_sqrtauxset_I (L_ k) (L_ k) x 1 L1a1 1 L1a1 L1a2.
Apply L1a to the current goal.
Let z be given.
Assume Hz: z R_ (ordsucc k).
We prove the intermediate claim Lz: z R.
An exact proof term for the current goal is famunionI ω R_ (ordsucc k) z (omega_ordsucc k Hk) Hz.
Apply L1R z Lz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: 0 z.
Assume Hz3: x < z * z.
We prove the intermediate claim Lwmz: SNo (w * z).
An exact proof term for the current goal is SNo_mul_SNo w z Hw1 Hz1.
We prove the intermediate claim Lwpz: SNo (w + z).
An exact proof term for the current goal is SNo_add_SNo w z Hw1 Hz1.
We prove the intermediate claim Lzpos: 0 < z.
Apply SNoLeE 0 z SNo_0 Hz1 Hz2 to the current goal.
Assume H4: 0 < z.
An exact proof term for the current goal is H4.
Assume H4: 0 = z.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLeLt_tra 0 x 0 SNo_0 Hx SNo_0 Hx2 to the current goal.
We will prove x < 0.
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from right to left).
rewrite the current goal using H4 (from left to right).
We will prove x < z * z.
An exact proof term for the current goal is Hz3.
We prove the intermediate claim Lwpzpos: 0 < w + z.
Apply SNoLtLe_tra 0 z (w + z) SNo_0 Hz1 Lwpz Lzpos to the current goal.
We will prove z w + z.
rewrite the current goal using add_SNo_0L z Hz1 (from right to left) at position 1.
We will prove 0 + z w + z.
An exact proof term for the current goal is add_SNo_Le1 0 z w SNo_0 Hz1 Hw1 Hw2.
We prove the intermediate claim Lwpzn0: w + z 0.
Assume H4: w + z = 0.
Apply SNoLt_irref 0 to the current goal.
rewrite the current goal using H4 (from right to left) at position 2.
An exact proof term for the current goal is Lwpzpos.
Set w' to be the term (x + w * z) :/: (w + z).
We prove the intermediate claim Lw': w' L_ (ordsucc (ordsucc k)).
We will prove w' SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc (ordsucc k)) 0.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg (ordsucc k) (nat_ordsucc k (omega_nat_p k Hk)) (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
We will prove w' L_ (ordsucc k) SNo_sqrtauxset (L_ (ordsucc k)) (R_ (ordsucc k)) x.
Apply binunionI2 to the current goal.
We will prove w' SNo_sqrtauxset (L_ (ordsucc k)) (R_ (ordsucc k)) x.
We will prove (x + w * z) :/: (w + z) SNo_sqrtauxset (L_ (ordsucc k)) (R_ (ordsucc k)) x.
We prove the intermediate claim LwLk: w L_ (ordsucc k).
We will prove w L_ (ordsucc k).
Apply SNo_sqrtaux_mon x sqrt_SNo_nonneg k (omega_nat_p k Hk) (ordsucc k) (nat_ordsucc k (omega_nat_p k Hk)) (ordsuccI1 k) to the current goal.
Assume H5: uL_ k, u L_ (ordsucc k).
Assume _.
Apply H5 to the current goal.
We will prove w L_ k.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is SNo_sqrtauxset_I (L_ (ordsucc k)) (R_ (ordsucc k)) x w LwLk z Hz Lwpzpos.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
We will prove w' L.
An exact proof term for the current goal is famunionI ω L_ (ordsucc (ordsucc k)) w' (omega_ordsucc (ordsucc k) (omega_ordsucc k Hk)) Lw'.
We will prove w < w'.
rewrite the current goal using div_mul_SNo_invL w (w + z) Hw1 Lwpz Lwpzn0 (from right to left) at position 1.
We will prove (w * (w + z)) :/: (w + z) < w'.
We will prove (w * (w + z)) * recip_SNo (w + z) < (x + w * z) * recip_SNo (w + z).
Apply pos_mul_SNo_Lt' (w * (w + z)) (x + w * z) (recip_SNo (w + z)) (SNo_mul_SNo w (w + z) Hw1 Lwpz) (SNo_add_SNo x (w * z) Hx Lwmz) (SNo_recip_SNo (w + z) Lwpz) (recip_SNo_of_pos_is_pos (w + z) Lwpz Lwpzpos) to the current goal.
We will prove w * (w + z) < x + w * z.
rewrite the current goal using mul_SNo_distrL w w z Hw1 Hw1 Hz1 (from left to right).
We will prove w * w + w * z < x + w * z.
Apply add_SNo_Lt1 (w * w) (w * z) x Lwmw Lwmz Hx to the current goal.
We will prove w * w < x.
An exact proof term for the current goal is Hw3.
We will prove zR, z'R, z' < z.
Let z be given.
Assume Hz.
Apply famunionE_impred ω R_ z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H3: z R_ k.
Apply L1R z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: 0 z.
Assume Hz3: x < z * z.
We prove the intermediate claim Lzmz: SNo (z * z).
An exact proof term for the current goal is SNo_mul_SNo z z Hz1 Hz1.
We prove the intermediate claim Lzpz: SNo (z + z).
An exact proof term for the current goal is SNo_add_SNo z z Hz1 Hz1.
We prove the intermediate claim Lzpos: 0 < z.
Apply SNoLeE 0 z SNo_0 Hz1 Hz2 to the current goal.
Assume H4: 0 < z.
An exact proof term for the current goal is H4.
Assume H4: 0 = z.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLeLt_tra 0 x 0 SNo_0 Hx SNo_0 Hx2 to the current goal.
We will prove x < 0.
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from right to left).
rewrite the current goal using H4 (from left to right).
We will prove x < z * z.
An exact proof term for the current goal is Hz3.
We prove the intermediate claim Lzpzpos: 0 < z + z.
rewrite the current goal using add_SNo_0L 0 SNo_0 (from right to left).
An exact proof term for the current goal is add_SNo_Lt3 0 0 z z SNo_0 SNo_0 Hz1 Hz1 Lzpos Lzpos.
We prove the intermediate claim Lzpzn0: z + z 0.
Assume H4: z + z = 0.
Apply SNoLt_irref 0 to the current goal.
rewrite the current goal using H4 (from right to left) at position 2.
An exact proof term for the current goal is Lzpzpos.
Set z' to be the term (x + z * z) :/: (z + z).
We prove the intermediate claim Lz': z' R_ (ordsucc k).
We will prove z' SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k) 1.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove z' R_ k SNo_sqrtauxset (L_ k) (L_ k) x SNo_sqrtauxset (R_ k) (R_ k) x.
Apply binunionI2 to the current goal.
We will prove z' SNo_sqrtauxset (R_ k) (R_ k) x.
Apply SNo_sqrtauxset_I to the current goal.
We will prove z R_ k.
An exact proof term for the current goal is H3.
We will prove z R_ k.
An exact proof term for the current goal is H3.
We will prove 0 < z + z.
An exact proof term for the current goal is Lzpzpos.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
We will prove z' R.
An exact proof term for the current goal is famunionI ω R_ (ordsucc k) z' (omega_ordsucc k Hk) Lz'.
We will prove z' < z.
rewrite the current goal using div_mul_SNo_invL z (z + z) Hz1 Lzpz Lzpzn0 (from right to left) at position 5.
We will prove z' < (z * (z + z)) :/: (z + z).
We will prove (x + z * z) * recip_SNo (z + z) < (z * (z + z)) * recip_SNo (z + z).
Apply pos_mul_SNo_Lt' (x + z * z) (z * (z + z)) (recip_SNo (z + z)) (SNo_add_SNo x (z * z) Hx Lzmz) (SNo_mul_SNo z (z + z) Hz1 Lzpz) (SNo_recip_SNo (z + z) Lzpz) (recip_SNo_of_pos_is_pos (z + z) Lzpz Lzpzpos) to the current goal.
We will prove x + z * z < z * (z + z).
rewrite the current goal using mul_SNo_distrL z z z Hz1 Hz1 Hz1 (from left to right).
We will prove x + z * z < z * z + z * z.
Apply add_SNo_Lt1 x (z * z) (z * z) Hx Lzmz Lzmz to the current goal.
We will prove x < z * z.
An exact proof term for the current goal is Hz3.
Assume H2: SNoLev x 1.
We prove the intermediate claim L1_1: x = 1.
Use symmetry.
Apply SNo_eq 1 x SNo_1 Hx to the current goal.
We will prove SNoLev 1 = SNoLev x.
rewrite the current goal using ordinal_SNoLev 1 ordinal_1 (from left to right).
We will prove 1 = SNoLev x.
Apply set_ext to the current goal.
Let u be given.
Assume Hu: u 1.
Apply cases_1 u Hu to the current goal.
We will prove 0 SNoLev x.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
We will prove SNoEq_ (SNoLev 1) 1 x.
rewrite the current goal using ordinal_SNoLev 1 ordinal_1 (from left to right).
We will prove SNoEq_ 1 1 x.
Let u be given.
Assume Hu: u 1.
We will prove u 1 u x.
Apply iffI to the current goal.
Assume _.
Apply cases_1 u Hu to the current goal.
We will prove 0 x.
Apply dneg to the current goal.
Assume H3: 0 x.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLeLt_tra 0 x 0 SNo_0 Hx SNo_0 Hx2 to the current goal.
We will prove x < 0.
Apply SNoLtI3 to the current goal.
We will prove SNoLev 0 SNoLev x.
rewrite the current goal using SNoLev_0 (from left to right).
An exact proof term for the current goal is H1.
We will prove SNoEq_ (SNoLev 0) x 0.
rewrite the current goal using SNoLev_0 (from left to right).
Let u be given.
Assume Hu: u 0.
We will prove False.
An exact proof term for the current goal is EmptyE u Hu.
rewrite the current goal using SNoLev_0 (from left to right).
An exact proof term for the current goal is H3.
Assume _.
An exact proof term for the current goal is Hu.
rewrite the current goal using L1_1 (from left to right).
rewrite the current goal using sqrt_SNo_nonneg_1 (from left to right).
We will prove 1 real.
An exact proof term for the current goal is real_1.
Assume H1: SNoLev x 0.
We prove the intermediate claim L1_0: x = 0.
Apply SNoLev_0_eq_0 x Hx to the current goal.
We will prove SNoLev x = 0.
Apply Empty_Subq_eq to the current goal.
An exact proof term for the current goal is H1.
rewrite the current goal using L1_0 (from left to right).
rewrite the current goal using sqrt_SNo_nonneg_0 (from left to right).
We will prove 0 real.
An exact proof term for the current goal is real_0.
Let x be given.
Assume Hx.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume Hx1: SNoLev x ω.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
An exact proof term for the current goal is L1 x Hx3 Hx1.
Proof:
Let x be given.
Assume Hx Hxnn.
Apply real_E x Hx to the current goal.
Assume Hx1: SNo x.
Assume Hx2: SNoLev x ordsucc ω.
Assume Hx3: x SNoS_ (ordsucc ω).
Assume Hx4: - ω < x.
Assume Hx5: x < ω.
Assume Hx6: qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x.
Assume Hx7: kω, qSNoS_ ω, q < x x < q + eps_ k.
Apply sqrt_SNo_nonneg_prop1 x Hx1 Hxnn to the current goal.
Assume H.
Apply H to the current goal.
Assume H1: SNo (sqrt_SNo_nonneg x).
Assume H2: 0 sqrt_SNo_nonneg x.
Apply ordsuccE ω (SNoLev x) Hx2 to the current goal.
Assume H4: SNoLev x ω.
We will prove sqrt_SNo_nonneg x real.
Apply sqrt_SNo_nonneg_SNoS_omega to the current goal.
We will prove x SNoS_ ω.
Apply SNoS_I ω omega_ordinal x (SNoLev x) H4 to the current goal.
We will prove SNo_ (SNoLev x) x.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hx1.
We will prove 0 x.
An exact proof term for the current goal is Hxnn.
Assume H4: SNoLev x = ω.
We will prove sqrt_SNo_nonneg x real.
rewrite the current goal using sqrt_SNo_nonneg_eq x Hx1 (from left to right).
Set L_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 0.
Set R_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 1.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
We will prove SNoCut L R real.
We prove the intermediate claim LLI: kω, SNo_sqrtaux x sqrt_SNo_nonneg k 0 L.
Let k be given.
Assume Hk.
Let w be given.
Assume Hw.
An exact proof term for the current goal is famunionI ω (λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 0) k w Hk Hw.
We prove the intermediate claim LRI: kω, SNo_sqrtaux x sqrt_SNo_nonneg k 1 R.
Let k be given.
Assume Hk.
Let z be given.
Assume Hz.
An exact proof term for the current goal is famunionI ω (λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 1) k z Hk Hz.
We prove the intermediate claim LLE: wL, ∀p : prop, (kω, w SNo_sqrtaux x sqrt_SNo_nonneg k 0p)p.
Let w be given.
Assume Hw: w L.
Let p be given.
Assume Hp.
Apply famunionE_impred ω (λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 0) w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hwk: w SNo_sqrtaux x sqrt_SNo_nonneg k 0.
An exact proof term for the current goal is Hp k Hk Hwk.
We prove the intermediate claim LRE: zR, ∀p : prop, (kω, z SNo_sqrtaux x sqrt_SNo_nonneg k 1p)p.
Let z be given.
Assume Hz: z R.
Let p be given.
Assume Hp.
Apply famunionE_impred ω (λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 1) z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hzk: z SNo_sqrtaux x sqrt_SNo_nonneg k 1.
An exact proof term for the current goal is Hp k Hk Hzk.
We prove the intermediate claim L_L_Subq: ∀k, nat_p kL_ k L_ (ordsucc k).
Let k be given.
Assume Hk.
Let w be given.
Assume Hw: w L_ k.
We will prove w SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k) 0.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hw.
We prove the intermediate claim L_R_Subq: ∀k, nat_p kR_ k R_ (ordsucc k).
Let k be given.
Assume Hk.
Let w be given.
Assume Hw: w R_ k.
We will prove w SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k) 1.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply binunionI1 to the current goal.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hw.
We prove the intermediate claim L_L_R_Subq: ∀k, nat_p kk'k, L_ k' L_ k R_ k' R_ k.
Apply nat_ind to the current goal.
Let k' be given.
Assume Hk': k' 0.
We will prove False.
An exact proof term for the current goal is EmptyE k' Hk'.
Let k be given.
Assume Hk.
Assume IHk: k'k, L_ k' L_ k R_ k' R_ k.
Let k' be given.
Assume Hk': k' ordsucc k.
Apply ordsuccE k k' Hk' to the current goal.
Assume Hk'2: k' k.
Apply IHk k' Hk'2 to the current goal.
Assume IHkL IHkR.
Apply andI to the current goal.
We will prove L_ k' L_ (ordsucc k).
Apply Subq_tra (L_ k') (L_ k) (L_ (ordsucc k)) IHkL to the current goal.
We will prove L_ k L_ (ordsucc k).
An exact proof term for the current goal is L_L_Subq k Hk.
We will prove R_ k' R_ (ordsucc k).
Apply Subq_tra (R_ k') (R_ k) (R_ (ordsucc k)) IHkR to the current goal.
We will prove R_ k R_ (ordsucc k).
An exact proof term for the current goal is L_R_Subq k Hk.
Assume Hk'2: k' = k.
rewrite the current goal using Hk'2 (from left to right).
Apply andI to the current goal.
We will prove L_ k L_ (ordsucc k).
An exact proof term for the current goal is L_L_Subq k Hk.
We will prove R_ k R_ (ordsucc k).
An exact proof term for the current goal is L_R_Subq k Hk.
We prove the intermediate claim L_L_R_real: ∀k, nat_p kL_ k {wreal|0 w} R_ k {wreal|0 w}.
Apply nat_ind to the current goal.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply andI to the current goal.
Let w' be given.
Assume Hw'.
Apply ReplE_impred (SNoL_nonneg x) sqrt_SNo_nonneg w' Hw' to the current goal.
Let w be given.
Assume Hw: w SNoL_nonneg x.
Assume Hw'w: w' = sqrt_SNo_nonneg w.
rewrite the current goal using Hw'w (from left to right).
We will prove sqrt_SNo_nonneg w {wreal|0 w}.
Apply SepE (SNoL x) (λw ⇒ 0 w) w Hw to the current goal.
Assume Hw1: w SNoL x.
Assume Hwnneg: 0 w.
Apply SNoL_E x Hx1 w Hw1 to the current goal.
Assume Hw1a Hw1b Hw1c.
Apply SepI to the current goal.
Apply sqrt_SNo_nonneg_SNoS_omega to the current goal.
We will prove w SNoS_ ω.
Apply SNoS_I ω omega_ordinal w (SNoLev w) to the current goal.
We will prove SNoLev w ω.
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is Hw1b.
We will prove SNo_ (SNoLev w) w.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hw1a.
We will prove 0 w.
An exact proof term for the current goal is Hwnneg.
We will prove 0 sqrt_SNo_nonneg w.
An exact proof term for the current goal is sqrt_SNo_nonneg_nonneg w Hw1a Hwnneg.
Let z' be given.
Assume Hz'.
Apply ReplE_impred (SNoR x) sqrt_SNo_nonneg z' Hz' to the current goal.
Let z be given.
Assume Hz: z SNoR x.
Assume Hz'z: z' = sqrt_SNo_nonneg z.
rewrite the current goal using Hz'z (from left to right).
We will prove sqrt_SNo_nonneg z {zreal|0 z}.
Apply SNoR_E x Hx1 z Hz to the current goal.
Assume Hz1 Hz2 Hz3.
Apply SepI to the current goal.
Apply sqrt_SNo_nonneg_SNoS_omega to the current goal.
We will prove z SNoS_ ω.
Apply SNoS_I ω omega_ordinal z (SNoLev z) to the current goal.
We will prove SNoLev z ω.
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is Hz2.
We will prove SNo_ (SNoLev z) z.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hz1.
We will prove 0 z.
Apply SNoLtLe to the current goal.
We will prove 0 < z.
An exact proof term for the current goal is SNoLeLt_tra 0 x z SNo_0 Hx1 Hz1 Hxnn Hz3.
We will prove 0 sqrt_SNo_nonneg z.
Apply sqrt_SNo_nonneg_nonneg z Hz1 to the current goal.
We will prove 0 z.
Apply SNoLtLe to the current goal.
We will prove 0 < z.
An exact proof term for the current goal is SNoLeLt_tra 0 x z SNo_0 Hx1 Hz1 Hxnn Hz3.
Let k be given.
Assume Hk.
Assume IHk.
Apply IHk to the current goal.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply andI to the current goal.
Apply binunion_Subq_min to the current goal.
An exact proof term for the current goal is IHk0.
Apply SNo_sqrtauxset_real_nonneg to the current goal.
An exact proof term for the current goal is IHk0.
An exact proof term for the current goal is IHk1.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hxnn.
Apply binunion_Subq_min to the current goal.
Apply binunion_Subq_min to the current goal.
An exact proof term for the current goal is IHk1.
Apply SNo_sqrtauxset_real_nonneg to the current goal.
An exact proof term for the current goal is IHk0.
An exact proof term for the current goal is IHk0.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hxnn.
Apply SNo_sqrtauxset_real_nonneg to the current goal.
An exact proof term for the current goal is IHk1.
An exact proof term for the current goal is IHk1.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hxnn.
We prove the intermediate claim LLsR: L real.
Let w be given.
Assume Hw.
Apply LLE w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hwk: w L_ k.
Apply L_L_R_real k (omega_nat_p k Hk) to the current goal.
Assume H _.
An exact proof term for the current goal is SepE1 real (λw ⇒ 0 w) w (H w Hwk).
We prove the intermediate claim LRsR: R real.
Let z be given.
Assume Hz.
Apply LRE z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hzk: z R_ k.
Apply L_L_R_real k (omega_nat_p k Hk) to the current goal.
Assume _ H.
An exact proof term for the current goal is SepE1 real (λw ⇒ 0 w) z (H z Hzk).
We prove the intermediate claim LLR: SNoCutP L R.
An exact proof term for the current goal is SNo_sqrt_SNo_SNoCutP x Hx1 Hxnn.
Apply SNoCutP_SNoCut_impred L R LLR to the current goal.
rewrite the current goal using sqrt_SNo_nonneg_eq x Hx1 (from right to left).
Assume HLR1 HLR2.
Assume HLR3: wL, w < sqrt_SNo_nonneg x.
Assume HLR4: zR, sqrt_SNo_nonneg x < z.
Assume HLR5.
We prove the intermediate claim L0Lx: 0 SNoLev x.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is nat_p_omega 0 nat_0.
We prove the intermediate claim L1Lx: 1 SNoLev x.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is nat_p_omega 1 nat_1.
We prove the intermediate claim LLne: L 0.
An exact proof term for the current goal is sqrt_SNo_nonneg_Lnonempty x Hx1 Hxnn L0Lx.
We prove the intermediate claim LRne: R 0.
An exact proof term for the current goal is sqrt_SNo_nonneg_Rnonempty x Hx1 Hxnn L1Lx.
We will prove SNoCut L R real.
We prove the intermediate claim LRE': zR, SNo z 0 < z.
Let z be given.
Assume Hz.
We prove the intermediate claim LzS: SNo z.
An exact proof term for the current goal is real_SNo z (LRsR z Hz).
Apply andI to the current goal.
An exact proof term for the current goal is LzS.
Apply SNoLeLt_tra 0 (sqrt_SNo_nonneg x) z SNo_0 H1 LzS to the current goal.
We will prove 0 sqrt_SNo_nonneg x.
An exact proof term for the current goal is H2.
We will prove sqrt_SNo_nonneg x < z.
An exact proof term for the current goal is HLR4 z Hz.
We prove the intermediate claim LLnomax: wL, w'L, w < w'.
Let w be given.
Assume Hw.
Apply LLE w Hw to the current goal.
Let k be given.
Assume Hk.
Assume Hwk: w L_ k.
Apply L_L_R_real k (omega_nat_p k Hk) to the current goal.
Assume H _.
Apply SepE real (λw ⇒ 0 w) w (H w Hwk) to the current goal.
Assume HwR: w real.
Assume Hwnn: 0 w.
We prove the intermediate claim Lw: SNo w.
An exact proof term for the current goal is real_SNo w HwR.
Apply xm (z, z R) to the current goal.
Assume H5.
Apply H5 to the current goal.
Let z be given.
Assume Hz: z R.
Apply LRE z Hz to the current goal.
Let k' be given.
Assume Hk'.
Assume Hzk': z R_ k'.
Apply LRE' z Hz to the current goal.
Assume HzS: SNo z.
Assume Hzpos: 0 < z.
Apply L_L_R_real k' (omega_nat_p k' Hk') to the current goal.
Assume _ H.
We prove the intermediate claim LzR: z real.
An exact proof term for the current goal is SepE1 real (λw ⇒ 0 w) z (H z Hzk').
We prove the intermediate claim Lz: SNo z.
An exact proof term for the current goal is real_SNo z LzR.
We prove the intermediate claim Lzpos: 0 < z.
Apply SNoLeLt_tra 0 (sqrt_SNo_nonneg x) z SNo_0 H1 Lz to the current goal.
We will prove 0 sqrt_SNo_nonneg x.
An exact proof term for the current goal is H2.
We will prove sqrt_SNo_nonneg x < z.
An exact proof term for the current goal is HLR4 z Hz.
We prove the intermediate claim Lwz: SNo (w + z).
An exact proof term for the current goal is SNo_add_SNo w z Lw Lz.
We prove the intermediate claim Lwmz: SNo (w * z).
An exact proof term for the current goal is SNo_mul_SNo w z Lw Lz.
We prove the intermediate claim Lwzpos: 0 < w + z.
rewrite the current goal using add_SNo_0R 0 SNo_0 (from right to left).
Apply add_SNo_Lt3b 0 0 w z SNo_0 SNo_0 Lw Lz Hwnn to the current goal.
We will prove 0 < z.
An exact proof term for the current goal is Lzpos.
Set w' to be the term (x + w * z) :/: (w + z).
We use w' to witness the existential quantifier.
Apply andI to the current goal.
We will prove w' L.
We prove the intermediate claim Lwzk'': k''ω, w L_ k'' z R_ k''.
Apply ordinal_trichotomy_or_impred k k' (nat_p_ordinal k (omega_nat_p k Hk)) (nat_p_ordinal k' (omega_nat_p k' Hk')) to the current goal.
Assume H6: k k'.
We use k' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk'.
Apply andI to the current goal.
We will prove w L_ k'.
Apply L_L_R_Subq k' (omega_nat_p k' Hk') k H6 to the current goal.
Assume H _.
An exact proof term for the current goal is H w Hwk.
An exact proof term for the current goal is Hzk'.
Assume H6: k = k'.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
Apply andI to the current goal.
An exact proof term for the current goal is Hwk.
We will prove z R_ k.
rewrite the current goal using H6 (from left to right).
An exact proof term for the current goal is Hzk'.
Assume H6: k' k.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
Apply andI to the current goal.
An exact proof term for the current goal is Hwk.
We will prove z R_ k.
Apply L_L_R_Subq k (omega_nat_p k Hk) k' H6 to the current goal.
Assume _ H.
An exact proof term for the current goal is H z Hzk'.
Apply Lwzk'' to the current goal.
Let k'' be given.
Assume H.
Apply H to the current goal.
Assume Hk'': k'' ω.
Assume H.
Apply H to the current goal.
Assume Hwk'': w L_ k''.
Assume Hzk'': z R_ k''.
We prove the intermediate claim Lw'LSk'': w' L_ (ordsucc k'').
We will prove w' SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k'') 0.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k'' (omega_nat_p k'' Hk'') (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply binunionI2 to the current goal.
We will prove w' SNo_sqrtauxset (L_ k'') (R_ k'') x.
Apply SNo_sqrtauxset_I to the current goal.
An exact proof term for the current goal is Hwk''.
An exact proof term for the current goal is Hzk''.
We will prove 0 < w + z.
An exact proof term for the current goal is Lwzpos.
An exact proof term for the current goal is famunionI ω L_ (ordsucc k'') w' (omega_ordsucc k'' Hk'') Lw'LSk''.
We will prove w < w'.
We will prove w < (x + w * z) :/: (w + z).
Apply div_SNo_pos_LtR (x + w * z) (w + z) w (SNo_add_SNo x (w * z) Hx1 Lwmz) Lwz Lw Lwzpos to the current goal.
We will prove w * (w + z) < x + w * z.
rewrite the current goal using mul_SNo_distrL w w z Lw Lw HzS (from left to right).
We will prove w * w + w * z < x + w * z.
Apply add_SNo_Lt1 (w * w) (w * z) x (SNo_mul_SNo w w Lw Lw) (SNo_mul_SNo w z Lw HzS) Hx1 to the current goal.
We will prove w * w < x.
rewrite the current goal using H3 (from right to left).
We will prove w * w < sqrt_SNo_nonneg x * sqrt_SNo_nonneg x.
We prove the intermediate claim Lwsx: w < sqrt_SNo_nonneg x.
An exact proof term for the current goal is HLR3 w Hw.
Apply SNoLeE 0 w SNo_0 Lw Hwnn to the current goal.
Assume H6: 0 < w.
An exact proof term for the current goal is pos_mul_SNo_Lt2 w w (sqrt_SNo_nonneg x) (sqrt_SNo_nonneg x) Lw Lw H1 H1 H6 H6 Lwsx Lwsx.
Assume H6: 0 = w.
rewrite the current goal using H6 (from right to left).
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from left to right).
We will prove 0 < sqrt_SNo_nonneg x * sqrt_SNo_nonneg x.
We prove the intermediate claim Lsxpos: 0 < sqrt_SNo_nonneg x.
rewrite the current goal using H6 (from left to right).
An exact proof term for the current goal is Lwsx.
An exact proof term for the current goal is mul_SNo_pos_pos (sqrt_SNo_nonneg x) (sqrt_SNo_nonneg x) H1 H1 Lsxpos Lsxpos.
Assume H5: ¬ z, z R.
Apply LRne to the current goal.
Apply Empty_eq to the current goal.
Let z be given.
Assume Hz.
Apply H5 to the current goal.
We use z to witness the existential quantifier.
An exact proof term for the current goal is Hz.
We prove the intermediate claim LRnomin: zR, z'R, z' < z.
Let z be given.
Assume Hz.
Apply LRE z Hz to the current goal.
Let k be given.
Assume Hk.
Assume Hzk: z R_ k.
Apply LRE' z Hz to the current goal.
Assume HzS: SNo z.
Assume Hzpos: 0 < z.
We prove the intermediate claim Lzz: SNo (z + z).
An exact proof term for the current goal is SNo_add_SNo z z HzS HzS.
We prove the intermediate claim Lzzpos: 0 < z + z.
rewrite the current goal using add_SNo_0R 0 SNo_0 (from right to left).
We will prove 0 + 0 < z + z.
An exact proof term for the current goal is add_SNo_Lt3 0 0 z z SNo_0 SNo_0 HzS HzS Hzpos Hzpos.
We prove the intermediate claim Lzzn0: z + z 0.
Assume H5.
Apply SNoLt_irref 0 to the current goal.
rewrite the current goal using H5 (from right to left) at position 2.
An exact proof term for the current goal is Lzzpos.
We prove the intermediate claim Lzmz: SNo (z * z).
An exact proof term for the current goal is SNo_mul_SNo z z HzS HzS.
Set z' to be the term (x + z * z) :/: (z + z).
We prove the intermediate claim Lz': z' R_ (ordsucc k).
We will prove z' SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k) 1.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply binunionI2 to the current goal.
We will prove (x + z * z) :/: (z + z) SNo_sqrtauxset (SNo_sqrtaux x sqrt_SNo_nonneg k 1) (SNo_sqrtaux x sqrt_SNo_nonneg k 1) x.
Apply SNo_sqrtauxset_I to the current goal.
We will prove z R_ k.
An exact proof term for the current goal is Hzk.
We will prove z R_ k.
An exact proof term for the current goal is Hzk.
We will prove 0 < z + z.
An exact proof term for the current goal is Lzzpos.
We prove the intermediate claim Lz'R: z' R.
An exact proof term for the current goal is famunionI ω R_ (ordsucc k) z' (omega_ordsucc k Hk) Lz'.
We prove the intermediate claim Lz'S: SNo z'.
An exact proof term for the current goal is real_SNo z' (LRsR z' Lz'R).
We use z' to witness the existential quantifier.
Apply andI to the current goal.
We will prove z' R.
An exact proof term for the current goal is Lz'R.
We will prove z' < z.
We will prove (x + z * z) :/: (z + z) < z.
Apply div_SNo_pos_LtL (x + z * z) (z + z) z (SNo_add_SNo x (z * z) Hx1 Lzmz) Lzz HzS Lzzpos to the current goal.
We will prove x + z * z < z * (z + z).
rewrite the current goal using mul_SNo_distrL z z z HzS HzS HzS (from left to right).
We will prove x + z * z < z * z + z * z.
Apply add_SNo_Lt1 x (z * z) (z * z) Hx1 Lzmz Lzmz to the current goal.
We will prove x < z * z.
rewrite the current goal using H3 (from right to left).
We will prove sqrt_SNo_nonneg x * sqrt_SNo_nonneg x < z * z.
Apply SNoLeE 0 (sqrt_SNo_nonneg x) SNo_0 H1 H2 to the current goal.
Assume Hsxpos: 0 < sqrt_SNo_nonneg x.
An exact proof term for the current goal is pos_mul_SNo_Lt2 (sqrt_SNo_nonneg x) (sqrt_SNo_nonneg x) z z H1 H1 HzS HzS Hsxpos Hsxpos (HLR4 z Hz) (HLR4 z Hz).
Assume Hsx0: 0 = sqrt_SNo_nonneg x.
rewrite the current goal using Hsx0 (from right to left).
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from left to right).
We will prove 0 < z * z.
An exact proof term for the current goal is mul_SNo_pos_pos z z HzS HzS Hzpos Hzpos.
An exact proof term for the current goal is real_SNoCut L LLsR R LRsR LLR LLne LRne LLnomax LRnomin.
End of Section SurrealSqrt
Beginning of Section form100_1
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term div_SNo.
Theorem. (divides_int_div_SNo_int) The following is provable:
∀m n, divides_int m nn :/: m int
Proof:
Let m and n be given.
Assume H1: divides_int m n.
Apply H1 to the current goal.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume Hn: n int.
Assume H.
Apply H to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k int.
Assume H2: m * k = n.
We prove the intermediate claim LmS: SNo m.
An exact proof term for the current goal is int_SNo m Hm.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is int_SNo n Hn.
We prove the intermediate claim LkS: SNo k.
An exact proof term for the current goal is int_SNo k Hk.
Apply xm (m = 0) to the current goal.
Assume H3: m = 0.
We will prove n :/: m int.
rewrite the current goal using H3 (from left to right).
rewrite the current goal using div_SNo_0_denum n LnS (from left to right).
We will prove 0 int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_0.
Assume H3: m 0.
We prove the intermediate claim L1: n :/: m = k.
Apply mul_SNo_nonzero_cancel m (n :/: m) k LmS H3 (SNo_div_SNo n m LnS LmS) LkS to the current goal.
We will prove m * (n :/: m) = m * k.
rewrite the current goal using mul_div_SNo_invR n m LnS LmS H3 (from left to right).
We will prove n = m * k.
Use symmetry.
An exact proof term for the current goal is H2.
We will prove n :/: m int.
rewrite the current goal using L1 (from left to right).
An exact proof term for the current goal is Hk.
Theorem. (form100_1_lem1) The following is provable:
∀m, nat_p m∀n, nat_p nm * m = 2 * n * nn = 0
Proof:
Apply nat_complete_ind to the current goal.
Let m be given.
Assume Hm: nat_p m.
Assume IHm: m'm, ∀n, nat_p nm' * m' = 2 * n * nn = 0.
Let n be given.
Assume Hn: nat_p n.
Assume H1: m * m = 2 * n * n.
We prove the intermediate claim Ln: n ω.
An exact proof term for the current goal is nat_p_omega n Hn.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is nat_p_SNo n Hn.
Apply SNoLeE 0 n SNo_0 LnS (omega_nonneg n Ln) to the current goal.
Assume H2: 0 < n.
We will prove False.
We prove the intermediate claim LnZ: n int.
An exact proof term for the current goal is Subq_omega_int n Ln.
We prove the intermediate claim LnnS: SNo (n * n).
An exact proof term for the current goal is SNo_mul_SNo n n LnS LnS.
We prove the intermediate claim Lm: m ω.
An exact proof term for the current goal is nat_p_omega m Hm.
We prove the intermediate claim LmZ: m int.
An exact proof term for the current goal is Subq_omega_int m Lm.
We prove the intermediate claim LmS: SNo m.
An exact proof term for the current goal is nat_p_SNo m Hm.
We prove the intermediate claim Lmpos: 0 < m.
Apply SNoLeE 0 m SNo_0 LmS (omega_nonneg m Lm) to the current goal.
Assume H3: 0 < m.
An exact proof term for the current goal is H3.
Assume H3: 0 = m.
We will prove False.
Apply SNoLt_irref (m * m) to the current goal.
We will prove m * m < m * m.
rewrite the current goal using H1 (from left to right) at position 2.
We will prove m * m < 2 * n * n.
rewrite the current goal using H3 (from right to left) at position 2.
We will prove m * 0 < 2 * n * n.
rewrite the current goal using mul_SNo_zeroR m LmS (from left to right).
We will prove 0 < 2 * n * n.
Apply mul_SNo_pos_pos 2 (n * n) SNo_2 LnnS SNoLt_0_2 to the current goal.
We will prove 0 < n * n.
An exact proof term for the current goal is mul_SNo_pos_pos n n LnS LnS H2 H2.
We prove the intermediate claim Lm2pos: 0 < m :/: 2.
An exact proof term for the current goal is div_SNo_pos_pos m 2 LmS SNo_2 Lmpos SNoLt_0_2.
We prove the intermediate claim Ln2pos: 0 < n :/: 2.
An exact proof term for the current goal is div_SNo_pos_pos n 2 LnS SNo_2 H2 SNoLt_0_2.
We prove the intermediate claim L2mm: divides_int 2 (m * m).
We will prove divides_int 2 (m * m).
rewrite the current goal using H1 (from left to right).
We will prove divides_int 2 (2 * n * n).
Apply divides_int_mul_SNo_L to the current goal.
We will prove n * n int.
Apply Subq_omega_int to the current goal.
Apply mul_SNo_In_omega to the current goal.
An exact proof term for the current goal is Ln.
An exact proof term for the current goal is Ln.
We will prove divides_int 2 2.
Apply divides_int_ref to the current goal.
We will prove 2 int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_2.
We prove the intermediate claim L2m: divides_int 2 m.
Apply Euclid_lemma 2 prime_nat_2 m LmZ m LmZ L2mm to the current goal.
Assume H3: divides_int 2 m.
An exact proof term for the current goal is H3.
Assume H3: divides_int 2 m.
An exact proof term for the current goal is H3.
We prove the intermediate claim Lm2Z: m :/: 2 int.
An exact proof term for the current goal is divides_int_div_SNo_int 2 m L2m.
We prove the intermediate claim Lm2N: nat_p (m :/: 2).
Apply nonneg_int_nat_p (m :/: 2) Lm2Z to the current goal.
We will prove 0 m :/: 2.
Apply SNoLtLe to the current goal.
We will prove 0 < m :/: 2.
An exact proof term for the current goal is Lm2pos.
We prove the intermediate claim Lm2S: SNo (m :/: 2).
An exact proof term for the current goal is nat_p_SNo (m :/: 2) Lm2N.
We prove the intermediate claim Lm2m: m :/: 2 m.
Apply ordinal_SNoLt_In (m :/: 2) m (nat_p_ordinal (m :/: 2) Lm2N) (nat_p_ordinal m Hm) to the current goal.
We will prove m :/: 2 < m.
Apply div_SNo_pos_LtL m 2 m LmS SNo_2 LmS SNoLt_0_2 to the current goal.
We will prove m < m * 2.
Apply add_SNo_Lt1_cancel m (- m) (m * 2) LmS (SNo_minus_SNo m LmS) (SNo_mul_SNo m 2 LmS SNo_2) to the current goal.
We will prove m + - m < m * 2 + - m.
rewrite the current goal using add_SNo_minus_SNo_rinv m LmS (from left to right).
We will prove 0 < m * 2 + - m.
rewrite the current goal using mul_SNo_oneR m LmS (from right to left) at position 2.
We will prove 0 < m * 2 + - m * 1.
rewrite the current goal using mul_SNo_minus_distrR m 1 LmS SNo_1 (from right to left).
We will prove 0 < m * 2 + m * (- 1).
rewrite the current goal using mul_SNo_distrL m 2 (- 1) LmS SNo_2 (SNo_minus_SNo 1 SNo_1) (from right to left).
We will prove 0 < m * (2 + - 1).
rewrite the current goal using add_SNo_1_1_2 (from right to left).
We will prove 0 < m * ((1 + 1) + - 1).
rewrite the current goal using add_SNo_minus_R2 1 1 SNo_1 SNo_1 (from left to right).
We will prove 0 < m * 1.
rewrite the current goal using mul_SNo_oneR m LmS (from left to right).
We will prove 0 < m.
An exact proof term for the current goal is Lmpos.
We prove the intermediate claim L2nn: divides_int 2 (n * n).
We will prove divides_int 2 (n * n).
We will prove 2 int n * n int kint, 2 * k = n * n.
Apply and3I to the current goal.
We will prove 2 int.
Apply Subq_omega_int to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_2.
We will prove n * n int.
Apply int_mul_SNo to the current goal.
An exact proof term for the current goal is LnZ.
An exact proof term for the current goal is LnZ.
We will prove kint, 2 * k = n * n.
We use (m :/: 2) * (m :/: 2) to witness the existential quantifier.
Apply andI to the current goal.
We will prove (m :/: 2) * (m :/: 2) int.
Apply int_mul_SNo to the current goal.
An exact proof term for the current goal is Lm2Z.
An exact proof term for the current goal is Lm2Z.
We will prove 2 * ((m :/: 2) * (m :/: 2)) = n * n.
rewrite the current goal using mul_SNo_assoc 2 (m :/: 2) (m :/: 2) SNo_2 Lm2S Lm2S (from left to right).
We will prove (2 * (m :/: 2)) * (m :/: 2) = n * n.
rewrite the current goal using mul_div_SNo_invR m 2 LmS SNo_2 neq_2_0 (from left to right).
We will prove m * (m :/: 2) = n * n.
rewrite the current goal using mul_div_SNo_L m 2 m LmS SNo_2 LmS (from left to right).
We will prove (m * m) :/: 2 = n * n.
rewrite the current goal using H1 (from left to right).
We will prove (2 * n * n) :/: 2 = n * n.
rewrite the current goal using mul_SNo_com 2 (n * n) SNo_2 LnnS (from left to right).
We will prove ((n * n) * 2) :/: 2 = n * n.
An exact proof term for the current goal is div_mul_SNo_invL (n * n) 2 LnnS SNo_2 neq_2_0.
We prove the intermediate claim L2n: divides_int 2 n.
Apply Euclid_lemma 2 prime_nat_2 n LnZ n LnZ L2nn to the current goal.
Assume H3: divides_int 2 n.
An exact proof term for the current goal is H3.
Assume H3: divides_int 2 n.
An exact proof term for the current goal is H3.
We prove the intermediate claim Ln2Z: n :/: 2 int.
An exact proof term for the current goal is divides_int_div_SNo_int 2 n L2n.
We prove the intermediate claim Ln2N: nat_p (n :/: 2).
Apply nonneg_int_nat_p (n :/: 2) Ln2Z to the current goal.
We will prove 0 n :/: 2.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Ln2pos.
We prove the intermediate claim L1: (m :/: 2) * (m :/: 2) = 2 * (n :/: 2) * (n :/: 2).
rewrite the current goal using mul_div_SNo_both m 2 m 2 LmS SNo_2 LmS SNo_2 (from left to right).
rewrite the current goal using mul_div_SNo_both n 2 n 2 LnS SNo_2 LnS SNo_2 (from left to right).
We will prove (m * m) :/: (2 * 2) = 2 * ((n * n) :/: (2 * 2)).
rewrite the current goal using H1 (from left to right).
We will prove (2 * n * n) :/: (2 * 2) = 2 * ((n * n) :/: (2 * 2)).
Use symmetry.
An exact proof term for the current goal is mul_div_SNo_L (n * n) (2 * 2) 2 LnnS (SNo_mul_SNo 2 2 SNo_2 SNo_2) SNo_2.
We prove the intermediate claim Ln20: n :/: 2 = 0.
An exact proof term for the current goal is IHm (m :/: 2) Lm2m (n :/: 2) Ln2N L1.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
rewrite the current goal using Ln20 (from right to left) at position 2.
We will prove 0 < n :/: 2.
An exact proof term for the current goal is div_SNo_pos_pos n 2 LnS SNo_2 H2 SNoLt_0_2.
Assume H2: 0 = n.
Use symmetry.
An exact proof term for the current goal is H2.
Theorem. (form100_1_lem2) The following is provable:
Proof:
Let m be given.
Assume Hm: m ω.
Let n be given.
Assume Hn: n ω 1.
Assume H1: m * m = 2 * (n * n).
Apply setminusE ω 1 n Hn to the current goal.
Assume Hn1: n ω.
Assume Hn2: n 1.
We prove the intermediate claim L1: n = 0.
An exact proof term for the current goal is form100_1_lem1 m (omega_nat_p m Hm) n (omega_nat_p n Hn1) H1.
Apply Hn2 to the current goal.
We will prove n 1.
rewrite the current goal using L1 (from left to right).
We will prove 0 1.
An exact proof term for the current goal is In_0_1.
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term div_SNo.
Proof:
We prove the intermediate claim LS2R: sqrt_SNo_nonneg 2 real.
We will prove sqrt_SNo_nonneg 2 real.
Apply sqrt_SNo_nonneg_real 2 to the current goal.
We will prove 2 real.
Apply SNoS_omega_real to the current goal.
We will prove 2 SNoS_ ω.
Apply omega_SNoS_omega to the current goal.
We will prove 2 ω.
An exact proof term for the current goal is nat_p_omega 2 nat_2.
We will prove 0 2.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLt_0_2.
We prove the intermediate claim LS2: SNo (sqrt_SNo_nonneg 2).
Apply real_SNo to the current goal.
An exact proof term for the current goal is LS2R.
We prove the intermediate claim LS2nn: 0 sqrt_SNo_nonneg 2.
Apply sqrt_SNo_nonneg_nonneg to the current goal.
An exact proof term for the current goal is SNo_2.
We will prove 0 2.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLt_0_2.
We prove the intermediate claim LS2pos: 0 < sqrt_SNo_nonneg 2.
Apply SNoLeE 0 (sqrt_SNo_nonneg 2) SNo_0 LS2 LS2nn to the current goal.
Assume H1: 0 < sqrt_SNo_nonneg 2.
An exact proof term for the current goal is H1.
Assume H1: 0 = sqrt_SNo_nonneg 2.
We will prove False.
Apply neq_0_2 to the current goal.
We will prove 0 = 2.
rewrite the current goal using sqrt_SNo_nonneg_sqr 2 SNo_2 (SNoLtLe 0 2 SNoLt_0_2) (from right to left).
rewrite the current goal using H1 (from right to left).
We will prove 0 = 0 * 0.
Use symmetry.
An exact proof term for the current goal is mul_SNo_zeroR 0 SNo_0.
Apply setminusI to the current goal.
We will prove sqrt_SNo_nonneg 2 real.
An exact proof term for the current goal is LS2R.
Apply SepE real (λx ⇒ mint, nω {0}, x = m :/: n) (sqrt_SNo_nonneg 2) H1 to the current goal.
We prove the intermediate claim LnQ: mint, nω {0}, sqrt_SNo_nonneg 2 m :/: n.
Apply int_SNo_cases to the current goal.
Let m be given.
Assume Hm: m ω.
Let n be given.
Assume Hn: n ω {0}.
Assume H4: sqrt_SNo_nonneg 2 = m :/: n.
We will prove False.
Apply setminusE ω {0} n Hn to the current goal.
Assume Hn1: n ω.
Assume Hn2: n {0}.
We prove the intermediate claim LmS: SNo m.
An exact proof term for the current goal is omega_SNo m Hm.
We prove the intermediate claim LnN: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn1.
We prove the intermediate claim Ln1: n ω 1.
rewrite the current goal using eq_1_Sing0 (from left to right).
An exact proof term for the current goal is Hn.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is omega_SNo n Hn1.
Apply form100_1_lem2 m Hm n Ln1 to the current goal.
We will prove m * m = 2 * n * n.
We prove the intermediate claim L1: sqrt_SNo_nonneg 2 * n = m.
rewrite the current goal using H4 (from left to right).
We will prove (m :/: n) * n = m.
Apply mul_div_SNo_invL to the current goal.
We will prove SNo m.
An exact proof term for the current goal is LmS.
We will prove SNo n.
An exact proof term for the current goal is LnS.
We will prove n 0.
Assume Hn0: n = 0.
Apply Hn2 to the current goal.
We will prove n {0}.
rewrite the current goal using Hn0 (from left to right).
Apply SingI to the current goal.
rewrite the current goal using L1 (from right to left).
We will prove (sqrt_SNo_nonneg 2 * n) * (sqrt_SNo_nonneg 2 * n) = 2 * (n * n).
rewrite the current goal using mul_SNo_com_4_inner_mid (sqrt_SNo_nonneg 2) n (sqrt_SNo_nonneg 2) n LS2 LnS LS2 LnS (from left to right).
We will prove (sqrt_SNo_nonneg 2 * sqrt_SNo_nonneg 2) * (n * n) = 2 * (n * n).
Use f_equal.
Apply sqrt_SNo_nonneg_sqr to the current goal.
We will prove SNo 2.
An exact proof term for the current goal is SNo_2.
We will prove 0 2.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLt_0_2.
Let m be given.
Assume Hm: m ω.
Let n be given.
Assume Hn: n ω {0}.
Assume H4: sqrt_SNo_nonneg 2 = (- m) :/: n.
We will prove False.
Apply setminusE ω {0} n Hn to the current goal.
Assume Hn1: n ω.
Assume Hn2: n {0}.
We prove the intermediate claim LmS: SNo m.
An exact proof term for the current goal is omega_SNo m Hm.
We prove the intermediate claim Lmnn: 0 m.
An exact proof term for the current goal is omega_nonneg m Hm.
We prove the intermediate claim LnS: SNo n.
An exact proof term for the current goal is omega_SNo n Hn1.
We prove the intermediate claim Lnnn: 0 n.
An exact proof term for the current goal is omega_nonneg n Hn1.
We prove the intermediate claim Lnpos: 0 < n.
Apply SNoLeE 0 n SNo_0 LnS Lnnn to the current goal.
Assume H5: 0 < n.
An exact proof term for the current goal is H5.
Assume H5: 0 = n.
We will prove False.
Apply Hn2 to the current goal.
We will prove n {0}.
rewrite the current goal using H5 (from right to left).
Apply SingI to the current goal.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLtLe_tra 0 (sqrt_SNo_nonneg 2) 0 SNo_0 LS2 SNo_0 LS2pos to the current goal.
We will prove sqrt_SNo_nonneg 2 0.
rewrite the current goal using H4 (from left to right).
We will prove (- m) :/: n 0.
Apply SNoLeE 0 m SNo_0 LmS Lmnn to the current goal.
Assume H5: 0 < m.
Apply SNoLtLe to the current goal.
Apply div_SNo_neg_pos (- m) n (SNo_minus_SNo m LmS) LnS to the current goal.
We will prove - m < 0.
Apply minus_SNo_Lt_contra1 0 m SNo_0 LmS to the current goal.
We will prove - 0 < m.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H5.
We will prove 0 < n.
An exact proof term for the current goal is Lnpos.
Assume H5: 0 = m.
rewrite the current goal using H5 (from right to left).
rewrite the current goal using minus_SNo_0 (from left to right).
rewrite the current goal using div_SNo_0_num n LnS (from left to right).
We will prove 0 0.
Apply SNoLe_ref to the current goal.
Apply H3 to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m int.
Assume H.
Apply H to the current goal.
Let n be given.
Assume H.
Apply H to the current goal.
Assume Hn: n ω {0}.
Assume H4: sqrt_SNo_nonneg 2 = m :/: n.
An exact proof term for the current goal is LnQ m Hm n Hn H4.
End of Section form100_1