Theory utp_sequent

section ‹ Sequent Calculus ›

theory utp_sequent
  imports utp_pred_laws
begin

definition sequent :: " upred   upred  bool" (infixr "" 15) where
[upred_defs]: "sequent P Q = (Q  P)"

abbreviation sequent_triv (" _" [15] 15) where " P  (true  P)"

translations
  " P" <= "true  P"

lemma sTrue: "P  true"
  by pred_auto

lemma sAx: "P  P"
  by pred_auto

lemma sNotI: "Γ  P  false  Γ  ¬ P"
  by pred_auto

lemma sConjI: " Γ  P; Γ  Q   Γ  P  Q"
  by pred_auto

lemma sImplI: " (Γ  P)  Q   Γ  (P  Q)"
  by pred_auto

end