module PrettyPrinter.Console.RedRules where
open import Agda.Builtin.String
open import Text.Printf
open import CC.Reduction
print-red-rule : ∀ {M M′ μ μ′ pc} → M ∣ μ ∣ pc —→ M′ ∣ μ′ → String
print-red-rule (ξ M→M′) = printf "ξ(%s)" (print-red-rule M→M′)
print-red-rule ξ-err = "ξ-err"
print-red-rule (prot-val _) = "prot-val"
print-red-rule (prot-ctx M→M′) = printf "prot-ctx(%s)" (print-red-rule M→M′)
print-red-rule prot-err = "prot-err"
print-red-rule (β _) = "β"
print-red-rule β-if-true = "β-if-true"
print-red-rule β-if-false = "β-if-false"
print-red-rule (β-let _) = "β-let"
print-red-rule ref-static = "ref-static"
print-red-rule (ref?-ok _) = "ref?-ok"
print-red-rule (ref?-fail _) = "ref?-fail"
print-red-rule (ref _ _) = "ref"
print-red-rule (deref _) = "deref"
print-red-rule assign-static = "assign-static"
print-red-rule (assign?-ok _) = "assign?-ok"
print-red-rule (assign?-fail _) = "assign?-fail"
print-red-rule (assign _) = "assign"
print-red-rule (cast _ _ _) = "cast"
print-red-rule (if-cast-true _) = "if-cast-true"
print-red-rule (if-cast-false _) = "if-cast-false"
print-red-rule (fun-cast _ _ _) = "fun-cast"
print-red-rule (deref-cast _ _) = "deref-cast"
print-red-rule (assign?-cast _ _) = "assign?-cast"
print-red-rule (assign-cast _ _ _) = "assign-cast"
print-red-rule (β-cast-pc _) = "β-cast-pc"