Hello,

This is probably a simple question, but I couldn't find a way of doing it...

I am proving this subgoal:

   seq IN
   setSeqLast
     (setSeqConcat
        (setSetConcat
           (seqSetConcat (CombBlk {CA (SignalLink (P_s c') s0)} Empty)
              (sm c'))
           (seqSetConcat
            (CombBlk {CA (SignalLink (P_s c0) (P_f c'))} Empty) (sm c0)))
        (Link {CA (SignalLink s (P_f c0))} Empty)) ==>
   ?hwa. seq = Link hwa Empty

this looks quite ugly, but it can be "abstracted" to:

     seq IN
     setSeqLast
       (setSeqConcat
          setOfTraces
          (Link {CA (SignalLink s (P_f c0))} Empty)) ==>
     ?hwa. seq = Link hwa Empty

I have a couple of results that should be enough to solve the proof, the 
main one being:

setSeqLastSetSeqConcat |-
   ~(seq = Empty) /\ ~(seqSet = {}) ==>
      (setSeqLast (setSeqConcat seqSet seq) = {seqLast seq})

under valid assumptions, this should reduce the goal to something like:
     seq IN
     {seqLast (Link {CA (SignalLink s (P_f c0))} Empty))} ==>
     ?hwa. seq = Link hwa Empty

and from there it is possible to finish it.

The problem is how to "add" the assumptions that setSeqLastSetSeqConcat 
needs (i.e., that the setOfTraces is not the empty set). In this 
direction, I have some results that would provide what is needed (for 
example: I have a thm telling me: !c. ~((sm c) = {})). My problem here 
is that I don't know how to tell HOL how to use this theorems.

I tried with RW_TAC std_ss [all pertinent thms here], but nothing 
happened (I think it was not possible for HOL to infer what I wanted to 
do). I also tried with ACCEPT_TAC, but doesn't seem to be what I need 
(as none of these theorems will solve the goal just by themselves).

What I need is a way of adding assumptions to the proof. For example, I 
think it would be necessary to add that ~((sm c) = {}) to the 
assumptions (knowing this is valid assumption given the result I 
mentioned before). With this, I think I should be getting something like:

     seq IN
     setSeqLast
       (setSeqConcat
        (setSetConcat
           (seqSetConcat (CombBlk {CA (SignalLink (P_s c') s0)} Empty)
              (sm c'))
           (seqSetConcat
            (CombBlk {CA (SignalLink (P_s c0) (P_f c'))} Empty) (sm c0)))
          (Link {CA (SignalLink s (P_f c0))} Empty)) ==>
     ?hwa. seq = Link hwa Empty
    ----------------------------------------------------------
    1 ~((sm c') = {})
    2 ~((sm c0) = {})
    3 ...
    .
    .
    .
    n ~((setSetConcat
         (seqSetConcat (CombBlk {CA (SignalLink (P_s c') s0)} Empty)
            (sm c'))
         (seqSetConcat
          (CombBlk {CA (SignalLink (P_s c0) (P_f c'))} Empty) (sm c0)))
        = {})

with this additional hypothesis, I think a RW_TAC std_ss 
[setSeqLastSetSeqConcat] should get me where I want to go...

Thank you,

Juan

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
hol-info mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to