package Ġm ce . pass . builtin Ċ Ċ import Ġm ce . ast . core . V Term Ċ import Ġm ce . ast . pack . Command Ċ import Ġm ce . pass . Normalizer Ċ import Ġm ce . pass . builtin . src .* Ċ import Ġm ce . pass . builtin . src . byte _ array . size Ġas Ġbyte _ array _ size Ċ import Ġm ce . pass . builtin . src . int . to _ string Ġas Ġint _ to _ string Ċ import Ġm ce . pass . builtin . src . int _ array . size Ġas Ġint _ array _ size Ċ import Ġm ce . pass . builtin . src . list . size Ġas Ġlist _ size Ċ import Ġm ce . pass . builtin . src . long _ array . size Ġas Ġlong _ array _ size Ċ import Ġm ce . pass . builtin . src . string .` + ` Ġas Ġstring _ concat Ċ Ċ val Ġbuiltins : ĠMap < String , ĠBuiltin Def > Ġ= ĠlistOf ( ĊĠĠĠ Ġidentity , ĊĠĠĠ Ġ` + `, ĊĠĠĠ Ġ`- `, ĊĠĠĠ Ġ` ÃĹ `, ĊĠĠĠ Ġ` Ã · `, ĊĠĠĠ Ġ`% `, ĊĠĠĠ Ġ` âī ¡ `, ĊĠĠĠ Ġ` âī ¢ `, ĊĠĠĠ Ġint _ to _ string , ĊĠĠĠ Ġstring _ concat , ĊĠĠĠ Ġbyte _ array _ size , ĊĠĠĠ Ġint _ array _ size , ĊĠĠĠ Ġlong _ array _ size , ĊĠĠĠ Ġlist _ size , Ċ ). associate By Ġ{ Ġit . name Ġ} Ċ Ċ val Ġcom mut er : ĠComparator < V Term > Ġ= ĠComparator Ġ{ Ġterm 1 , Ġterm 2 Ġ-> Ġterm 1 . hash () Ġcompare To Ġterm 2 . hash () Ġ} Ċ Ċ abstract Ġclass ĠBuiltin Def ( val Ġname : ĠString ) Ġ{ ĊĠĠĠ Ġabstract Ġfun ĠNormal izer . arguments (): ĠList < Lazy < V Term >> ĊĊĠĠĠ Ġabstract Ġfun ĠNormal izer . eval OrNull (): ĠV Term ? ĊĊĠĠĠ Ġfun ĠNormal izer . eval (): ĠV Term Ġ= Ġeval OrNull () Ġ?: ĠV Term . Def ( name , Ġarguments ()) ĊĊĠĠĠ Ġabstract Ġfun Ġpack (): ĠList < Command > Ċ } Ċ Ċ abstract Ġclass ĠBuiltin Def 1 ( name : ĠString ) Ġ: ĠBuiltin Def ( name ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠNormal izer . arguments (): ĠList < Lazy < V Term >> Ġ= ĠlistOf ( lazy Of ( lookup ( size Ġ- Ġ 1 ))) ĊĊĠĠĠ Ġoverride Ġfun ĠNormal izer . eval OrNull (): ĠV Term ? Ġ= Ġeval ( lookup ( size Ġ- Ġ 1 )) ĊĊĠĠĠ Ġabstract Ġfun Ġeval ( a : ĠV Term ): ĠV Term ? Ċ } Ċ Ċ abstract Ġclass ĠBuiltin Def 2 ( name : ĠString ) Ġ: ĠBuiltin Def ( name ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠNormal izer . arguments (): ĠList < Lazy < V Term >> Ġ= ĠlistOf ( lazy Of ( lookup ( size Ġ- Ġ 2 )), Ġlazy Of ( lookup ( size Ġ- Ġ 1 ))) ĊĊĠĠĠ Ġoverride Ġfun ĠNormal izer . eval OrNull (): ĠV Term ? Ġ= Ġeval ( lookup ( size Ġ- Ġ 2 ), Ġlookup ( size Ġ- Ġ 1 )) ĊĊĠĠĠ Ġabstract Ġfun Ġeval ( a : ĠV Term , Ġb : ĠV Term ): ĠV Term ? Ċ } Ċ Ċ abstract Ġclass ĠBuiltin Def 3 ( name : ĠString ) Ġ: ĠBuiltin Def ( name ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠNormal izer . arguments (): ĠList < Lazy < V Term >> Ġ= ĠlistOf ( lazy Of ( lookup ( size Ġ- Ġ 3 )), Ġlazy Of ( lookup ( size Ġ- Ġ 2 )), Ġlazy Of ( lookup ( size Ġ- Ġ 1 ))) ĊĊĠĠĠ Ġoverride Ġfun ĠNormal izer . eval OrNull (): ĠV Term ? Ġ= Ġeval ( lookup ( size Ġ- Ġ 3 ), Ġlookup ( size Ġ- Ġ 2 ), Ġlookup ( size Ġ- Ġ 1 )) ĊĊĠĠĠ Ġabstract Ġfun Ġeval ( a : ĠV Term , Ġb : ĠV Term , Ġc : ĠV Term ): ĠV Term ? Ċ } Ċ