Step * 1 1 1 of Lemma transitive-closure-minimal


1. [A] Type
2. [R] A ⟶ A ⟶ ℙ
3. [Q] A ⟶ A ⟶ ℙ
4. x:A ⟶ y:A ⟶ (x y) ⟶ (x y)
5. : ∀a,b,c:A.  ((a b)  (b c)  (a c))
6. A
7. A
8. {L:(a:A × b:A × (R b)) List| rel_path(A;L;x;y) ∧ 0 < ||L||} 
⊢ ∃w:{a:A × b:A × (Q b)| (((fst(w)) x ∈ A) ∧ ((fst(snd(w))) y ∈ A))}
BY
(UseWitness ⌜accumulate (with value and list item y):
                let a,b,q1 in 
                let b',c,r in 
                <a, c, q1 (F r)>
               over list:
                 tl(L)
               with starting value:
                let a,b,r hd(L) in 
                <x, b, r>)⌝⋅
   THEN RepeatFor (D -1)
   THEN (D -3
         THENL [(Reduce (-1) THEN Auto)
               (Thin (-1) THEN RepeatFor (D -3) THEN RepUR ``rel_path`` -1 THEN Fold `rel_path` (-1))]
   )) }

1
1. Type
2. A ⟶ A ⟶ ℙ
3. A ⟶ A ⟶ ℙ
4. x:A ⟶ y:A ⟶ (x y) ⟶ (x y)
5. : ∀a,b,c:A.  ((a b)  (b c)  (a c))
6. A
7. A
8. A
9. A
10. u2 b
11. (a:A × b:A × (R b)) List
12. (a x ∈ A) ∧ rel_path(A;v;b;y)
⊢ accumulate (with value and list item y):
   let a,b,q1 in 
   let b',c,r in 
   <a, c, q1 (F r)>
  over list:
    tl([<a, b, u2> v])
  with starting value:
   let a,b,r hd([<a, b, u2> v]) in 
   <x, b, r>) ∈ ∃w:{a:A × b:A × (Q b)| (((fst(w)) x ∈ A) ∧ ((fst(snd(w))) y ∈ A))}


Latex:


Latex:

1.  [A]  :  Type
2.  [R]  :  A  {}\mrightarrow{}  A  {}\mrightarrow{}  \mBbbP{}
3.  [Q]  :  A  {}\mrightarrow{}  A  {}\mrightarrow{}  \mBbbP{}
4.  F  :  x:A  {}\mrightarrow{}  y:A  {}\mrightarrow{}  (x  R  y)  {}\mrightarrow{}  (x  Q  y)
5.  g  :  \mforall{}a,b,c:A.    ((a  Q  b)  {}\mRightarrow{}  (b  Q  c)  {}\mRightarrow{}  (a  Q  c))
6.  x  :  A
7.  y  :  A
8.  L  :  \{L:(a:A  \mtimes{}  b:A  \mtimes{}  (R  a  b))  List|  rel\_path(A;L;x;y)  \mwedge{}  0  <  ||L||\} 
\mvdash{}  \mexists{}w:\{a:A  \mtimes{}  b:A  \mtimes{}  (Q  a  b)|  (((fst(w))  =  x)  \mwedge{}  ((fst(snd(w)))  =  y))\}


By


Latex:
(UseWitness  \mkleeneopen{}accumulate  (with  value  x  and  list  item  y):
                            let  a,b,q1  =  x  in 
                            let  b',c,r  =  y  in 
                            <a,  c,  g  a  b  c  q1  (F  b  c  r)>
                          over  list:
                              tl(L)
                          with  starting  value:
                            let  a,b,r  =  hd(L)  in 
                            <x,  b,  F  x  b  r>)\mkleeneclose{}\mcdot{}
  THEN  RepeatFor  2  (D  -1)
  THEN  (D  -3
              THENL  [(Reduce  (-1)  THEN  Auto)
                          ;  (Thin  (-1)
                                THEN  RepeatFor  2  (D  -3)
                                THEN  RepUR  ``rel\_path``  -1
                                THEN  Fold  `rel\_path`  (-1))]
  ))




Home Index