Theorem preqadd | index | src |

theorem preqadd (a b: nat): $ a, b = (a + b, 0) + b $;
StepHypRefExpression
1 eqcom
(a + b, 0) + b = a, b -> a, b = (a + b, 0) + b
2 addeq1
a + b, 0 = (a + b) * suc (a + b) // 2 -> (a + b, 0) + b = (a + b) * suc (a + b) // 2 + b
3 2 conv pr
a + b, 0 = (a + b) * suc (a + b) // 2 -> (a + b, 0) + b = a, b
4 eqtr
a + b, 0 = (a + b + 0) * suc (a + b + 0) // 2 -> (a + b + 0) * suc (a + b + 0) // 2 = (a + b) * suc (a + b) // 2 -> a + b, 0 = (a + b) * suc (a + b) // 2
5 add0
(a + b + 0) * suc (a + b + 0) // 2 + 0 = (a + b + 0) * suc (a + b + 0) // 2
6 5 conv pr
a + b, 0 = (a + b + 0) * suc (a + b + 0) // 2
7 4, 6 ax_mp
(a + b + 0) * suc (a + b + 0) // 2 = (a + b) * suc (a + b) // 2 -> a + b, 0 = (a + b) * suc (a + b) // 2
8 diveq1
(a + b + 0) * suc (a + b + 0) = (a + b) * suc (a + b) -> (a + b + 0) * suc (a + b + 0) // 2 = (a + b) * suc (a + b) // 2
9 muleq
a + b + 0 = a + b -> suc (a + b + 0) = suc (a + b) -> (a + b + 0) * suc (a + b + 0) = (a + b) * suc (a + b)
10 add0
a + b + 0 = a + b
11 9, 10 ax_mp
suc (a + b + 0) = suc (a + b) -> (a + b + 0) * suc (a + b + 0) = (a + b) * suc (a + b)
12 suceq
a + b + 0 = a + b -> suc (a + b + 0) = suc (a + b)
13 12, 10 ax_mp
suc (a + b + 0) = suc (a + b)
14 11, 13 ax_mp
(a + b + 0) * suc (a + b + 0) = (a + b) * suc (a + b)
15 8, 14 ax_mp
(a + b + 0) * suc (a + b + 0) // 2 = (a + b) * suc (a + b) // 2
16 7, 15 ax_mp
a + b, 0 = (a + b) * suc (a + b) // 2
17 3, 16 ax_mp
(a + b, 0) + b = a, b
18 1, 17 ax_mp
a, b = (a + b, 0) + b

Axiom use

axs_prop_calc (ax_1, ax_2, ax_3, ax_mp, itru), axs_pred_calc (ax_gen, ax_4, ax_5, ax_6, ax_7, ax_10, ax_11, ax_12), axs_set (elab, ax_8), axs_the (theid, the0), axs_peano (peano2, addeq, muleq, add0)