Step
*
2
of Lemma
msg-body-cmp_wf
1. f : Name ─→ Type
2. hdrs : Name List
3. mcmp : hdr:Name ─→ comparison(f hdr)
4. a : {x:Message(f)| (msg-header(x) ∈ hdrs)} @i
5. (λm1,m2. (mcmp msg-header(m1) msg-body(m1) msg-body(m2)))
= (λm1,m2. (mcmp msg-header(m1) msg-body(m1) msg-body(m2)))
∈ comparison({m:Message(f)| msg-header(m) = msg-header(a) ∈ Name} )
⊢ comparison({m:Message(f)| msg-header(m) = msg-header(a) ∈ Name} ) ⊆r comparison({b:{m:Message(f)| (msg-header(m) ∈ hdr\000Cs)} | 
                                                                         (list-index-cmp(NameDeq;hdrs;λm.msg-header(m)) 
                                                                          a 
                                                                          b)
                                                                         = 0
                                                                         ∈ ℤ} )
BY
{ (BLemma `subtype_rel_comparison`
   THEN Auto
   THEN (D 0 THENA Auto)
   THEN Repeat (DSetVars)
   THEN MemTypeCD
   THEN Auto
   THEN (RWO "list-index-cmp-zero" (-1) THENA Auto)
   THEN Reduce (-1)
   THEN Auto) }
Latex:
Latex:
1.  f  :  Name  {}\mrightarrow{}  Type
2.  hdrs  :  Name  List
3.  mcmp  :  hdr:Name  {}\mrightarrow{}  comparison(f  hdr)
4.  a  :  \{x:Message(f)|  (msg-header(x)  \mmember{}  hdrs)\}  @i
5.  (\mlambda{}m1,m2.  (mcmp  msg-header(m1)  msg-body(m1)  msg-body(m2)))
=  (\mlambda{}m1,m2.  (mcmp  msg-header(m1)  msg-body(m1)  msg-body(m2)))
\mvdash{}  comparison(\{m:Message(f)|  msg-header(m)  =  msg-header(a)\}  )
        \msubseteq{}r  comparison(\{b:\{m:Message(f)|  (msg-header(m)  \mmember{}  hdrs)\}  | 
                                      (list-index-cmp(NameDeq;hdrs;\mlambda{}m.msg-header(m))  a  b)  =  0\}  )
By
Latex:
(BLemma  `subtype\_rel\_comparison`
  THEN  Auto
  THEN  (D  0  THENA  Auto)
  THEN  Repeat  (DSetVars)
  THEN  MemTypeCD
  THEN  Auto
  THEN  (RWO  "list-index-cmp-zero"  (-1)  THENA  Auto)
  THEN  Reduce  (-1)
  THEN  Auto)
Home
Index