Step * 2 of Lemma msg-body-cmp_wf


1. Name ─→ Type
2. hdrs Name List
3. mcmp hdr:Name ─→ comparison(f hdr)
4. {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} ) ⊆comparison({b:{m:Message(f)| (msg-header(m) ∈ hdr\000Cs)} 
                                                                         (list-index-cmp(NameDeq;hdrs;λm.msg-header(m)) 
                                                                          
                                                                          b)
                                                                         0
                                                                         ∈ ℤ)
BY
(BLemma `subtype_rel_comparison`
   THEN Auto
   THEN (D 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