Theorem listfnSS | index | src |

theorem listfnSS (a l n: nat): $ listfn (a : l) @ suc n = listfn l @ n $;
StepHypRefExpression
1 appeq2
suc n - 1 = n -> listfn l @ (suc n - 1) = listfn l @ n
2 sucsub1
suc n - 1 = n
3 1, 2 ax_mp
listfn l @ (suc n - 1) = listfn l @ n
4 ifneg
~suc n = 0 -> if (suc n = 0) a (listfn l @ (suc n - 1)) = listfn l @ (suc n - 1)
5 peano1
suc n != 0
6 5 conv ne
~suc n = 0
7 4, 6 ax_mp
if (suc n = 0) a (listfn l @ (suc n - 1)) = listfn l @ (suc n - 1)
8 ltsuc
n < len l <-> suc n < suc (len l)
9 listfnSval
suc n < suc (len l) -> listfn (a : l) @ suc n = if (suc n = 0) a (listfn l @ (suc n - 1))
10 8, 9 sylbi
n < len l -> listfn (a : l) @ suc n = if (suc n = 0) a (listfn l @ (suc n - 1))
11 7, 10 syl6eq
n < len l -> listfn (a : l) @ suc n = listfn l @ (suc n - 1)
12 3, 11 syl6eq
n < len l -> listfn (a : l) @ suc n = listfn l @ n
13 noteq
(suc n e. Dom (listfn (a : l)) <-> n < len l) -> (~suc n e. Dom (listfn (a : l)) <-> ~n < len l)
14 bitr
(suc n e. Dom (listfn (a : l)) <-> suc n e. upto (len (a : l))) -> (suc n e. upto (len (a : l)) <-> n < len l) -> (suc n e. Dom (listfn (a : l)) <-> n < len l)
15 eleq2
Dom (listfn (a : l)) == upto (len (a : l)) -> (suc n e. Dom (listfn (a : l)) <-> suc n e. upto (len (a : l)))
16 dmlistfn
Dom (listfn (a : l)) == upto (len (a : l))
17 15, 16 ax_mp
suc n e. Dom (listfn (a : l)) <-> suc n e. upto (len (a : l))
18 14, 17 ax_mp
(suc n e. upto (len (a : l)) <-> n < len l) -> (suc n e. Dom (listfn (a : l)) <-> n < len l)
19 bitr
(suc n e. upto (len (a : l)) <-> suc n < len (a : l)) -> (suc n < len (a : l) <-> n < len l) -> (suc n e. upto (len (a : l)) <-> n < len l)
20 elupto
suc n e. upto (len (a : l)) <-> suc n < len (a : l)
21 19, 20 ax_mp
(suc n < len (a : l) <-> n < len l) -> (suc n e. upto (len (a : l)) <-> n < len l)
22 bitr4
(suc n < len (a : l) <-> suc n < suc (len l)) -> (n < len l <-> suc n < suc (len l)) -> (suc n < len (a : l) <-> n < len l)
23 lteq2
len (a : l) = suc (len l) -> (suc n < len (a : l) <-> suc n < suc (len l))
24 lenS
len (a : l) = suc (len l)
25 23, 24 ax_mp
suc n < len (a : l) <-> suc n < suc (len l)
26 22, 25 ax_mp
(n < len l <-> suc n < suc (len l)) -> (suc n < len (a : l) <-> n < len l)
27 26, 8 ax_mp
suc n < len (a : l) <-> n < len l
28 21, 27 ax_mp
suc n e. upto (len (a : l)) <-> n < len l
29 18, 28 ax_mp
suc n e. Dom (listfn (a : l)) <-> n < len l
30 13, 29 ax_mp
~suc n e. Dom (listfn (a : l)) <-> ~n < len l
31 ndmapp
~suc n e. Dom (listfn (a : l)) -> listfn (a : l) @ suc n = 0
32 30, 31 sylbir
~n < len l -> listfn (a : l) @ suc n = 0
33 noteq
(n e. Dom (listfn l) <-> n < len l) -> (~n e. Dom (listfn l) <-> ~n < len l)
34 bitr
(n e. Dom (listfn l) <-> n e. upto (len l)) -> (n e. upto (len l) <-> n < len l) -> (n e. Dom (listfn l) <-> n < len l)
35 eleq2
Dom (listfn l) == upto (len l) -> (n e. Dom (listfn l) <-> n e. upto (len l))
36 dmlistfn
Dom (listfn l) == upto (len l)
37 35, 36 ax_mp
n e. Dom (listfn l) <-> n e. upto (len l)
38 34, 37 ax_mp
(n e. upto (len l) <-> n < len l) -> (n e. Dom (listfn l) <-> n < len l)
39 elupto
n e. upto (len l) <-> n < len l
40 38, 39 ax_mp
n e. Dom (listfn l) <-> n < len l
41 33, 40 ax_mp
~n e. Dom (listfn l) <-> ~n < len l
42 ndmapp
~n e. Dom (listfn l) -> listfn l @ n = 0
43 41, 42 sylbir
~n < len l -> listfn l @ n = 0
44 32, 43 eqtr4d
~n < len l -> listfn (a : l) @ suc n = listfn l @ n
45 12, 44 cases
listfn (a : l) @ suc n = listfn l @ n

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)