let tm_match sc returns_ brs = Tm_Match {sc; returns_; brs}
let tm_match sc returns_ brs =
Tm_Match ({ sc = sc; returns_ = returns_; brs = brs })
Pulse.Syntax.Builder.fst.checked
Pulse.Syntax.fst.checked prims.fst.checked FStar.Pervasives.fsti.checked
Pulse.Syntax.Builder.fst
Pulse.Syntax.Base.term FStar.Pervasives.Native.option Pulse.Syntax.Base.vprop Prims.list FStar.Pervasives.Native.tuple2 Pulse.Syntax.Base.pattern Pulse.Syntax.Base.st_term Pulse.Syntax.Base.Tm_Match Pulse.Syntax.Base.Mkst_term'__Tm_Match__payload Pulse.Syntax.Base.st_term'
module Pulse.Syntax.Builder
open Pulse.Syntax

let pat_var s = Pat_Var s
let pat_const c = Pat_Constant c
let pat_cons fv vs = Pat_Cons fv vs

let tm_return ctag insert_eq term = Tm_Return { ctag; insert_eq; term }
let tm_abs b q ascription body = Tm_Abs { b; q; ascription; body }
let tm_stapp head arg_qual arg = Tm_STApp { head; arg_qual; arg }
let tm_bind binder head body = Tm_Bind { binder; head; body }
let tm_totbind binder head body = Tm_TotBind { binder; head; body }
val tm_match : sc: Pulse.Syntax.Base.term ->
    returns_: FStar.Pervasives.Native.option Pulse.Syntax.Base.vprop ->
    brs: Prims.list (Pulse.Syntax.Base.pattern * Pulse.Syntax.Base.st_term)
  -> Pulse.Syntax.Base.st_term'

    sc: Pulse.Syntax.Base.term ->
    returns_: FStar.Pervasives.Native.option Pulse.Syntax.Base.vprop ->
    brs: Prims.list (Pulse.Syntax.Base.pattern * Pulse.Syntax.Base.st_term)
  -> Pulse.Syntax.Base.st_term'