Metamath Proof Explorer


Theorem signsvtn0

Description: If the last letter is nonzero, then this is the zero-skipping sign. (Contributed by Thierry Arnoux, 8-Oct-2018) (Proof shortened by AV, 3-Nov-2022)

Ref Expression
Hypotheses signsv.p ˙=a101,b101ifb=0ab
signsv.w W=Basendx101+ndx˙
signsv.t T=fWordn0..^fWi=0nsgnfi
signsv.v V=fWordj1..^fifTfjTfj110
signsvtn0.1 N=F
Assertion signsvtn0 FWordFN10TFN1=sgnFN1

Proof

Step Hyp Ref Expression
1 signsv.p ˙=a101,b101ifb=0ab
2 signsv.w W=Basendx101+ndx˙
3 signsv.t T=fWordn0..^fWi=0nsgnfi
4 signsv.v V=fWordj1..^fifTfjTfj110
5 signsvtn0.1 N=F
6 eldifsn FWordFWordF
7 6 biimpi FWordFWordF
8 7 adantr FWordFN10FWordF
9 8 simpld FWordFN10FWord
10 9 adantr FWordFN10N=1FWord
11 wrdf FWordF:0..^F
12 10 11 syl FWordFN10N=1F:0..^F
13 lennncl FWordFF
14 8 13 syl FWordFN10F
15 14 adantr FWordFN10N=1F
16 lbfzo0 00..^FF
17 15 16 sylibr FWordFN10N=100..^F
18 12 17 ffvelcdmd FWordFN10N=1F0
19 1 2 3 4 signstf0 F0T⟨“F0”⟩=⟨“sgnF0”⟩
20 18 19 syl FWordFN10N=1T⟨“F0”⟩=⟨“sgnF0”⟩
21 simpr FWordFN10N=1N=1
22 5 21 eqtr3id FWordFN10N=1F=1
23 eqs1 FWordF=1F=⟨“F0”⟩
24 10 22 23 syl2anc FWordFN10N=1F=⟨“F0”⟩
25 24 fveq2d FWordFN10N=1TF=T⟨“F0”⟩
26 oveq1 N=1N1=11
27 1m1e0 11=0
28 26 27 eqtrdi N=1N1=0
29 28 fveq2d N=1FN1=F0
30 29 fveq2d N=1sgnFN1=sgnF0
31 30 s1eqd N=1⟨“sgnFN1”⟩=⟨“sgnF0”⟩
32 21 31 syl FWordFN10N=1⟨“sgnFN1”⟩=⟨“sgnF0”⟩
33 20 25 32 3eqtr4d FWordFN10N=1TF=⟨“sgnFN1”⟩
34 21 28 syl FWordFN10N=1N1=0
35 33 34 fveq12d FWordFN10N=1TFN1=⟨“sgnFN1”⟩0
36 9 11 syl FWordFN10F:0..^F
37 5 oveq1i N1=F1
38 fzo0end FF10..^F
39 8 13 38 3syl FWordFN10F10..^F
40 37 39 eqeltrid FWordFN10N10..^F
41 36 40 ffvelcdmd FWordFN10FN1
42 41 rexrd FWordFN10FN1*
43 sgncl FN1*sgnFN1101
44 42 43 syl FWordFN10sgnFN1101
45 44 adantr FWordFN10N=1sgnFN1101
46 s1fv sgnFN1101⟨“sgnFN1”⟩0=sgnFN1
47 45 46 syl FWordFN10N=1⟨“sgnFN1”⟩0=sgnFN1
48 35 47 eqtrd FWordFN10N=1TFN1=sgnFN1
49 fzossfz 0..^F0F
50 49 39 sselid FWordFN10F10F
51 pfxres FWordF10FFprefixF1=F0..^F1
52 9 50 51 syl2anc FWordFN10FprefixF1=F0..^F1
53 52 oveq1d FWordFN10FprefixF1++⟨“lastSF”⟩=F0..^F1++⟨“lastSF”⟩
54 pfxlswccat FWordFFprefixF1++⟨“lastSF”⟩=F
55 54 eqcomd FWordFF=FprefixF1++⟨“lastSF”⟩
56 8 55 syl FWordFN10F=FprefixF1++⟨“lastSF”⟩
57 37 oveq2i 0..^N1=0..^F1
58 57 a1i FWordFN100..^N1=0..^F1
59 58 reseq2d FWordFN10F0..^N1=F0..^F1
60 37 a1i FWordFN10N1=F1
61 60 fveq2d FWordFN10FN1=FF1
62 lsw FWordlastSF=FF1
63 62 adantr FWordFN10lastSF=FF1
64 61 63 eqtr4d FWordFN10FN1=lastSF
65 64 s1eqd FWordFN10⟨“FN1”⟩=⟨“lastSF”⟩
66 59 65 oveq12d FWordFN10F0..^N1++⟨“FN1”⟩=F0..^F1++⟨“lastSF”⟩
67 53 56 66 3eqtr4d FWordFN10F=F0..^N1++⟨“FN1”⟩
68 67 fveq2d FWordFN10TF=TF0..^N1++⟨“FN1”⟩
69 ffn F:0..^FFFn0..^F
70 9 11 69 3syl FWordFN10FFn0..^F
71 5 a1i FWordFN10N=F
72 71 oveq2d FWordFN100..^N=0..^F
73 72 fneq2d FWordFN10FFn0..^NFFn0..^F
74 70 73 mpbird FWordFN10FFn0..^N
75 5 14 eqeltrid FWordFN10N
76 75 nnnn0d FWordFN10N0
77 nn0z N0N
78 fzossrbm1 N0..^N10..^N
79 76 77 78 3syl FWordFN100..^N10..^N
80 fnssres FFn0..^N0..^N10..^NF0..^N1Fn0..^N1
81 74 79 80 syl2anc FWordFN10F0..^N1Fn0..^N1
82 hashfn F0..^N1Fn0..^N1F0..^N1=0..^N1
83 81 82 syl FWordFN10F0..^N1=0..^N1
84 nnm1nn0 NN10
85 hashfzo0 N100..^N1=N1
86 75 84 85 3syl FWordFN100..^N1=N1
87 83 86 eqtrd FWordFN10F0..^N1=N1
88 87 eqcomd FWordFN10N1=F0..^N1
89 68 88 fveq12d FWordFN10TFN1=TF0..^N1++⟨“FN1”⟩F0..^N1
90 89 adantr FWordFN10N1TFN1=TF0..^N1++⟨“FN1”⟩F0..^N1
91 52 59 eqtr4d FWordFN10FprefixF1=F0..^N1
92 pfxcl FWordFprefixF1Word
93 9 92 syl FWordFN10FprefixF1Word
94 91 93 eqeltrrd FWordFN10F0..^N1Word
95 94 adantr FWordFN10N1F0..^N1Word
96 87 adantr FWordFN10N1F0..^N1=N1
97 75 adantr FWordFN10N1N
98 97 nncnd FWordFN10N1N
99 1cnd FWordFN10N11
100 simpr FWordFN10N1N1
101 98 99 100 subne0d FWordFN10N1N10
102 96 101 eqnetrd FWordFN10N1F0..^N10
103 fveq2 F0..^N1=F0..^N1=
104 hash0 =0
105 103 104 eqtrdi F0..^N1=F0..^N1=0
106 105 necon3i F0..^N10F0..^N1
107 102 106 syl FWordFN10N1F0..^N1
108 95 107 jca FWordFN10N1F0..^N1WordF0..^N1
109 eldifsn F0..^N1WordF0..^N1WordF0..^N1
110 108 109 sylibr FWordFN10N1F0..^N1Word
111 41 adantr FWordFN10N1FN1
112 1 2 3 4 signstfvn F0..^N1WordFN1TF0..^N1++⟨“FN1”⟩F0..^N1=TF0..^N1F0..^N11˙sgnFN1
113 110 111 112 syl2anc FWordFN10N1TF0..^N1++⟨“FN1”⟩F0..^N1=TF0..^N1F0..^N11˙sgnFN1
114 lennncl F0..^N1WordF0..^N1F0..^N1
115 fzo0end F0..^N1F0..^N110..^F0..^N1
116 108 114 115 3syl FWordFN10N1F0..^N110..^F0..^N1
117 1 2 3 4 signstcl F0..^N1WordF0..^N110..^F0..^N1TF0..^N1F0..^N11101
118 95 116 117 syl2anc FWordFN10N1TF0..^N1F0..^N11101
119 44 adantr FWordFN10N1sgnFN1101
120 simpr FWordFN10FN10
121 sgn0bi FN1*sgnFN1=0FN1=0
122 121 necon3bid FN1*sgnFN10FN10
123 122 biimpar FN1*FN10sgnFN10
124 42 120 123 syl2anc FWordFN10sgnFN10
125 124 adantr FWordFN10N1sgnFN10
126 1 2 signswlid TF0..^N1F0..^N11101sgnFN1101sgnFN10TF0..^N1F0..^N11˙sgnFN1=sgnFN1
127 118 119 125 126 syl21anc FWordFN10N1TF0..^N1F0..^N11˙sgnFN1=sgnFN1
128 90 113 127 3eqtrd FWordFN10N1TFN1=sgnFN1
129 48 128 pm2.61dane FWordFN10TFN1=sgnFN1