Step
*
1
of Lemma
FormSafe1-Fvs-subset
1. C : Type
2. ∀[P:Form(C) ⟶ ℙ]
     ((∀name:Atom. P[Vname])
     
⇒ (∀value:C. P[Const(value)])
     
⇒ (∀var:Atom. ∀phi:Form(C).  (P[phi] 
⇒ P[{var | phi}]))
     
⇒ (∀left,right:Form(C).  (P[left] 
⇒ P[right] 
⇒ P[left = right]))
     
⇒ (∀element,set:Form(C).  (P[element] 
⇒ P[set] 
⇒ P[element ∈ set]))
     
⇒ (∀left,right:Form(C).  (P[left] 
⇒ P[right] 
⇒ P[left ∧ right)]))
     
⇒ (∀left,right:Form(C).  (P[left] 
⇒ P[right] 
⇒ P[left ∨ right]))
     
⇒ (∀body:Form(C). (P[body] 
⇒ P[¬(body)]))
     
⇒ (∀var:Atom. ∀body:Form(C).  (P[body] 
⇒ P[∀var. body]))
     
⇒ (∀var:Atom. ∀body:Form(C).  (P[body] 
⇒ P[∃var. body]))
     
⇒ {∀v:Form(C). P[v]})
3. left : Form(C)
4. right : Form(C)
5. ∀vs:Atom List. ((FormSafe1(left) vs) 
⇒ l_subset(Atom;vs;FormFvs(left)))
6. ∀vs:Atom List. ((FormSafe1(right) vs) 
⇒ l_subset(Atom;vs;FormFvs(right)))
7. vs : Atom List
8. (↑null(vs))
∨ (∃x:Atom
    (set-equal(Atom;vs;[x])
    ∧ (((↑FormVar?(left)) ∧ (FormVar-name(left) = x ∈ Atom) ∧ (¬(x ∈ FormFvs(right))))
      ∨ ((↑FormVar?(right)) ∧ (FormVar-name(right) = x ∈ Atom) ∧ (¬(x ∈ FormFvs(left)))))))
⊢ l_subset(Atom;vs;FormFvs(left) ⋃ FormFvs(right))
BY
{ (D -1 THENL [((RW assert_pushdownC (-1) THENA Auto) THEN RWO "-1" 0 THEN Auto); ExRepD]) }
1
1. C : Type
2. ∀[P:Form(C) ⟶ ℙ]
     ((∀name:Atom. P[Vname])
     
⇒ (∀value:C. P[Const(value)])
     
⇒ (∀var:Atom. ∀phi:Form(C).  (P[phi] 
⇒ P[{var | phi}]))
     
⇒ (∀left,right:Form(C).  (P[left] 
⇒ P[right] 
⇒ P[left = right]))
     
⇒ (∀element,set:Form(C).  (P[element] 
⇒ P[set] 
⇒ P[element ∈ set]))
     
⇒ (∀left,right:Form(C).  (P[left] 
⇒ P[right] 
⇒ P[left ∧ right)]))
     
⇒ (∀left,right:Form(C).  (P[left] 
⇒ P[right] 
⇒ P[left ∨ right]))
     
⇒ (∀body:Form(C). (P[body] 
⇒ P[¬(body)]))
     
⇒ (∀var:Atom. ∀body:Form(C).  (P[body] 
⇒ P[∀var. body]))
     
⇒ (∀var:Atom. ∀body:Form(C).  (P[body] 
⇒ P[∃var. body]))
     
⇒ {∀v:Form(C). P[v]})
3. left : Form(C)
4. right : Form(C)
5. ∀vs:Atom List. ((FormSafe1(left) vs) 
⇒ l_subset(Atom;vs;FormFvs(left)))
6. ∀vs:Atom List. ((FormSafe1(right) vs) 
⇒ l_subset(Atom;vs;FormFvs(right)))
7. vs : Atom List
8. x : Atom
9. set-equal(Atom;vs;[x])
10. ((↑FormVar?(left)) ∧ (FormVar-name(left) = x ∈ Atom) ∧ (¬(x ∈ FormFvs(right))))
∨ ((↑FormVar?(right)) ∧ (FormVar-name(right) = x ∈ Atom) ∧ (¬(x ∈ FormFvs(left))))
⊢ l_subset(Atom;vs;FormFvs(left) ⋃ FormFvs(right))
Latex:
Latex:
1.  C  :  Type
2.  \mforall{}[P:Form(C)  {}\mrightarrow{}  \mBbbP{}]
          ((\mforall{}name:Atom.  P[Vname])
          {}\mRightarrow{}  (\mforall{}value:C.  P[Const(value)])
          {}\mRightarrow{}  (\mforall{}var:Atom.  \mforall{}phi:Form(C).    (P[phi]  {}\mRightarrow{}  P[\{var  |  phi\}]))
          {}\mRightarrow{}  (\mforall{}left,right:Form(C).    (P[left]  {}\mRightarrow{}  P[right]  {}\mRightarrow{}  P[left  =  right]))
          {}\mRightarrow{}  (\mforall{}element,set:Form(C).    (P[element]  {}\mRightarrow{}  P[set]  {}\mRightarrow{}  P[element  \mmember{}  set]))
          {}\mRightarrow{}  (\mforall{}left,right:Form(C).    (P[left]  {}\mRightarrow{}  P[right]  {}\mRightarrow{}  P[left  \mwedge{}  right)]))
          {}\mRightarrow{}  (\mforall{}left,right:Form(C).    (P[left]  {}\mRightarrow{}  P[right]  {}\mRightarrow{}  P[left  \mvee{}  right]))
          {}\mRightarrow{}  (\mforall{}body:Form(C).  (P[body]  {}\mRightarrow{}  P[\mneg{}(body)]))
          {}\mRightarrow{}  (\mforall{}var:Atom.  \mforall{}body:Form(C).    (P[body]  {}\mRightarrow{}  P[\mforall{}var.  body]))
          {}\mRightarrow{}  (\mforall{}var:Atom.  \mforall{}body:Form(C).    (P[body]  {}\mRightarrow{}  P[\mexists{}var.  body]))
          {}\mRightarrow{}  \{\mforall{}v:Form(C).  P[v]\})
3.  left  :  Form(C)
4.  right  :  Form(C)
5.  \mforall{}vs:Atom  List.  ((FormSafe1(left)  vs)  {}\mRightarrow{}  l\_subset(Atom;vs;FormFvs(left)))
6.  \mforall{}vs:Atom  List.  ((FormSafe1(right)  vs)  {}\mRightarrow{}  l\_subset(Atom;vs;FormFvs(right)))
7.  vs  :  Atom  List
8.  (\muparrow{}null(vs))
\mvee{}  (\mexists{}x:Atom
        (set-equal(Atom;vs;[x])
        \mwedge{}  (((\muparrow{}FormVar?(left))  \mwedge{}  (FormVar-name(left)  =  x)  \mwedge{}  (\mneg{}(x  \mmember{}  FormFvs(right))))
            \mvee{}  ((\muparrow{}FormVar?(right))  \mwedge{}  (FormVar-name(right)  =  x)  \mwedge{}  (\mneg{}(x  \mmember{}  FormFvs(left)))))))
\mvdash{}  l\_subset(Atom;vs;FormFvs(left)  \mcup{}  FormFvs(right))
By
Latex:
(D  -1  THENL  [((RW  assert\_pushdownC  (-1)  THENA  Auto)  THEN  RWO  "-1"  0  THEN  Auto);  ExRepD])
Home
Index