Fixpoint3.Ast.Ram.RamTerm
enum RamTermSourcecase Lit(Boxed, Type)case ProvMax(Vector[(RowVar, Int32)])case RowLoad(RowVar, Int32, Type, RelSym)case Meet(Boxed -> (Boxed -> Boxed), RamTerm, (RowVar, RelSym), Type)case App1(Boxed -> Boxed, RamTerm, Type)case App2(Boxed -> (Boxed -> Boxed), RamTerm, RamTerm, Type)case App3(Boxed -> (Boxed -> (Boxed -> Boxed)), RamTerm, RamTerm, RamTerm, Type)case App4(Boxed -> (Boxed -> (Boxed -> (Boxed -> Boxed))), RamTerm, RamTerm, RamTerm, RamTerm, Type)case App5(Boxed -> (Boxed -> (Boxed -> (Boxed -> (Boxed -> Boxed)))), RamTerm, RamTerm, RamTerm, RamTerm, RamTerm, Type)Represents a Relational Algebra Machine (RAM) term.
Lit(val, id) represents the literal val.
ProvMax([(rv1, i1), (rv2, i2), (rv3, i3), ...]) where represents computing
max(rv1[i1], rv2[i2], rv3[i3], ...).
RowLoad(x, i, type, relSym) represents an index into the tuple
bound to the local variable x, i.e. x[i]. x is a tuple
from relSym.
Meet(meet, term, (rv, relSym), id) represents the meet of term with the lattice
element of rv.
App1(f, term1) represents f(term1).
App2(f, term1, term2) represents f(term1, term2).
App3(f, term1, term2, term3) represents f(term1, term2, term3).
App4(f, term1, term2, term3, term4) represents f(term1, term2, term3, term4).
App5(f, term1, term2, term3, term4, term5) represents f(term1, term2, term3, term4, term4).