(def-language fts-language
    (embedded-language det-state-machines-with-start)
    (constants 
      (secure%state (state prop))))


(def-theory fts-theory 
    (language fts-language)
    (component-theories det-state-machines-with-start))


(def-theorem fun-sec 
    "secure%state(s_init) 
            and
          forall(s:state,a:action, 
	secure%state(s) and #(next(s,a))
              implies secure%state(next(s,a)))
      implies forall(s:state, accessible(s) implies secure%state(s)) "
    (theory fts-theory)
    (proof "$theories/state-machines/proofs/fun-sec.t"))


(def-theory fts+invariant 
    (component-theories fts-theory)
    (axioms
      (fts+init-secure "secure%state(s_init)" rewrite)
      (fts+next-secure
            "forall(s:state,a:action, 
	secure%state(s) and #(next(s,a))
              implies secure%state(next(s,a)))")))
            


(def-theorem fts+secure 
    "forall(s:state, accessible(s) implies secure%state(s))"
    (theory fts+invariant)
    (usages transportable-macete)
    (proof "$theories/state-machines/proofs/fts+secure.t.z"))
    
    
(pop-current-theory)
(pop-current-syntax)