Step * of Lemma ml-reduce-sq

[A,B:Type].
  (∀[f:A ⟶ B ⟶ B]. ∀[l:A List]. ∀[b:B].  (ml-reduce(f;b;l) reduce(f;b;l))) supposing 
     ((valueall-type(A) ∧ A) and 
     valueall-type(B))
BY
(InductionOnList
   THEN Intro
   THEN All (RepUR ``ml-reduce spreadcons ml_apply``)
   THEN RW (AddrC [1] (SweepUpC UnrollRecursionC)) 0
   THEN Reduce 0
   THEN (Assert value-type(B ⟶ B) BY
               (Auto THEN THEN With ⌜b⌝  THEN EAuto 1))
   THEN (Assert valueall-type(A ⟶ B ⟶ B) BY
               Auto)
   THEN (CallByValueReduceOn ⌜f⌝ 0⋅ THENA Auto)
   THEN ((CallByValueReduce THENA Auto) THENM Reduce 0)
   THEN (Trivial
   ORELSE (((CallByValueReduce THENA Auto) THENM Reduce 0)
           THEN (CallByValueReduceOn ⌜f⌝ 8⋅ THENA Auto)
           THEN (RWO "8" THENA Auto))
   )) }

1
1. Type
2. Type
3. valueall-type(B)
4. valueall-type(A) ∧ A
5. A ⟶ B ⟶ B
6. A
7. List
8. ∀[b:B]
     (let y ⟵ v
      in let y ⟵ b
         in fix((λreduce,f,b,l. if null(l)
                               then b
                               else let a,as 
                                    in let y ⟵ let y ⟵ as
                                                in let y ⟵ in let y ⟵ in reduce y
                                       in let y ⟵ in y
                               fi )) 
            
            
         reduce(f;b;v))
9. [b] B
10. value-type(B ⟶ B)
11. valueall-type(A ⟶ B ⟶ B)
⊢ let y@0 ⟵ reduce(f;b;v)
  in let y@0 ⟵ in y@0 y@0 reduce(f;b;v)


Latex:


Latex:
\mforall{}[A,B:Type].
    (\mforall{}[f:A  {}\mrightarrow{}  B  {}\mrightarrow{}  B].  \mforall{}[l:A  List].  \mforall{}[b:B].    (ml-reduce(f;b;l)  \msim{}  reduce(f;b;l)))  supposing 
          ((valueall-type(A)  \mwedge{}  A)  and 
          valueall-type(B))


By


Latex:
(InductionOnList
  THEN  Intro
  THEN  All  (RepUR  ``ml-reduce  spreadcons  ml\_apply``)
  THEN  RW  (AddrC  [1]  (SweepUpC  UnrollRecursionC))  0
  THEN  Reduce  0
  THEN  (Assert  value-type(B  {}\mrightarrow{}  B)  BY
                          (Auto  THEN  D  0  THEN  D  0  With  \mkleeneopen{}b\mkleeneclose{}    THEN  EAuto  1))
  THEN  (Assert  valueall-type(A  {}\mrightarrow{}  B  {}\mrightarrow{}  B)  BY
                          Auto)
  THEN  (CallByValueReduceOn  \mkleeneopen{}f\mkleeneclose{}  0\mcdot{}  THENA  Auto)
  THEN  ((CallByValueReduce  0  THENA  Auto)  THENM  Reduce  0)
  THEN  (Trivial
  ORELSE  (((CallByValueReduce  0  THENA  Auto)  THENM  Reduce  0)
                  THEN  (CallByValueReduceOn  \mkleeneopen{}f\mkleeneclose{}  8\mcdot{}  THENA  Auto)
                  THEN  (RWO  "8"  0  THENA  Auto))
  ))




Home Index