Step
*
1
1
of Lemma
fset-find_wf
1. T : Type
2. eq : EqDecider(T)
3. P : T ⟶ 𝔹
4. s : Base
5. s1 : Base
6. s = s1 ∈ pertype(λx,y. ((x ∈ T List) ∧ (y ∈ T List) ∧ set-equal(T;x;y)))
7. s ∈ T List
8. s1 ∈ T List
9. set-equal(T;s;s1)
10. ∃x:T. (x ∈ s ∧ (↑(P x)))
11. ∀x,y:T.  (x ∈ s 
⇒ y ∈ s 
⇒ (↑(P x)) 
⇒ (↑(P y)) 
⇒ (x = y ∈ T))
⊢ hd(filter(P;s)) = hd(filter(P;s1)) ∈ {x:T| x ∈ s ∧ (↑(P x))} 
BY
{ (((Assert s = s1 ∈ fset(T) BY (EqTypeCD THEN Auto)) THEN DupHyp (-3))
   THEN (RWO "-2" (-1) THENA Auto)
   THEN DupHyp (-3)
   THEN (RWO "-3" (-1) THENA Auto)
   THEN ∀h:hyp. (Unfold `fset-member` h THEN (RW assert_pushdownC h THENA Auto)) ) }
1
1. T : Type
2. eq : EqDecider(T)
3. P : T ⟶ 𝔹
4. s : Base
5. s1 : Base
6. s = s1 ∈ pertype(λx,y. ((x ∈ T List) ∧ (y ∈ T List) ∧ set-equal(T;x;y)))
7. s ∈ T List
8. s1 ∈ T List
9. set-equal(T;s;s1)
10. ∃x:T. ((x ∈ s) ∧ (↑(P x)))
11. ∀x,y:T.  ((x ∈ s) 
⇒ (y ∈ s) 
⇒ (↑(P x)) 
⇒ (↑(P y)) 
⇒ (x = y ∈ T))
12. s = s1 ∈ fset(T)
13. ∃x:T. ((x ∈ s1) ∧ (↑(P x)))
14. ∀x,y:T.  ((x ∈ s1) 
⇒ (y ∈ s1) 
⇒ (↑(P x)) 
⇒ (↑(P y)) 
⇒ (x = y ∈ T))
⊢ hd(filter(P;s)) = hd(filter(P;s1)) ∈ {x:T| x ∈ s ∧ (↑(P x))} 
Latex:
Latex:
1.  T  :  Type
2.  eq  :  EqDecider(T)
3.  P  :  T  {}\mrightarrow{}  \mBbbB{}
4.  s  :  Base
5.  s1  :  Base
6.  s  =  s1
7.  s  \mmember{}  T  List
8.  s1  \mmember{}  T  List
9.  set-equal(T;s;s1)
10.  \mexists{}x:T.  (x  \mmember{}  s  \mwedge{}  (\muparrow{}(P  x)))
11.  \mforall{}x,y:T.    (x  \mmember{}  s  {}\mRightarrow{}  y  \mmember{}  s  {}\mRightarrow{}  (\muparrow{}(P  x))  {}\mRightarrow{}  (\muparrow{}(P  y))  {}\mRightarrow{}  (x  =  y))
\mvdash{}  hd(filter(P;s))  =  hd(filter(P;s1))
By
Latex:
(((Assert  s  =  s1  BY  (EqTypeCD  THEN  Auto))  THEN  DupHyp  (-3))
  THEN  (RWO  "-2"  (-1)  THENA  Auto)
  THEN  DupHyp  (-3)
  THEN  (RWO  "-3"  (-1)  THENA  Auto)
  THEN  \mforall{}h:hyp.  (Unfold  `fset-member`  h  THEN  (RW  assert\_pushdownC  h  THENA  Auto))  )
Home
Index