inductive
Isotope.STm
{Arity : Type u_1}
[I : Args Arity]
(L : STm.Lang Arity)
(A : Type uatom)
:
Type (max (max (max (max u_1 u_2) u_3) u_4) uatom)
- sym {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A : Type uatom} : A → STm L A
- const {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A : Type uatom} : L.Val → STm L A
- op {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A : Type uatom} {arity : Arity} : L.Op arity → (UArgs.Ix arity → STm L A) → STm L A
Instances For
Equations
- (Isotope.STm.Lang.Tag.val a).arity? = 0
- (Isotope.STm.Lang.Tag.op o).arity? = ↑arity
Instances For
inductive
Isotope.STm.Lang.Tag?
{Arity : Type u_1}
[I : Args Arity]
(L : Lang Arity)
(A : Type uatom)
:
Type (max (max (max u_1 u_3) u_4) uatom)
- sym {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A : Type uatom} (a : A) : L.Tag? A
- val {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A : Type uatom} (c : L.Val) : L.Tag? A
- op {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A : Type uatom} {arity : Arity} (o : L.Op arity) : L.Tag? A
Instances For
def
Isotope.STm.tag?
{Arity : Type u_1}
[I : Args Arity]
{L : Lang Arity}
{A : Type u_5}
(e : STm L A)
:
Equations
- (Isotope.STm.const c).tag? = some (Isotope.STm.Lang.Tag.val c)
- (Isotope.STm.op o a).tag? = some (Isotope.STm.Lang.Tag.op o)
- x✝.tag? = none
Instances For
@[implicit_reducible]
instance
Isotope.STm.instCoeSym
{Arity : Type u_1}
[I : Args Arity]
{L : Lang Arity}
{A : Type u_5}
:
Equations
- Isotope.STm.instCoeSym = { coe := Isotope.STm.sym }
@[implicit_reducible]
instance
Isotope.STm.instCoeVal
{Arity : Type u_1}
[I : Args Arity]
{L : Lang Arity}
{A : Type u_5}
:
Equations
- Isotope.STm.instCoeVal = { coe := Isotope.STm.const }
def
Isotope.STm.mapSym
{Arity : Type u_1}
[I : Args Arity]
{L : Lang Arity}
{A : Type u_5}
{A' : Type u_6}
(f : A → A')
:
Equations
- Isotope.STm.mapSym f (Isotope.STm.sym a) = Isotope.STm.sym (f a)
- Isotope.STm.mapSym f (Isotope.STm.const c) = Isotope.STm.const c
- Isotope.STm.mapSym f (Isotope.STm.op o es) = Isotope.STm.op o fun (i : Isotope.UArgs.Ix arity) => Isotope.STm.mapSym f (es i)
Instances For
def
Isotope.STm.substSym
{Arity : Type u_1}
[I : Args Arity]
{L : Lang Arity}
{A₁ : Type u_5}
{A₂ : Type u_6}
(f : A₁ → STm L A₂)
:
Equations
- Isotope.STm.substSym f (Isotope.STm.sym a) = f a
- Isotope.STm.substSym f (Isotope.STm.const c) = Isotope.STm.const c
- Isotope.STm.substSym f (Isotope.STm.op o es) = Isotope.STm.op o fun (i : Isotope.UArgs.Ix arity) => Isotope.STm.substSym f (es i)
Instances For
instance
Isotope.STm.instLawfulMonad
{Arity : Type u_5}
[I : Args Arity]
{L : Lang Arity}
:
LawfulMonad (STm L)