| Step | Hyp | Ref | Expression |
| 1 |
|
bitr3 |
(rev (a : rev l1) = rev (b : rev l2) <-> l1 |> a = l2 |> b) ->
(rev (a : rev l1) = rev (b : rev l2) <-> l1 = l2 /\ a = b) ->
(l1 |> a = l2 |> b <-> l1 = l2 /\ a = b) |
| 2 |
|
eqeq |
rev (a : rev l1) = l1 |> a -> rev (b : rev l2) = l2 |> b -> (rev (a : rev l1) = rev (b : rev l2) <-> l1 |> a = l2 |> b) |
| 3 |
|
eqtr |
rev (a : rev l1) = rev (rev l1) |> a -> rev (rev l1) |> a = l1 |> a -> rev (a : rev l1) = l1 |> a |
| 4 |
|
revS |
rev (a : rev l1) = rev (rev l1) |> a |
| 5 |
3, 4 |
ax_mp |
rev (rev l1) |> a = l1 |> a -> rev (a : rev l1) = l1 |> a |
| 6 |
|
snoceq1 |
rev (rev l1) = l1 -> rev (rev l1) |> a = l1 |> a |
| 7 |
|
revrev |
rev (rev l1) = l1 |
| 8 |
6, 7 |
ax_mp |
rev (rev l1) |> a = l1 |> a |
| 9 |
5, 8 |
ax_mp |
rev (a : rev l1) = l1 |> a |
| 10 |
2, 9 |
ax_mp |
rev (b : rev l2) = l2 |> b -> (rev (a : rev l1) = rev (b : rev l2) <-> l1 |> a = l2 |> b) |
| 11 |
|
eqtr |
rev (b : rev l2) = rev (rev l2) |> b -> rev (rev l2) |> b = l2 |> b -> rev (b : rev l2) = l2 |> b |
| 12 |
|
revS |
rev (b : rev l2) = rev (rev l2) |> b |
| 13 |
11, 12 |
ax_mp |
rev (rev l2) |> b = l2 |> b -> rev (b : rev l2) = l2 |> b |
| 14 |
|
snoceq1 |
rev (rev l2) = l2 -> rev (rev l2) |> b = l2 |> b |
| 15 |
|
revrev |
rev (rev l2) = l2 |
| 16 |
14, 15 |
ax_mp |
rev (rev l2) |> b = l2 |> b |
| 17 |
13, 16 |
ax_mp |
rev (b : rev l2) = l2 |> b |
| 18 |
10, 17 |
ax_mp |
rev (a : rev l1) = rev (b : rev l2) <-> l1 |> a = l2 |> b |
| 19 |
1, 18 |
ax_mp |
(rev (a : rev l1) = rev (b : rev l2) <-> l1 = l2 /\ a = b) -> (l1 |> a = l2 |> b <-> l1 = l2 /\ a = b) |
| 20 |
|
bitr |
(rev (a : rev l1) = rev (b : rev l2) <-> a : rev l1 = b : rev l2) ->
(a : rev l1 = b : rev l2 <-> l1 = l2 /\ a = b) ->
(rev (a : rev l1) = rev (b : rev l2) <-> l1 = l2 /\ a = b) |
| 21 |
|
revinj |
rev (a : rev l1) = rev (b : rev l2) <-> a : rev l1 = b : rev l2 |
| 22 |
20, 21 |
ax_mp |
(a : rev l1 = b : rev l2 <-> l1 = l2 /\ a = b) -> (rev (a : rev l1) = rev (b : rev l2) <-> l1 = l2 /\ a = b) |
| 23 |
|
bitr |
(a : rev l1 = b : rev l2 <-> a = b /\ rev l1 = rev l2) -> (a = b /\ rev l1 = rev l2 <-> l1 = l2 /\ a = b) -> (a : rev l1 = b : rev l2 <-> l1 = l2 /\ a = b) |
| 24 |
|
consinj |
a : rev l1 = b : rev l2 <-> a = b /\ rev l1 = rev l2 |
| 25 |
23, 24 |
ax_mp |
(a = b /\ rev l1 = rev l2 <-> l1 = l2 /\ a = b) -> (a : rev l1 = b : rev l2 <-> l1 = l2 /\ a = b) |
| 26 |
|
bitr |
(a = b /\ rev l1 = rev l2 <-> rev l1 = rev l2 /\ a = b) -> (rev l1 = rev l2 /\ a = b <-> l1 = l2 /\ a = b) -> (a = b /\ rev l1 = rev l2 <-> l1 = l2 /\ a = b) |
| 27 |
|
ancomb |
a = b /\ rev l1 = rev l2 <-> rev l1 = rev l2 /\ a = b |
| 28 |
26, 27 |
ax_mp |
(rev l1 = rev l2 /\ a = b <-> l1 = l2 /\ a = b) -> (a = b /\ rev l1 = rev l2 <-> l1 = l2 /\ a = b) |
| 29 |
|
revinj |
rev l1 = rev l2 <-> l1 = l2 |
| 30 |
29 |
aneq1i |
rev l1 = rev l2 /\ a = b <-> l1 = l2 /\ a = b |
| 31 |
28, 30 |
ax_mp |
a = b /\ rev l1 = rev l2 <-> l1 = l2 /\ a = b |
| 32 |
25, 31 |
ax_mp |
a : rev l1 = b : rev l2 <-> l1 = l2 /\ a = b |
| 33 |
22, 32 |
ax_mp |
rev (a : rev l1) = rev (b : rev l2) <-> l1 = l2 /\ a = b |
| 34 |
19, 33 |
ax_mp |
l1 |> a = l2 |> b <-> l1 = l2 /\ a = b |