Theorem appendcan2 | index | src |

theorem appendcan2 (a b c: nat): $ a ++ c = b ++ c <-> a = b $;
StepHypRefExpression
1 bitr3
(rev (a ++ c) = rev (b ++ c) <-> a ++ c = b ++ c) -> (rev (a ++ c) = rev (b ++ c) <-> a = b) -> (a ++ c = b ++ c <-> a = b)
2 revinj
rev (a ++ c) = rev (b ++ c) <-> a ++ c = b ++ c
3 1, 2 ax_mp
(rev (a ++ c) = rev (b ++ c) <-> a = b) -> (a ++ c = b ++ c <-> a = b)
4 bitr
(rev (a ++ c) = rev (b ++ c) <-> rev c ++ rev a = rev c ++ rev b) -> (rev c ++ rev a = rev c ++ rev b <-> a = b) -> (rev (a ++ c) = rev (b ++ c) <-> a = b)
5 eqeq
rev (a ++ c) = rev c ++ rev a -> rev (b ++ c) = rev c ++ rev b -> (rev (a ++ c) = rev (b ++ c) <-> rev c ++ rev a = rev c ++ rev b)
6 revappend
rev (a ++ c) = rev c ++ rev a
7 5, 6 ax_mp
rev (b ++ c) = rev c ++ rev b -> (rev (a ++ c) = rev (b ++ c) <-> rev c ++ rev a = rev c ++ rev b)
8 revappend
rev (b ++ c) = rev c ++ rev b
9 7, 8 ax_mp
rev (a ++ c) = rev (b ++ c) <-> rev c ++ rev a = rev c ++ rev b
10 4, 9 ax_mp
(rev c ++ rev a = rev c ++ rev b <-> a = b) -> (rev (a ++ c) = rev (b ++ c) <-> a = b)
11 bitr
(rev c ++ rev a = rev c ++ rev b <-> rev a = rev b) -> (rev a = rev b <-> a = b) -> (rev c ++ rev a = rev c ++ rev b <-> a = b)
12 appendcan1
rev c ++ rev a = rev c ++ rev b <-> rev a = rev b
13 11, 12 ax_mp
(rev a = rev b <-> a = b) -> (rev c ++ rev a = rev c ++ rev b <-> a = b)
14 revinj
rev a = rev b <-> a = b
15 13, 14 ax_mp
rev c ++ rev a = rev c ++ rev b <-> a = b
16 10, 15 ax_mp
rev (a ++ c) = rev (b ++ c) <-> a = b
17 3, 16 ax_mp
a ++ c = b ++ c <-> a = 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 (peano1, peano2, peano5, addeq, muleq, add0, addS, mul0, mulS)