At:
array-count-update
2
1.
T: Type
2.
P: T

3.
a: array(T)
4.
i:
|a|
5.
v: T
if P(v)
1 else 0 fi+sum(if x=
i
0 ;P(a[i:=v][x])
1 else 0 fi | x < |a|) = if P(a[i])
1 else 0 fi+sum(if x=
i
0 ;P(a[x])
1 else 0 fi | x < |a|)+if P(v)
if P(a[i])
0 else 1 fi ;P(a[i])
-1 else 0 fi
By:
AssertBY (sum(if x=
i
0 ;P(a[i:=v][x])
1 else 0 fi | x < |a|) = sum(if x=
i
0 ;P(a[x])
1 else 0 fi | x < |a|))
((BackThru
Thm*
n:
, f,g:(
n

). (
i:
n. f(i) = g(i)) 
sum(f(x) | x < n) = sum(g(x) | x < n))
THEN
(RWO
Thm*
a:array(T), j,i:
|a|, v:T. a[i:=v][j] ~ if j=
i
v else a[j] fi
0)
THEN
SplitOnConclITE
THEN
(Reduce 0))
THEN
RepeatFor 2 SplitOnConclITE
Generated subgoals:
None
About: