Step
*
2
of Lemma
le-tuple-sum
1. P : Type
2. u : P
3. v : P List
4. ∀[G:P ⟶ Type]. ∀[x:tuple-type(map(G;v))]. ∀[f:i:P ⟶ (G i) ⟶ ℕ].  ∀k:ℕ||v||. ((f v[k] x.k) ≤ tuple-sum(f;v;x))
5. null(v) = ff
6. G : P ⟶ Type
7. x : G u × tuple-type(map(G;v))
8. f : i:P ⟶ (G i) ⟶ ℕ
9. k : ℕ||v|| + 1
⊢ (f [u / v][k] x.k) ≤ let u@0,v@0 = x 
                       in (f u u@0) + tuple-sum(f;v;v@0)
BY
{ (DVar `x' THEN RecUnfold `select-tuple` 0 THEN (Assert 1 ≤ ||v|| BY Auto) THEN Reduce 0 THEN AutoSplit) }
1
1. P : Type
2. u : P
3. v : P List
4. ∀[G:P ⟶ Type]. ∀[x:tuple-type(map(G;v))]. ∀[f:i:P ⟶ (G i) ⟶ ℕ].  ∀k:ℕ||v||. ((f v[k] x.k) ≤ tuple-sum(f;v;x))
5. null(v) = ff
6. G : P ⟶ Type
7. x1 : G u
8. x2 : tuple-type(map(G;v))
9. f : i:P ⟶ (G i) ⟶ ℕ
10. k : ℕ||v|| + 1
11. 1 ≤ ||v||
12. k = 0 ∈ ℤ
⊢ (f [u / v][k] x1) ≤ ((f u x1) + tuple-sum(f;v;x2))
2
1. P : Type
2. u : P
3. v : P List
4. ∀[G:P ⟶ Type]. ∀[x:tuple-type(map(G;v))]. ∀[f:i:P ⟶ (G i) ⟶ ℕ].  ∀k:ℕ||v||. ((f v[k] x.k) ≤ tuple-sum(f;v;x))
5. null(v) = ff
6. G : P ⟶ Type
7. x1 : G u
8. x2 : tuple-type(map(G;v))
9. f : i:P ⟶ (G i) ⟶ ℕ
10. k : ℕ||v|| + 1
11. k ≠ 0
12. 1 ≤ ||v||
⊢ (f [u / v][k] x2.k - 1) ≤ ((f u x1) + tuple-sum(f;v;x2))
Latex:
Latex:
1.  P  :  Type
2.  u  :  P
3.  v  :  P  List
4.  \mforall{}[G:P  {}\mrightarrow{}  Type].  \mforall{}[x:tuple-type(map(G;v))].  \mforall{}[f:i:P  {}\mrightarrow{}  (G  i)  {}\mrightarrow{}  \mBbbN{}].
          \mforall{}k:\mBbbN{}||v||.  ((f  v[k]  x.k)  \mleq{}  tuple-sum(f;v;x))
5.  null(v)  =  ff
6.  G  :  P  {}\mrightarrow{}  Type
7.  x  :  G  u  \mtimes{}  tuple-type(map(G;v))
8.  f  :  i:P  {}\mrightarrow{}  (G  i)  {}\mrightarrow{}  \mBbbN{}
9.  k  :  \mBbbN{}||v||  +  1
\mvdash{}  (f  [u  /  v][k]  x.k)  \mleq{}  let  u@0,v@0  =  x 
                                              in  (f  u  u@0)  +  tuple-sum(f;v;v@0)
By
Latex:
(DVar  `x'
  THEN  RecUnfold  `select-tuple`  0
  THEN  (Assert  1  \mleq{}  ||v||  BY
                          Auto)
  THEN  Reduce  0
  THEN  AutoSplit)
Home
Index