Theory PrettyProgs

(*
 * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
 *
 * SPDX-License-Identifier: BSD-2-Clause
 *)

section "Prettier Printing for Programs"

theory PrettyProgs
imports "Simpl.Vcg"
begin

syntax (output)
  "_Assign"      :: "'b => 'b => ('a,'p,'f) com"    ((2_ :==/ _) [30, 30] 23)

  "_seq"::"('s,'p,'f) com  ('s,'p,'f) com  ('s,'p,'f) com" (‹_;;//_› [20, 21] 20)

  "_While_inv"   :: "'a bexp => 'a assn => bdy => ('a,'p,'f) com"
        ((0WHILE (_)//INV (_)//_)  [25, 0, 81] 71)

  "_Do" :: "('a,'p,'f) com  bdy" (DO//  (_)//OD [0] 1000)

  "_Cond"        :: "'a bexp => ('a,'p,'f) com => ('a,'p,'f) com => ('a,'p,'f) com"
        ((0IF _ THEN//  (_)//ELSE//  (_)//FI) [0, 0, 0] 71)
  "_Cond_no_else":: "'a bexp => ('a,'p,'f) com => ('a,'p,'f) com"
        ((0IF _ THEN//  (_)//FI) [0, 0] 71)

  "_Try_Catch":: "('a,'p,'f) com ('a,'p,'f) com  ('a,'p,'f) com"
        ((0TRY//  (_)//CATCH _//END)  [0,0] 71)

end