Step
*
3
1
1
2
1
of Lemma
bag_remove1_aux_property
.....subterm..... T:t
1:n
1. T : Type
2. eq : EqDecider(T)
3. x : T
4. u : T
5. ¬(u = x ∈ T)
6. v : T 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 : T List
9. as : T List
10. bs : T List
11. v = ((as @ [x]) @ bs) ∈ (T List)
12. bag_remove1_aux(eq;[u / checked];x;v) = (inl ((rev(as) @ [u / checked]) @ bs)) ∈ (T List?)
13. [u / v] = (([u / as] @ [x]) @ bs) ∈ (T List)
⊢ ((rev(as) @ [u / checked]) @ bs) = ((rev([u / as]) @ checked) @ bs) ∈ (T List)
BY
{ Reduce 0 }
1
1. T : Type
2. eq : EqDecider(T)
3. x : T
4. u : T
5. ¬(u = x ∈ T)
6. v : T 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 : T List
9. as : T List
10. bs : T List
11. v = ((as @ [x]) @ bs) ∈ (T List)
12. bag_remove1_aux(eq;[u / checked];x;v) = (inl ((rev(as) @ [u / checked]) @ bs)) ∈ (T List?)
13. [u / v] = (([u / as] @ [x]) @ bs) ∈ (T List)
⊢ ((rev(as) @ [u / checked]) @ bs) = (((rev(as) @ [u]) @ checked) @ bs) ∈ (T List)
Latex:
Latex:
.....subterm.....  T:t
1:n
1.  T  :  Type
2.  eq  :  EqDecider(T)
3.  x  :  T
4.  u  :  T
5.  \mneg{}(u  =  x)
6.  v  :  T  List
7.  \mforall{}checked:T  List
          ((\mexists{}as,bs:T  List
                ((v  =  ((as  @  [x])  @  bs))
                \mwedge{}  (bag\_remove1\_aux(eq;checked;x;v)  =  (inl  ((rev(as)  @  checked)  @  bs)))))
          \mvee{}  ((\mneg{}(x  \mmember{}  v))  \mwedge{}  (bag\_remove1\_aux(eq;checked;x;v)  =  (inr  \mcdot{}  ))))
8.  checked  :  T  List
9.  as  :  T  List
10.  bs  :  T  List
11.  v  =  ((as  @  [x])  @  bs)
12.  bag\_remove1\_aux(eq;[u  /  checked];x;v)  =  (inl  ((rev(as)  @  [u  /  checked])  @  bs))
13.  [u  /  v]  =  (([u  /  as]  @  [x])  @  bs)
\mvdash{}  ((rev(as)  @  [u  /  checked])  @  bs)  =  ((rev([u  /  as])  @  checked)  @  bs)
By
Latex:
Reduce  0
Home
Index