@@ -51,11 +51,11 @@ def lexprToCBMC (expr : Strata.C_Simp.Expression.Expr) (functionName : String) :
5151 let cfg := CBMCConfig.empty
5252 match expr with
5353 | .app (.app (.op op _) (.fvar varName _)) (.const value _) =>
54- mkBinaryOp (opToStr op) "2" functionName (config := cfg)
54+ mkBinaryOp (opToStr op.name ) "2" functionName (config := cfg)
5555 (Json.mkObj [
5656 ("id" , "symbol" ),
5757 ("namedSub" , Json.mkObj [
58- ("#base_name" , Json.mkObj [("id" , varName)]),
58+ ("#base_name" , Json.mkObj [("id" , varName.name )]),
5959 ("#id_class" , Json.mkObj [("id" , "1" )]),
6060 ("#lvalue" , Json.mkObj [("id" , "1" )]),
6161 ("#source_location" , mkSourceLocation "from_andrew.c" functionName "2" cfg),
@@ -96,8 +96,8 @@ def createContractSymbolFromAST (func : Strata.C_Simp.Function) : CBMCSymbol :=
9696 ])
9797 }
9898
99- let sourceLocation := mkSourceLocation "from_andrew.c" func.name "2"
100- let ensuresSourceLocation := mkSourceLocation "from_andrew.c" func.name "3"
99+ let sourceLocation := mkSourceLocation "from_andrew.c" func.name.name "2"
100+ let ensuresSourceLocation := mkSourceLocation "from_andrew.c" func.name.name "3"
101101
102102 let mathFunctionType := Json.mkObj [
103103 ("id" , "mathematical_function" ),
@@ -128,7 +128,7 @@ def createContractSymbolFromAST (func : Strata.C_Simp.Function) : CBMCSymbol :=
128128 ]),
129129 ("sub" , Json.arr #[
130130 parameterTuple,
131- lexprToCBMC func.pre func.name
131+ lexprToCBMC func.pre func.name.name
132132 ])
133133 ]
134134
@@ -140,15 +140,15 @@ def createContractSymbolFromAST (func : Strata.C_Simp.Function) : CBMCSymbol :=
140140 ]),
141141 ("sub" , Json.arr #[
142142 parameterTuple,
143- lexprToCBMC func.post func.name
143+ lexprToCBMC func.post func.name.name
144144 ])
145145 ]
146146
147147 let parameters := Json.mkObj [
148148 ("id" , "" ),
149149 ("sub" , Json.arr #[
150- mkParameter "x" func.name "1" cfg,
151- mkParameter "y" func.name "1" cfg
150+ mkParameter "x" func.name.name "1" cfg,
151+ mkParameter "y" func.name.name "1" cfg
152152 ])
153153 ]
154154
@@ -172,13 +172,13 @@ def createContractSymbolFromAST (func : Strata.C_Simp.Function) : CBMCSymbol :=
172172 ]
173173
174174 {
175- baseName := func.name,
175+ baseName := func.name.name ,
176176 isProperty := true ,
177177 location := location,
178178 mode := "C" ,
179179 module := "from_andrew" ,
180180 name := s! "contract::{ func.name} " ,
181- prettyName := func.name,
181+ prettyName := func.name.name ,
182182 prettyType := "signed int (signed int x, signed int y)" ,
183183 type := contractType,
184184 value := Json.mkObj [("id" , "nil" )]
@@ -188,7 +188,7 @@ def getParamJson(func: Strata.C_Simp.Function) : Json :=
188188 let cfg := CBMCConfig.empty
189189 Json.mkObj [
190190 ("id" , "" ),
191- ("sub" , Json.arr (func.inputs.map (λ i => mkParameter i.fst func.name "1" cfg)).toArray)
191+ ("sub" , Json.arr (func.inputs.map (λ i => mkParameter i.fst.name func.name .name "1" cfg)).toArray)
192192 ]
193193
194194def exprToJson (e : Strata.C_Simp.Expression.Expr) (loc: SourceLoc) : Json :=
@@ -203,7 +203,7 @@ def exprToJson (e : Strata.C_Simp.Expression.Expr) (loc: SourceLoc) : Json :=
203203 | .fvar varName _ => mkLvalueSymbol s! "{ loc.functionName} ::{ varName} " loc.lineNum loc.functionName cfg
204204 | .const value _ => mkConstant value "10" (mkSourceLocation "from_andrew.c" loc.functionName loc.lineNum cfg) cfg
205205 | _ => exprToJson right loc
206- mkBinaryOp (opToStr op) loc.lineNum loc.functionName leftJson rightJson cfg
206+ mkBinaryOp (opToStr op.name ) loc.lineNum loc.functionName leftJson rightJson cfg
207207 | .const n _ =>
208208 mkConstant n "10" (mkSourceLocation "from_andrew.c" loc.functionName "14" cfg) cfg
209209 | _ => panic! "Unimplemented"
@@ -344,29 +344,29 @@ def createImplementationSymbolFromAST (func : Strata.C_Simp.Function) : CBMCSymb
344344 ]
345345
346346 -- For now, keep the hardcoded implementation but use function name from AST
347- let loc : SourceLoc := { functionName := func.name, lineNum := "1" }
347+ let loc : SourceLoc := { functionName := func.name.name , lineNum := "1" }
348348 let stmtJsons := (func.body.map (stmtToJson · loc)) --++ [ returnStmt ]
349349
350350 let implValue := Json.mkObj [
351351 ("id" , "code" ),
352352 ("namedSub" , Json.mkObj [
353- ("#end_location" , mkSourceLocation "from_andrew.c" func.name "15" ),
354- ("#source_location" , mkSourceLocation "from_andrew.c" func.name "4" ),
353+ ("#end_location" , mkSourceLocation "from_andrew.c" func.name.name "15" ),
354+ ("#source_location" , mkSourceLocation "from_andrew.c" func.name.name "4" ),
355355 ("statement" , Json.mkObj [("id" , "block" )]),
356356 ("type" , emptyType)
357357 ]),
358358 ("sub" , Json.arr stmtJsons.toArray)
359359 ]
360360
361361 {
362- baseName := func.name,
362+ baseName := func.name.name ,
363363 isLvalue := true ,
364364 location := location,
365365 mode := "C" ,
366366 module := "from_andrew" ,
367- name := func.name,
368- prettyName := func.name,
369- prettyType := s! "signed int (signed int { String.intercalate ", signed int " func.inputs.keys} )" ,
367+ name := func.name.name ,
368+ prettyName := func.name.name ,
369+ prettyType := s! "signed int (signed int { String.intercalate ", signed int " ( func.inputs.keys.map Lambda.Identifier.name) } )" ,
370370 prettyValue := "{\n signed int z;\n z = x + y;\n __CPROVER_assert(z > x, \" test_assert\" );\n if(z > 10)\n {\n z = z - 1;\n }\n\n else\n {\n z = z + 1;\n }\n __CPROVER_assume(z > 0);\n return 0;\n }" ,
371371 type := implType,
372372 value := implValue
@@ -381,16 +381,16 @@ def testSymbols (myFunc: Strata.C_Simp.Function) : String := Id.run do
381381 let paramNames := myFunc.inputs.keys
382382
383383 -- Hardcode local variable for now
384- let zSymbol := createLocalSymbol "z" myFunc.name
384+ let zSymbol := createLocalSymbol "z" myFunc.name.name
385385
386386 -- Build symbol map
387387 let mut m : Map String CBMCSymbol := Map.empty
388388 m := m.insert s! "contract::{ myFunc.name} " contractSymbol
389- m := m.insert myFunc.name implSymbol
389+ m := m.insert myFunc.name.name implSymbol
390390
391391 -- Add parameter symbols
392392 for paramName in paramNames do
393- let paramSymbol := createParameterSymbol paramName myFunc.name
393+ let paramSymbol := createParameterSymbol paramName.name myFunc.name .name
394394 m := m.insert s! "{ myFunc.name} ::{ paramName} " paramSymbol
395395
396396 -- Add local variable
0 commit comments