This is a listing of all goals defined over the current specification. Axioms are marked yellow, proved theorems green and unproved theorems blue. Click on individual names to get more information on the proof.
| Name: | Sequent: | Type: |
|---|---|---|
| unmap | ebm_vol_unmap#(LNUM, VOLID; AVOLS){if LNUM < # AVOLS[VOLID] then ebm_unmap#(VOLID, LNUM; AVOLS) else abort} | An Axiom |
| remap | ebm_vol_remap#(LNUM, VOLID; AVOLS; ERR) {if LNUM < # AVOLS[VOLID] then {ebm_vol_unmap#(LNUM, VOLID; AVOLS); ebm_map#(VOLID, LNUM; AVOLS; ERR)} else abort} | An Axiom |
| change | ebm_vol_change#(LNUM, N, BUF, VOLID; AVOLS; ERR) {if LNUM < # AVOLS[VOLID] ∧ N ≤ LEB_SIZE ∧ N ≤ # BUF ∧ is-aligned(N, EB_PAGE_SIZE) then ebm_change#(VOLID, LNUM, N, BUF; AVOLS; ERR) else abort } | An Axiom |
| read | ebm_vol_read#(LNUM, OFFSET, N0, N, VOLID, AVOLS; BUF; ERR) {if AVOLS[VOLID][LNUM].mapped? ∧ LNUM < # AVOLS[VOLID] ∧ OFFSET + N ≤ LEB_SIZE ∧ N0 + N ≤ # BUF then ebm_read#(VOLID, LNUM, OFFSET, N0, N, AVOLS; BUF; ERR) else abort } | An Axiom |
| write | ebm_vol_write#(LNUM, OFFSET, N0, N, BUF, VOLID; AVOLS; ERR) {if LNUM < # AVOLS[VOLID] ∧ OFFSET + N ≤ LEB_SIZE ∧ is-aligned(OFFSET, EB_PAGE_SIZE) ∧ is-aligned(N, EB_PAGE_SIZE) ∧ N + N0 ≤ # BUF ∧ (AVOLS[VOLID][LNUM].mapped? → OFFSET ≥ AVOLS[VOLID][LNUM].fill) then ebm_write#(VOLID, LNUM, OFFSET, N0, N, BUF; AVOLS; ERR) else abort } | An Axiom |
| get-volume-size | ebm_vol_get_volume_size#(VOLID, AVOLS; ; N){ebm_get_volume_size#(VOLID, AVOLS; ; N)} | An Axiom |
| format | ebm_vol_format#(VOLSIZE; VOLID, AVOLS; ERR) {ebm_format#(; ; AVOLS, ERR); if ERR = ESUCCESS then {VOLID := default-volid; ebm_create_volume#(VOLID, VOLSIZE; AVOLS; ERR)}} | An Axiom |
| recover | ebm_vol_recover#(; AVOLS; VOLID, ERR){ebm_recover#(; AVOLS; ERR); VOLID := default-volid} | An Axiom |
| sync-device | ebm_vol_sync_device#(AVOLS; ; ERR){ebm_sync_device#(AVOLS; ; ERR)} | An Axiom |
| get-leb-size | ebm_vol_get_leb_size#(AVOLS; ; N){ebm_get_leb_size#(AVOLS; ; N)} | An Axiom |
| get-page-size | ebm_vol_get_page_size#(AVOLS; ; N){ebm_get_page_size#(AVOLS; ; N)} | An Axiom |
| inv-format | ⊦ ⟪ebm_vol_format#(m; v, avols; err)⟫ (err = ESUCCESS → v ∈ avols ∧ v = default-volid ∧ ebm-cons(avols)) | A Proof Obligation |
| inv-unmap | v ∈ avols, v = default-volid, ebm-cons(avols), m < # avols[v] ⊦ ⟪ebm_vol_unmap#(m, v; avols)⟫ (v ∈ avols ∧ ebm-cons(avols)) | A Proof Obligation |
| inv-remap | v ∈ avols, v = default-volid, ebm-cons(avols), m < # avols[v] ⊦ ⟪ebm_vol_remap#(m, v; avols; err)⟫ (v ∈ avols ∧ ebm-cons(avols)) | A Proof Obligation |
| inv-change | v ∈ avols, v = default-volid, ebm-cons(avols), m < # avols[v], n ≤ LEB_SIZE, n ≤ # buf, is-aligned(n, EB_PAGE_SIZE) ⊦ ⟪ebm_vol_change#(m, n, buf, v; avols; err)⟫ (v ∈ avols ∧ ebm-cons(avols)) | A Proof Obligation |
| inv-read | v ∈ avols, v = default-volid, ebm-cons(avols), avols[v][m].mapped?, m < # avols[v], m0 + n ≤ LEB_SIZE, n0 + n ≤ # buf ⊦ ⟪ebm_vol_read#(m, m0, n0, n, v, avols; buf; err)⟫ true | A Proof Obligation |
| inv-write | v ∈ avols, v = default-volid, ebm-cons(avols), m < # avols[v], m0 + n ≤ LEB_SIZE, is-aligned(m0, EB_PAGE_SIZE), is-aligned(n, EB_PAGE_SIZE), n + n0 ≤ # buf, avols[v][m].mapped? → m0 ≥ avols[v][m].fill ⊦ ⟪ebm_vol_write#(m, m0, n0, n, buf, v; avols; err)⟫ (v ∈ avols ∧ ebm-cons(avols)) | A Proof Obligation |
| inv-get-volume-size | v ∈ avols, v = default-volid, ebm-cons(avols) ⊦ ⟪ebm_vol_get_volume_size#(v, avols; ; n)⟫ true | A Proof Obligation |
| inv-recover | avols ⊆ avols0, ebm-cons(avols) → ebm-cons(avols0), v ∈ avols, v = default-volid, ebm-cons(avols) ⊦ ⟪ebm_vol_recover#(; avols0; v0, err)⟫ (err = ESUCCESS → v0 ∈ avols0 ∧ v0 = default-volid ∧ ebm-cons(avols0)) | A Proof Obligation |
| inv-sync-device | v ∈ avols, ebm-cons(avols) ⊦ ⟪ebm_vol_sync_device#(avols; ; err)⟫ true | A Proof Obligation |
| inv-get-leb-size | v ∈ avols, ebm-cons(avols) ⊦ ⟪ebm_vol_get_leb_size#(avols; ; n)⟫ true | A Proof Obligation |
| inv-get-page-size | v ∈ avols, ebm-cons(avols) ⊦ ⟪ebm_vol_get_page_size#(avols; ; n)⟫ true | A Proof Obligation |