Step
*
of Lemma
unsat-omega_step
∀p:IntConstraints. (unsat(omega_step(p)) 
⇒ unsat(p))
BY
{ (Auto
   THEN (Decide dim(p) < 1 THENA Auto)
   THEN (RepUR ``omega_step`` -2 THEN Try (Trivial))
   THEN UseWitness ⌜λxs,x. x⌝⋅
   THEN D 1
   THEN Try ((D_union 1 THEN D 2))
   THEN RenameVar `eqs' 2
   THEN RenameVar `ineqs' 3
   THEN RepUR ``int-problem-dimension`` -1
   THEN Try ((D -1 THEN TrivialArith))
   THEN All Reduce
   THEN CaseNat 0 `n'
   THEN ((Eliminate ⌜n⌝⋅
          THEN DVar `eqs'
          THEN All Reduce
          THEN DSetVars
          THEN D -2
          THEN Auto
          THEN DVar `ineqs'
          THEN Reduce 0
          THEN DSetVars
          THEN Try (HypSubst' 3 0)
          THEN Auto)
   ORELSE (RepUR ``unsat-int-problem all not satisfies-int-constraint-problem`` 0
           THEN Auto
           THEN Assert ⌜False⌝⋅
           THEN Auto
           THEN MoveToConcl (-6)
           THEN (InstLemma `first-success_wf` [⌜{L:ℤ List| ||L|| = (n + 1) ∈ ℤ} ⌝;
                 ⌜λ2L.x:{x:ℤ List| x = L ∈ (ℤ List)}  × {i:ℕ+||L||| |L[i]| = 1 ∈ ℤ} ⌝; ⌜λL.find-exact-eq-constraint(L)⌝;\000C⌜eqs⌝]⋅
                 THENA Auto
                 )
           THEN (GenConclTerm ⌜first-success(λL.find-exact-eq-constraint(L);eqs)⌝⋅ THENA Auto)
           THEN D -2
           THEN Reduce 0
           THEN RepeatFor 2 (D -2)
           THEN Reduce 0)
   )) }
1
1. n : ℕ
2. eqs : {L:ℤ List| ||L|| = (n + 1) ∈ ℤ}  List
3. ineqs : {L:ℤ List| ||L|| = (n + 1) ∈ ℤ}  List
4. ¬if eqs = Ax then if ineqs = Ax then 0 otherwise ||hd(ineqs)|| - 1 otherwise ||hd(eqs)|| - 1 < 1
5. ¬(n = 0 ∈ ℤ)
6. xs : ℤ List
7. x1 : (∀as∈eqs.xs ⋅ as =0)
8. x2 : (∀bs∈ineqs.xs ⋅ bs ≥0)
9. first-success(λL.find-exact-eq-constraint(L);eqs) ∈ i:ℕ||eqs||
   × x:{x:ℤ List| x = eqs[i] ∈ (ℤ List)} 
   × {i@0:ℕ+||eqs[i]||| |eqs[i][i@0]| = 1 ∈ ℤ} ?
10. i : ℕ||eqs||
11. x : {x:ℤ List| x = eqs[i] ∈ (ℤ List)} 
12. x4 : {i@0:ℕ+||eqs[i]||| |eqs[i][i@0]| = 1 ∈ ℤ} 
13. first-success(λL.find-exact-eq-constraint(L);eqs)
= (inl <i, x, x4>)
∈ (i:ℕ||eqs|| × x:{x:ℤ List| x = eqs[i] ∈ (ℤ List)}  × {i@0:ℕ+||eqs[i]||| |eqs[i][i@0]| = 1 ∈ ℤ} ?)
⊢ unsat(case gcd-reduce-eq-constraints([];exact-reduce-constraints(x;x4;eqs))
 of inl(eqs') =>
 case gcd-reduce-ineq-constraints([];exact-reduce-constraints(x;x4;ineqs))
  of inl(ineqs') =>
  inl <eqs', ineqs'>
  | inr(x) =>
  inr x 
 | inr(x) =>
 inr x )
⇒ False
2
1. n : ℕ
2. eqs : {L:ℤ List| ||L|| = (n + 1) ∈ ℤ}  List
3. ineqs : {L:ℤ List| ||L|| = (n + 1) ∈ ℤ}  List
4. ¬if eqs = Ax then if ineqs = Ax then 0 otherwise ||hd(ineqs)|| - 1 otherwise ||hd(eqs)|| - 1 < 1
5. ¬(n = 0 ∈ ℤ)
6. xs : ℤ List
7. x1 : (∀as∈eqs.xs ⋅ as =0)
8. x2 : (∀bs∈ineqs.xs ⋅ bs ≥0)
9. first-success(λL.find-exact-eq-constraint(L);eqs) ∈ i:ℕ||eqs||
   × x:{x:ℤ List| x = eqs[i] ∈ (ℤ List)} 
   × {i@0:ℕ+||eqs[i]||| |eqs[i][i@0]| = 1 ∈ ℤ} ?
10. y : 0 = 0 ∈ ℤ
11. first-success(λL.find-exact-eq-constraint(L);eqs)
= (inr Ax )
∈ (i:ℕ||eqs|| × x:{x:ℤ List| x = eqs[i] ∈ (ℤ List)}  × {i@0:ℕ+||eqs[i]||| |eqs[i][i@0]| = 1 ∈ ℤ} ?)
⊢ unsat(if null(eqs)
then case gcd-reduce-ineq-constraints([];shadow_inequalities(ineqs)) of inl(ineqs') => inl <[], ineqs'> | inr(x) => inr \000Cx 
else inl <[], (eager-map(λeq.eager-map(λx.(-x);eq);eqs) @ eqs) @ ineqs>
fi )
⇒ False
Latex:
Latex:
\mforall{}p:IntConstraints.  (unsat(omega\_step(p))  {}\mRightarrow{}  unsat(p))
By
Latex:
(Auto
  THEN  (Decide  dim(p)  <  1  THENA  Auto)
  THEN  (RepUR  ``omega\_step``  -2  THEN  Try  (Trivial))
  THEN  UseWitness  \mkleeneopen{}\mlambda{}xs,x.  x\mkleeneclose{}\mcdot{}
  THEN  D  1
  THEN  Try  ((D\_union  1  THEN  D  2))
  THEN  RenameVar  `eqs'  2
  THEN  RenameVar  `ineqs'  3
  THEN  RepUR  ``int-problem-dimension``  -1
  THEN  Try  ((D  -1  THEN  TrivialArith))
  THEN  All  Reduce
  THEN  CaseNat  0  `n'
  THEN  ((Eliminate  \mkleeneopen{}n\mkleeneclose{}\mcdot{}
                THEN  DVar  `eqs'
                THEN  All  Reduce
                THEN  DSetVars
                THEN  D  -2
                THEN  Auto
                THEN  DVar  `ineqs'
                THEN  Reduce  0
                THEN  DSetVars
                THEN  Try  (HypSubst'  3  0)
                THEN  Auto)
  ORELSE  (RepUR  ``unsat-int-problem  all  not  satisfies-int-constraint-problem``  0
                  THEN  Auto
                  THEN  Assert  \mkleeneopen{}False\mkleeneclose{}\mcdot{}
                  THEN  Auto
                  THEN  MoveToConcl  (-6)
                  THEN  (InstLemma  `first-success\_wf`  [\mkleeneopen{}\{L:\mBbbZ{}  List|  ||L||  =  (n  +  1)\}  \mkleeneclose{};
                              \mkleeneopen{}\mlambda{}\msubtwo{}L.x:\{x:\mBbbZ{}  List|  x  =  L\}    \mtimes{}  \{i:\mBbbN{}\msupplus{}||L|||  |L[i]|  =  1\}  \mkleeneclose{};  \mkleeneopen{}\mlambda{}L.find-exact-eq-constraint(L\000C)\mkleeneclose{};\mkleeneopen{}eqs\mkleeneclose{}
                              ]\mcdot{}
                              THENA  Auto
                              )
                  THEN  (GenConclTerm  \mkleeneopen{}first-success(\mlambda{}L.find-exact-eq-constraint(L);eqs)\mkleeneclose{}\mcdot{}  THENA  Auto)
                  THEN  D  -2
                  THEN  Reduce  0
                  THEN  RepeatFor  2  (D  -2)
                  THEN  Reduce  0)
  ))
Home
Index