pub enum SurfaceExpr {
Show 25 variants
Sort(SortKind),
Var(String),
App(Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>),
Lam(Vec<Binder>, Box<Located<SurfaceExpr>>),
Pi(Vec<Binder>, Box<Located<SurfaceExpr>>),
Let(String, Option<Box<Located<SurfaceExpr>>>, Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>),
Lit(Literal),
Ann(Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>),
Hole,
Proj(Box<Located<SurfaceExpr>>, String),
If(Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>),
Match(Box<Located<SurfaceExpr>>, Vec<MatchArm>),
Do(Vec<DoAction>),
Have(String, Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>),
Suffices(String, Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>),
Show(Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>),
NamedArg(Box<Located<SurfaceExpr>>, String, Box<Located<SurfaceExpr>>),
AnonymousCtor(Vec<Located<SurfaceExpr>>),
ListLit(Vec<Located<SurfaceExpr>>),
Tuple(Vec<Located<SurfaceExpr>>),
Return(Box<Located<SurfaceExpr>>),
StringInterp(Vec<StringPart>),
Range(Option<Box<Located<SurfaceExpr>>>, Option<Box<Located<SurfaceExpr>>>),
ByTactic(Vec<Located<TacticRef>>),
Calc(Vec<CalcStep>),
}Expand description
Surface-level expression (before elaboration).
Variants§
Sort(SortKind)
Sort: Type, Prop, Type u, Sort u
Var(String)
Variable reference
App(Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>)
Application: f a
Lam(Vec<Binder>, Box<Located<SurfaceExpr>>)
Lambda: fun (x : alpha) => body or lambda (x : alpha), body
Pi(Vec<Binder>, Box<Located<SurfaceExpr>>)
Pi type: forall (x : alpha), beta or (x : alpha) -> beta
Let(String, Option<Box<Located<SurfaceExpr>>>, Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>)
Let binding: let x : alpha := v in body
Lit(Literal)
Literal value
Ann(Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>)
Explicit type annotation: (e : tau)
Hole
Placeholder: _
Proj(Box<Located<SurfaceExpr>>, String)
Projection: e.n
If(Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>)
If-then-else: if c then t else e
Match(Box<Located<SurfaceExpr>>, Vec<MatchArm>)
Match expression: match e with | pat => rhs | …
Do(Vec<DoAction>)
Do notation: do { … }
Have(String, Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>)
Have expression: have h : T := proof; body
Suffices(String, Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>)
Suffices expression: suffices h : T by tactic; body
Show(Box<Located<SurfaceExpr>>, Box<Located<SurfaceExpr>>)
Show expression: show T from expr
NamedArg(Box<Located<SurfaceExpr>>, String, Box<Located<SurfaceExpr>>)
Named argument application: f (x := e)
AnonymousCtor(Vec<Located<SurfaceExpr>>)
Anonymous constructor: (langle) a, b, c (rangle)
ListLit(Vec<Located<SurfaceExpr>>)
List literal: [1, 2, 3]
Tuple(Vec<Located<SurfaceExpr>>)
Tuple: (a, b) or (a, b, c)
Return(Box<Located<SurfaceExpr>>)
Return expression (used in do notation): return e
StringInterp(Vec<StringPart>)
String interpolation: s!"hello {name}"
Range(Option<Box<Located<SurfaceExpr>>>, Option<Box<Located<SurfaceExpr>>>)
Range expression: a..b, ..b, a..
ByTactic(Vec<Located<TacticRef>>)
By-tactic expression: by tactic1; tactic2; ...
Calc(Vec<CalcStep>)
Calc expression: calculational proof
Implementations§
Source§impl SurfaceExpr
impl SurfaceExpr
Trait Implementations§
Source§impl Clone for SurfaceExpr
impl Clone for SurfaceExpr
Source§fn clone(&self) -> SurfaceExpr
fn clone(&self) -> SurfaceExpr
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more