Step
*
of Lemma
list_accum_invariant3
∀[T,A:Type].
  ∀f:A ⟶ T ⟶ A
    ∀[P:A ⟶ (T List) ⟶ ℙ]
      ∀L:T List. ∀a:A.
        (P[a;[]]
        
⇒ (∀a:A. ∀x:T. ∀L':T List.  (L' @ [x] ≤ L 
⇒ P[a;L'] 
⇒ P[f[a;x];L' @ [x]]))
        
⇒ P[accumulate (with value a and list item x):
              f[a;x]
             over list:
               L
             with starting value:
              a);L])
BY
{ (Auto
   THEN (Assert ⌜∃n:ℕ. (n = ||L|| ∈ ℤ)⌝⋅ THENA (InstConcl [⌜||L||⌝]⋅ THEN Auto'))
   THEN ExRepD
   THEN MoveToConcl (-6)
   THEN MoveToConcl (-3)
   THEN NatInd (-1)
   THEN Auto) }
1
1. [T] : Type
2. [A] : Type
3. f : A ⟶ T ⟶ A
4. [P] : A ⟶ (T List) ⟶ ℙ
5. a : A
6. P[a;[]]
7. L : T List
8. ∀a:A. ∀x:T. ∀L':T List.  (L' @ [x] ≤ L 
⇒ P[a;L'] 
⇒ P[f[a;x];L' @ [x]])
9. 0 = ||L|| ∈ ℤ
⊢ P[accumulate (with value a and list item x):
     f[a;x]
    over list:
      L
    with starting value:
     a);L]
2
1. [T] : Type
2. [A] : Type
3. f : A ⟶ T ⟶ A
4. [P] : A ⟶ (T List) ⟶ ℙ
5. n : ℤ
6. [%1] : 0 < n
7. ∀a:A
     (P[a;[]]
     
⇒ (∀L:T List
           ((∀a:A. ∀x:T. ∀L':T List.  (L' @ [x] ≤ L 
⇒ P[a;L'] 
⇒ P[f[a;x];L' @ [x]]))
           
⇒ ((n - 1) = ||L|| ∈ ℤ)
           
⇒ P[accumulate (with value a and list item x):
                 f[a;x]
                over list:
                  L
                with starting value:
                 a);L])))
8. a : A
9. P[a;[]]
10. L : T List
11. ∀a:A. ∀x:T. ∀L':T List.  (L' @ [x] ≤ L 
⇒ P[a;L'] 
⇒ P[f[a;x];L' @ [x]])
12. n = ||L|| ∈ ℤ
⊢ P[accumulate (with value a and list item x):
     f[a;x]
    over list:
      L
    with starting value:
     a);L]
Latex:
Latex:
\mforall{}[T,A:Type].
    \mforall{}f:A  {}\mrightarrow{}  T  {}\mrightarrow{}  A
        \mforall{}[P:A  {}\mrightarrow{}  (T  List)  {}\mrightarrow{}  \mBbbP{}]
            \mforall{}L:T  List.  \mforall{}a:A.
                (P[a;[]]
                {}\mRightarrow{}  (\mforall{}a:A.  \mforall{}x:T.  \mforall{}L':T  List.    (L'  @  [x]  \mleq{}  L  {}\mRightarrow{}  P[a;L']  {}\mRightarrow{}  P[f[a;x];L'  @  [x]]))
                {}\mRightarrow{}  P[accumulate  (with  value  a  and  list  item  x):
                            f[a;x]
                          over  list:
                              L
                          with  starting  value:
                            a);L])
By
Latex:
(Auto
  THEN  (Assert  \mkleeneopen{}\mexists{}n:\mBbbN{}.  (n  =  ||L||)\mkleeneclose{}\mcdot{}  THENA  (InstConcl  [\mkleeneopen{}||L||\mkleeneclose{}]\mcdot{}  THEN  Auto'))
  THEN  ExRepD
  THEN  MoveToConcl  (-6)
  THEN  MoveToConcl  (-3)
  THEN  NatInd  (-1)
  THEN  Auto)
Home
Index