(and (= {recupdate {recupdate [record @a rat endrecord r1 ] @a 1} @a 2} {recupdate r1 @a 2}) (= {recupdate {recupdate [record @a rat @b rat endrecord r2] @a 1} @b 2} {recupdate r2 @a 1 @b 2}) (= {recupdate {recupdate {recupdate {recupdate {recupdate [record @a rat @b bool @c rat @d rat @e rat endrecord r3 ] @a 1} @b true} @c 33} @d 1000} @e 4} {recupdate r3 @a 1 @b true @c 33 @d 1000 @e 4}) (= {recupdate [record @a rat @b rat endrecord r4 ] @a 1 @b 2} {record @a 1 @b 2}) (= {recselect {recupdate [record @a rat endrecord r ] @a 1} @a} 1) (= {recselect {recupdate r @a foo} @a} foo) (= {recselect {record @a foo @b false} @a} foo) (= {recselect {record @b foo @a foo} @a} foo) (= {recselect {record @a 1 @b false} @a} {recselect {record @b foo @a 1} @a}) (= {recselect {recupdate {recupdate [record @a rat @b bool endrecord r5 ] @a 1} @b false} @a} 1) (= {recselect {recupdate {recupdate r5 @a foo} @b false} @a} foo) (= {recselect {recupdate {recupdate r5 @a foo} @b false} @b} false) (= {recupdate r @a (ite a 1 2)} (ite a {recupdate r @a 1} {recupdate r @a 2})) (= {recselect {recupdate r @a (ite a 1 2)} @a} (ite a 1 2)) (= {recupdate {recupdate [record @a rat @b bool endrecord r6 ] @a 1} @b true} {recupdate r6 @a 1 @b true}) (= {recupdate {recupdate [record @a rat @b rat endrecord r7 ] @a 1} @b 2} {recupdate {recupdate r7 @b 2} @a 1}) (= {recupdate [record @a record @c rat @d rat endrecord endrecord r8 ] @a {record @c 3 @d 9}} {record @a {record @c 3 @d 9}}) (= {recupdate [record @a rat @b rat r9] @a {recselect r9 @a} @b 1} {recupdate r9 @b 1}) (= {recupdate [record @a rat @b rat @c rat r10] @a 1 @b {recselect r10 @b} @c 3} {recupdate r10 @a 1 @c 3}) )