| nodes(gstore, ginval)[@(m, m0, m1)].key = key, ri[key] = @(m, m0, m1), ri[key0] = @(m, m0, m1), key-cons(key0, nodes(gstore, ginval)[@(m, m0, m1)]), key ∈ ri, key0 ∈ ri, @(m, m0, m1) ∈ gstore, key.inode? → nodes(gstore, ginval)[@(m, m0, m1)].inode? ∧ key.ino ≠ 0, key.dentry? → nodes(gstore, ginval)[@(m, m0, m1)].dentry?, key.data? → nodes(gstore, ginval)[@(m, m0, m1)].data? ⊦ key0 = key, m ∈ ginval |
ri[key0] = @(m, m0, m1), ri[nodes(gstore, ginval)[@(m, m0, m1)].key] = @(m, m0, m1), key-cons(key0, nodes(gstore, ginval)[@(m, m0, m1)]), @(m, m0, m1) ∈ gstore, key0 ∈ ri, nodes(gstore, ginval)[@(m, m0, m1)].key ∈ ri, nodes(gstore, ginval)[@(m, m0, m1)].key.data? → nodes(gstore, ginval)[@(m, m0, m1)].data?, nodes(gstore, ginval)[@(m, m0, m1)].key.dentry? → nodes(gstore, ginval)[@(m, m0, m1)].dentry?, nodes(gstore, ginval)[@(m, m0, m1)].key.inode? → nodes(gstore, ginval)[@(m, m0, m1)].inode? ∧ nodes(gstore, ginval)[@(m, m0, m1)].key.ino ≠ 0 ⊦ key0 = nodes(gstore, ginval)[@(m, m0, m1)].key, m ∈ ginval