Step * of Lemma bag_remove1_aux_property

[T:Type]
  ∀eq:EqDecider(T). ∀x:T. ∀L,checked:T List.
    ((∃as,bs:T List
       ((L ((as [x]) bs) ∈ (T List))
       ∧ (bag_remove1_aux(eq;checked;x;L) (inl ((rev(as) checked) bs)) ∈ (T List?))))
    ∨ ((¬(x ∈ L)) ∧ (bag_remove1_aux(eq;checked;x;L) (inr ⋅ ) ∈ (T List?))))
BY
((InductionOnList THEN Auto) THEN RecUnfold `bag_remove1_aux` THEN Reduce THEN Try (AutoBoolCase ⌜eq x⌝⋅)) }

1
1. [T] Type
2. eq EqDecider(T)
3. T
4. checked List
⊢ (∃as,bs:T List. (([] ((as [x]) bs) ∈ (T List)) ∧ ((inr Ax (inl ((rev(as) checked) bs)) ∈ (T List?))))
∨ ((¬(x ∈ [])) ∧ ((inr Ax (inr ⋅ ) ∈ (T List?)))

2
1. [T] Type
2. eq EqDecider(T)
3. T
4. T
5. List
6. ∀checked:T List
     ((∃as,bs:T List
        ((v ((as [x]) bs) ∈ (T List))
        ∧ (bag_remove1_aux(eq;checked;x;v) (inl ((rev(as) checked) bs)) ∈ (T List?))))
     ∨ ((¬(x ∈ v)) ∧ (bag_remove1_aux(eq;checked;x;v) (inr ⋅ ) ∈ (T List?))))
7. checked List
8. x ∈ T
⊢ (∃as,bs:T List
    (([u v] ((as [x]) bs) ∈ (T List)) ∧ ((inl (checked v)) (inl ((rev(as) checked) bs)) ∈ (T List?))))
∨ ((¬(x ∈ [u v])) ∧ ((inl (checked v)) (inr ⋅ ) ∈ (T List?)))

3
1. [T] Type
2. eq EqDecider(T)
3. T
4. T
5. ¬(u x ∈ T)
6. List
7. ∀checked:T List
     ((∃as,bs:T List
        ((v ((as [x]) bs) ∈ (T List))
        ∧ (bag_remove1_aux(eq;checked;x;v) (inl ((rev(as) checked) bs)) ∈ (T List?))))
     ∨ ((¬(x ∈ v)) ∧ (bag_remove1_aux(eq;checked;x;v) (inr ⋅ ) ∈ (T List?))))
8. checked List
⊢ (∃as,bs:T List
    (([u v] ((as [x]) bs) ∈ (T List))
    ∧ (bag_remove1_aux(eq;[u checked];x;v) (inl ((rev(as) checked) bs)) ∈ (T List?))))
∨ ((¬(x ∈ [u v])) ∧ (bag_remove1_aux(eq;[u checked];x;v) (inr ⋅ ) ∈ (T List?)))


Latex:


Latex:
\mforall{}[T:Type]
    \mforall{}eq:EqDecider(T).  \mforall{}x:T.  \mforall{}L,checked:T  List.
        ((\mexists{}as,bs:T  List
              ((L  =  ((as  @  [x])  @  bs))
              \mwedge{}  (bag\_remove1\_aux(eq;checked;x;L)  =  (inl  ((rev(as)  @  checked)  @  bs)))))
        \mvee{}  ((\mneg{}(x  \mmember{}  L))  \mwedge{}  (bag\_remove1\_aux(eq;checked;x;L)  =  (inr  \mcdot{}  ))))


By


Latex:
((InductionOnList  THEN  Auto)
  THEN  RecUnfold  `bag\_remove1\_aux`  0
  THEN  Reduce  0
  THEN  Try  (AutoBoolCase  \mkleeneopen{}eq  u  x\mkleeneclose{}\mcdot{}))




Home Index