Step
*
2
of Lemma
interleaved_split
1. [T] : Type
2. u : T
3. v : T List
4. ∀[P:T ⟶ ℙ]
     ((∀x:T. Dec(P[x]))
     
⇒ (∃L1,L2:T List
          (interleaving(T;L1;L2;v) ∧ (∀x:T. ((x ∈ L1) 
⇐⇒ (x ∈ v) ∧ P[x])) ∧ (∀x:T. ((x ∈ L2) 
⇐⇒ (x ∈ v) ∧ (¬P[x]))))))
⊢ ∀[P:T ⟶ ℙ]
    ((∀x:T. Dec(P[x]))
    
⇒ (∃L1,L2:T List
         (interleaving(T;L1;L2;[u / v])
         ∧ (∀x:T. ((x ∈ L1) 
⇐⇒ (x ∈ [u / v]) ∧ P[x]))
         ∧ (∀x:T. ((x ∈ L2) 
⇐⇒ (x ∈ [u / v]) ∧ (¬P[x]))))))
BY
{ TACTIC:((((RepeatFor 2 ((ParallelOp (-1))))⋅
            THEN Auto
            THEN ExRepD
            THEN AssertBY Dec(P[u]) EasyHyp⋅
            THEN ((D (-1)) THENL [InstConcl [[u / L1];L2]⋅; InstConcl [L1;[u / L2]]⋅]))
           THENA Auto
           )
          THEN RWO "cons_member" 0
          THEN Auto
          THEN Try ((ParallelOp (-2) THEN Complete (Auto)))
          THEN Try ((ParallelOp (-1) THEN Complete (Auto)))
          THEN Try ((SplitOrHyps THEN Auto))) }
