Step * 1 2 1 2 2 1 1 of Lemma satisfies-gcd-reduce-ineq-constraints


1. : ℕ+
2. n ∈ ℤ
3. : ℤ
4. 1 ∈ ℤ
5. v1 {L:ℤ List| ||L|| 1 ∈ ℤ}  List
6. ∀sat:{L:ℤ List| ||L|| 1 ∈ ℤ}  List
     ((∀as∈sat.[1] ⋅ as ≥0)
      (∀as∈v1.[1] ⋅ as ≥0)
      ((↑isl(gcd-reduce-ineq-constraints(sat;v1))) ∧ (∀as∈outl(gcd-reduce-ineq-constraints(sat;v1)).[1] ⋅ as ≥0)))
7. sat {L:ℤ List| ||L|| 1 ∈ ℤ}  List
8. (∀as∈sat.[1] ⋅ as ≥0)
9. (∀as∈[[u] v1].[1] ⋅ as ≥0)
⊢ (↑isl(let s' ⟵ if (u) < (0)  then inr ⋅   else (inl [[u] sat])
        in accumulate_abort(L,Ls.let h,t 
                                 in if Ax then if (h) < (0)  then inr ⋅   else (inl [L Ls])
                                    otherwise eval |gcd-list(t)| in
                                              if (1) < (g)
                                                 then eval h' h ÷↓ in
                                                      eval t' eager-map(λx.(x ÷ g);t) in
                                                        inl [[h' t'] Ls]
                                                 else (inl [L Ls]);s';v1)))
∧ (∀as∈outl(let s' ⟵ if (u) < (0)  then inr ⋅   else (inl [[u] sat])
            in accumulate_abort(L,Ls.let h,t 
                                     in if Ax then if (h) < (0)  then inr ⋅   else (inl [L Ls])
                                        otherwise eval |gcd-list(t)| in
                                                  if (1) < (g)
                                                     then eval h' h ÷↓ in
                                                          eval t' eager-map(λx.(x ÷ g);t) in
                                                            inl [[h' t'] Ls]
                                                     else (inl [L Ls]);s';v1)).[1] ⋅ as ≥0)
BY
((RWO "l_all_cons" (-1) THENA Auto)
   THEN ExRepD
   THEN (Assert ⌜¬u < 0⌝⋅ THENA ((D -2 THEN All Reduce) THEN Auto))
   THEN (Reduce THENA Auto)
   THEN (CallByValueReduce THENA Auto)
   THEN Fold `gcd-reduce-ineq-constraints` 0) }

1
1. : ℕ+
2. n ∈ ℤ
3. : ℤ
4. 1 ∈ ℤ
5. v1 {L:ℤ List| ||L|| 1 ∈ ℤ}  List
6. ∀sat:{L:ℤ List| ||L|| 1 ∈ ℤ}  List
     ((∀as∈sat.[1] ⋅ as ≥0)
      (∀as∈v1.[1] ⋅ as ≥0)
      ((↑isl(gcd-reduce-ineq-constraints(sat;v1))) ∧ (∀as∈outl(gcd-reduce-ineq-constraints(sat;v1)).[1] ⋅ as ≥0)))
7. sat {L:ℤ List| ||L|| 1 ∈ ℤ}  List
8. (∀as∈sat.[1] ⋅ as ≥0)
9. [1] ⋅ [u] ≥0
10. (∀as∈v1.[1] ⋅ as ≥0)
11. ¬u < 0
⊢ (↑isl(gcd-reduce-ineq-constraints([[u] sat];v1)))
∧ (∀as∈outl(gcd-reduce-ineq-constraints([[u] sat];v1)).[1] ⋅ as ≥0)


Latex:


Latex:

1.  n  :  \mBbbN{}\msupplus{}
2.  1  =  n
3.  u  :  \mBbbZ{}
4.  1  =  1
5.  v1  :  \{L:\mBbbZ{}  List|  ||L||  =  1\}    List
6.  \mforall{}sat:\{L:\mBbbZ{}  List|  ||L||  =  1\}    List
          ((\mforall{}as\mmember{}sat.[1]  \mcdot{}  as  \mgeq{}0)
          {}\mRightarrow{}  (\mforall{}as\mmember{}v1.[1]  \mcdot{}  as  \mgeq{}0)
          {}\mRightarrow{}  ((\muparrow{}isl(gcd-reduce-ineq-constraints(sat;v1)))
                \mwedge{}  (\mforall{}as\mmember{}outl(gcd-reduce-ineq-constraints(sat;v1)).[1]  \mcdot{}  as  \mgeq{}0)))
7.  sat  :  \{L:\mBbbZ{}  List|  ||L||  =  1\}    List
8.  (\mforall{}as\mmember{}sat.[1]  \mcdot{}  as  \mgeq{}0)
9.  (\mforall{}as\mmember{}[[u]  /  v1].[1]  \mcdot{}  as  \mgeq{}0)
\mvdash{}  (\muparrow{}isl(let  s'  \mleftarrow{}{}  if  (u)  <  (0)    then  inr  \mcdot{}      else  (inl  [[u]  /  sat])
                in  accumulate\_abort(L,Ls.let  h,t  =  L 
                                                                  in  if  t  =  Ax  then  if  (h)  <  (0)    then  inr  \mcdot{}      else  (inl  [L  /  Ls])
                                                                        otherwise  eval  g  =  |gcd-list(t)|  in
                                                                                            if  (1)  <  (g)
                                                                                                  then  eval  h'  =  h  \mdiv{}\mdownarrow{}  g  in
                                                                                                            eval  t'  =  eager-map(\mlambda{}x.(x  \mdiv{}  g);t)  in
                                                                                                                inl  [[h'  /  t']  /  Ls]
                                                                                                  else  (inl  [L  /  Ls]);s';v1)))
\mwedge{}  (\mforall{}as\mmember{}outl(let  s'  \mleftarrow{}{}  if  (u)  <  (0)    then  inr  \mcdot{}      else  (inl  [[u]  /  sat])
                        in  accumulate\_abort(L,Ls.let  h,t  =  L 
                                                                          in  if  t  =  Ax  then  if  (h)  <  (0)
                                                                                                                    then  inr  \mcdot{} 
                                                                                                                    else  (inl  [L  /  Ls])
                                                                                otherwise  eval  g  =  |gcd-list(t)|  in
                                                                                                    if  (1)  <  (g)
                                                                                                          then  eval  h'  =  h  \mdiv{}\mdownarrow{}  g  in
                                                                                                                    eval  t'  =  eager-map(\mlambda{}x.(x  \mdiv{}  g);t)  in
                                                                                                                        inl  [[h'  /  t']  /  Ls]
                                                                                                          else  (inl  [L  /  Ls]);s';v1)).[1]  \mcdot{}  as  \mgeq{}0)


By


Latex:
((RWO  "l\_all\_cons"  (-1)  THENA  Auto)
  THEN  ExRepD
  THEN  (Assert  \mkleeneopen{}\mneg{}u  <  0\mkleeneclose{}\mcdot{}  THENA  ((D  -2  THEN  All  Reduce)  THEN  Auto))
  THEN  (Reduce  0  THENA  Auto)
  THEN  (CallByValueReduce  0  THENA  Auto)
  THEN  Fold  `gcd-reduce-ineq-constraints`  0)




Home Index