Step * 1 2 1 1 1 2 1 of Lemma fset-size-remove


T:Type. ∀eq:EqDecider(T). ∀x:T. ∀L:T List.
  ((no_repeats(T;L) ∧ (x ∈ L))  (filter(λx@0.(¬b(eq x@0 x));L) remove-first(λy.(eq x);L) ∈ (T List)))
BY
TACTIC:(Unfold `remove-first` THEN InductionOnList THEN (Reduce THEN Auto) THEN AutoBoolCase ⌜eq x⌝⋅}

1
1. Type@i'
2. eq EqDecider(T)@i
3. T@i
4. T@i
5. List@i
6. (no_repeats(T;v) ∧ (x ∈ v))
 (filter(λx@0.(¬b(eq x@0 x));v)
   rec-case(v) of
     [] => []
     a::as =>
      r.if y.(eq x)) then as else [a r] fi 
   ∈ (T List))
7. no_repeats(T;[u v])
8. (x ∈ [u v])
9. x ∈ T
⊢ filter(λx@0.(¬b(eq x@0 x));v) v ∈ (T List)

2
1. Type@i'
2. eq EqDecider(T)@i
3. T@i
4. T@i
5. ¬(u x ∈ T)
6. List@i
7. (no_repeats(T;v) ∧ (x ∈ v))
 (filter(λx@0.(¬b(eq x@0 x));v)
   rec-case(v) of
     [] => []
     a::as =>
      r.if y.(eq x)) then as else [a r] fi 
   ∈ (T List))
8. no_repeats(T;[u v])
9. (x ∈ [u v])
⊢ [u filter(λx@0.(¬b(eq x@0 x));v)]
[u rec-case(v) of [] => [] h::t => r.if eq then else [h r] fi ]
∈ (T List)


Latex:


Latex:

\mforall{}T:Type.  \mforall{}eq:EqDecider(T).  \mforall{}x:T.  \mforall{}L:T  List.
    ((no\_repeats(T;L)  \mwedge{}  (x  \mmember{}  L))  {}\mRightarrow{}  (filter(\mlambda{}x@0.(\mneg{}\msubb{}(eq  x@0  x));L)  =  remove-first(\mlambda{}y.(eq  y  x);L)))


By


Latex:
TACTIC:(Unfold  `remove-first`  0
                THEN  InductionOnList
                THEN  (Reduce  0  THEN  Auto)
                THEN  AutoBoolCase  \mkleeneopen{}eq  u  x\mkleeneclose{}\mcdot{})




Home Index