1
1. [T] : Type
2. u : T
3. v : T List
4. ∀[P:T ⟶ ℙ]
     ((∀x:T. Dec(P[x]))
     
⇒ (∃L1,L2:T List
          (interleaving(T;L1;L2;v) ∧ (∀x:T. ((x ∈ L1) 
⇐⇒ (x ∈ v) ∧ P[x])) ∧ (∀x:T. ((x ∈ L2) 
⇐⇒ (x ∈ v) ∧ (¬P[x]))))))
5. [P] : T ⟶ ℙ
6. ∀x:T. Dec(P[x])
7. L1 : T List
8. L2 : T List
9. interleaving(T;L1;L2;v)
10. ∀x:T. ((x ∈ L1) 
⇐⇒ (x ∈ v) ∧ P[x])
11. ∀x:T. ((x ∈ L2) 
⇐⇒ (x ∈ v) ∧ (¬P[x]))
12. P[u]
⊢ interleaving(T;[u / L1];L2;[u / v])
2
1. [T] : Type
2. u : T
3. v : T List
4. ∀[P:T ⟶ ℙ]
     ((∀x:T. Dec(P[x]))
     
⇒ (∃L1,L2:T List
          (interleaving(T;L1;L2;v) ∧ (∀x:T. ((x ∈ L1) 
⇐⇒ (x ∈ v) ∧ P[x])) ∧ (∀x:T. ((x ∈ L2) 
⇐⇒ (x ∈ v) ∧ (¬P[x]))))))
5. [P] : T ⟶ ℙ
6. ∀x:T. Dec(P[x])
7. L1 : T List
8. L2 : T List
9. interleaving(T;L1;L2;v)
10. ∀x:T. ((x ∈ L1) 
⇐⇒ (x ∈ v) ∧ P[x])
11. ∀x:T. ((x ∈ L2) 
⇐⇒ (x ∈ v) ∧ (¬P[x]))
12. P[u]
13. interleaving(T;[u / L1];L2;[u / v])
14. ∀x:T. ((x = u ∈ T) ∨ (x ∈ L1) 
⇐⇒ ((x = u ∈ T) ∨ (x ∈ v)) ∧ P[x])
15. x : T
16. x = u ∈ T
17. ¬P[x]
⊢ (x ∈ L2)
3
1. [T] : Type
2. u : T
3. v : T List
4. ∀[P:T ⟶ ℙ]
     ((∀x:T. Dec(P[x]))
     
⇒ (∃L1,L2:T List
          (interleaving(T;L1;L2;v) ∧ (∀x:T. ((x ∈ L1) 
⇐⇒ (x ∈ v) ∧ P[x])) ∧ (∀x:T. ((x ∈ L2) 
⇐⇒ (x ∈ v) ∧ (¬P[x]))))))
5. [P] : T ⟶ ℙ
6. ∀x:T. Dec(P[x])
7. L1 : T List
8. L2 : T List
9. interleaving(T;L1;L2;v)
10. ∀x:T. ((x ∈ L1) 
⇐⇒ (x ∈ v) ∧ P[x])
11. ∀x:T. ((x ∈ L2) 
⇐⇒ (x ∈ v) ∧ (¬P[x]))
12. ¬P[u]
⊢ interleaving(T;L1;[u / L2];[u / v])
4
1. [T] : Type
2. u : T
3. v : T List
4. ∀[P:T ⟶ ℙ]
     ((∀x:T. Dec(P[x]))
     
⇒ (∃L1,L2:T List
          (interleaving(T;L1;L2;v) ∧ (∀x:T. ((x ∈ L1) 
⇐⇒ (x ∈ v) ∧ P[x])) ∧ (∀x:T. ((x ∈ L2) 
⇐⇒ (x ∈ v) ∧ (¬P[x]))))))
5. [P] : T ⟶ ℙ
6. ∀x:T. Dec(P[x])
7. L1 : T List
8. L2 : T List
9. interleaving(T;L1;L2;v)
10. ∀x:T. ((x ∈ L1) 
⇐⇒ (x ∈ v) ∧ P[x])
11. ∀x:T. ((x ∈ L2) 
⇐⇒ (x ∈ v) ∧ (¬P[x]))
12. ¬P[u]
13. interleaving(T;L1;[u / L2];[u / v])
14. x : T
15. x = u ∈ T
16. P[x]
⊢ (x ∈ L1)
Latex:
Latex:
1.  [T]  :  Type
2.  u  :  T
3.  v  :  T  List
4.  \mforall{}[P:T  {}\mrightarrow{}  \mBbbP{}]
          ((\mforall{}x:T.  Dec(P[x]))
          {}\mRightarrow{}  (\mexists{}L1,L2:T  List
                    (interleaving(T;L1;L2;v)
                    \mwedge{}  (\mforall{}x:T.  ((x  \mmember{}  L1)  \mLeftarrow{}{}\mRightarrow{}  (x  \mmember{}  v)  \mwedge{}  P[x]))
                    \mwedge{}  (\mforall{}x:T.  ((x  \mmember{}  L2)  \mLeftarrow{}{}\mRightarrow{}  (x  \mmember{}  v)  \mwedge{}  (\mneg{}P[x]))))))
\mvdash{}  \mforall{}[P:T  {}\mrightarrow{}  \mBbbP{}]
        ((\mforall{}x:T.  Dec(P[x]))
        {}\mRightarrow{}  (\mexists{}L1,L2:T  List
                  (interleaving(T;L1;L2;[u  /  v])
                  \mwedge{}  (\mforall{}x:T.  ((x  \mmember{}  L1)  \mLeftarrow{}{}\mRightarrow{}  (x  \mmember{}  [u  /  v])  \mwedge{}  P[x]))
                  \mwedge{}  (\mforall{}x:T.  ((x  \mmember{}  L2)  \mLeftarrow{}{}\mRightarrow{}  (x  \mmember{}  [u  /  v])  \mwedge{}  (\mneg{}P[x]))))))
By
Latex:
TACTIC:((((RepeatFor  2  ((ParallelOp  (-1))))\mcdot{}
                    THEN  Auto
                    THEN  ExRepD
                    THEN  AssertBY  Dec(P[u])  EasyHyp\mcdot{}
                    THEN  ((D  (-1))  THENL  [InstConcl  [[u  /  L1];L2]\mcdot{};  InstConcl  [L1;[u  /  L2]]\mcdot{}]))
                  THENA  Auto
                  )
                THEN  RWO  "cons\_member"  0
                THEN  Auto
                THEN  Try  ((ParallelOp  (-2)  THEN  Complete  (Auto)))
                THEN  Try  ((ParallelOp  (-1)  THEN  Complete  (Auto)))
                THEN  Try  ((SplitOrHyps  THEN  Auto)))
Home
Index