Fixpoint3.Ast.ExecutableRam.RamTerm
enum RamTermSourcecase Lit(Int64, Boxed)case ProvMax(Vector[(Int32, Int32)])case LoadFromTuple(Int32, Int32, UnifiedTypePos)case LoadLatVar(Int32, UnifiedTypePos)case Meet(Boxed -> (Boxed -> Boxed), RamTerm, RamTerm, UnifiedTypePos)case App1(Boxed -> Boxed, RamTerm, UnifiedTypePos)case App2(Boxed -> (Boxed -> Boxed), RamTerm, RamTerm, UnifiedTypePos)case App3(Boxed -> (Boxed -> (Boxed -> Boxed)), RamTerm, RamTerm, RamTerm, UnifiedTypePos)case App4(Boxed -> (Boxed -> (Boxed -> (Boxed -> Boxed))), RamTerm, RamTerm, RamTerm, RamTerm, UnifiedTypePos)case App5(Boxed -> (Boxed -> (Boxed -> (Boxed -> (Boxed -> Boxed)))), RamTerm, RamTerm, RamTerm, RamTerm, RamTerm, UnifiedTypePos)Represents a Relational Algebra Machine (RAM) term.
Lit(rep, val) represents the literal val and its unboxed version, rep.
ProvMax([(memPos1, i1), (memPos2, i2), ...]) represents
max(memory[memPos1][i1], memory[memPos2][i2], ...)
LoadFromTuple(memPos, i, unboxingInfo) represents an index from the tuple stored at postion
memPos, i.e. memory[memPos][i]. Can be boxed using unboxingInfo.
LoadLatVar(memPos, unboxingInfo) represents loading the lattice element from the tuple stored
at memPos. Can be unboxed using unboxingInfo.
Meet(meet, term1, term2, unboxingInfo) represents the meet of term1 with term2
Can be unboxed using unboxingInfo.
App1(f, term1, ) represents f(term1).
Can be unboxed using unboxingInfo.
App2(f, term1, term2) represents f(term1, term2).
Can be unboxed using unboxingInfo.
App3(f, term1, term2, term3) represents f(term1, term2, term3).
Can be unboxed using unboxingInfo.
App4(f, term1, term2, term3, term4) represents f(term1, term2, term3, term4).
Can be unboxed using unboxingInfo.
App5(f, term1, term2, term3, term4, term5) represents f(term1, term2, term3, term4, term4).
Can be unboxed using unboxingInfo.