Metamath Proof Explorer


Theorem halfcut

Description: Relate the cut of twice of two numbers to the cut of the numbers. Lemma 4.2 of Gonshor p. 28. (Contributed by Scott Fenton, 7-Aug-2025) Avoid the axiom of infinity. (Proof modified by Scott Fenton, 6-Sep-2025.)

Ref Expression
Hypotheses halfcut.1 ⊢ φ → A ∈ No
halfcut.2 ⊢ φ → B ∈ No
halfcut.3 ⊢ φ → A < s B
halfcut.4 No typesetting found for |- ( ph -> ( { ( 2s x.s A ) } |s { ( 2s x.s B ) } ) = ( A +s B ) ) with typecode |-
halfcut.5 ⊢ C = A | s B
Assertion halfcut Could not format assertion : No typesetting found for |- ( ph -> C = ( ( A +s B ) /su 2s ) ) with typecode |-

Proof

Step Hyp Ref Expression
1 halfcut.1 ⊢ φ → A ∈ No
2 halfcut.2 ⊢ φ → B ∈ No
3 halfcut.3 ⊢ φ → A < s B
4 halfcut.4 Could not format ( ph -> ( { ( 2s x.s A ) } |s { ( 2s x.s B ) } ) = ( A +s B ) ) : No typesetting found for |- ( ph -> ( { ( 2s x.s A ) } |s { ( 2s x.s B ) } ) = ( A +s B ) ) with typecode |-
5 halfcut.5 ⊢ C = A | s B
6 1 2 3 sltssn ⊢ φ → A ≪ s B
7 6 cutscld ⊢ φ → A | s B ∈ No
8 5 7 eqeltrid ⊢ φ → C ∈ No
9 no2times Could not format ( C e. No -> ( 2s x.s C ) = ( C +s C ) ) : No typesetting found for |- ( C e. No -> ( 2s x.s C ) = ( C +s C ) ) with typecode |-
10 8 9 syl Could not format ( ph -> ( 2s x.s C ) = ( C +s C ) ) : No typesetting found for |- ( ph -> ( 2s x.s C ) = ( C +s C ) ) with typecode |-
11 5 a1i ⊢ φ → C = A | s B
12 6 6 11 11 addsunif ⊢ φ → C + s C = x | ∃ y ∈ A x = y + s C ∪ x | ∃ y ∈ A x = C + s y | s x | ∃ y ∈ B x = y + s C ∪ x | ∃ y ∈ B x = C + s y
13 oveq1 ⊢ y = A → y + s C = A + s C
14 13 eqeq2d ⊢ y = A → x = y + s C ↔ x = A + s C
15 14 rexsng ⊢ A ∈ No → ∃ y ∈ A x = y + s C ↔ x = A + s C
16 1 15 syl ⊢ φ → ∃ y ∈ A x = y + s C ↔ x = A + s C
17 16 abbidv ⊢ φ → x | ∃ y ∈ A x = y + s C = x | x = A + s C
18 oveq2 ⊢ y = A → C + s y = C + s A
19 18 eqeq2d ⊢ y = A → x = C + s y ↔ x = C + s A
20 19 rexsng ⊢ A ∈ No → ∃ y ∈ A x = C + s y ↔ x = C + s A
21 1 20 syl ⊢ φ → ∃ y ∈ A x = C + s y ↔ x = C + s A
22 8 1 addscomd ⊢ φ → C + s A = A + s C
23 22 eqeq2d ⊢ φ → x = C + s A ↔ x = A + s C
24 21 23 bitrd ⊢ φ → ∃ y ∈ A x = C + s y ↔ x = A + s C
25 24 abbidv ⊢ φ → x | ∃ y ∈ A x = C + s y = x | x = A + s C
26 17 25 uneq12d ⊢ φ → x | ∃ y ∈ A x = y + s C ∪ x | ∃ y ∈ A x = C + s y = x | x = A + s C ∪ x | x = A + s C
27 df-sn ⊢ A + s C = x | x = A + s C
28 unidm ⊢ x | x = A + s C ∪ x | x = A + s C = x | x = A + s C
29 27 28 eqtr4i ⊢ A + s C = x | x = A + s C ∪ x | x = A + s C
30 26 29 eqtr4di ⊢ φ → x | ∃ y ∈ A x = y + s C ∪ x | ∃ y ∈ A x = C + s y = A + s C
31 oveq1 ⊢ y = B → y + s C = B + s C
32 31 eqeq2d ⊢ y = B → x = y + s C ↔ x = B + s C
33 32 rexsng ⊢ B ∈ No → ∃ y ∈ B x = y + s C ↔ x = B + s C
34 2 33 syl ⊢ φ → ∃ y ∈ B x = y + s C ↔ x = B + s C
35 34 abbidv ⊢ φ → x | ∃ y ∈ B x = y + s C = x | x = B + s C
36 oveq2 ⊢ y = B → C + s y = C + s B
37 36 eqeq2d ⊢ y = B → x = C + s y ↔ x = C + s B
38 37 rexsng ⊢ B ∈ No → ∃ y ∈ B x = C + s y ↔ x = C + s B
39 2 38 syl ⊢ φ → ∃ y ∈ B x = C + s y ↔ x = C + s B
40 8 2 addscomd ⊢ φ → C + s B = B + s C
41 40 eqeq2d ⊢ φ → x = C + s B ↔ x = B + s C
42 39 41 bitrd ⊢ φ → ∃ y ∈ B x = C + s y ↔ x = B + s C
43 42 abbidv ⊢ φ → x | ∃ y ∈ B x = C + s y = x | x = B + s C
44 35 43 uneq12d ⊢ φ → x | ∃ y ∈ B x = y + s C ∪ x | ∃ y ∈ B x = C + s y = x | x = B + s C ∪ x | x = B + s C
45 df-sn ⊢ B + s C = x | x = B + s C
46 unidm ⊢ x | x = B + s C ∪ x | x = B + s C = x | x = B + s C
47 45 46 eqtr4i ⊢ B + s C = x | x = B + s C ∪ x | x = B + s C
48 44 47 eqtr4di ⊢ φ → x | ∃ y ∈ B x = y + s C ∪ x | ∃ y ∈ B x = C + s y = B + s C
49 30 48 oveq12d ⊢ φ → x | ∃ y ∈ A x = y + s C ∪ x | ∃ y ∈ A x = C + s y | s x | ∃ y ∈ B x = y + s C ∪ x | ∃ y ∈ B x = C + s y = A + s C | s B + s C
50 2no Could not format 2s e. No : No typesetting found for |- 2s e. No with typecode |-
51 50 a1i Could not format ( ph -> 2s e. No ) : No typesetting found for |- ( ph -> 2s e. No ) with typecode |-
52 51 1 mulscld Could not format ( ph -> ( 2s x.s A ) e. No ) : No typesetting found for |- ( ph -> ( 2s x.s A ) e. No ) with typecode |-
53 51 2 mulscld Could not format ( ph -> ( 2s x.s B ) e. No ) : No typesetting found for |- ( ph -> ( 2s x.s B ) e. No ) with typecode |-
54 2nns Could not format 2s e. NN_s : No typesetting found for |- 2s e. NN_s with typecode |-
55 nnsgt0 Could not format ( 2s e. NN_s -> 0s 0s
56 54 55 mp1i Could not format ( ph -> 0s 0s
57 1 2 51 56 ltmuls2d Could not format ( ph -> ( A ( 2s x.s A ) ( A ( 2s x.s A )
58 3 57 mpbid Could not format ( ph -> ( 2s x.s A ) ( 2s x.s A )
59 52 53 58 sltssn Could not format ( ph -> { ( 2s x.s A ) } < { ( 2s x.s A ) } <
60 no2times Could not format ( A e. No -> ( 2s x.s A ) = ( A +s A ) ) : No typesetting found for |- ( A e. No -> ( 2s x.s A ) = ( A +s A ) ) with typecode |-
61 1 60 syl Could not format ( ph -> ( 2s x.s A ) = ( A +s A ) ) : No typesetting found for |- ( ph -> ( 2s x.s A ) = ( A +s A ) ) with typecode |-
62 lesid ⊢ A ∈ No → A ≤ s A
63 1 62 syl ⊢ φ → A ≤ s A
64 breq2 ⊢ x = A → A ≤ s x ↔ A ≤ s A
65 64 rexsng ⊢ A ∈ No → ∃ x ∈ A A ≤ s x ↔ A ≤ s A
66 1 65 syl ⊢ φ → ∃ x ∈ A A ≤ s x ↔ A ≤ s A
67 63 66 mpbird ⊢ φ → ∃ x ∈ A A ≤ s x
68 67 orcd ⊢ φ → ∃ x ∈ A A ≤ s x ∨ ∃ y ∈ R ⁡ A y ≤ s C
69 lltr ⊢ L ⁡ A ≪ s R ⁡ A
70 69 a1i ⊢ φ → L ⁡ A ≪ s R ⁡ A
71 lrcut ⊢ A ∈ No → L ⁡ A | s R ⁡ A = A
72 1 71 syl ⊢ φ → L ⁡ A | s R ⁡ A = A
73 72 eqcomd ⊢ φ → A = L ⁡ A | s R ⁡ A
74 70 6 73 11 ltsrecd ⊢ φ → A < s C ↔ ∃ x ∈ A A ≤ s x ∨ ∃ y ∈ R ⁡ A y ≤ s C
75 68 74 mpbird ⊢ φ → A < s C
76 1 8 75 ltlesd ⊢ φ → A ≤ s C
77 1 8 1 leadds2d ⊢ φ → A ≤ s C ↔ A + s A ≤ s A + s C
78 76 77 mpbid ⊢ φ → A + s A ≤ s A + s C
79 61 78 eqbrtrd Could not format ( ph -> ( 2s x.s A ) <_s ( A +s C ) ) : No typesetting found for |- ( ph -> ( 2s x.s A ) <_s ( A +s C ) ) with typecode |-
80 ovex Could not format ( 2s x.s A ) e. _V : No typesetting found for |- ( 2s x.s A ) e. _V with typecode |-
81 breq1 Could not format ( x = ( 2s x.s A ) -> ( x <_s y <-> ( 2s x.s A ) <_s y ) ) : No typesetting found for |- ( x = ( 2s x.s A ) -> ( x <_s y <-> ( 2s x.s A ) <_s y ) ) with typecode |-
82 81 rexbidv Could not format ( x = ( 2s x.s A ) -> ( E. y e. { ( A +s C ) } x <_s y <-> E. y e. { ( A +s C ) } ( 2s x.s A ) <_s y ) ) : No typesetting found for |- ( x = ( 2s x.s A ) -> ( E. y e. { ( A +s C ) } x <_s y <-> E. y e. { ( A +s C ) } ( 2s x.s A ) <_s y ) ) with typecode |-
83 80 82 ralsn Could not format ( A. x e. { ( 2s x.s A ) } E. y e. { ( A +s C ) } x <_s y <-> E. y e. { ( A +s C ) } ( 2s x.s A ) <_s y ) : No typesetting found for |- ( A. x e. { ( 2s x.s A ) } E. y e. { ( A +s C ) } x <_s y <-> E. y e. { ( A +s C ) } ( 2s x.s A ) <_s y ) with typecode |-
84 ovex ⊢ A + s C ∈ V
85 breq2 Could not format ( y = ( A +s C ) -> ( ( 2s x.s A ) <_s y <-> ( 2s x.s A ) <_s ( A +s C ) ) ) : No typesetting found for |- ( y = ( A +s C ) -> ( ( 2s x.s A ) <_s y <-> ( 2s x.s A ) <_s ( A +s C ) ) ) with typecode |-
86 84 85 rexsn Could not format ( E. y e. { ( A +s C ) } ( 2s x.s A ) <_s y <-> ( 2s x.s A ) <_s ( A +s C ) ) : No typesetting found for |- ( E. y e. { ( A +s C ) } ( 2s x.s A ) <_s y <-> ( 2s x.s A ) <_s ( A +s C ) ) with typecode |-
87 83 86 bitri Could not format ( A. x e. { ( 2s x.s A ) } E. y e. { ( A +s C ) } x <_s y <-> ( 2s x.s A ) <_s ( A +s C ) ) : No typesetting found for |- ( A. x e. { ( 2s x.s A ) } E. y e. { ( A +s C ) } x <_s y <-> ( 2s x.s A ) <_s ( A +s C ) ) with typecode |-
88 79 87 sylibr Could not format ( ph -> A. x e. { ( 2s x.s A ) } E. y e. { ( A +s C ) } x <_s y ) : No typesetting found for |- ( ph -> A. x e. { ( 2s x.s A ) } E. y e. { ( A +s C ) } x <_s y ) with typecode |-
89 lesid ⊢ B ∈ No → B ≤ s B
90 2 89 syl ⊢ φ → B ≤ s B
91 breq1 ⊢ y = B → y ≤ s B ↔ B ≤ s B
92 91 rexsng ⊢ B ∈ No → ∃ y ∈ B y ≤ s B ↔ B ≤ s B
93 2 92 syl ⊢ φ → ∃ y ∈ B y ≤ s B ↔ B ≤ s B
94 90 93 mpbird ⊢ φ → ∃ y ∈ B y ≤ s B
95 94 olcd ⊢ φ → ∃ x ∈ L ⁡ B C ≤ s x ∨ ∃ y ∈ B y ≤ s B
96 lltr ⊢ L ⁡ B ≪ s R ⁡ B
97 96 a1i ⊢ φ → L ⁡ B ≪ s R ⁡ B
98 lrcut ⊢ B ∈ No → L ⁡ B | s R ⁡ B = B
99 2 98 syl ⊢ φ → L ⁡ B | s R ⁡ B = B
100 99 eqcomd ⊢ φ → B = L ⁡ B | s R ⁡ B
101 6 97 11 100 ltsrecd ⊢ φ → C < s B ↔ ∃ x ∈ L ⁡ B C ≤ s x ∨ ∃ y ∈ B y ≤ s B
102 95 101 mpbird ⊢ φ → C < s B
103 8 2 102 ltlesd ⊢ φ → C ≤ s B
104 8 2 2 leadds2d ⊢ φ → C ≤ s B ↔ B + s C ≤ s B + s B
105 103 104 mpbid ⊢ φ → B + s C ≤ s B + s B
106 no2times Could not format ( B e. No -> ( 2s x.s B ) = ( B +s B ) ) : No typesetting found for |- ( B e. No -> ( 2s x.s B ) = ( B +s B ) ) with typecode |-
107 2 106 syl Could not format ( ph -> ( 2s x.s B ) = ( B +s B ) ) : No typesetting found for |- ( ph -> ( 2s x.s B ) = ( B +s B ) ) with typecode |-
108 105 107 breqtrrd Could not format ( ph -> ( B +s C ) <_s ( 2s x.s B ) ) : No typesetting found for |- ( ph -> ( B +s C ) <_s ( 2s x.s B ) ) with typecode |-
109 ovex Could not format ( 2s x.s B ) e. _V : No typesetting found for |- ( 2s x.s B ) e. _V with typecode |-
110 breq2 Could not format ( x = ( 2s x.s B ) -> ( y <_s x <-> y <_s ( 2s x.s B ) ) ) : No typesetting found for |- ( x = ( 2s x.s B ) -> ( y <_s x <-> y <_s ( 2s x.s B ) ) ) with typecode |-
111 110 rexbidv Could not format ( x = ( 2s x.s B ) -> ( E. y e. { ( B +s C ) } y <_s x <-> E. y e. { ( B +s C ) } y <_s ( 2s x.s B ) ) ) : No typesetting found for |- ( x = ( 2s x.s B ) -> ( E. y e. { ( B +s C ) } y <_s x <-> E. y e. { ( B +s C ) } y <_s ( 2s x.s B ) ) ) with typecode |-
112 109 111 ralsn Could not format ( A. x e. { ( 2s x.s B ) } E. y e. { ( B +s C ) } y <_s x <-> E. y e. { ( B +s C ) } y <_s ( 2s x.s B ) ) : No typesetting found for |- ( A. x e. { ( 2s x.s B ) } E. y e. { ( B +s C ) } y <_s x <-> E. y e. { ( B +s C ) } y <_s ( 2s x.s B ) ) with typecode |-
113 ovex ⊢ B + s C ∈ V
114 breq1 Could not format ( y = ( B +s C ) -> ( y <_s ( 2s x.s B ) <-> ( B +s C ) <_s ( 2s x.s B ) ) ) : No typesetting found for |- ( y = ( B +s C ) -> ( y <_s ( 2s x.s B ) <-> ( B +s C ) <_s ( 2s x.s B ) ) ) with typecode |-
115 113 114 rexsn Could not format ( E. y e. { ( B +s C ) } y <_s ( 2s x.s B ) <-> ( B +s C ) <_s ( 2s x.s B ) ) : No typesetting found for |- ( E. y e. { ( B +s C ) } y <_s ( 2s x.s B ) <-> ( B +s C ) <_s ( 2s x.s B ) ) with typecode |-
116 112 115 bitri Could not format ( A. x e. { ( 2s x.s B ) } E. y e. { ( B +s C ) } y <_s x <-> ( B +s C ) <_s ( 2s x.s B ) ) : No typesetting found for |- ( A. x e. { ( 2s x.s B ) } E. y e. { ( B +s C ) } y <_s x <-> ( B +s C ) <_s ( 2s x.s B ) ) with typecode |-
117 108 116 sylibr Could not format ( ph -> A. x e. { ( 2s x.s B ) } E. y e. { ( B +s C ) } y <_s x ) : No typesetting found for |- ( ph -> A. x e. { ( 2s x.s B ) } E. y e. { ( B +s C ) } y <_s x ) with typecode |-
118 1 8 addscld ⊢ φ → A + s C ∈ No
119 1 2 addscld ⊢ φ → A + s B ∈ No
120 8 2 1 ltadds2d ⊢ φ → C < s B ↔ A + s C < s A + s B
121 102 120 mpbid ⊢ φ → A + s C < s A + s B
122 118 119 121 sltssn ⊢ φ → A + s C ≪ s A + s B
123 4 sneqd Could not format ( ph -> { ( { ( 2s x.s A ) } |s { ( 2s x.s B ) } ) } = { ( A +s B ) } ) : No typesetting found for |- ( ph -> { ( { ( 2s x.s A ) } |s { ( 2s x.s B ) } ) } = { ( A +s B ) } ) with typecode |-
124 122 123 breqtrrd Could not format ( ph -> { ( A +s C ) } < { ( A +s C ) } <
125 2 8 addscld ⊢ φ → B + s C ∈ No
126 2 1 addscomd ⊢ φ → B + s A = A + s B
127 1 8 2 ltadds2d ⊢ φ → A < s C ↔ B + s A < s B + s C
128 75 127 mpbid ⊢ φ → B + s A < s B + s C
129 126 128 eqbrtrrd ⊢ φ → A + s B < s B + s C
130 119 125 129 sltssn ⊢ φ → A + s B ≪ s B + s C
131 123 130 eqbrtrd Could not format ( ph -> { ( { ( 2s x.s A ) } |s { ( 2s x.s B ) } ) } < { ( { ( 2s x.s A ) } |s { ( 2s x.s B ) } ) } <
132 59 88 117 124 131 cofcut1d Could not format ( ph -> ( { ( 2s x.s A ) } |s { ( 2s x.s B ) } ) = ( { ( A +s C ) } |s { ( B +s C ) } ) ) : No typesetting found for |- ( ph -> ( { ( 2s x.s A ) } |s { ( 2s x.s B ) } ) = ( { ( A +s C ) } |s { ( B +s C ) } ) ) with typecode |-
133 49 132 4 3eqtr2d ⊢ φ → x | ∃ y ∈ A x = y + s C ∪ x | ∃ y ∈ A x = C + s y | s x | ∃ y ∈ B x = y + s C ∪ x | ∃ y ∈ B x = C + s y = A + s B
134 12 133 eqtrd ⊢ φ → C + s C = A + s B
135 10 134 eqtrd Could not format ( ph -> ( 2s x.s C ) = ( A +s B ) ) : No typesetting found for |- ( ph -> ( 2s x.s C ) = ( A +s B ) ) with typecode |-
136 2ne0s Could not format 2s =/= 0s : No typesetting found for |- 2s =/= 0s with typecode |-
137 136 a1i Could not format ( ph -> 2s =/= 0s ) : No typesetting found for |- ( ph -> 2s =/= 0s ) with typecode |-
138 0no ⊢ 0 s ∈ No
139 138 a1i ⊢ ⊤ → 0 s ∈ No
140 1no ⊢ 1 s ∈ No
141 140 a1i ⊢ ⊤ → 1 s ∈ No
142 0lt1s ⊢ 0 s < s 1 s
143 142 a1i ⊢ ⊤ → 0 s < s 1 s
144 139 141 143 sltssn ⊢ ⊤ → 0 s ≪ s 1 s
145 144 cutscld ⊢ ⊤ → 0 s | s 1 s ∈ No
146 145 mptru ⊢ 0 s | s 1 s ∈ No
147 twocut Could not format ( 2s x.s ( { 0s } |s { 1s } ) ) = 1s : No typesetting found for |- ( 2s x.s ( { 0s } |s { 1s } ) ) = 1s with typecode |-
148 oveq2 Could not format ( x = ( { 0s } |s { 1s } ) -> ( 2s x.s x ) = ( 2s x.s ( { 0s } |s { 1s } ) ) ) : No typesetting found for |- ( x = ( { 0s } |s { 1s } ) -> ( 2s x.s x ) = ( 2s x.s ( { 0s } |s { 1s } ) ) ) with typecode |-
149 148 eqeq1d Could not format ( x = ( { 0s } |s { 1s } ) -> ( ( 2s x.s x ) = 1s <-> ( 2s x.s ( { 0s } |s { 1s } ) ) = 1s ) ) : No typesetting found for |- ( x = ( { 0s } |s { 1s } ) -> ( ( 2s x.s x ) = 1s <-> ( 2s x.s ( { 0s } |s { 1s } ) ) = 1s ) ) with typecode |-
150 149 rspcev Could not format ( ( ( { 0s } |s { 1s } ) e. No /\ ( 2s x.s ( { 0s } |s { 1s } ) ) = 1s ) -> E. x e. No ( 2s x.s x ) = 1s ) : No typesetting found for |- ( ( ( { 0s } |s { 1s } ) e. No /\ ( 2s x.s ( { 0s } |s { 1s } ) ) = 1s ) -> E. x e. No ( 2s x.s x ) = 1s ) with typecode |-
151 146 147 150 mp2an Could not format E. x e. No ( 2s x.s x ) = 1s : No typesetting found for |- E. x e. No ( 2s x.s x ) = 1s with typecode |-
152 151 a1i Could not format ( ph -> E. x e. No ( 2s x.s x ) = 1s ) : No typesetting found for |- ( ph -> E. x e. No ( 2s x.s x ) = 1s ) with typecode |-
153 119 8 51 137 152 divmulswd Could not format ( ph -> ( ( ( A +s B ) /su 2s ) = C <-> ( 2s x.s C ) = ( A +s B ) ) ) : No typesetting found for |- ( ph -> ( ( ( A +s B ) /su 2s ) = C <-> ( 2s x.s C ) = ( A +s B ) ) ) with typecode |-
154 135 153 mpbird Could not format ( ph -> ( ( A +s B ) /su 2s ) = C ) : No typesetting found for |- ( ph -> ( ( A +s B ) /su 2s ) = C ) with typecode |-
155 154 eqcomd Could not format ( ph -> C = ( ( A +s B ) /su 2s ) ) : No typesetting found for |- ( ph -> C = ( ( A +s B ) /su 2s ) ) with typecode |-