Step
*
1
2
2
of Lemma
bag-decomp_wf
1. T : Type
2. bs : Base
3. b1 : Base
4. bs = b1 ∈ (as,bs:T List//permutation(T;as;bs))
5. bs ∈ T List
6. b1 ∈ T List
7. f : ℕ||bs|| ⟶ ℕ||bs||
8. Inj(ℕ||bs||;ℕ||bs||;f) ∧ (b1 = (bs o f) ∈ (T List))
⊢ map(λn.remove-nth(n;b1);upto(||b1||)) = (map(λn.remove-nth(n;bs);upto(||bs||)) o f) ∈ ((T × bag(T)) List)
BY
{ (Auto
   THEN (Assert ||b1|| = ||bs|| ∈ ℤ BY
               (InstLemma `permute_list_length` [⌜T⌝;⌜bs⌝;⌜f⌝]⋅ THEN Auto THEN RevHypSubst (-1) 0 THEN Auto))
   THEN RWO "map_permute_list<" 0
   THEN Auto
   THEN HypSubst' (-1) 0
   THEN HypSubst' (-2) 0
   THEN Auto
   THEN ThinVar `b1') }
1
1. T : Type
2. bs : Base
3. bs ∈ T List
4. f : ℕ||bs|| ⟶ ℕ||bs||
5. Inj(ℕ||bs||;ℕ||bs||;f)
⊢ map(λn.remove-nth(n;(bs o f));upto(||bs||)) = map(λn.remove-nth(n;bs);(upto(||bs||) o f)) ∈ ((T × bag(T)) List)
Latex:
Latex:
1.  T  :  Type
2.  bs  :  Base
3.  b1  :  Base
4.  bs  =  b1
5.  bs  \mmember{}  T  List
6.  b1  \mmember{}  T  List
7.  f  :  \mBbbN{}||bs||  {}\mrightarrow{}  \mBbbN{}||bs||
8.  Inj(\mBbbN{}||bs||;\mBbbN{}||bs||;f)  \mwedge{}  (b1  =  (bs  o  f))
\mvdash{}  map(\mlambda{}n.remove-nth(n;b1);upto(||b1||))  =  (map(\mlambda{}n.remove-nth(n;bs);upto(||bs||))  o  f)
By
Latex:
(Auto
  THEN  (Assert  ||b1||  =  ||bs||  BY
                          (InstLemma  `permute\_list\_length`  [\mkleeneopen{}T\mkleeneclose{};\mkleeneopen{}bs\mkleeneclose{};\mkleeneopen{}f\mkleeneclose{}]\mcdot{}
                            THEN  Auto
                            THEN  RevHypSubst  (-1)  0
                            THEN  Auto))
  THEN  RWO  "map\_permute\_list<"  0
  THEN  Auto
  THEN  HypSubst'  (-1)  0
  THEN  HypSubst'  (-2)  0
  THEN  Auto
  THEN  ThinVar  `b1')
Home
Index