Step * of Lemma alpha-aux-mkterm

No Annotations
[opr:Type]
  ∀a,b:opr. ∀as,bs:bound-term(opr) List. ∀vs,ws:varname() List.
    (alpha-aux(opr;vs;ws;mkterm(a;as);mkterm(b;bs))
    ⇐⇒ (a b ∈ opr)
        ∧ (||as|| ||bs|| ∈ ℤ)
        ∧ (∀i:ℕ||as||
             (alpha-aux(opr;rev(fst(as[i])) vs;rev(fst(bs[i])) ws;snd(as[i]);snd(bs[i]))
             ∧ (||fst(as[i])|| ||fst(bs[i])|| ∈ ℤ))))
BY
(InductionOnList
   THEN Reduce 0
   THEN InductionOnList
   THEN Intros
   THEN RW (AddrC [1] (UnfoldC `alpha-aux`)) 0
   THEN RepUR ``mkterm`` 0
   THEN (((DVar `u' THEN DVar `u1' THEN Reduce 0)
          THEN Fold `mkterm` 0
          THEN (RW assert_pushdownC THENA Auto)
          THEN RWO "7" 0
          THEN Auto)
   ORELSE (Try ((Assert 0 ≤ ||v|| BY Auto)) THEN Try (RW  assert_pushdownC 0) THEN Auto)
   )
   THEN ((((D -1 With ⌜0⌝  THENA Auto) THEN Reduce -1 THEN -1 THEN Trivial)
         ORELSE ((D -2 With ⌜1⌝  THENA Complete (Auto)) THEN RWO  "select_cons_tl" (-1) THEN Auto)
         )
   ORELSE (CaseNat `i' THEN Reduce THEN (Trivial ORELSE (RWO "select_cons_tl" THEN Auto)))
   )) }

1
1. [opr] Type
2. opr
3. opr
4. u2 varname() List
5. u3 term(opr)
6. bound-term(opr) List
7. ∀bs:bound-term(opr) List. ∀vs,ws:varname() List.
     (alpha-aux(opr;vs;ws;mkterm(a;v);mkterm(b;bs))
     ⇐⇒ (a b ∈ opr)
         ∧ (||v|| ||bs|| ∈ ℤ)
         ∧ (∀i:ℕ||v||
              (alpha-aux(opr;rev(fst(v[i])) vs;rev(fst(bs[i])) ws;snd(v[i]);snd(bs[i]))
              ∧ (||fst(v[i])|| ||fst(bs[i])|| ∈ ℤ))))
8. u4 varname() List
9. u5 term(opr)
10. v1 bound-term(opr) List
11. ∀vs,ws:varname() List.
      (alpha-aux(opr;vs;ws;mkterm(a;[<u2, u3> v]);mkterm(b;v1))
      ⇐⇒ (a b ∈ opr)
          ∧ ((||v|| 1) ||v1|| ∈ ℤ)
          ∧ (∀i:ℕ||v|| 1
               (alpha-aux(opr;rev(fst([<u2, u3> v][i])) vs;rev(fst(v1[i])) ws;snd([<u2, u3> v][i]);snd(v1[i]))
               ∧ (||fst([<u2, u3> v][i])|| ||fst(v1[i])|| ∈ ℤ))))
12. vs varname() List
13. ws varname() List
14. b ∈ opr
15. (||v|| 1) (||v1|| 1) ∈ ℤ
16. : ℕ||v||
17. alpha-aux(opr;rev(fst(v[(i 1) 1])) vs;rev(fst(v1[(i 1) 1])) ws;snd(v[(i 1) 1]);snd(v1[(i 1) 1]))
18. ||fst(v[(i 1) 1])|| ||fst(v1[(i 1) 1])|| ∈ ℤ
⊢ alpha-aux(opr;rev(fst(v[i])) vs;rev(fst(v1[i])) ws;snd(v[i]);snd(v1[i]))

2
1. opr Type
2. opr
3. opr
4. u2 varname() List
5. u3 term(opr)
6. bound-term(opr) List
7. ∀bs:bound-term(opr) List. ∀vs,ws:varname() List.
     (alpha-aux(opr;vs;ws;mkterm(a;v);mkterm(b;bs))
     ⇐⇒ (a b ∈ opr)
         ∧ (||v|| ||bs|| ∈ ℤ)
         ∧ (∀i:ℕ||v||
              (alpha-aux(opr;rev(fst(v[i])) vs;rev(fst(bs[i])) ws;snd(v[i]);snd(bs[i]))
              ∧ (||fst(v[i])|| ||fst(bs[i])|| ∈ ℤ))))
8. u4 varname() List
9. u5 term(opr)
10. v1 bound-term(opr) List
11. ∀vs,ws:varname() List.
      (alpha-aux(opr;vs;ws;mkterm(a;[<u2, u3> v]);mkterm(b;v1))
      ⇐⇒ (a b ∈ opr)
          ∧ ((||v|| 1) ||v1|| ∈ ℤ)
          ∧ (∀i:ℕ||v|| 1
               (alpha-aux(opr;rev(fst([<u2, u3> v][i])) vs;rev(fst(v1[i])) ws;snd([<u2, u3> v][i]);snd(v1[i]))
               ∧ (||fst([<u2, u3> v][i])|| ||fst(v1[i])|| ∈ ℤ))))
12. vs varname() List
13. ws varname() List
14. b ∈ opr
15. (||v|| 1) (||v1|| 1) ∈ ℤ
16. : ℕ||v||
17. alpha-aux(opr;rev(fst(v[(i 1) 1])) vs;rev(fst(v1[(i 1) 1])) ws;snd(v[(i 1) 1]);snd(v1[(i 1) 1]))
18. ||fst(v[(i 1) 1])|| ||fst(v1[(i 1) 1])|| ∈ ℤ
⊢ ||fst(v[i])|| ||fst(v1[i])|| ∈ ℤ


Latex:


Latex:
No  Annotations
\mforall{}[opr:Type]
    \mforall{}a,b:opr.  \mforall{}as,bs:bound-term(opr)  List.  \mforall{}vs,ws:varname()  List.
        (alpha-aux(opr;vs;ws;mkterm(a;as);mkterm(b;bs))
        \mLeftarrow{}{}\mRightarrow{}  (a  =  b)
                \mwedge{}  (||as||  =  ||bs||)
                \mwedge{}  (\mforall{}i:\mBbbN{}||as||
                          (alpha-aux(opr;rev(fst(as[i]))  +  vs;rev(fst(bs[i]))  +  ws;snd(as[i]);snd(bs[i]))
                          \mwedge{}  (||fst(as[i])||  =  ||fst(bs[i])||))))


By


Latex:
(InductionOnList
  THEN  Reduce  0
  THEN  InductionOnList
  THEN  Intros
  THEN  RW  (AddrC  [1]  (UnfoldC  `alpha-aux`))  0
  THEN  RepUR  ``mkterm``  0
  THEN  (((DVar  `u'  THEN  DVar  `u1'  THEN  Reduce  0)
                THEN  Fold  `mkterm`  0
                THEN  (RW  assert\_pushdownC  0  THENA  Auto)
                THEN  RWO  "7"  0
                THEN  Auto)
  ORELSE  (Try  ((Assert  0  \mleq{}  ||v||  BY  Auto))  THEN  Try  (RW    assert\_pushdownC  0)  THEN  Auto)
  )
  THEN  ((((D  -1  With  \mkleeneopen{}0\mkleeneclose{}    THENA  Auto)  THEN  Reduce  -1  THEN  D  -1  THEN  Trivial)
              ORELSE  ((D  -2  With  \mkleeneopen{}i  +  1\mkleeneclose{}    THENA  Complete  (Auto))  THEN  RWO    "select\_cons\_tl"  (-1)  THEN  Auto)
              )
  ORELSE  (CaseNat  0  `i'  THEN  Reduce  0  THEN  (Trivial  ORELSE  (RWO  "select\_cons\_tl"  0  THEN  Auto)))
  ))




Home Index