Thm*
l:St*, eq:(St![]()
St![]()
![]()
).
(
x,y:St. eq(x,y) ![]()
x = y) ![]()
(
s:St. mem_f(St;s;l) ![]()
mem_f(St;s;LShort(l)))
lshort_mem
Thm*
l:St*, s:St, eq:(St![]()
St![]()
![]()
), sx:St.
mem_f(St;sx;l \ s) ![]()
if eq(s,sx)
False else mem_f(St;sx;l) fi
lremove_mem
Thm*
l:St*, f:(St![]()
St), s:St.
mem_f(St;s;(+f)(l))
![]()
mem_f(St;s;l)
(
s':St. mem_f(St;s';l) & f(s') = s)
add_action_mem
Thm*
L,La:T*.
Fin(T) ![]()
(
La':T*.
(
t:T. mem_f(T;t;La) ![]()
mem_f(T;t;L)
mem_f(T;t;La'))
& (
t:T. mem_f(T;t;La') ![]()
mem_f(T;t;La))
& (||La'||
1 ![]()
mem_f(T;hd(La');L)))
shorten_list
Thm*
L:T*, t:T. mem_f(T;t;L) ![]()
(
i:
||L||. L[i] = t) mem_select
Thm*
L1,L2:T*, t:T. mem_f(T;t;L1 @ L2) ![]()
mem_f(T;t;L1)
mem_f(T;t;L2)
mem_append
Thm*
L:T*, i:
||L||. mem_f(T;L[i];L) select_mem
Thm*
L:T*. ||L||
1 ![]()
mem_f(T;hd(L);L) hd_mem
Thm*
s:S, l:S*. Fin(S) ![]()
Dec(mem_f(S;s;l)) mem_f_dec
Thm*
as:T*. as
{x:T| mem_f(T;x;as) }* list_in_mem_f_list